Hello
I try to read multiple devices with different settings.
It’s ok with the first, but when the second start, the first break with a security name error.
Some thinks must not be shared between devices, but I don’t success to separate thinks.
securityName = new OctetString(paramSecurityName);
OID authProtocol = checkSettingsV3.getAuthProtocol();
OID privProtocol = checkSettingsV3.getPrivProtocol();
OctetString authPassphrase = checkSettingsV3.getAuthPassphrase();
OctetString privPassphrase = checkSettingsV3.getPrivPassphrase();
int securityLevel = checkSettingsV3.getSecurityLevel();
OctetString localEngineId = new OctetString(MPv3.createLocalEngineID());
logger.info("[{}] localEngineId={}",deviceName,localEngineId.toString());
SecurityProtocols securityProtocols = SecurityProtocols.getInstance();
securityProtocols.addDefaultProtocols();
securityProtocols.addAuthenticationProtocol(new AuthMD5());
securityProtocols.addPrivacyProtocol(new PrivDES());
USM usm = new USM(securityProtocols, localEngineId, 0);
SecurityModels.getInstance().addSecurityModel(usm);
if (paramMibFilePath != null){
if (!paramMibFilePath.isEmpty()){
addTagFromMibFile(paramMibFilePath);
}
}
if(paramTargetAddress instanceof UdpAddress) {
logger.debug("[{}] Use UDP TransportMapping",deviceName);
transport = new DefaultUdpTransportMapping();
} else {
logger.debug("[{}] Use TCP TransportMapping",deviceName);
transport = new DefaultTcpTransportMapping();
}
snmp = new Snmp(transport);
snmp.getUSM().addUser(securityName, new UsmUser(securityName, authProtocol, authPassphrase, privProtocol, privPassphrase));
SecurityModels.getInstance().addSecurityModel(new TSM(localEngineId, false));
// Do not forget this line!
transport.listen();
// setting up target
target = new UserTarget();
target.setAddress(paramTargetAddress);
target.setRetries(paramReadRetries);
target.setTimeout(paramReadTimeoutMs);
target.setVersion(SnmpConstants.version3);
target.setSecurityLevel(securityLevel);
target.setSecurityName(securityName);
targetWrite = new UserTarget();
targetWrite.setAddress(paramTargetAddress);
targetWrite.setRetries(paramWriteRetries);
targetWrite.setTimeout(paramWriteTimeoutMs);
targetWrite.setVersion(SnmpConstants.version3);
targetWrite.setSecurityLevel(securityLevel);
targetWrite.setSecurityName(securityName);