[SNMP4J] where to call processPdu from in the agent?
Frank Fock
fock at agentpp.com
Mon Sep 6 22:45:00 CEST 2010
Hi,
To write a SNMP agent, please use SNMP4J-Agent.
Best regards,
Frank
On 03.09.2010 07:56, Nidhi Lohat wrote:
> Hello Everyone,
>
> I’ve made the simplest possible agent just to check if it can respond to the
> PDUs received from the manager. Although I’ve written the following code with
> the help of the SNMP4J tutorials, I have my doubt as to where is the processPdu
> function called in the program? I’ve written it fine, but I don’t see it being
> called. Thus, where is it that the PDU sent from the manager is actually
> received? Following is my code and the errors it generates. Please tell me where
> I’m going wrong. Also, since i'm working on Eclipse IDE, it seems quite
> confusing to me how to execute manager and agent together in order to create a
> communication session( just da way v do in socket programming). it seems that i
> can only run either of them at a time..
>
> publicclassSNMP4J_AGENT extendsThread implementsCommandResponder
> {
>
> /**
> *@paramargs
> */
> // Processes incoming Pdu
> publicsynchronizedvoidprocessPdu(CommandResponderEvent e)
> {
> System.out.println("Command");
> ScopedPDU command;
> if( e.getPDU() instanceofScopedPDU)
> {
> command = (ScopedPDU)e.getPDU();
> }
> else
> {
> command = (ScopedPDU)e.getPDU();
> }
> if(command != null)
> {
> //send reply
> ScopedPDU cmd = (ScopedPDU)e.getPDU();
> cmd.setType(ScopedPDU.RESPONSE);
> cmd.setRequestID(command.getRequestID());
> StatusInformation st=new StatusInformation(newVariableBinding(),
> e.getStateReference().getContextName(),
> e.getStateReference().getContextEngineID(),
> newInteger32(
> e.getStateReference().getSecurityLevel()) );
>
> StatusInformation statusInformation = newStatusInformation();
> StateReference ref = e.getStateReference();
> System.out.println(ref);
> try
> {
>
> e.getMessageDispatcher().returnResponsePdu(e.getMessageProcessingModel(),
>
>
> e.getSecurityModel(),
> e.getSecurityName(),
>
> e.getSecurityLevel(),
> command,
>
> e.getMaxSizeResponsePDU(),
> ref,
> st);
> System.out.println("Response sent to manager....");
> }
> catch(MessageException e1)
> {
> e1.printStackTrace(); //To change body of catch statement use
> File | Settings | File Templates
> }
>
> }
>
> }
> @Override
> publicvoidrun()
> {
> //InetAddress hostIp;
> //int port_, version;
> try
> {
> //Sets the snmp listener to port
> TransportMapping transport =
> newDefaultUdpTransportMapping(newUdpAddress("udp:127.0.0.1/161"));
> Snmp snmp = newSnmp(transport); //snmp.addCommandResponder(this);
> MPv3 mpv3 =
> (MPv3)snmp.getMessageProcessingModel(MessageProcessingModel.MPv3);
> System.out.println("in try");
>
> //if (version == 3)
> {
> byte[] localEngineID
> =((MPv3)snmp.getMessageProcessingModel(MessageProcessingModel.MPv3)).createLocalEngineID();
>
> USM usm = newUSM(SecurityProtocols.getInstance(),
> newOctetString(localEngineID),0);
> SecurityModels.getInstance().addSecurityModel(usm);
> snmp.setLocalEngine(localEngineID, 0, 0);
>
> // Add the configured user to the USM
> snmp.getUSM().addUser(newOctetString("MD5DES"),
> newUsmUser(newOctetString("MD5DES"),
> AuthMD5.ID,
>
> newOctetString("MD5DESUserAuthPassword"),
>
> PrivDES.ID,
>
> newOctetString("MD5DESUserPrivPassword")));
> System.out.println("USM: "+ snmp.getUSM());
>
> }
> snmp.addCommandResponder(this);
> //snmp.listen();
> // md.addCommandResponder(this);
> System.out.println("transportBinding..");
> transport.listen();
>
> // transport.listen();
> System.out.print("SNMP Listener init: ");
> Address a = transport.getListenAddress();
> System.out.println(a.toString());
> //snmp.processPdu(this);
> /* try
> {
> snmp.processPdu(arg0);
> }
> catch(Exception ex)
> {
> ex.getMessage();
> }*/
> snmp.close();
> }
> catch(IOException e)
> {
> System.err.print("ERROR!!!!! "+e);
> }
> try
> {
> this.wait();
> }
> catch(InterruptedException ex)
> {
> Thread.currentThread().interrupt();
> }
>
>
> }
>
> publicstaticvoidmain(String[] args)throwsException
> {
> // TODOAuto-generated method stub
>
> newSNMP4J_AGENT().start();
> }
>
> }
>
> Errors:
> Exception in thread "Thread-0" java.lang.IllegalArgumentException:
> udp:127.0.0.1/161
> at org.snmp4j.smi.UdpAddress.<init>(UdpAddress.java:48)
> at SNMP4J_AGENT.run(SNMP4J_AGENT.java:100)
>
>
> Thanx a lot…..
>
> Regards,
>
> Nidhi Lohat,
> Software Trainee,
> Eminent Networks Pvt. Ltd.(HFCL Group)
>
>
>
> _______________________________________________
> SNMP4J mailing list
> SNMP4J at agentpp.org
> http://lists.agentpp.org/mailman/listinfo/snmp4j
--
AGENT++
http://www.agentpp.com
http://www.snmp4j.com
http://www.mibexplorer.com
http://www.mibdesigner.com
More information about the SNMP4J
mailing list