net-snmp 3.15.1 → 3.15.3
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/.vscode/launch.json +1 -0
- package/README.md +8 -0
- package/example/option-parser.js +4 -0
- package/example/snmp-get.js +5 -0
- package/index.js +31 -8
- package/package.json +2 -2
package/.vscode/launch.json
CHANGED
package/README.md
CHANGED
@@ -3420,6 +3420,14 @@ Example programs are included under the module's `example` directory.
|
|
3420
3420
|
|
3421
3421
|
* Fix bundler failure due to unnecessary string length assignment
|
3422
3422
|
|
3423
|
+
## Version 3.15.2 - 03/12/2024
|
3424
|
+
|
3425
|
+
* Change return of non-existing OIDs under table from NoSuchObject to NoSuchInstance
|
3426
|
+
|
3427
|
+
## Version 3.15.3 - 04/12/2024
|
3428
|
+
|
3429
|
+
* Fix agent SNMP SetRequest for OIDs
|
3430
|
+
|
3423
3431
|
# License
|
3424
3432
|
|
3425
3433
|
Copyright (c) 2020 Mark Abrahams <mark@abrahams.co.nz>
|
package/example/option-parser.js
CHANGED
@@ -9,6 +9,7 @@ var user;
|
|
9
9
|
var session;
|
10
10
|
var nonRepeaters;
|
11
11
|
var maxRepetitions;
|
12
|
+
var sourcePort;
|
12
13
|
var oids;
|
13
14
|
var varbinds;
|
14
15
|
var columns;
|
@@ -44,6 +45,7 @@ if ( snmpOptions.version == snmp.Version3 ) {
|
|
44
45
|
|
45
46
|
nonRepeaters = options.o;
|
46
47
|
maxRepetitions = options.r;
|
48
|
+
sourcePort = options.s;
|
47
49
|
|
48
50
|
if (options._.length < 2) {
|
49
51
|
console.log ("usage: " + process.argv[1] + " [<options>] <target> <oid>");
|
@@ -77,6 +79,8 @@ if ( command.includes('snmp-trap') || command.includes('snmp-inform') || command
|
|
77
79
|
snmpOptions.port = options.p;
|
78
80
|
}
|
79
81
|
|
82
|
+
snmpOptions.sourcePort = sourcePort;
|
83
|
+
|
80
84
|
if ( snmpOptions.version == snmp.Version3 ) {
|
81
85
|
session = snmp.createV3Session (target, user, snmpOptions);
|
82
86
|
} else {
|
package/example/snmp-get.js
CHANGED
package/index.js
CHANGED
@@ -4493,6 +4493,18 @@ Mib.prototype.deleteTableRow = function (table, rowIndex) {
|
|
4493
4493
|
return true;
|
4494
4494
|
};
|
4495
4495
|
|
4496
|
+
Mib.prototype.getAncestorProviderFromOid = function (oid) {
|
4497
|
+
const address = Mib.convertOidToAddress (oid);
|
4498
|
+
for ( let i = address.length - 1 ; i >= 0 ; i-- ) {
|
4499
|
+
const oidToCheck = address.slice(0, i).join('.');
|
4500
|
+
const provider = this.providersByOid[oidToCheck];
|
4501
|
+
if ( provider ) {
|
4502
|
+
return provider;
|
4503
|
+
}
|
4504
|
+
}
|
4505
|
+
return null;
|
4506
|
+
};
|
4507
|
+
|
4496
4508
|
Mib.prototype.dump = function (options) {
|
4497
4509
|
if ( ! options ) {
|
4498
4510
|
options = {};
|
@@ -4751,7 +4763,7 @@ Agent.prototype.castSetValue = function ( type, value ) {
|
|
4751
4763
|
}
|
4752
4764
|
|
4753
4765
|
case ObjectType.OID:
|
4754
|
-
if ( typeof value != "string" || ! value.match(
|
4766
|
+
if ( typeof value != "string" || ! value.match(/^([0-9]+)(\.[0-9]+)+$/) ) {
|
4755
4767
|
throw new Error("Invalid OID", value);
|
4756
4768
|
}
|
4757
4769
|
return value;
|
@@ -4993,13 +5005,24 @@ Agent.prototype.request = function (socket, requestMessage, rinfo) {
|
|
4993
5005
|
operation: requestPdu.type,
|
4994
5006
|
oid: requestPdu.varbinds[i].oid
|
4995
5007
|
});
|
4996
|
-
|
4997
|
-
|
4998
|
-
|
4999
|
-
|
5000
|
-
|
5001
|
-
|
5002
|
-
|
5008
|
+
const ancestorProvider = this.mib.getAncestorProviderFromOid(requestPdu.varbinds[i].oid);
|
5009
|
+
if ( ancestorProvider ) {
|
5010
|
+
handlers[i] = function getNsiHandler (mibRequestForNsi) {
|
5011
|
+
mibRequestForNsi.done ({
|
5012
|
+
errorStatus: ErrorStatus.NoError,
|
5013
|
+
type: ObjectType.NoSuchInstance,
|
5014
|
+
value: null
|
5015
|
+
});
|
5016
|
+
};
|
5017
|
+
} else {
|
5018
|
+
handlers[i] = function getNsoHandler (mibRequestForNso) {
|
5019
|
+
mibRequestForNso.done ({
|
5020
|
+
errorStatus: ErrorStatus.NoError,
|
5021
|
+
type: ObjectType.NoSuchObject,
|
5022
|
+
value: null
|
5023
|
+
});
|
5024
|
+
};
|
5025
|
+
}
|
5003
5026
|
} else {
|
5004
5027
|
providerNode = this.mib.getProviderNodeForInstance (instanceNode);
|
5005
5028
|
if ( ! providerNode || instanceNode.value === undefined ) {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "net-snmp",
|
3
|
-
"version": "3.15.
|
3
|
+
"version": "3.15.3",
|
4
4
|
"description": "JavaScript implementation of the Simple Network Management Protocol (SNMP)",
|
5
5
|
"main": "index.js",
|
6
6
|
"directories": {
|
@@ -47,6 +47,6 @@
|
|
47
47
|
"author": "Mark Abrahams <mark@abrahams.co.nz>",
|
48
48
|
"license": "MIT",
|
49
49
|
"scripts": {
|
50
|
-
"lint": "
|
50
|
+
"lint": "eslint . ./**/*.js"
|
51
51
|
}
|
52
52
|
}
|