Figured out issue with security model overriding my usm. Since security model is a singleton instance. Is there a way to use different security model for multiple SNMP sessions? I tried to set a new one by creating a new message processor and setting it in there.
Sent from my iPhone > On Feb 26, 2016, at 5:33 PM, [email protected] wrote: > > Hello, > I am working on a project using snmp4j where my application needs to be a > dual agent/manager. > Think of this as a relay, a middle man snmp application. > it will do the following: > 1)it will listen for requests from a beginning SNMP client (mib browser for > example). > 2) read those requests from beginning SNMP client, do some OID translation to > my own custom MIB > 3) send the request with the OID translation to the end Client > 4) get the response from the end Client, do some backwards OID translation > 5) send the response PDU back to the beginning SNMP Client for the request > from step 1 > > > The way I developed this was for the agent end, I extended "BaseAgent" class > in snmp4j agent for my agent to listen for requests from my beginning SNMP > client. > I am overriding the processPdu method in "CommandProcessor" to intercept the > requests in the "CommnadResponderEvent", do my OID translation. > For the manager end, then call a snmp Manager session within the "Command > Processor" (using the "snmp" Class from snmp4j )to send the requests (get, > getnext, getbulk) to my end Client > read the response back in "ResponseEvent" instance from the end Client. > parse the response and do my backwards OID translation and set the var > bindings in the response PDU to be sent back to the Beginning Client using > "returnResponsePDU" from the "commandResponderEvent" > > > my implementation is working for v1 and v2, but for v3 I am getting an issue > with the response back to the Beginning Client in step 5 above. the message > Authoritative engineID and engineBoots are set to 0 which is causing the > response to be discarded by the Beginning Client. > I did some debugging and i know the engineID and engineBoots are set from the > USM Time table based on the security state reference. > > I am thinking my implementation is causing some conflict with the USM since > my snmpManager is initialized and used within the Command Processor for the > snmpAgent end. > if i comment out my snmpManager, the response is sent back correctly with the > engineID and engineBoots populated correctly from the USM. > would it beneficial to maybe use the Proxy Forward feature in snmp4j instead > of this approach? I was thinking if using the Proxy Forward but i have to do > some oid Translation so i needed to intercept the PDU so that is why i > overloaded the processPDU function in the CommandProcessor class. > any help or insight would be appreciated. > > thanks > Rushik > > > > > > > > > > > _______________________________________________ > SNMP4J mailing list > [email protected] > https://oosnmp.net/mailman/listinfo/snmp4j _______________________________________________ SNMP4J mailing list [email protected] https://oosnmp.net/mailman/listinfo/snmp4j
