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

Reply via email to