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.
@@ -15,6 +15,7 @@
15
15
  "args": [
16
16
  "-v", "2c",
17
17
  "-c", "public",
18
+ "-s", "5678",
18
19
  "127.0.0.1",
19
20
  "1.3.6.1.2.1.31.1.1.1.6.1"
20
21
  ]
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>
@@ -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 {
@@ -18,4 +18,9 @@ session.get (oids, function (error, varbinds) {
18
18
  console.log (varbinds[i].oid + "|" + varbinds[i].value);
19
19
  }
20
20
  }
21
+ session.close();
22
+ });
23
+
24
+ session.on("error", function (error) {
25
+ console.error (error.toString ());
21
26
  });
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(/[0-9]+\([.][0-9]+\)+/) ) {
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
- handlers[i] = function getNsoHandler (mibRequestForNso) {
4997
- mibRequestForNso.done ({
4998
- errorStatus: ErrorStatus.NoError,
4999
- type: ObjectType.NoSuchObject,
5000
- value: null
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.1",
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": "./node_modules/.bin/eslint . ./**/*.js"
50
+ "lint": "eslint . ./**/*.js"
51
51
  }
52
52
  }