[SNMP4J] Detect the receiving SNMP Message

Frank Fock fock at agentpp.com
Tue Sep 27 01:01:41 CEST 2005


It is a "sender problem". Once again the Snmp.listen() is missing, isn't it?

Frank

Andrew Chan wrote:

> Hi Frank,
>  
>   Amm... I tried the following but the same timeout problem happen
>  
>   to simplify the case, I modify my code as follow (BTW, I use SNMP v1)
>  
>   public synchronized void processPdu(CommandResponderEvent e) {
>      PDU command = e.getPDU();
>      if (command != null) {
>       MessageDispatcher md = e.getMessageDispatcher();
>        md.returnResponsePdu(e.getMessageProcessingModel(), 
> e.getSecurityModel(), e.getSecurityName(), e.getSecurityLevel(), 
> command, e.getMaxSizeResponsePDU(), e.getStateReference(), null);
>  
>       }
>   }
>  
>   Just in case you think might be the sender's problem, I also include 
> the code (simplified) here FYI
>  
>
>  private static void sendTestSnmp()
>  {
>   CommunityTarget target = createCommunityTarget();
>   
>   try {
>    PDU pdu = new PDU();
>    pdu.add(new VariableBinding(MY_OID)); 
>
>    pdu.setType(PDU.GET);
>    
>    Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
>    
>    ResponseEvent response = snmp.send(pdu, target);
>    if (response.getResponse() == null) {
>        // request timed out
>        System.out.println("Request " + pdu + " timed out");
>    }
>    else {
>        System.out.println("Received response from: "+
>                           response.getPeerAddress ());
>        // dump response PDU
>        System.out.println(response.getResponse().toString());
>   }
>   } catch (Exception e) {
>    e.printStackTrace();
>   }
>
>  }
>
>  
>  
>  
>
>  
> On 9/27/05, *Frank Fock* <fock at agentpp.com <mailto:fock at agentpp.com>> 
> wrote:
>
>     OK, to send a response it would be more straight forward to use
>     the MessageDispatcher.returnResponsePdu (..) method directly.
>
>     Best regards,
>     Frank
>
>     Andrew Chan wrote:
>
>     > Hi Frank,
>     >
>     >   I did, actually below are what I set for the repond pdu.
>     >
>     >  public synchronized void processPdu(CommandResponderEvent e) {
>     >      PDU command = e.getPDU();
>     >      sendRespond(e, command);
>     >  }
>     >
>     >   private void sendRespond(CommandResponderEvent e, PDU command)
>     >  {
>     >   CommunityTarget target = createCommunityTarget(
>     e.getPeerAddress());
>     >
>     >    PDU pdu = new PDU();
>     >    pdu.add(new VariableBinding(new OID(My_OID), variable)); //please
>     > assume MY_OID and the variable has been set somewhere
>     >    pdu.setType (PDU.RESPONSE);  //Here I set the PDU type to RESPOND
>     >    pdu.setRequestID(command.getRequestID());  //Here I set the
>     Request ID
>     >
>     >    //Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
>     >    Snmp snmp = new Snmp( e.getTransportMapping()); //I even set the
>     > TransportMapping
>     >
>     >   snmp.send(pdu, target);
>     > }
>     >
>     >  private CommunityTarget createCommunityTarget(Address addr)
>     >  {
>     >   CommunityTarget target = new CommunityTarget();
>     >   target.setCommunity(new OctetString("public"));
>     >   target.setAddress(addr);
>     >   target.setVersion(SnmpConstants.version1);
>     >
>     >   return target;
>     >  }
>     >
>     > Do you have any idea? Thanks.
>     >
>     > Regards,
>     > Andrew
>     >
>     >
>     >
>     > On 9/27/05, *Frank Fock* <fock at agentpp.com
>     <mailto:fock at agentpp.com> <mailto:fock at agentpp.com
>     <mailto:fock at agentpp.com> >>
>     > wrote:
>     >
>     >     You need probably to set the request ID of the response PDU
>     to the
>     >     request
>     >     ID you received.
>     >
>     >     Best regards,
>     >     Frank
>     >
>     >     Andrew Chan wrote:
>     >
>     >     > Thanks Frank,
>     >     >
>     >     >   May I ask one more question? After I have recieved the SNMP
>     >     Message,
>     >     > I should construct an respond, right how do I do that? I try
>     >     this by
>     >     > sending a PDU.RESPOND type pdu to the
>     >     > CommandResponderEvent.getPeerAddress(), but the manager
>     always got a
>     >     > time out error, do you have any idea? Many thanks.
>     >     >
>     >     > Regards,
>     >     > AC
>     >     >
>     >     >
>     >     > On 9/27/05, *Frank Fock* <fock at agentpp.com
>     <mailto:fock at agentpp.com>
>     >     <mailto: fock at agentpp.com <mailto:fock at agentpp.com>>
>     <mailto:fock at agentpp.com <mailto:fock at agentpp.com>
>     >     <mailto:fock at agentpp.com <mailto:fock at agentpp.com>>>>
>     >     > wrote:
>     >     >
>     >     >     Hi Andrew,
>     >     >
>     >     >     Just call
>     CommandResponderEvent.getMessageProcessingModel() and
>     >     >     you will
>     >     >     get the SNMP version.
>     >     >
>     >     >     Best regards,
>     >     >     Frank
>     >     >
>     >     >     Andrew Chan wrote:
>     >     >
>     >     >     >Dear all,
>     >     >     >  I am trying to writing code to receive SNMP request, I
>     >     know how
>     >     >     to write
>     >     >     >it by referencing the example in Package org.snmp4j.
>     >     However, how
>     >     >     do we know
>     >     >     >the SNMP version (v1, v2c or v3) of incoming message?
>     >     >     >  What I am expecting is to get the "target" from the
>     >     >     CommandResponderEvent,
>     >     >     >but seems this is not the case.
>     >     >     >  Am I doing something wrong?
>     >     >     > Thanks.
>     >     >     >AC
>     >     >     >_______________________________________________
>     >     >     >SNMP4J mailing list
>     >     >     > SNMP4J at agentpp.org <mailto:SNMP4J at agentpp.org>
>     <mailto:SNMP4J at agentpp.org <mailto:SNMP4J at agentpp.org>>
>     >     <mailto:SNMP4J at agentpp.org <mailto:SNMP4J at agentpp.org>
>     <mailto: SNMP4J at agentpp.org <mailto:SNMP4J at agentpp.org>>>
>     >     >     > http://lists.agentpp.org/mailman/listinfo/snmp4j
>     >     < http://lists.agentpp.org/mailman/listinfo/snmp4j>
>     >     >     >
>     >     >     >
>     >     >     >
>     >     >     >
>     >     >
>     >     >
>     >     >     --
>     >     >     AGENT++
>     >     >     http://www.agentpp.com
>     >     >     http://www.mibexplorer.com < http://www.mibexplorer.com>
>     >     >     http://www.mibdesigner.com
>     >     >
>     >     >
>     >     >
>     >
>     >
>     >     --
>     >     AGENT++
>     >     http://www.agentpp.com
>     >     http://www.mibexplorer.com
>     >     http://www.mibdesigner.com <http://www.mibdesigner.com>
>     >
>     >
>     >
>
>
>     --
>     AGENT++
>     http://www.agentpp.com
>     http://www.mibexplorer.com
>     http://www.mibdesigner.com
>
>
>


-- 
AGENT++
http://www.agentpp.com
http://www.mibexplorer.com
http://www.mibdesigner.com





More information about the SNMP4J mailing list