[SNMP4J] Issues with SET on a read-write column
adireddy.aswin at rsa.com
adireddy.aswin at rsa.com
Wed Nov 2 02:54:53 CET 2011
Resending the mail.
-----Original Message-----
From: Aswin, Adireddy
Sent: Tuesday, November 01, 2011 5:33 PM
To: 'Frank Fock'
Subject: RE: [SNMP4J] Issues with SET on a read-write column
Hi Frank,
Thank you for a quick response.
Here are my index definitions for the table mentioned earlier.
oidTestConfigEntry = new OID(new int[]{1, 3, 6, 1, 4, 1, 2197, 10, 1, 3, 12, 1});
OID oidIDXTestConfigHost = new OID(new int[]{1, 3, 6, 1, 4, 1, 2197, 10, 1, 3, 12, 1, 1});
OID oidIDXTestConfigParamName = new OID(new int[]{1, 3, 6, 1, 4, 1, 2197, 10, 1, 3, 12, 1, 2});
MOTableSubIndex[] testConfigEntryIndexes = new MOTableSubIndex[]{
moFactory.createSubIndex(oidIDXDispatcherRuntimeConfigHost, SMIConstants.SYNTAX_OCTET_STRING),
moFactory.createSubIndex(oidIDXDispatcherRuntimeConfigParamName, SMIConstants.SYNTAX_OCTET_STRING)
};
MOTableIndex testConfigEntryIndex = moFactory.createIndex(testConfigEntryIndexes, false);
MOColumn[] testConfigEntryColumns = new MOColumn[3];
testConfigEntryColumns[0]=
moFactory.createColumn(1,
SMIConstants.SYNTAX_OCTET_STRING,
moFactory.createAccess(MOAccessImpl.ACCESSIBLE_FOR_READ_ONLY)); // testConfigHost
testConfigEntryColumns[1]=
moFactory.createColumn(2,
SMIConstants.SYNTAX_OCTET_STRING,
moFactory.createAccess(MOAccessImpl.ACCESSIBLE_FOR_READ_ONLY));// testConfigParamName
testConfigEntryColumns[2]=
moFactory.createColumn(3,
SMIConstants.SYNTAX_OCTET_STRING,
moFactory.createAccess(MOAccessImpl.ACCESSIBLE_FOR_READ_WRITE)); // testConfigParamValue
I use the following index logic while creating rows-
int i = 1;
for( ... ){
index = new OID(i); i++;
addRow(rowFactory.createRow(index, values[])); //variable[] size is 3
// ..
}
If I have my index definition as the one below, the testConfigHost value is only getting populated in the 3rd column i.e. testConfigParamValue.
//...
testConfigEntryColumns = new MOColumn[1];
testConfigEntryColumns[0]=
moFactory.createColumn(3,
SMIConstants.SYNTAX_OCTET_STRING,
moFactory.createAccess(MOAccessImpl.ACCESSIBLE_FOR_READ_WRITE));
What am I missing here?
Could you please elaborate as to what you mean by variable length for the index columns?
Thanks and Regards
Aswin
-----Original Message-----
From: Frank Fock [mailto:fock at agentpp.com]
Sent: Monday, October 31, 2011 9:28 PM
To: Aswin, Adireddy
Cc: <snmp4j at agentpp.org>
Subject: Re: [SNMP4J] Issues with SET on a read-write column
Hi,
I guess that you have chosen the wrong index for your SET operation. If you would have included the INDEX definition I could have checked it.
OCTET STRING index columns have variable length and thus need an additional length sub-id if not specified otherwise for the last sub-index.
Best regards
Frank
Am 31.10.2011 um 15:51 schrieb <adireddy.aswin at rsa.com>:
> Hi ,
>
>
>
> I have a table with 2 indices and one read-write column.
>
> Here is the MIB entry-
>
>
>
> testRuntimeConfigEntry ::= SEQUENCE {
>
> testConfigHost OCTET STRING,
>
> testConfigParamName OCTET STRING,
>
> testConfigParamValue OCTET STRING
>
> }
>
> -- .1.3.6.1.4.1.2197.10.1.3.12.1
>
>
>
> testConfigHost OBJECT-TYPE
>
> SYNTAX OCTET STRING
>
> ACCESS not-accessible
>
> STATUS current
>
> ::= { testConfigEntry 1 }
>
>
>
> testConfigParamName OBJECT-TYPE
>
> SYNTAX OCTET STRING
>
> ACCESS not-accessible
>
> STATUS current
>
> ::= { testConfigEntry 2 }
>
>
>
> testConfigParamValue OBJECT-TYPE
>
> SYNTAX OCTET STRING
>
> ACCESS read-write
>
> STATUS current
>
> ::= { testConfigEntry 3 }
>
>
>
> I have created a community "public".
>
> I'm able to do a walk on this table, no issues.
>
> (Currently I'm using iReasoning to get the table view)
>
>
>
> But when I do a SET, using "public" community, I get the following response
>
> RESPONSE[requestID=6891380, errorStatus=Unable to create object(11), errorIndex=1, VBS[1.3.6.1.4.1.2197.10.1.3.12.1.3.1 = 30]]
>
>
>
> I have fiddled around with all possible view mappings, and I still got the same error.
>
> After some digging around, I did manage to create another community "private".
>
>
>
> Now when I do a SET, using "private" community, on the read write column, I get the following response
>
> RESPONSE[requestID=620227330, errorStatus=General variable binding error(5), errorIndex=0, VBS[1.3.6.1.4.1.2197.10.1.3.12.1.3.1 = 30]]
>
>
>
> I'm using the following snippet to set the data
>
> //...
>
> pdu.add(new VariableBinding(new OID(strOID), new OctetString(valueToSet)));
>
> pdu.setType(PDU.SET);
>
> ResponseListener listener = new ResponseListener() {
>
> public void onResponse(ResponseEvent event) {
>
> ((Snmp)event.getSource()).cancel(event.getRequest(), this);
>
> PDU strResponse = event.getResponse();
>
> if (strResponse!= null)
>
> System.out.println (strResponse.getErrorStatusText());
>
> else
>
> System.out.println("Response is null");
>
> }};
>
> snmp.send(pdu, target, null, listener);
>
> snmp.close();
>
>
>
> Here is a snippet of my view mappings and communities-
>
>
>
> //same for public community as well
>
>
>
> Variable[] com2sec1 = new Variable[] { new OctetString("private"), //community name
>
> new OctetString("cprivate"), // security name
>
> getAgent().getContextEngineID(), // local engine ID
>
> new OctetString("private"), // default context name
>
> new OctetString(), // transport tag
>
> new Integer32(StorageType.nonVolatile), // storage type
>
> new Integer32(RowStatus.active) // row status
>
> };
>
>
>
> MOTableRow row1 = communityMIB.getSnmpCommunityEntry().createRow(
>
> new OctetString("private").toSubIndex(true), com2sec1);
>
> communityMIB.getSnmpCommunityEntry().addRow(row1);
>
>
>
> vacm.addGroup(SecurityModel.SECURITY_MODEL_SNMPv2c,
>
> new OctetString("cprivate"),
>
> new OctetString("v1v2group"),
>
> StorageType.nonVolatile);
>
>
>
> vacm.addAccess(new OctetString("v1v2group"), new OctetString("private"),
>
> SecurityModel.SECURITY_MODEL_SNMPv2c,
>
> SecurityLevel.NOAUTH_NOPRIV,
>
> MutableVACM.VACM_MATCH_EXACT,
>
> new OctetString("fullReadView"),
>
> new OctetString("fullWriteView"),
>
> new OctetString("fullNotifyView"),
>
> StorageType.nonVolatile);
>
>
>
> vacm.addViewTreeFamily(new OctetString("fullWriteView"), new OID(".1.3.6.1.4.1.2197.10.1.3.12.1.3"),
>
> new OctetString(), VacmMIB.vacmViewIncluded,
>
> StorageType.nonVolatile);
>
>
>
> What am I missing here or what am I doing wrong here?
>
> Appreciate any help.
>
> Thanks in advance.
>
>
>
> Regards,
>
> Aswin
>
>
>
> _______________________________________________
> SNMP4J mailing list
> SNMP4J at agentpp.org
> http://lists.agentpp.org/mailman/listinfo/snmp4j
More information about the SNMP4J
mailing list