Hello Frank (and other readers that might know the answer ;-),
I tried to use the new functionality within the v1.10 to avoid using my own 
overloaded class as listed before. however i run into a problem I cannot figure 
out.It would be nice if you could help.below you find two methods, where the 
first is not working (using the new constructor) and reports 1403 errors. The 
second method is working correct. From my point of view, the functionality 
however should be interchangable, but I must be missing something.
Trace of error scenario:2009-06-16 18:28:38.859 CEST DEBUG [Timer-0   ]     
Snmp4jAgent SNMP GET command (OID=<removed>.1.1.0)2009-06-16 18:28:43.859 CEST 
DEBUG [Timer-0   ]     Snmp4jAgent executed GET command (oid=<removed>.1.1.0), 
response=null2009-06-16 18:28:43.859 CEST ERROR [Timer-0   ]     Snmp4jAgent 
SNMP GetCommand :: response==null2009-06-16 18:28:43.859 CEST ERROR [Timer-0   
] ediationTableV1 result==null2009-06-16 18:28:43.875 CEST DEBUG [Timer-0   ]   
  Snmp4jAgent SNMP GET command (OID=<removed>.2.1.0)2009-06-16 18:28:43.875 
CEST DEBUG [Timer-0   ] ediationTableV2 Error getting new index: Message 
processing model 3 returned error: 14032009-06-16 18:28:43.875 CEST DEBUG 
[Timer-0   ]     Snmp4jAgent SNMP GET command (OID=<removed>.3.1.0)2009-06-16 
18:28:43.875 CEST DEBUG [Timer-0   ] iationTablePCV2 Error getting new index: 
Message processing model 3 returned error: 1403
Methods:
    /**     * Initializes the SNMP4J object.     * (non working method)     * 
@return     * @throws IOException     */    protected Snmp initSnmpAndSecurity( 
) throws IOException      {       // create the snmp instance     Snmp snmp = 
new Snmp();         snmp.addTransportMapping(new 
DefaultUdpTransportMapping());             OctetString localEngineID = new 
OctetString(MPv3.createLocalEngineID());                // create the USM 
security model        USM usm = new USM(SecurityProtocols.getInstance(), 
localEngineID, 0);           // create the user for the USM          UsmUser 
user = new UsmUser(_securityName,                                   
_authProtocol,                                   _authPassphrase,               
                    _privProtocol,                                   
_privPassphrase                                
  );            //add the user to the usm       usm.addUser(_securityName, 
user);
        // to make sure a different security model is used for each SNMP 
instance,      // this is the way to initialize. Otherwise there might be 
strange behaviours           // in the case the remote engine id is not 
unique       MessageDispatcher disp = snmp.getMessageDispatcher();           
disp.addMessageProcessingModel(new MPv1());     
disp.addMessageProcessingModel(new MPv2c());            
disp.addMessageProcessingModel(new MPv3(usm));                          
snmp.listen();                  return snmp;            }    /**     * Create 
the SNMP object.     * (working method)     * @return     * @throws 
IOException     */    protected Snmp initSnmpAndSecurity2( ) throws IOException 
      {        // create the snmp instance        Snmp snmp = new Snmp(new 
DefaultUdpTransportMapping());                OctetString localEngineID = new 
OctetString(MPv3.createLocalEngineID());                // create the USM
 security model        USM usm = new USM(SecurityProtocols.getInstance(), 
localEngineID, 0);                // create the user for the USM        UsmUser 
user = new UsmUser(_securityName,                                   
_authProtocol,                                   _authPassphrase,               
                    _privProtocol,                                   
_privPassphrase);                //add the user to the usm        
usm.addUser(_securityName, user);
        // create own version of the SecurityModels to avoid multithreading 
issues        MultiThreadedSecurityModels mtm = new 
MultiThreadedSecurityModels();        // add the usm as the security model      
  mtm.addSecurityModel(usm);                    // add the newly create 
SecurityModels to the MPv3 (overwrite the default)        
MessageProcessingModel mpm = snmp.getMessageProcessingModel(MPv3.ID);        if 
( mpm instanceof MPv3 )            ((MPv3)mpm).setSecurityModels(mtm);        
else            throw new RuntimeException("Received different 
MessageProcessing model than requested, Should never happen!");        
snmp.listen();        return snmp;        }
Thanks again and best regards,
Sjoerd


      
_______________________________________________
SNMP4J mailing list
SNMP4J@agentpp.org
http://lists.agentpp.org/mailman/listinfo/snmp4j

Reply via email to