Package org.jboss.jmx.adaptor.snmp.trapd

Source Code of org.jboss.jmx.adaptor.snmp.trapd.TrapReceiver

/*
* Copyright (c) 2003,  Intracom S.A. - www.intracom.com
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*
* This package and its source code is available at www.jboss.org
**/
package org.jboss.jmx.adaptor.snmp.trapd;

import java.net.InetAddress;

import org.jboss.logging.Logger;
import org.opennms.protocols.snmp.SnmpOctetString;
import org.opennms.protocols.snmp.SnmpPduPacket;
import org.opennms.protocols.snmp.SnmpPduRequest;
import org.opennms.protocols.snmp.SnmpPduTrap;
import org.opennms.protocols.snmp.SnmpTrapHandler;
import org.opennms.protocols.snmp.SnmpTrapSession;
import org.opennms.protocols.snmp.SnmpVarBind;

/**
* Implements an SNMP trap reception engine
*
* @version $Revision: 30193 $
*
* @author  <a href="mailto:spol@intracom.gr">Spyros Pollatos</a>
* @author  <a href="mailto:dimitris@jboss.org">Dimitris Andreadis</a>
**/
public class TrapReceiver
    implements SnmpTrapHandler
{
    /** target logger */
    protected final Logger log;
   
   /**
    * Public CTOR
    *
    * @param log the logger used to output info messages
   **/
   public TrapReceiver(Logger log)
   {
      this.log = log;
   }
   
   /**
    * Receives and logs information about SNMPv2 traps.
    *
    * @param session   the trap session that received the PDU
    * @param agent     the address of the remote sender
    * @param port      the remote port where the pdu was transmitted from
    * @param community the decoded community string
    * @param pdu       the decoded v2 trap pdu
   **/
   public void snmpReceivedTrap(SnmpTrapSession session, InetAddress agent,
                                int port, SnmpOctetString community,
                                SnmpPduPacket pdu)
   {
      StringBuffer sbuf = new StringBuffer();
       
      sbuf.append("V2 Trap from ").append(agent.toString());
      sbuf.append(" on port ").append(port);
      sbuf.append("\nPDU command......... ").append(pdu.getCommand());
      sbuf.append("\nPDU Length.......... ").append(pdu.getLength());
      sbuf.append("\nCommunity string.... ").append(community.toString());
   
      if(pdu instanceof SnmpPduRequest)
      {
         SnmpPduRequest spdu = (SnmpPduRequest) pdu;
        
         sbuf.append("\nPDU Error Status.... ").append(spdu.getErrorStatus());
         sbuf.append("\nPDU Error Index..... ").append(spdu.getErrorIndex());
         sbuf.append("\n");
      }
 
      for (int i = 0; i < pdu.getLength(); i++ )
      {
         SnmpVarBind vb = pdu.getVarBindAt(i);
        
         sbuf.append("Varbind[").append(i).append("] := ");
         sbuf.append(vb.getName().toString()).append(" --> ");
         sbuf.append(vb.getValue().toString()).append("\n");   
      }
      log.debug(sbuf.toString());
   } // snmpReceivedTrap

   /**
    * Receives and logs information about SNMPv1 traps.
    *
     * @param session   the trap session that received the PDU
    * @param agent     the address of the remote sender
    * @param port      the remote port where the pdu was transmitted from
    * @param community the decoded community string
    * @param pdu       the decoded v1 trap pdu
   **/
   public void snmpReceivedTrap(SnmpTrapSession session, InetAddress agent,
                                int port, SnmpOctetString community,
                                SnmpPduTrap pdu)
   {
      StringBuffer sbuf = new StringBuffer();
       
      sbuf.append("V1 Trap from agent ").append(agent.toString());
      sbuf.append(" on port ").append(port);
      sbuf.append("\nIP Address......... ").append(pdu.getAgentAddress());
      sbuf.append("\nEnterprise Id...... ").append(pdu.getEnterprise());
      sbuf.append("\nGeneric ........... ").append(pdu.getGeneric());
      sbuf.append("\nSpecific .......... ").append(pdu.getSpecific());
      sbuf.append("\nTimeStamp ......... ").append(pdu.getTimeStamp());
      sbuf.append("\nLength............. ").append(pdu.getLength());
      sbuf.append("\nCommunity string... ").append(community.toString());
      sbuf.append("\n");
 
      for (int i = 0; i < pdu.getLength(); i++ )
      {
         SnmpVarBind vb = pdu.getVarBindAt(i);
        
         sbuf.append("Varbind[").append(i).append("] := ");
         sbuf.append(vb.getName().toString()).append(" --> ");
         sbuf.append(vb.getValue().toString()).append("\n");     
      }
      log.debug(sbuf.toString());
   } // snmpReceivedTrap
 
   /**
    * Processes session errors.
    *
    * @param session the trap session in error
    * @param error   the error condition
    * @param ref     the reference object, if any
   **/
   public void snmpTrapSessionError(SnmpTrapSession session,
                                    int error, Object ref)
   {
      StringBuffer sbuf = new StringBuffer();
          
      if(ref != null) {
          sbuf.append("Session error (").append(error).append(") reference: ");
          sbuf.append(ref.toString());
      }
      else {
           sbuf.append("Session error (").append(error).append(")");
      }
 
      try {
         if(error == SnmpTrapSession.ERROR_EXCEPTION)
            session.raise();   
      }
      catch (Throwable e) {
          sbuf.append(" <").append(e).append(">");
      }
      
      log.error(sbuf.toString());
      
   } // snmpTrapSessionError
   
} // class TrapReceiver
TOP

Related Classes of org.jboss.jmx.adaptor.snmp.trapd.TrapReceiver

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.