From a036cff9de96bad3f2b1131c2b4e311d13a3507d Mon Sep 17 00:00:00 2001
From: Christophe Sovant <christophe.sovant@forgerock.com>
Date: Sat, 31 May 2008 11:59:35 +0000
Subject: [PATCH] Update SNMP user list, enable encryption in the SNMP managers and add news functions in snmp.xml
---
opendj-sdk/opends/tests/shared/java/snmp/SNMPGet.java | 279 ++++++++++++++++++++++++++++++++++---------------------
1 files changed, 173 insertions(+), 106 deletions(-)
diff --git a/opendj-sdk/opends/tests/shared/java/snmp/SNMPGet.java b/opendj-sdk/opends/tests/shared/java/snmp/SNMPGet.java
index 6f29ccf..893d0d7 100644
--- a/opendj-sdk/opends/tests/shared/java/snmp/SNMPGet.java
+++ b/opendj-sdk/opends/tests/shared/java/snmp/SNMPGet.java
@@ -73,7 +73,8 @@
" -l <securityLevel>" +
" -f <securityFile>" +
" -s <connectionStatus>" +
- " -n <checkOIDs>");
+ " -n <checkOIDs>" +
+ " -w <snmpwalk>");
rc = 1;
} else {
for (int i = 0; i < args.length; i++) {
@@ -121,6 +122,9 @@
case 'n':
validOIDs = new Boolean(val).booleanValue();
break;
+ case 'w':
+ walk = new Boolean(val).booleanValue();
+ break;
default:
System.out.println("Unknown option -" + opt.charAt(1) + ".");
rc = 1;
@@ -207,6 +211,11 @@
// Custom engine parameters
final SnmpEngineParameters engineParameters =
new SnmpEngineParameters();
+
+ // Activate encryption
+ engineParameters.activateEncryption();
+
+ // Set the security file
engineParameters.setSecurityFile(securityFile);
// Create the session
@@ -257,30 +266,32 @@
agentV3.setMaxTries(maxRetries);
agentV3.setParams(paramsV3);
- // Discover timeliness of creation and boot
- //
- try {
- agentV3.processUsmTimelinessDiscovery();
- } catch (SnmpStatusException e) {
- if (connectStatus.compareTo("SnmpStatusException") == 0) {
- System.out.println(
- "connect() of SNMPGet catched as expected a " +
- "SNMP status exception: " + e.getMessage() + "\"");
- } else {
- System.out.println(
- "connect() of SNMPGet should not catch a " +
- "SNMP status exception: " + e.getMessage() + "\"");
+ if (securityLevel != SnmpDefinitions.noAuthNoPriv) {
+ // Discover timeliness of creation and boot
+ //
+ try {
+ agentV3.processUsmTimelinessDiscovery();
+ } catch (SnmpStatusException e) {
+ if (connectStatus.compareTo("SnmpStatusException") == 0) {
+ System.out.println(
+ "connect() of SNMPGet catched as expected a " +
+ "SNMP status exception: " + e.getMessage() + "\"");
+ } else {
+ System.out.println(
+ "connect() of SNMPGet should not catch a " +
+ "SNMP status exception: " + e.getMessage() + "\"");
+
+ rc = 1;
+ }
+ } catch (Exception e) {
+ System.out.println(
+ "connect() of SNMPGet catched an unexpected exception: " +
+ e.getMessage() + "\"");
- rc = 1;
- }
- } catch (Exception e) {
- System.out.println(
- "connect() of SNMPGet catched an unexpected exception: " +
- e.getMessage() + "\"");
-
- rc = 1;
+ rc = 1;
+ }
}
-
+
if (rc == 0) {
// Set the default peer (agent) to a SnmpSession
//
@@ -318,15 +329,25 @@
*/
public int getRequest() {
int rc = 0;
+ String previousOID = "";
try {
// Build the list of variables you want to query
//
final SnmpVarBindList list = new SnmpVarBindList("Get varbind list");
- // Read all TEST-MIB variables.
+ // Read specific OIDs
//
- list.addVarBind(oids);
+ if (walk) {
+ // Walk request
+ //
+ list.addVarBind("0.0");
+ previousOID = "0.0";
+ } else {
+ // Get request
+ //
+ list.addVarBind(oids);
+ }
// Make the SNMP get request
//
@@ -335,103 +356,148 @@
" GET request for SNMP agent on \"" + remoteHost +
"\" at port \"" + port + "\".");
- // Get request
- //
- SnmpRequest request = session.snmpGetRequest(null, list);
-
- // Check for a timeout of the request
- //
- boolean completed = request.waitForCompletion((maxRetries + 1) * timeOut);
- if (completed == false) {
- System.out.println(
- "getRequest() of SNMPGet: Request timed out, " +
- "check reachability of agent.");
-
- // Print request
- //
- System.out.println(
- "getRequest() of SNMPGet: Request= " +
- request.toString() + ".");
-
- rc = 1;
- }
-
- if (rc == 0) {
- System.out.println(
- "getRequest() of SNMPGet: Finish SNMP V" +
- version + " GET request.");
-
- // Now we have a response. Check if the response contains an error
- //
- String errorStatus = SnmpRequest.snmpErrorToString(
- request.getErrorStatus());
- if (errorStatus.compareTo("noError") != 0) {
- System.out.println(
- "getRequest() of SNMPGet: Error status= " +
- errorStatus + ".");
-
- System.out.println(
- "getRequest() of SNMPGet: Error index= " +
- request.getErrorIndex() + ".");
-
- if (errorStatus.compareTo(connectStatus) == 0) {
- System.out.println(
- "getRequest() of SNMPGet: Get request failed as " +
- "expected with " + connectStatus + " status.");
- } else {
- System.out.println(
- "getRequest() of SNMPGet: Get request should " +
- "fail with " + connectStatus + " status.");
-
- rc = 1;
- }
- } else {
- // Now we shall display the content of the result
+ while (previousOID.compareTo("end") != 0) {
+ SnmpRequest request = null;
+ if (walk) {
+ // Walk request
//
- SnmpVarBindList resp = request.getResponseVarBindList();
+ request = session.snmpGetNextRequest(null, list);
+ } else {
+ // Get request
+ //
+ request = session.snmpGetRequest(null, list);
+ }
- System.out.println("getRequest() of SNMPGet: Result=");
+ // Check for a timeout of the request
+ //
+ boolean completed =
+ request.waitForCompletion((maxRetries + 1) * timeOut);
+ if (completed == false) {
+ if (connectStatus.compareTo("reqTimeout") != 0) {
+ System.out.println(
+ "getRequest() of SNMPGet: Request timed out, " +
+ "check reachability of agent.");
- for (int i = 0; i < resp.getVarBindCount(); i++) {
- System.out.println(resp.getVarBindAt(i));
- }
-
- if (connectStatus.compareTo("noError") != 0) {
- // Request should failed
+ // Print request
//
System.out.println(
- "getRequest() of SNMPGet: Get request should " +
- "fail with " + connectStatus + " status.");
+ "getRequest() of SNMPGet: Request= " +
+ request.toString() + ".");
rc = 1;
} else {
- if (validOIDs) {
- // Check that we obtain correct values for the OIDs
- //
- if (resp.checkForValidValues()) {
+ System.out.println(
+ "getRequest() of SNMPGet: Request timed out as expected.");
+ }
+ }
+
+ if (rc == 0 && completed) {
+ System.out.println(
+ "getRequest() of SNMPGet: Finish SNMP V" +
+ version + " GET request.");
+
+ // Now we have a response. Check if the response contains an error
+ //
+ String errorStatus = SnmpRequest.snmpErrorToString(
+ request.getErrorStatus());
+ if (errorStatus.compareTo("noError") != 0) {
+ System.out.println(
+ "getRequest() of SNMPGet: Error status= " +
+ errorStatus + ".");
+
+ System.out.println(
+ "getRequest() of SNMPGet: Error index= " +
+ request.getErrorIndex() + ".");
+
+ if (errorStatus.compareTo(connectStatus) == 0) {
+ System.out.println(
+ "getRequest() of SNMPGet: Get request failed as " +
+ "expected with " + connectStatus + " status.");
+ } else {
+ if (walk && errorStatus.compareTo("noSuchName") == 0) {
System.out.println(
- "getRequest() of SNMPGet: Returned values for" +
- " OIDs are correct.");
+ "getRequest() of SNMPGet: Get request failed as " +
+ "expected with " + connectStatus + " status.");
} else {
System.out.println(
- "getRequest() of SNMPGet: Returned values for" +
- " OIDs are not correct.");
+ "getRequest() of SNMPGet: Get request should " +
+ "fail with " + connectStatus + " status.");
rc = 1;
}
- } else {
- // Check that we obtain incorrect values for the OIDs
- //
- if (resp.checkForValidValues()) {
- System.out.println(
- "getRequest() of SNMPGet: Returned values for" +
- " OIDs should not be correct.");
+ }
- rc = 1;
+ previousOID = "end";
+ } else {
+ // Now we shall display the content of the result
+ //
+ SnmpVarBindList resp = request.getResponseVarBindList();
+
+ System.out.println("getRequest() of SNMPGet: Result=");
+
+ String tmpOID = "";
+ String realOID = "";
+ for (int i = 0; i < resp.getVarBindCount(); i++) {
+ tmpOID = resp.getVarBindAt(i).getOid().toString();
+ int endIndex = tmpOID.lastIndexOf(".");
+ String indexOID = tmpOID.substring(endIndex, tmpOID.length());
+
+ realOID = tmpOID.substring(0, endIndex);
+ if (realOID.startsWith("1.3.6.1.2.1.66.2")) {
+ endIndex = realOID.lastIndexOf(".");
+ realOID = realOID.substring(0, endIndex);
+ }
+
+ String name = resp.getVarBindAt(i).resolveVarName(realOID).getName();
+ String value = resp.getVarBindAt(i).getStringValue();
+ System.out.println(name + indexOID + "=" + value);
+
+ if (walk) {
+ list.removeVarBind(previousOID);
+ list.addVarBind(tmpOID);
+ previousOID = tmpOID;
} else {
- System.out.println(
- "getRequest() of SNMPGet: Returned values for" +
- " OIDs are not correct as expected.");
+ previousOID = "end";
+ }
+ }
+
+ if (connectStatus.compareTo("noError") != 0) {
+ // Request should failed
+ //
+ System.out.println(
+ "getRequest() of SNMPGet: Get request should " +
+ "fail with " + connectStatus + " status.");
+
+ rc = 1;
+ } else {
+ if (validOIDs) {
+ // Check that we obtain correct values for the OIDs
+ //
+ if (resp.checkForValidValues()) {
+ System.out.println(
+ "getRequest() of SNMPGet: Returned values for" +
+ " OIDs are correct.");
+ } else {
+ System.out.println(
+ "getRequest() of SNMPGet: Returned values for" +
+ " OIDs are not correct.");
+
+ rc = 1;
+ }
+ } else {
+ // Check that we obtain incorrect values for the OIDs
+ //
+ if (resp.checkForValidValues()) {
+ System.out.println(
+ "getRequest() of SNMPGet: Returned values for" +
+ " OIDs should not be correct.");
+
+ rc = 1;
+ } else {
+ System.out.println(
+ "getRequest() of SNMPGet: Returned values for" +
+ " OIDs are not correct as expected.");
+ }
}
}
}
@@ -511,6 +577,7 @@
String securityFile = null;
static String connectStatus = null;
boolean validOIDs = true;
+ boolean walk = false;
// SnmpSession
SnmpSession session = null;
--
Gitblit v1.10.0