net-snmp 3.10.3 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/example/test.js +5 -2
- package/lib/mib.js +68 -65
- package/package.json +1 -1
package/README.md
CHANGED
@@ -3355,6 +3355,14 @@ Example programs are included under the module's `example` directory.
|
|
3355
3355
|
|
3356
3356
|
* Add MIB parsing support for final member of OID value list containing identifier/descriptor pair
|
3357
3357
|
|
3358
|
+
## Version 3.10.4 - 22/03/2024
|
3359
|
+
|
3360
|
+
* Add MIB parsing support for middle member of OID value list containing identifier only
|
3361
|
+
|
3362
|
+
## Version 3.11.0 - 23/03/2024
|
3363
|
+
|
3364
|
+
* Fix parent object retrieval to respect MIB module imports
|
3365
|
+
|
3358
3366
|
# License
|
3359
3367
|
|
3360
3368
|
Copyright (c) 2020 Mark Abrahams <mark@abrahams.co.nz>
|
package/example/test.js
CHANGED
@@ -43,6 +43,7 @@ store.loadFromFile (mibDir + "IANA-PRINTER-MIB.mib");
|
|
43
43
|
store.loadFromFile (mibDir + "IANA-CHARSET-MIB.mib");
|
44
44
|
store.loadFromFile (mibDir + "PRINTER-MIBv1.mib");
|
45
45
|
store.loadFromFile (mibDir + "JOB-MONITORING-MIB-RFC.mib");
|
46
|
+
store.loadFromFile (mibDir + "NETSURE-MIB-001-B.mib");
|
46
47
|
|
47
48
|
// const mibModuleOid = store.translate('1.3.6.1.4.1', snmp.OidFormat.module);
|
48
49
|
// console.log('mibModuleOid: ', mibModuleOid);
|
@@ -63,5 +64,7 @@ console.log(store.translate('iso.org.dod.internet.private.enterprises.pwg.mibs.j
|
|
63
64
|
// console.log('jobModule: ', JSON.stringify(jobModule, null, 2));
|
64
65
|
|
65
66
|
// print IF-MIB
|
66
|
-
const ifModule = store.getModule('IF-MIB');
|
67
|
-
console.log('ifModule: ', JSON.stringify(ifModule, null, 2));
|
67
|
+
// const ifModule = store.getModule('IF-MIB');
|
68
|
+
// console.log('ifModule: ', JSON.stringify(ifModule, null, 2));
|
69
|
+
const nsModule = store.getModule('NETSURE-MIB-001-B');
|
70
|
+
console.log('nsModule: ', JSON.stringify(nsModule, null, 2));
|
package/lib/mib.js
CHANGED
@@ -372,13 +372,11 @@ var MIB = function (dir) {
|
|
372
372
|
Object[Symbols[i - 2]]['OID'] = '0.0';
|
373
373
|
Object[Symbols[i - 2]]['NameSpace'] = 'null';
|
374
374
|
} else {
|
375
|
-
this.
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
// Object[Symbols[i - 2]]['ObjectName'] = Symbols[i - 2];
|
381
|
-
});
|
375
|
+
const { oidString, nameString } = this.getOidAndNamePaths(Object[Symbols[i - 2]]['OBJECT IDENTIFIER'], Symbols[i - 2], ModuleName);
|
376
|
+
Object[Symbols[i - 2]]['OID'] = oidString;
|
377
|
+
Object[Symbols[i - 2]]['NameSpace'] = nameString;
|
378
|
+
// Object[Symbols[i - 2]]['ModuleName'] = ModuleName;
|
379
|
+
// Object[Symbols[i - 2]]['ObjectName'] = Symbols[i - 2];
|
382
380
|
}
|
383
381
|
|
384
382
|
} else {
|
@@ -533,13 +531,11 @@ var MIB = function (dir) {
|
|
533
531
|
Object[Symbols[r - 1]]['OID'] = '0.0';
|
534
532
|
Object[Symbols[r - 1]]['NameSpace'] = 'null';
|
535
533
|
} else {
|
536
|
-
this.
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
//Object[Symbols[r - 1]]['ObjectName'] = Symbols[r - 1];
|
542
|
-
});
|
534
|
+
const { oidString, nameString } = this.getOidAndNamePaths(Object[Symbols[r - 1]]['OBJECT IDENTIFIER'], Symbols[r - 1], ModuleName);
|
535
|
+
Object[Symbols[r - 1]]['OID'] = oidString;
|
536
|
+
Object[Symbols[r - 1]]['NameSpace'] = nameString;
|
537
|
+
// Object[Symbols[r - 1]]['ModuleName'] = ModuleName;
|
538
|
+
// Object[Symbols[r - 1]]['ObjectName'] = Symbols[r - 1];
|
543
539
|
}
|
544
540
|
if ( Object[Symbols[r - 1]]['REVISIONS-DESCRIPTIONS'] &&
|
545
541
|
Object[Symbols[r - 1]]['REVISIONS-DESCRIPTIONS'].length == 1 &&
|
@@ -732,64 +728,71 @@ var MIB = function (dir) {
|
|
732
728
|
}
|
733
729
|
callback(summary);
|
734
730
|
},
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
}
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
midID.push(ID);
|
754
|
-
}
|
755
|
-
if ( OD != '' ) {
|
756
|
-
midOD.push(OD);
|
731
|
+
getOidAndNamePaths: function (OBJECT_IDENTIFIER, ObjectName, ModuleName) {
|
732
|
+
const entries = OBJECT_IDENTIFIER.split(/\s+/);
|
733
|
+
const parent = entries.shift();
|
734
|
+
const finalEntries = entries.pop();
|
735
|
+
const nameEntries = [];
|
736
|
+
const oidEntries = [];
|
737
|
+
// process middle entries if any
|
738
|
+
// e.g. { enterprises pwg(2699) mibs(1) jobmonMIB(1) }
|
739
|
+
for (const entry of entries) {
|
740
|
+
const match = entry.match(/(.*)\((.+)\)$/);
|
741
|
+
if ( match ) {
|
742
|
+
oidEntries.push(match[2]);
|
743
|
+
nameEntries.push(match[1]);
|
744
|
+
} else {
|
745
|
+
// cater for unannotated middle entries (use number entries for name entries)
|
746
|
+
// e.g. { enterprises 2699 1 1 }
|
747
|
+
oidEntries.push(entry);
|
748
|
+
nameEntries.push(entry);
|
757
749
|
}
|
758
|
-
midOD.push(ObjectName);
|
759
|
-
callback(midID.join('.'), midOD.join('.'));
|
760
|
-
return;
|
761
750
|
}
|
762
|
-
if
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
midID.push(match[2]);
|
769
|
-
midOD.push(match[1]);
|
770
|
-
}
|
771
|
-
midID.push(oid);
|
772
|
-
if ( ID != '' ) {
|
773
|
-
midID.push(ID);
|
774
|
-
}
|
775
|
-
if ( OD != '' ) {
|
776
|
-
midOD.push(OD);
|
777
|
-
}
|
778
|
-
ID = midID.join('.');
|
779
|
-
OD = midOD.join('.');
|
751
|
+
// ignore name entry if it exists on final OID entry - use object name instead
|
752
|
+
// e.g. for { mibs jobmonMIB(1) } we would ignore the "jobmonMIB" name
|
753
|
+
let finalOid;
|
754
|
+
if ( finalEntries.includes('(') ) {
|
755
|
+
const oidSplit = finalEntries.match(/(.*)\((.+)\)$/);
|
756
|
+
finalOid = oidSplit[2];
|
780
757
|
} else {
|
781
|
-
|
782
|
-
ID = ID == '' ? oid : [oid, ID].join('.');
|
783
|
-
OD = OD == '' ? parent : [parent, OD].join('.');
|
758
|
+
finalOid = finalEntries;
|
784
759
|
}
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
760
|
+
oidEntries.push(finalOid);
|
761
|
+
nameEntries.push(ObjectName);
|
762
|
+
let parentOidPrefix;
|
763
|
+
let parentNamePrefix;
|
764
|
+
if ( parent == 'iso' ) {
|
765
|
+
parentOidPrefix = '1';
|
766
|
+
parentNamePrefix = 'iso';
|
767
|
+
} else {
|
768
|
+
// find parent object
|
769
|
+
// first look in the current module
|
770
|
+
let parentObject = this.Modules[ModuleName][parent];
|
771
|
+
// if not found, find the import entry for the object
|
772
|
+
if ( ! parentObject ) {
|
773
|
+
const importModules = Object.keys(this.Modules[ModuleName]['IMPORTS']);
|
774
|
+
for (let importModule of importModules) {
|
775
|
+
if (this.Modules[importModule][parent]) {
|
776
|
+
parentObject = this.Modules[importModule][parent];
|
777
|
+
break;
|
778
|
+
}
|
790
779
|
}
|
791
780
|
}
|
781
|
+
if ( ! parentObject ) {
|
782
|
+
// occurs for out-of-order dependencies in a module
|
783
|
+
// console.warn('Parent object not found for ' + parent);
|
784
|
+
return {
|
785
|
+
oidString: '',
|
786
|
+
nameString: ''
|
787
|
+
};
|
788
|
+
}
|
789
|
+
parentOidPrefix = parentObject['OID'];
|
790
|
+
parentNamePrefix = parentObject['NameSpace'];
|
792
791
|
}
|
792
|
+
return {
|
793
|
+
oidString: parentOidPrefix + '.' + oidEntries.join('.'),
|
794
|
+
nameString: parentNamePrefix + '.' + nameEntries.join('.')
|
795
|
+
};
|
793
796
|
}
|
794
797
|
});
|
795
798
|
|