[jboss-cvs] JBossAS SVN: r96739 - branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Nov 23 11:01:08 EST 2009


Author: bshim
Date: 2009-11-23 11:01:07 -0500 (Mon, 23 Nov 2009)
New Revision: 96739

Modified:
   branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpAgentService.java
   branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpVarBindFactory.java
   branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapEmitter.java
   branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactory.java
   branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactorySupport.java
Log:
Changed TrapFactory to create PDUv1 and ScopedPDU types now
Changed SnmpVarBindFactory to use VariableBinding instead of SnmpVarBind

Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpAgentService.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpAgentService.java	2009-11-23 14:40:57 UTC (rev 96738)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpAgentService.java	2009-11-23 16:01:07 UTC (rev 96739)
@@ -31,6 +31,12 @@
 import org.opennms.protocols.snmp.SnmpPeer;
 import org.opennms.protocols.snmp.SnmpSMI;
 
+//SNMP4J IMPORTS
+import org.snmp4j.Snmp;
+import org.snmp4j.smi.*;
+import org.snmp4j.transport.DefaultTcpTransportMapping;
+import org.snmp4j.transport.DefaultUdpTransportMapping;
+
 /**
  * <tt>SnmpAgentService</tt> is an MBean class implementing an SNMP agent.
  *
@@ -52,7 +58,8 @@
 {
    /** Supported versions */
    public static final int SNMPV1 = 1;
-   public static final int SNMPV2 = 2; 
+   public static final int SNMPV2 = 2;
+   public static final int SNMPV3 = 3;
     
    /** Default communities */
    public static final String DEFAULT_READ_COMMUNITY  = "public";
@@ -566,6 +573,13 @@
    private void startAgent()
       throws Exception
    {
+	   
+	  /********************************************************************
+	   * 
+	   * ORIG!!!! 
+	   * 
+	   ********************************************************************/	  
+	   
       // cater for possible global -b option, if no override has been specified
       InetAddress address = this.bindAddress != null ? this.bindAddress :
             toInetAddress(System.getProperty(JBossASServerConfig.PROP_KEY_JBOSSAS_BIND_ADDRESS));
@@ -573,6 +587,28 @@
       // the listening address
       SnmpPeer peer = new SnmpPeer(address, this.port);
       
+      /********************************************************************
+       * 
+       * START OF MINE!!!! 
+       * 
+       ********************************************************************/
+      
+      TcpAddress tcpAddr = new TcpAddress(address, this.port);
+      DefaultTcpTransportMapping tcpMapping = new DefaultTcpTransportMapping(tcpAddr);
+      Snmp snmpPeer = new Snmp(tcpMapping);      
+      
+      /********************************************************************
+       * 
+       * END OF MINE!!!! 
+       * 
+       ********************************************************************/
+    
+      /********************************************************************
+       * 
+       * ORIG!!!! 
+       * 
+       ********************************************************************/
+      
       // set community strings and protocol version
       peer.getParameters().setReadCommunity(this.readCommunity);
       peer.getParameters().setWriteCommunity(this.writeCommunity);

Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpVarBindFactory.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpVarBindFactory.java	2009-11-23 14:40:57 UTC (rev 96738)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/SnmpVarBindFactory.java	2009-11-23 16:01:07 UTC (rev 96739)
@@ -29,6 +29,11 @@
 import org.opennms.protocols.snmp.SnmpObjectId;
 import org.opennms.protocols.snmp.SnmpOctetString;
 import org.opennms.protocols.snmp.SnmpVarBind;
+import org.snmp4j.smi.Counter64;
+import org.snmp4j.smi.Integer32;
+import org.snmp4j.smi.OID;
+import org.snmp4j.smi.OctetString;
+import org.snmp4j.smi.VariableBinding;
 /**
  * <tt>SnmpVarBindFactory</tt> implements the infrastructure required to 
  * generate SNMP variable bindings from generic Object instances.
@@ -71,7 +76,7 @@
     * provided value, as this is returned by "getClass().getName()". If a
     * match is found the call is delegated to the returned maker.
    **/    
-   public SnmpVarBind make(String oid, Object value)
+   public VariableBinding make(String oid, Object value)
       throws MappingFailedException
    {
       // Get value type and locate the maker
@@ -94,7 +99,7 @@
    **/     
    interface Maker
    {
-      public SnmpVarBind make(String oid, Object value)
+      public VariableBinding make(String oid, Object value)
          throws MappingFailedException;
    }
 
@@ -104,13 +109,13 @@
    class SnmpInt32Maker
       implements Maker
    {
-      public SnmpVarBind make(String oid, Object value) 
+      public VariableBinding make(String oid, Object value) 
          throws MappingFailedException
       {
          Integer i = (Integer)value;
             
-         return new SnmpVarBind(new SnmpObjectId(oid), 
-                                new SnmpInt32(i));
+         return new VariableBinding(new OID(oid), 
+                                new Integer32(i));
       }
    } // class SnmpInt32Maker
 
@@ -120,13 +125,13 @@
    class SnmpCounter64Maker
       implements Maker
    {
-      public SnmpVarBind make(String oid, Object value) 
+      public VariableBinding make(String oid, Object value) 
          throws MappingFailedException
       {
          Long l = (Long)value;
             
-         return new SnmpVarBind(new SnmpObjectId(oid), 
-                                new SnmpCounter64(l.longValue()));
+         return new VariableBinding(new OID(oid), 
+                                new Counter64(l.longValue()));
       }
    } // class SnmpCounter64Maker    
     
@@ -136,13 +141,13 @@
    class SnmpOctetStringMaker
       implements Maker
    {
-      public SnmpVarBind make(String oid, Object value)
+      public VariableBinding make(String oid, Object value)
          throws MappingFailedException
       {
          String s = (String)value;
             
-         return new SnmpVarBind(new SnmpObjectId(oid),
-                                new SnmpOctetString(s.getBytes()));
+         return new VariableBinding(new OID(oid),
+                                new OctetString(s.getBytes()));
       }
    } // class OctetStringMaker
 
@@ -152,7 +157,7 @@
    class SnmpDateMaker
       implements Maker
    {
-      public SnmpVarBind make(String oid, Object value)
+      public VariableBinding make(String oid, Object value)
          throws MappingFailedException
       {
          Date d = (Date)value;
@@ -168,7 +173,7 @@
    class SnmpObjectMaker
       implements Maker
    {
-      public SnmpVarBind make(String oid, Object value)
+      public VariableBinding make(String oid, Object value)
          throws MappingFailedException
       {
          SnmpOctetStringMaker sMaker =  new SnmpOctetStringMaker();

Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapEmitter.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapEmitter.java	2009-11-23 14:40:57 UTC (rev 96738)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapEmitter.java	2009-11-23 16:01:07 UTC (rev 96739)
@@ -40,6 +40,16 @@
 import org.opennms.protocols.snmp.SnmpPduPacket;
 import org.opennms.protocols.snmp.SnmpPduTrap;
 
+import org.snmp4j.CommunityTarget;
+import org.snmp4j.PDUv1;
+import org.snmp4j.ScopedPDU;
+import org.snmp4j.Target;
+import org.snmp4j.Snmp;
+import org.snmp4j.UserTarget;
+import org.snmp4j.mp.SnmpConstants;
+import org.snmp4j.smi.OctetString;
+import org.snmp4j.smi.TcpAddress;
+
 /**
  * <tt>TrapEmitter</tt> is a class that manages SNMP trap emission.
  *
@@ -158,8 +168,8 @@
       }
            
       // Cache the translated notification
-      SnmpPduTrap v1TrapPdu = null; 
-      SnmpPduPacket v2TrapPdu = null; 
+      PDUv1 v1TrapPdu = null; 
+      ScopedPDU v2TrapPdu = null; 
        
       // Send trap. Synchronise on the subscription collection while 
       // iterating 
@@ -188,7 +198,7 @@
                   
                   case SnmpAgentService.SNMPV2:
                      if (v2TrapPdu == null)
-                        v2TrapPdu = this.trapFactory.generateV2Trap(n);
+                        v2TrapPdu = this.trapFactory.generateV2V3Trap(n);
                      
                      // Advance the trap counter
                      this.trapCount.advance();
@@ -197,6 +207,8 @@
                      s.getSession().send(v2TrapPdu);
                      break;
                      
+                  case SnmpAgentService.SNMPV
+                     
                   default:    
                      log.error("Skipping session: Unknown SNMP version found");    
                }            
@@ -261,33 +273,38 @@
          // Read the monitoring manager's particulars
          Manager m = (Manager)i.next();
 
-         try
-         {
-            // Create a record of the manager's interest 
-            ManagerRecord mr = new ManagerRecord(
-                    InetAddress.getByName(m.getAddress()),
-                    m.getPort(),
-                    toInetAddressWithDefaultBinding(m.getLocalAddress()),
-                    m.getLocalPort(),
-                    m.getVersion()
-                );
+//         try
+//         {
+            // Create a record of the manager's interest
+        	 
+        	 Target target = createTarget(m);
+        	 if (target == null)
+        	 	continue;
+        	 
+//            ManagerRecord mr = new ManagerRecord(
+//                    InetAddress.getByName(m.getAddress()),
+//                    m.getPort(),
+//                    toInetAddressWithDefaultBinding(m.getLocalAddress()),
+//                    m.getLocalPort(),
+//                    m.getVersion()
+//                );
                 
             // Add the record to the list of monitoring managers. If 
             // successfull open the session to the manager as well.
-            if (this.managers.add(mr) == false)
+            if (this.managers.add(target) == false)
             {
                log.warn("Ignoring duplicate manager: " + m);  
             }
-            else
-            {            
+            //else
+            //{            
                // Open the session to the manager
-               mr.openSession();
-            }                
-         }
-         catch (Exception e)
-         {
-            log.warn("Error enabling monitoring manager: " + m, e);                
-         } 
+               //mr.openSession();
+            //}                
+//         }
+//         catch (Exception e)
+//         {
+//            log.warn("Error enabling monitoring manager: " + m, e);                
+//         } 
       }
    }
 
@@ -309,4 +326,23 @@
          return InetAddress.getByName(host);
    }
    
+   private Target createTarget(Manager m){
+	   Target target;
+	   int version = m.getVersion();
+	   
+	   if (version == SnmpConstants.version1 || version == SnmpConstants.version2c){
+		   //change 'public' to a constant somewhere
+		   target = new CommunityTarget(new TcpAddress(m.getAddress()), new OctetString("public"));
+	   }
+	   else if (version == SnmpConstants.version3) {
+		   //won't be used at the moment
+		   target = new UserTarget();
+	   }
+	   else {
+		   //unrecognized version
+		   target = null;
+	   }
+	   return target;
+   }
+   
 } // class TrapEmitter

Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactory.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactory.java	2009-11-23 14:40:57 UTC (rev 96738)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactory.java	2009-11-23 16:01:07 UTC (rev 96739)
@@ -21,8 +21,8 @@
 
 import javax.management.Notification;
 
-import org.opennms.protocols.snmp.SnmpPduPacket;
-import org.opennms.protocols.snmp.SnmpPduTrap;
+import org.snmp4j.PDUv1;
+import org.snmp4j.ScopedPDU;
 
 /**
  * <tt>TrapFactory </tt> takes care of translation of Notifications into
@@ -82,15 +82,20 @@
     *
     * @param the notification to be translated
    **/
-   public SnmpPduPacket generateV2Trap(Notification n) 
-      throws MappingFailedException;
+//   public SnmpPduPacket generateV2Trap(Notification n) 
+//      throws MappingFailedException;
+   public ScopedPDU generateV2V3Trap(Notification n) 
+   throws MappingFailedException;
 
    /**
     * Traslates a Notification to an SNMP V1 trap.
     *
     * @param the notification to be translated
    **/
-   public SnmpPduTrap generateV1Trap(Notification n) 
-      throws MappingFailedException;
+//   public SnmpPduTrap generateV1Trap(Notification n) 
+//      throws MappingFailedException;
+   
+   public PDUv1 generateV1Trap(Notification n) 
+   throws MappingFailedException;
           
 } // TrapFactory

Modified: branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactorySupport.java
===================================================================
--- branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactorySupport.java	2009-11-23 14:40:57 UTC (rev 96738)
+++ branches/snmp4j-integration/varia/src/main/java/org/jboss/jmx/adaptor/snmp/agent/TrapFactorySupport.java	2009-11-23 16:01:07 UTC (rev 96739)
@@ -41,6 +41,9 @@
 import org.opennms.protocols.snmp.SnmpPduPacket;
 import org.opennms.protocols.snmp.SnmpPduRequest;
 import org.opennms.protocols.snmp.SnmpPduTrap;
+import org.snmp4j.PDUv1;
+import org.snmp4j.ScopedPDU;
+import org.snmp4j.smi.OID;
 import org.xml.sax.Attributes;
 
 /**
@@ -262,7 +265,7 @@
    /**
     * Traslates a Notification to an SNMP V1 trap.
    **/
-   public SnmpPduTrap generateV1Trap(Notification n) 
+   public PDUv1 generateV1Trap(Notification n) 
       throws MappingFailedException
    {
       if (log.isTraceEnabled())
@@ -284,14 +287,14 @@
       Mapping m = (Mapping)this.notificationMapList.get(index);
         
       // Create trap
-      SnmpPduTrap trapPdu = new SnmpPduTrap();
+      PDUv1 trapPdu = new PDUv1();
         
-      trapPdu.setTimeStamp(this.clock.uptime());
+      trapPdu.setTimestamp(this.clock.uptime());
         
       // Organise the 'variable' payload 
-      trapPdu.setGeneric(m.getGeneric());
-      trapPdu.setSpecific(m.getSpecific());
-      trapPdu.setEnterprise(m.getEnterprise());
+      trapPdu.setGenericTrap(m.getGeneric());
+      trapPdu.setSpecificTrap(m.getSpecific());
+      trapPdu.setEnterprise(new OID(m.getEnterprise()));
         
       // Append the specified varbinds. Get varbinds from mapping and for
       // each one of the former use the wrapper to get the corresponding
@@ -319,8 +322,8 @@
             // wrapper in order for it to locate the required value. That 
             // value and the aforementioned OID are used to generate the 
             // variable binding
-            trapPdu.addVarBind(
-               this.snmpVBFactory.make(vb.getOid(), wrapper.get(vb.getTag())));
+            trapPdu.add(
+            		this.snmpVBFactory.make(vb.getOid(), wrapper.get(vb.getTag())));
          }
       }
       else
@@ -337,11 +340,11 @@
     *
     * TODO: how do you get timestamp, generic, and specific stuff in the trap
    **/
-   public SnmpPduPacket generateV2Trap(Notification n) 
+   public ScopedPDU generateV2V3Trap(Notification n) 
       throws MappingFailedException
    {
       if (log.isTraceEnabled())
-         log.trace("generateV2Trap");
+         log.trace("generateV2V3Trap");
         
       // Locate mapping for incomming event
       int index = -1;
@@ -359,7 +362,9 @@
       Mapping m = (Mapping)this.notificationMapList.get(index);
       
       // Create trap
-      SnmpPduRequest trapPdu = new SnmpPduRequest(SnmpPduPacket.V2TRAP);
+      ScopedPDU trapPdu = new ScopedPDU();
+      
+      //--SnmpPduRequest trapPdu = new SnmpPduRequest(SnmpPduPacket.V2TRAP);
         
       // Append the specified varbinds. Get varbinds from mapping and for
       // each one of the former use the wrapper to get data from the 
@@ -385,8 +390,8 @@
             // wrapper in order for it to locate the required value. That 
             // value and the aforementioned OID are used to generate the 
             // variable binding
-            trapPdu.addVarBind(
-               this.snmpVBFactory.make(vb.getOid(), wrapper.get(vb.getTag())));
+            trapPdu.add(
+            		this.snmpVBFactory.make(vb.getOid(), wrapper.get(vb.getTag())));
          }
       }
       else




More information about the jboss-cvs-commits mailing list