[SNMP4J] Snmpv3 Sending and Receiving

Frank Fock fock at agentpp.com
Fri Jul 22 20:55:50 CEST 2011


Did you make sure that sender and receiver
use different engine IDs?


On 22.07.2011 18:37, guyfawkes at gmx.at wrote:
> I think have the same problem as described in this very old mail:
> http://lists.agentpp.org/pipermail/snmp4j/2007-March/001954.html
>
> I also found this thread but it didn't help me:
> http://www.mail-archive.com/snmp4j@agentpp.org/msg00776.html
>
> I also get an REPORT[reqestID=0, errorStatus=0, errorIndex=0, VBS[1.3.6.1.6.3.15.1.1.4.0 = 0]]
>
> I don't know what I'm doing wrong. seems like the engineID makes problems.??
> If I'm using SNMPv2c it works fine but switching to SNMPv3 is a problem.
>
> This is my code for sending:
> byte[] localEngineID =
>              ((MPv3)getSnmp().getMessageProcessingModel(MessageProcessingModel.MPv3)).createLocalEngineID();
>          USM usm = new USM(SecurityProtocols.getInstance(),
>                            new OctetString(localEngineID), 0);
>
>          SecurityModels.getInstance().addSecurityModel(usm);
>          getSnmp().setLocalEngine(localEngineID, 0, 0);
>
>      	getSnmp().getUSM().addUser(new OctetString("MD5DES"),
>      			new UsmUser(new OctetString("MD5DES"),
>      					AuthMD5.ID,
>      					new OctetString("MD5DESUserAuthPassword"),
>      					PrivAES256.ID,
>      					new OctetString("MD5DESUserPrivPassword")));
>      	
>      	// create the target
>      	UserTarget userTarget = new UserTarget();
>          userTarget.setAddress(GenericAddress.parse(TAREGET_ADDRESS));
>          userTarget.setRetries(1);
>          userTarget.setTimeout(5000);
>          userTarget.setVersion(SnmpConstants.version3);
>          userTarget.setSecurityLevel(SecurityLevel.AUTH_PRIV);
>          userTarget.setSecurityName(new OctetString("MD5DES"));
>
>          // create the PDU
>          PDU pduV3 = new ScopedPDU();
>          pduV3.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1.0")));
>          pduV3.setType(PDU.GET);
>
>          // send the PDU
>          ResponseEvent response;
>          try {
>          	response = getSnmp().send(pduV3, userTarget);
>          	// extract the response PDU (could be null if timed out)
>          	PDU responsePDU = response.getResponse();
>          	// extract the address used by the agent to send the response:
>          	logger.logDebug("responsePDU.get(0)",responsePDU.get(0).getOid());
>          	// response = getSnmp().send(responsePDU, userTarget);
>          	identifyOid(responsePDU);
>          	usm.removeEngineTime(new OctetString(localEngineID));
>          	response = getSnmp().send(pduV3, userTarget);
>          	
>          	if (response != null){
>          		logger.logError("could not send ", "success");
>          	}
>          	
>          	Address peerAddress = response.getPeerAddress();
>          } catch (IOException e) {
>          	logger.logError("could not send ", e);
>          }catch (Exception e) {
>          	logger.logError("could not send ", e);
>          }
>
> Please help me. thx
>
> Oliver
>

-- 
AGENT++
http://www.agentpp.com
http://www.snmp4j.com
http://www.mibexplorer.com
http://www.mibdesigner.com




More information about the SNMP4J mailing list