[SNMP4J] Question about SNMPv3 configuration

Ivan Mladenović piffta at gmail.com
Fri Jan 15 10:05:35 CET 2010


Hi, I'm using snmp4j to

My configuration file for SNMPv3 is:

      snmp.user.name=userName
   snmp.auth.passphrase=m5_encrypted_passphrase
   snmp.privacy.passphrase=des_encrypted_passphrase
   snmp.auth.protocol=MD5
   snmp.privacy.protocol=DES
   snmp.security.level=3 # Security level: AUTH_PRIV
   snmp.security.model=3 # SecurityModel.SECURITY_MODEL_USM

I have class that implements CommandResponder. In consturctor:

      transport = new DefaultUdpTransportMapping(new
UdpAddress("localhost/161"));
    snmp = new Snmp(transport);
    snmp.addCommandResponder(this);

    // Security protocol.
    SecurityProtocols securityProtocols = SecurityProtocols.getInstance();
    securityProtocols.addAuthenticationProtocol(new AuthMD5());

        byte[] localEngineID = MPv3.createLocalEngineID();
    USM usm = new USM(securityProtocols, new OctetString(localEngineID), 0);
    SecurityModels.getInstance().addSecurityModel(usm);
    snmp.setLocalEngine(localEngineID, 0, 0);
    UsmUser usmUser = new UsmUser(userName, authProtocol, authPassphrase,
privacyProtocol, privacyPassphrase);

    usm.addUser(snmpConfiguration.getUserName(), usmUser);

    // Listen for requests.
    transport.listen();

This class implements processPDU method:

     // Get object identifier.
    Vector<VariableBinding> variableBindings =
event.getPDU().getVariableBindings();
    VariableBinding variableBinding = variableBindings.get(0);
    OID oid = variableBinding.getOid();

    Variable variable = new Counter32(someLongValue);
    variableBinding.setVariable(variable);

    PDU pdu = event.getPDU();
    pdu.clear();
    pdu.setErrorStatus(0);
    pdu.add(variableBinding);

    event.setPDU(pdu);
    event.setProcessed(true);

    try {
        byte[] engineID = MPv3.createLocalEngineID();

        UserTarget target = new UserTarget();
        target.setAddress(event.getPeerAddress());
        target.setRetries(retriesCount);
        target.setTimeout(timeout);
        target.setVersion(SnmpConstants.version3);
        target.setSecurityName(userName);
        target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
        target.setSecurityModel(SecurityModel.SECURITY_MODEL_USM);
        target.setAuthoritativeEngineID(engineID);

        ResponseEvent responseEvent = snmp.send(event.getPDU(), target);
    } catch (IOException e) {
        e.printStackTrace();
    }

Method processPDU catch GET request event, and response does not contains
errors, but MIB browser always get timeout exception.

Do I have some errors in configuration?
Could you, please, give me some example?



More information about the SNMP4J mailing list