[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