[SNMP4J] Failed to send SNMPv3 Trap with specified engine ID
Pavel Orehov
pavel.orehov at gmail.com
Mon Aug 27 07:17:35 CEST 2007
*Hi,*
*I am trying to send SNMPv3 trap with specified by me endine ID in both PDU
and USM data.*
*However, I get an Exception from SNMP4J*.
125 [main] DEBUG org.snmp4j.security.Salt - Initialized Salt to
7dfdc10a2f550541.
141 [main] DEBUG org.snmp4j.security.UsmUserTable - Adding user paveluser =
UsmUser[secName=paveluser,authProtocol=1.3.6.1.6.3.10.1.1.2
,authPassphrase=password1,privProtocol=1.3.6.1.6.3.10.1.2.2
,privPassphrase=password2,localizationEngineID=80:00:00:09:03:00:00:10:7b:aa:31:00]
141 [main] DEBUG org.snmp4j.security.USM -
getUser(engineID=80:00:13:70:01:0a:38:14:7c, securityName=paveluser)
*
org.snmp4j.MessageException*: Message processing model 3 returned error:
1404
at org.snmp4j.MessageDispatcherImpl.sendPdu(Unknown Source)
at org.snmp4j.Snmp.sendMessage(Unknown Source)
at org.snmp4j.Snmp.send(Unknown Source)
at org.snmp4j.Snmp.send(Unknown Source)
at com.cisco.cmpps.netsvc.main.UnitestMain.sendTestTrapV3b(*UnitestMain.java
:299*)
at com.cisco.cmpps.netsvc.main.UnitestMain.main(*UnitestMain.java:60*)
*
org.snmp4j.MessageException*: Message processing model 3 returned error:
1404
at org.snmp4j.MessageDispatcherImpl.sendPdu(Unknown Source)
at org.snmp4j.Snmp.sendMessage(Unknown Source)
at org.snmp4j.Snmp.send(Unknown Source)
at org.snmp4j.Snmp.send(Unknown Source)
at com.cisco.cmpps.netsvc.main.UnitestMain.sendTestTrapV3b(*UnitestMain.java
:299*)
at com.cisco.cmpps.netsvc.main.UnitestMain.main(*UnitestMain.java:60*)
141 [main] DEBUG org.snmp4j.security.USM - USM.getUser - User 'paveluser'
unknown
157 [main] DEBUG org.snmp4j.security.USM - Security name not found for
engineID=80:00:13:70:01:0a:38:14:7c, securityName=70:61:76:65:6c:75:73:65:72
*Here is a code:*
String engineIDStr = "80:00:00:09:03:00:00:10:7b:aa:31:00";
OctetString engineID = OctetString.*fromHexString*(engineIDStr);
UsmUser usmUser = *new* UsmUser(
*new* OctetString("paveluser"),
AuthMD5.*ID*,
*new* OctetString("password1"),
PrivDES.*ID*,
*new* OctetString("password2"),
engineID);
VariableBinding[] vbs = *createLinkDownVBS*();
// additional for V3
VariableBinding vb1 = *new* VariableBinding(*new* OID("1.3.6.1.2.1.1.3.0"),
*new* Integer32(-1547855169));
VariableBinding vb2 = *new* VariableBinding(*new* OID("1.3.6.1.6.3.1.1.4.1.0
"), *new* OID("1.3.6.1.6.3.1.1.5.3"));
VariableBinding vb3 = *new* VariableBinding(*new* OID("1.3.6.1.6.3.18.1.3.0"),
*new* IpAddress("10.222.1.1"));
ScopedPDU pdu = *new* ScopedPDU();
pdu.setContextEngineID(engineID);
pdu.setType(ScopedPDU.*TRAP*);
pdu.add(vb1);
pdu.add(vb2);
pdu.add(vb3);
pdu.addAll(vbs);
UdpAddress targetAddress = *new* UdpAddress(
InetAddress.*getByName*(*targetIP*),
SnmpConstants.*DEFAULT_NOTIFICATION_RECEIVER_PORT*);
UserTarget target = *new* UserTarget();
target.setAddress(targetAddress);
target.setRetries(1);
// set timeout to 500 milliseconds -> 2*500ms = 1s total timeout
target.setTimeout(500);
target.setVersion(SnmpConstants.*version3*);
target.setSecurityModel(SnmpConstants.*version3*);
target.setSecurityLevel(SecurityLevel.*AUTH_NOPRIV*);
target.setSecurityName(*new* OctetString(usmUser.getSecurityName()));
Snmp snmp = *new* Snmp(*new* DefaultUdpTransportMapping());
USM usm = *new* USM(SecurityProtocols.*getInstance*(), engineID, 0);
SecurityModels.*getInstance*().addSecurityModel(usm);
snmp.getUSM().addUser(*new* OctetString(
usmUser.getSecurityName()),
usmUser);
snmp.send(pdu, target);
snmp.close();
*What did I do wrong ?*
*Thanks,*
*Pavel*
More information about the SNMP4J
mailing list