net-snmp 3.10.4 → 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 +4 -0
- package/example/test.js +5 -2
- package/lib/mib.js +68 -72
- package/package.json +1 -1
package/README.md
CHANGED
@@ -3359,6 +3359,10 @@ Example programs are included under the module's `example` directory.
|
|
3359
3359
|
|
3360
3360
|
* Add MIB parsing support for middle member of OID value list containing identifier only
|
3361
3361
|
|
3362
|
+
## Version 3.11.0 - 23/03/2024
|
3363
|
+
|
3364
|
+
* Fix parent object retrieval to respect MIB module imports
|
3365
|
+
|
3362
3366
|
# License
|
3363
3367
|
|
3364
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,71 +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
|
-
midID.push(oid);
|
752
|
-
if ( ID != '' ) {
|
753
|
-
midID.push(ID);
|
754
|
-
}
|
755
|
-
if ( OD != '' ) {
|
756
|
-
midOD.push(OD);
|
757
|
-
}
|
758
|
-
midOD.push(ObjectName);
|
759
|
-
callback(midID.join('.'), midOD.join('.'));
|
760
|
-
return;
|
761
|
-
}
|
762
|
-
if (members.length > 0) {
|
763
|
-
// We have middle entries e.g. { enterprises pwg(2699) mibs(1) 1 }
|
764
|
-
let midID = [];
|
765
|
-
let midOD = [parent];
|
766
|
-
for (let entry of members) {
|
767
|
-
let match = entry.match(/(.*)\((.+)\)$/);
|
768
|
-
// cater for unannotated middle entries
|
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)
|
769
746
|
// e.g. { enterprises 2699 1 1 }
|
770
|
-
|
771
|
-
|
772
|
-
midOD.push(entry);
|
773
|
-
} else {
|
774
|
-
midID.push(match[2]);
|
775
|
-
midOD.push(match[1]);
|
776
|
-
}
|
747
|
+
oidEntries.push(entry);
|
748
|
+
nameEntries.push(entry);
|
777
749
|
}
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
ID = midID.join('.');
|
786
|
-
OD = midOD.join('.');
|
750
|
+
}
|
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];
|
787
757
|
} else {
|
788
|
-
|
789
|
-
ID = ID == '' ? oid : [oid, ID].join('.');
|
790
|
-
OD = OD == '' ? parent : [parent, OD].join('.');
|
758
|
+
finalOid = finalEntries;
|
791
759
|
}
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
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
|
+
}
|
797
779
|
}
|
798
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'];
|
799
791
|
}
|
792
|
+
return {
|
793
|
+
oidString: parentOidPrefix + '.' + oidEntries.join('.'),
|
794
|
+
nameString: parentNamePrefix + '.' + nameEntries.join('.')
|
795
|
+
};
|
800
796
|
}
|
801
797
|
});
|
802
798
|
|