derTak avatar derTak committed c14f68f Merge

Comments (0)

Files changed (41)

dependencies/castor/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The opennms-castor project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/dnsjava/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The dnsjava project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/drools/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The opennms-drools project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies for drools (including the fact that
-is uses its own maven-repository)
-

dependencies/gwt/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The GWT project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/hibernate/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The opennms-hibernate project dependencies allow
-us to depend only on a single project and still get the
-appropriate dependencies for hibernate.
-

dependencies/jaxb/src/main/resources/README.txt

-This is a readme.  Fear it!

dependencies/jersey/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The opennms-jersey project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/jinterop/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The jinterop project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/jradius/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The jradius project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/mina/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The MINA project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/quartz/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The quartz project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/rancid/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The RANCID project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/snmp-test/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The SNMP project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/snmp/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The SNMP project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/snmp4j-agent/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The SNMP project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/snmp4j/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The SNMP4J project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/spring-security/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The opennms-spring-security project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/spring-test/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The opennms-spring project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/spring-web/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The opennms-spring project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/spring/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The opennms-spring project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

dependencies/twitter4j/src/main/resources/README.txt

-This file just exists as a way to handle complex dependencies
-using maven.  The twitter4j project dependencies allow
-to to depend only on a single project and still get the
-appropriate dependencies.
-

opennms-base-assembly/src/main/filtered/etc/collectd-configuration.xml

 		</service>
 	</package>
 	
+    <package name="ejn">
+        <filter>IPADDR != '0.0.0.0'</filter>
+        <include-range begin="1.1.1.1" end="254.254.254.254"/>
+
+        <service name="SNMP" interval="180000" user-defined="false" status="on">
+            <parameter key="collection" value="ejn"/>
+            <parameter key="thresholding-enabled" value="true"/>
+        </service>
+    </package>
+    
 	<collector service="SNMP" class-name="org.opennms.netmgt.collectd.SnmpCollector"/>
 	<collector service="WMI"  class-name="org.opennms.netmgt.collectd.WmiCollector"/>
 	<collector service="OpenNMS-JVM" class-name="org.opennms.netmgt.collectd.Jsr160Collector"/>

opennms-base-assembly/src/main/filtered/etc/datacollection-config.xml

 
     <include-collection dataCollectionGroup="MIB2"/>
     <include-collection dataCollectionGroup="3Com"/>
+    <include-collection dataCollectionGroup="Acme Packet"/>
     <include-collection dataCollectionGroup="AKCP sensorProbe"/>
     <include-collection dataCollectionGroup="Alvarion"/>
     <include-collection dataCollectionGroup="APC"/>
     <include-collection dataCollectionGroup="Concord"/>
     <include-collection dataCollectionGroup="Cyclades"/>
     <include-collection dataCollectionGroup="Dell"/>
+    <include-collection dataCollectionGroup="Ericsson"/>
     <include-collection dataCollectionGroup="Equallogic"/>
     <include-collection dataCollectionGroup="Extreme Networks"/>
     <include-collection dataCollectionGroup="F5"/>
     <include-collection dataCollectionGroup="Zeus"/>
   </snmp-collection>
 
+  <!-- We need a dedicated collection with a different RRD setup for EJN equipment because
+       the data in the EJN SNMP MIB is only updated once every 15 min by default or alternatively
+       once every 3 min with the hidden "set services epg pgw snmp update-every-three-minutes"
+       config option -->
+  <snmp-collection name="ejn" snmpStorageFlag="select">
+    <rrd step="180">
+      <rra>RRA:AVERAGE:0.5:1:3360</rra>
+      <rra>RRA:AVERAGE:0.5:20:1488</rra>
+      <rra>RRA:AVERAGE:0.5:480:366</rra>
+      <rra>RRA:MAX:0.5:480:366</rra>
+      <rra>RRA:MIN:0.5:480:366</rra>
+    </rrd>
+
+    <include-collection dataCollectionGroup="ejn"/>
+  </snmp-collection>
 </datacollection-config>

opennms-base-assembly/src/main/filtered/etc/datacollection/acmepacket.xml

+<?xml version="1.0"?>
+<datacollection-group name="Acme Packet">
+      <!-- Acme Packet Resource Types -->
+      <resourceType name="apSipSAStatIdx" label="Acme Packet SIP Session Agent" resourceLabel="${apSipSAStatSAHost}">
+        <persistenceSelectorStrategy class="org.opennms.netmgt.collectd.PersistAllSelectorStrategy"/>
+        <storageStrategy class="org.opennms.netmgt.dao.support.SiblingColumnStorageStrategy">
+          <parameter key="sibling-column-name" value="apSipSAStatSAHost" />
+        </storageStrategy>
+      </resourceType>
+      <resourceType name="apH323SAStatIdx" label="Acme Packet H323 Session Agent" resourceLabel="${apH323SAStatSAHost}">
+        <persistenceSelectorStrategy class="org.opennms.netmgt.collectd.PersistAllSelectorStrategy"/>
+        <storageStrategy class="org.opennms.netmgt.dao.support.SiblingColumnStorageStrategy">
+          <parameter key="sibling-column-name" value="apH323SAStatSAHost" />
+        </storageStrategy>
+      </resourceType>
+
+      <group name="acmepacket" ifType="ignore">
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.1.1" instance="0" alias="apSysCPUUtil" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.1.2" instance="0" alias="apSysMemoryUtil" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.1.3" instance="0" alias="apSysHealthScore" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.1.5" instance="0" alias="apSysGlobalConSess" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.1.6" instance="0" alias="apSysGlobalCPS" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.2.2.1.2" instance="apSipSAStatIdx" alias="apSipSAStatSAHost" type="string" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.2.2.1.8" instance="apSipSAStatIdx" alias="apSipSAStatTotIn" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.2.2.1.9" instance="apSipSAStatIdx" alias="apSipSAStatTotNAIn" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.2.2.1.12" instance="apSipSAStatIdx" alias="apSipSAStatTotOut" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.2.2.1.13" instance="apSipSAStatIdx" alias="apSipSAStatTotNAOt" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.2.3.1.2" instance="apH323SAStatIdx" alias="apH323SAStatSAHost" type="string" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.2.3.1.8" instance="apH323SAStatIdx" alias="apH323SAStatTotIn" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.2.3.1.9" instance="apH323SAStatIdx" alias="apH323SAStatTotNAIn" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.2.3.1.12" instance="apH323SAStatIdx" alias="apH323SAStatTotOut" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.9148.3.2.1.2.3.1.13" instance="apH323SAStatIdx" alias="apH32SAStatTotNAOt" type="counter" />
+      </group>
+
+      <systemDef name="Acme Packet">
+	<sysoidMask>.1.3.6.1.4.1.9148.1.1.</sysoidMask>
+        <collect>
+          <includeGroup>acmepacket</includeGroup>
+        </collect>
+      </systemDef>
+
+</datacollection-group>

opennms-base-assembly/src/main/filtered/etc/datacollection/ejn.xml

+<?xml version="1.0"?>
+<datacollection-group name="ejn">
+
+  <!-- Ericsson Juniper Networks GGSN Resource Types -->
+  <resourceType name="ejnGgsnApnIndex" label="GPRS Access Point Name" resourceLabel="GPRS APN: ${ApnName}">
+    <persistenceSelectorStrategy class="org.opennms.netmgt.collectd.PersistAllSelectorStrategy"/>
+    <storageStrategy class="org.opennms.netmgt.dao.support.SiblingColumnStorageStrategy">
+      <parameter key="sibling-column-name" value="ApnName" />
+      <parameter key="replace-all" value="s/^-//" />
+      <parameter key="replace-all" value="s/\s//" />
+      <parameter key="replace-all" value="s/:\\.*//" />
+    </storageStrategy>
+  </resourceType>
+
+  <resourceType name="ejnGgsnGtpcIndex" label="GGSN Control PICs" resourceLabel="CPIC: ${ggsnGtpcAddr} (${ggsnGtpcStatus})">
+    <persistenceSelectorStrategy class="org.opennms.netmgt.collectd.PersistAllSelectorStrategy"/>
+    <storageStrategy class="org.opennms.netmgt.dao.support.SiblingColumnStorageStrategy">
+      <parameter key="sibling-column-name" value="ggsnGtpcAddr" />
+    </storageStrategy>
+  </resourceType>
+
+  <resourceType name="ejnGgsnGtpuIndex" label="GGSN User PICs" resourceLabel="UPIC: ${ggsnGtpuAddr} (${ggsnGtpuStatus})">
+    <persistenceSelectorStrategy class="org.opennms.netmgt.collectd.PersistAllSelectorStrategy"/>
+    <storageStrategy class="org.opennms.netmgt.dao.support.SiblingColumnStorageStrategy">
+      <parameter key="sibling-column-name" value="ggsnGtpuAddr" />
+    </storageStrategy>
+  </resourceType>
+
+  <!-- FIXME -->
+  <resourceType name="ejnGgsnRadiusIndex" label="GGSN User PICs" resourceLabel="RADIUS ${index}: ${ggsnGtpuAddr}">
+    <persistenceSelectorStrategy class="org.opennms.netmgt.collectd.PersistAllSelectorStrategy"/>
+    <storageStrategy class="org.opennms.netmgt.dao.support.IndexStorageStrategy"/>
+  </resourceType>
+
+      <group name="ejn-ggsn-radius" ifType="ignore">
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.10.1.1.2" instance="jnxPingObjectsIndex" alias="ggsnApnRadAthSvrIp" type="string" />
+      </group>
+
+      <group name="ejn-ggsn" ifType="ignore">
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.3.1" instance="0" alias="ggsnPdpCreateAtmpt" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.3.2" instance="0" alias="ggsnPdpDeleteAtmpt" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.3.3" instance="0" alias="ggsnPdpSlfDltAtmpt" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.4.1" instance="0" alias="ggsnPdpActivates" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.4.2" instance="0" alias="ggsnPdpDeactivates" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.2" instance="0" alias="ggsnPdpsTotalActive" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.11.1" instance="0" alias="ggsnUplnkPkts" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.11.2" instance="0" alias="ggsnUplnkBytes" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.11.3" instance="0" alias="ggsnUplnkDrp" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.11.4" instance="0" alias="ggsnUplnkDrpByt" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.12.1" instance="0" alias="ggsnDnlnkPkts" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.12.2" instance="0" alias="ggsnDnlnkBytes" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.12.3" instance="0" alias="ggsnDnlnkDrp" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.12.4" instance="0" alias="ggsnDnlnkDrpByt" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.20" instance="0" alias="ggsnSubscriberNo" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.22" instance="0" alias="ggsnNbrOfTftFltrs" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.25" instance="0" alias="ggsnControlLoad" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.26" instance="0" alias="ggsnPayloadLoad" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.32" instance="0" alias="ggsnL2tpActTnls" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.33" instance="0" alias="ggsnL2tpActSess" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.36" instance="0" alias="ggsnChgCdrsSucc" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.37" instance="0" alias="ggsnChgCdrsFail" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.43" instance="0" alias="ggsnPdpsTClassConv" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.44" instance="0" alias="ggsnPdpsTClassStrm" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.45" instance="0" alias="ggsnPdpsTClassIntr" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.46" instance="0" alias="ggsnPdpsTClassBack" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.47" instance="0" alias="ggsnRadAuthFail" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.48" instance="0" alias="ggsnRadAcctFail" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.3.50" instance="0" alias="ggsn3gdtActContxt" type="gauge" />
+      </group>
+
+      <group name="ejn-ggsn-apn" ifType="all">
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.5.1.2" instance="ejnGgsnApnIndex" alias="ApnName" type="string" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.5.1.3" instance="ejnGgsnApnIndex" alias="ApnActivePdpContext" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.5.1.13" instance="ejnGgsnApnIndex" alias="ApnUplinkBytes" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.5.1.16" instance="ejnGgsnApnIndex" alias="ApnDownlinkBytes" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.5.1.58" instance="ejnGgsnApnIndex" alias="ApnRadAcctFail" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.5.1.59" instance="ejnGgsnApnIndex" alias="ApnRadAuthFail" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.5.1.63" instance="ejnGgsnApnIndex" alias="ApnFreePoolIps" type="integer" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.1.5.1.64" instance="ejnGgsnApnIndex" alias="ApnQuarPoolIps" type="integer" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.7.1.11.1.3" instance="ejnGgsnApnIndex" alias="ApnFbcCcasStrtReq" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.7.1.11.1.4" instance="ejnGgsnApnIndex" alias="ApnFbcCcasStrtFail" type="counter" />
+      </group>
+
+      <group name="ejn-ggsn-gtpc" ifType="all">
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.2.1.1.1" instance="ejnGgsnGtpcIndex" alias="ggsnGtpc" type="integer" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.2.1.1.3" instance="ejnGgsnGtpcIndex" alias="ggsnGtpcAddr" type="string" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.2.1.1.4" instance="ejnGgsnGtpcIndex" alias="ggsnGtpcPdpMax" type="integer" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.2.1.1.5" instance="ejnGgsnGtpcIndex" alias="ggsnGtpcRole" type="integer" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.2.1.1.6" instance="ejnGgsnGtpcIndex" alias="ggsnGtpcStatus" type="string" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.2.1.1.7" instance="ejnGgsnGtpcIndex" alias="ggsnGtpcCtlPktDrop" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.2.1.1.8" instance="ejnGgsnGtpcIndex" alias="ggsnGtpcPdp" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.2.1.1.9" instance="ejnGgsnGtpcIndex" alias="ggsnGtpcMem" type="integer" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.2.1.1.10" instance="ejnGgsnGtpcIndex" alias="ggsnGtpcMemUsed" type="integer" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.2.1.1.11" instance="ejnGgsnGtpcIndex" alias="ggsnGtpcCpu" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.2.1.1.14" instance="ejnGgsnGtpcIndex" alias="ggsnGtpcCtrlLoad" type="gauge" />
+      </group>
+
+      <group name="ejn-ggsn-gtpu" ifType="all">
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.6.1.1.1" instance="ejnGgsnGtpuIndex" alias="ggsnGtpu" type="integer" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.6.1.1.3" instance="ejnGgsnGtpuIndex" alias="ggsnGtpuAddr" type="string" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.6.1.1.4" instance="ejnGgsnGtpuIndex" alias="ggsnGtpuPdpMax" type="integer" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.6.1.1.5" instance="ejnGgsnGtpuIndex" alias="ggsnGtpuRole" type="integer" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.6.1.1.6" instance="ejnGgsnGtpuIndex" alias="ggsnGtpuStatus" type="string" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.6.1.1.7" instance="ejnGgsnGtpuIndex" alias="ggsnGtpuUplnkDrp" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.6.1.1.8" instance="ejnGgsnGtpuIndex" alias="ggsnGtpuDnlnkDrp" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.6.1.1.9" instance="ejnGgsnGtpuIndex" alias="ggsnGtpuPdp" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.6.1.1.10" instance="ejnGgsnGtpuIndex" alias="ggsnGtpuMem" type="integer" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.6.1.1.11" instance="ejnGgsnGtpuIndex" alias="ggsnGtpuMemUsed" type="integer" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.6.1.1.12" instance="ejnGgsnGtpuIndex" alias="ggsnGtpuCpu" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.10923.1.1.1.1.6.1.1.13" instance="ejnGgsnGtpuIndex" alias="ggsnGtpuPloadLoad" type="gauge" />
+      </group>
+
+
+      <systemDef name="EJN Mobile IP GGSN">
+        <sysoid>.1.3.6.1.4.1.2636.1.1.1.2.18</sysoid>
+        <collect>
+          <includeGroup>ejn-ggsn</includeGroup>
+          <includeGroup>ejn-ggsn-apn</includeGroup>
+          <includeGroup>ejn-ggsn-radius</includeGroup>
+          <includeGroup>ejn-ggsn-gtpc</includeGroup>
+          <includeGroup>ejn-ggsn-gtpu</includeGroup>
+        </collect>
+      </systemDef>
+
+</datacollection-group>

opennms-base-assembly/src/main/filtered/etc/datacollection/ericsson.xml

+<?xml version="1.0"?>
+<datacollection-group name="Ericsson">
+      <!-- Ericsson IPWorks Resource Types -->
+      <group name="ericsson-ipworks" ifType="ignore">
+        <mibObj oid=".1.3.6.1.4.1.193.113.1.1.1.1.1.3" instance="0" alias="ipwksDnsSrvCnfUpTim" type="gauge" />
+        <mibObj oid=".1.3.6.1.4.1.193.113.1.1.1.1.2.1" instance="0" alias="ipwksDnsSrvQrySucc" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.193.113.1.1.1.1.2.2" instance="0" alias="ipwksDnsSrvQryRefer" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.193.113.1.1.1.1.2.3" instance="0" alias="ipwksDnsSrvQryNxrst" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.193.113.1.1.1.1.2.4" instance="0" alias="ipwksDnsSrvQryNxdom" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.193.113.1.1.1.1.2.5" instance="0" alias="ipwksDnsSrvQryRecur" type="counter" />
+        <mibObj oid=".1.3.6.1.4.1.193.113.1.1.1.1.2.6" instance="0" alias="ipwksDnsSrvQryFail" type="counter" />
+      </group>
+
+      <systemDef name="Ericsson IPWorks">
+        <sysoidMask>.1.3.6.1.4.1.8072.3.</sysoidMask>
+        <collect>
+          <includeGroup>ericsson-ipworks</includeGroup>
+        </collect>
+      </systemDef>
+
+</datacollection-group>

opennms-base-assembly/src/main/filtered/etc/datacollection/netsnmp.xml

       </storageStrategy>
     </resourceType>
 
+    <resourceType name="lmTempIndex" label="Hardware Sensors: Temperature (lmSensors MIB)" 
+                  resourceLabel="${lms-tempdevice} (index ${index})">
+      <persistenceSelectorStrategy class="org.opennms.netmgt.collectd.PersistAllSelectorStrategy"/>
+      <storageStrategy class="org.opennms.netmgt.dao.support.IndexStorageStrategy"/>
+    </resourceType>
+
+    <resourceType name="lmFanIndex" label="Hardware Sensors: Fan (lmSensors MIB)"
+                  resourceLabel="${lms-fandevice} (index ${index})">
+      <persistenceSelectorStrategy class="org.opennms.netmgt.collectd.PersistAllSelectorStrategy"/>
+      <storageStrategy class="org.opennms.netmgt.dao.support.IndexStorageStrategy"/>
+    </resourceType>
+
+    <resourceType name="lmVoltIndex" label="Hardware Sensors: Voltage (lmSensors MIB)"
+                  resourceLabel="${lms-voltdevice} (index ${index})">
+      <persistenceSelectorStrategy class="org.opennms.netmgt.collectd.PersistAllSelectorStrategy"/>
+      <storageStrategy class="org.opennms.netmgt.dao.support.IndexStorageStrategy"/>
+    </resourceType>
+
       <!-- Net-SNMP MIBs -->
       <group name="net-snmp-disk" ifType="all">
         <mibObj oid=".1.3.6.1.4.1.2021.9.1.2" instance="dskIndex" alias="ns-dskPath"    type="string" />
         <mibObj oid=".1.3.6.1.4.1.2021.13.15.1.1.6" instance="diskIOIndex" alias="diskIOWrites"   type="counter" />
       </group>
 
+      <!-- lmsensors MIBs -->
+      <group name="lmsensors-temp" ifType="all">
+        <mibObj oid=".1.3.6.1.4.1.2021.13.16.2.1.2" instance="lmTempIndex" alias="lms-tempdevice" type="string"/>
+        <mibObj oid=".1.3.6.1.4.1.2021.13.16.2.1.3" instance="lmTempIndex" alias="lms-temp" type="gauge32"/>
+      </group>
+
+      <group name="lmsensors-fan" ifType="all">
+        <mibObj oid=".1.3.6.1.4.1.2021.13.16.3.1.2" instance="lmFanIndex" alias="lms-fandevice" type="string"/>
+        <mibObj oid=".1.3.6.1.4.1.2021.13.16.3.1.3" instance="lmFanIndex" alias="lms-fan" type="gauge32"/>
+      </group>
+
+      <group name="lmsensors-volt" ifType="all">
+        <mibObj oid=".1.3.6.1.4.1.2021.13.16.4.1.2" instance="lmVoltIndex" alias="lms-voltdevice" type="string"/>
+        <mibObj oid=".1.3.6.1.4.1.2021.13.16.4.1.3" instance="lmVoltIndex" alias="lms-volt" type="gauge32"/>
+      </group>
+
       <systemDef name="Net-SNMP (UCD)">
         <sysoidMask>.1.3.6.1.4.1.2021.250.</sysoidMask>
         <collect>
           <includeGroup>mib2-host-resources-memory</includeGroup>
           <includeGroup>mib2-host-resources-storage</includeGroup>
           <includeGroup>net-snmp-disk</includeGroup>
-	  <includeGroup>net-snmp-disk-more</includeGroup>
-	  <includeGroup>net-snmp-disk-highlow</includeGroup>
+          <includeGroup>net-snmp-disk-more</includeGroup>
+          <includeGroup>net-snmp-disk-highlow</includeGroup>
           <includeGroup>ucd-loadavg</includeGroup>
           <includeGroup>ucd-memory</includeGroup>
           <includeGroup>ucd-sysstat</includeGroup>
-	  <includeGroup>ucd-sysstat-raw</includeGroup>
-	  <includeGroup>ucd-sysstat-raw-more</includeGroup>
+          <includeGroup>ucd-sysstat-raw</includeGroup>
+          <includeGroup>ucd-sysstat-raw-more</includeGroup>
+          <includeGroup>lmsensors-temp</includeGroup>
+          <includeGroup>lmsensors-fan</includeGroup>
+          <includeGroup>lmsensors-volt</includeGroup>
         </collect>
       </systemDef>
 
           <includeGroup>mib2-host-resources-memory</includeGroup>
           <includeGroup>mib2-X-interfaces</includeGroup>
           <includeGroup>net-snmp-disk</includeGroup>
-	  <includeGroup>net-snmp-disk-more</includeGroup>
-	  <includeGroup>net-snmp-disk-highlow</includeGroup>
+          <includeGroup>net-snmp-disk-more</includeGroup>
+          <includeGroup>net-snmp-disk-highlow</includeGroup>
           <includeGroup>openmanage-coolingdevices</includeGroup>
           <includeGroup>openmanage-temperatureprobe</includeGroup>
           <includeGroup>openmanage-powerusage</includeGroup>
           <includeGroup>ucd-loadavg</includeGroup>
           <includeGroup>ucd-memory</includeGroup>
           <includeGroup>ucd-sysstat</includeGroup>
-	  <includeGroup>ucd-sysstat-raw</includeGroup>
-	  <includeGroup>ucd-sysstat-raw-more</includeGroup>
+          <includeGroup>ucd-sysstat-raw</includeGroup>
+          <includeGroup>ucd-sysstat-raw-more</includeGroup>
+          <includeGroup>lmsensors-temp</includeGroup>
+          <includeGroup>lmsensors-fan</includeGroup>
+          <includeGroup>lmsensors-volt</includeGroup>
         </collect>
       </systemDef>
 
           <includeGroup>mib2-host-resources-memory</includeGroup>
           <includeGroup>mib2-X-interfaces</includeGroup>
           <includeGroup>net-snmp-disk</includeGroup>
-	  <includeGroup>net-snmp-disk-more</includeGroup>
-	  <includeGroup>net-snmp-disk-highlow</includeGroup>
+          <includeGroup>net-snmp-disk-more</includeGroup>
+          <includeGroup>net-snmp-disk-highlow</includeGroup>
           <includeGroup>openmanage-coolingdevices</includeGroup>
           <includeGroup>openmanage-temperatureprobe</includeGroup>
           <includeGroup>openmanage-powerusage</includeGroup>
           <includeGroup>ucd-loadavg</includeGroup>
           <includeGroup>ucd-memory</includeGroup>
           <includeGroup>ucd-sysstat</includeGroup>
-	  <includeGroup>ucd-sysstat-raw</includeGroup>
-	  <includeGroup>ucd-sysstat-raw-more</includeGroup>
+          <includeGroup>ucd-sysstat-raw</includeGroup>
+          <includeGroup>ucd-sysstat-raw-more</includeGroup>
+          <includeGroup>lmsensors-temp</includeGroup>
+          <includeGroup>lmsensors-fan</includeGroup>
+          <includeGroup>lmsensors-volt</includeGroup>
         </collect>
       </systemDef>
 
           <includeGroup>mib2-host-resources-memory</includeGroup>
           <includeGroup>mib2-X-interfaces</includeGroup>
           <includeGroup>net-snmp-disk</includeGroup>
-	  <includeGroup>net-snmp-disk-more</includeGroup>
-	  <includeGroup>net-snmp-disk-highlow</includeGroup>
+          <includeGroup>net-snmp-disk-more</includeGroup>
+          <includeGroup>net-snmp-disk-highlow</includeGroup>
           <includeGroup>openmanage-coolingdevices</includeGroup>
           <includeGroup>openmanage-temperatureprobe</includeGroup>
           <includeGroup>openmanage-powerusage</includeGroup>
           <includeGroup>ucd-loadavg</includeGroup>
           <includeGroup>ucd-memory</includeGroup>
           <includeGroup>ucd-sysstat</includeGroup>
-	  <includeGroup>ucd-sysstat-raw</includeGroup>
-	  <includeGroup>ucd-sysstat-raw-more</includeGroup>
+          <includeGroup>ucd-sysstat-raw</includeGroup>
+          <includeGroup>ucd-sysstat-raw-more</includeGroup>
+          <includeGroup>lmsensors-temp</includeGroup>
+          <includeGroup>lmsensors-fan</includeGroup>
+          <includeGroup>lmsensors-volt</includeGroup>
         </collect>
       </systemDef>
 </datacollection-group>

opennms-base-assembly/src/main/filtered/etc/eventconf.xml

   <event-file>events/Packeteer.events.xml</event-file>
   <event-file>events/Patrol.events.xml</event-file>
   <event-file>events/PCube.events.xml</event-file>
+  <event-file>events/Pingtel.events.xml</event-file>
   <event-file>events/Pixelmetrix.events.xml</event-file>
   <event-file>events/Polycom.events.xml</event-file>
   <event-file>events/Powerware.events.xml</event-file>

opennms-base-assembly/src/main/filtered/etc/events/Pingtel.events.xml

+<events>
+<event>
+        <mask>
+                <maskelement>
+                        <mename>id</mename>
+                        <mevalue>.1.3.6.1.4.1.7142.100.1</mevalue>
+                </maskelement>
+                <maskelement>
+                        <mename>generic</mename>
+                        <mevalue>6</mevalue>
+                </maskelement>
+                <maskelement>
+                        <mename>specific</mename>
+                        <mevalue>0</mevalue>
+                </maskelement>
+        </mask>
+        <uei>uei.opennms.org/vendor/Pingtel/traps/sipxecsAlarmNotification</uei>
+        <event-label>SIPXECS-ALARM-NOTIFICATION-MIB defined trap event: sipxecsAlarmNotification</event-label>
+        <descr>
+&lt;p&gt;Notification of the alarm generated by sipxecs. The attributes of this alarm are Alarm code,
+the host that generated the alarm, time the alarm was generated, alarm severity and description
+of the alarm.&lt;/p&gt;&lt;table&gt;
+        &lt;tr&gt;&lt;td&gt;&lt;b&gt;
+
+        sipxecsAlarmId&lt;/b&gt;&lt;/td&gt;&lt;td&gt;
+        %parm[#1]%;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
+        &lt;tr&gt;&lt;td&gt;&lt;b&gt;
+
+        sipxecsAlarmSource&lt;/b&gt;&lt;/td&gt;&lt;td&gt;
+        %parm[#2]%;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;                                                                                                             
+        &lt;tr&gt;&lt;td&gt;&lt;b&gt;                                                                                                                                                         
+                                                                                                                                                                                              
+        sipxecsAlarmTime&lt;/b&gt;&lt;/td&gt;&lt;td&gt;                                                                                                                                       
+        %parm[#3]%;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;                                                                                                             
+        &lt;tr&gt;&lt;td&gt;&lt;b&gt;                                                                                                                                                         
+                                                                                                                                                                                              
+        sipxecsAlarmSeverity&lt;/b&gt;&lt;/td&gt;&lt;td&gt;                                                                                                                                   
+        %parm[#4]%;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;                                                                                                             
+        &lt;tr&gt;&lt;td&gt;&lt;b&gt;                                                                                                                                                         
+                                                                                                                                                                                              
+        sipxecsAlarmDescr&lt;/b&gt;&lt;/td&gt;&lt;td&gt;
+        %parm[#5]%;&lt;/td&gt;&lt;td&gt;&lt;p&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
+        </descr>
+                <logmsg dest='logndisplay'>&lt;p&gt;
+                        sipxecsAlarmNotification trap received 
+                        sipxecsAlarmId=%parm[#1]% 
+                        sipxecsAlarmSource=%parm[#2]% 
+                        sipxecsAlarmTime=%parm[#3]% 
+                        sipxecsAlarmSeverity=%parm[#4]% 
+                        sipxecsAlarmDescr=%parm[#5]%&lt;/p&gt;
+                </logmsg>
+        <severity>Indeterminate</severity>
+</event>
+</events>

opennms-base-assembly/src/main/filtered/etc/snmp-graph.properties.d/acmepacket-graph.properties

+reports=acmepacket.cpu, acmepacket.memory, acmepacket.health, acmepacket.globalsessions, acmepacket.globalcps, \
+acmepacket.sa.h323.sessions.rejects, acmepacket.sa.h323.sessions.total, \
+acmepacket.sa.sip.sessions.rejects, acmepacket.sa.sip.sessions.total
+
+######
+###### Reports for Acme Packet Session Border Controllers
+######
+report.acmepacket.globalsessions.name=Global Connected Sessions
+report.acmepacket.globalsessions.columns=apSysGlobalConSess
+report.acmepacket.globalsessions.type=nodeSnmp
+report.acmepacket.globalsessions.command=--title="SBC Global Connected Sessions" \
+ --vertical-label="Connected Sessions" \
+ DEF:sessions={rrd1}:apSysGlobalConSess:AVERAGE \
+ AREA:sessions#00ff00:"Sessions" \
+ GPRINT:sessions:AVERAGE:" Avg  \\: %8.2lf %s" \
+ GPRINT:sessions:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:sessions:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.acmepacket.globalcps.name=Global CPS
+report.acmepacket.globalcps.columns=apSysGlobalCPS
+report.acmepacket.globalcps.type=nodeSnmp
+report.acmepacket.globalcps.command=--title="SBC Global Calls Per Sec" \
+ --vertical-label="Calls / Sec" \
+ DEF:sessions={rrd1}:apSysGlobalCPS:AVERAGE \
+ AREA:sessions#00ff00:"CPS" \
+ GPRINT:sessions:AVERAGE:" Avg  \\: %8.2lf %s" \
+ GPRINT:sessions:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:sessions:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.acmepacket.cpu.name=Acme Packet System CPU Utilization
+report.acmepacket.cpu.columns=apSysCPUUtil
+report.acmepacket.cpu.type=nodeSnmp
+report.acmepacket.cpu.command=--title="SBC System CPU utilization" \
+ --vertical-label="CPU Utilization" \
+ DEF:utilization={rrd1}:apSysCPUUtil:AVERAGE \
+ AREA:utilization#00ff00:"CPU" \
+ GPRINT:utilization:AVERAGE:" Avg  \\: %8.2lf %s" \
+ GPRINT:utilization:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:utilization:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.acmepacket.memory.name=Acme Packet System Memory Utilization
+report.acmepacket.memory.columns=apSysMemoryUtil
+report.acmepacket.memory.type=nodeSnmp
+report.acmepacket.memory.command=--title="SBC System memory utilization" \
+ --vertical-label="Memory Utilization" \
+ DEF:utilization={rrd1}:apSysMemoryUtil:AVERAGE \
+ AREA:utilization#00ff00:"Memory" \
+ GPRINT:utilization:AVERAGE:" Avg  \\: %8.2lf %s" \
+ GPRINT:utilization:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:utilization:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.acmepacket.health.name=Acme Packet System Health
+report.acmepacket.health.columns=apSysHealthScore
+report.acmepacket.health.type=nodeSnmp
+report.acmepacket.health.command=--title="SBC System Health" \
+ --vertical-label="System Health" \
+ DEF:utilization={rrd1}:apSysHealthScore:AVERAGE \
+ AREA:utilization#00ff00:"Health" \
+ GPRINT:utilization:AVERAGE:" Avg  \\: %8.2lf %s" \
+ GPRINT:utilization:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:utilization:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.acmepacket.sa.h323.sessions.total.name=Acme Packet H323 Session Agent Total Sessions
+report.acmepacket.sa.h323.sessions.total.columns=apH323SAStatTotIn,apH323SAStatTotOut
+report.acmepacket.sa.h323.sessions.total.propertiesValues=apH323SAStatSAHost
+report.acmepacket.sa.h323.sessions.total.type=apH323SAStatIdx
+report.acmepacket.sa.h323.sessions.total.command=--title="{apH323SAStatSAHost} total H323 sessions" \
+ --vertical-label="H323 Sessions" \
+ DEF:in={rrd1}:apH323SAStatTotIn:AVERAGE \
+ DEF:out={rrd2}:apH323SAStatTotOut:AVERAGE \
+ CDEF:outNeg=0,out,- \
+ AREA:in#00ff00:"Inbound  " \
+ GPRINT:in:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:in:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:in:MAX:"Max  \\: %8.2lf %s\\n" \
+ AREA:outNeg#0000ff:"Outbound" \
+ GPRINT:out:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:out:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:out:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.acmepacket.sa.h323.sessions.rejects.name=Acme Packet H323 Session Agent Rejected Sessions
+report.acmepacket.sa.h323.sessions.rejects.columns=apH323SAStatTotNAIn,apH32SAStatTotNAOt
+report.acmepacket.sa.h323.sessions.rejects.propertiesValues=apH323SAStatSAHost
+report.acmepacket.sa.h323.sessions.rejects.type=apH323SAStatIdx
+report.acmepacket.sa.h323.sessions.rejects.command=--title="{apH323SAStatSAHost} rejected H323 sessions" \
+ --vertical-label="H323 Sessions" \
+ DEF:in={rrd1}:apH323SAStatTotNAIn:AVERAGE \
+ DEF:out={rrd2}:apH32SAStatTotNAOt:AVERAGE \
+ CDEF:outNeg=0,out,- \
+ AREA:in#ff0000:"Inbound  " \
+ GPRINT:in:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:in:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:in:MAX:"Max  \\: %8.2lf %s\\n" \
+ AREA:outNeg#000000:"Outbound" \
+ GPRINT:out:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:out:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:out:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.acmepacket.sa.sip.sessions.total.name=Acme Packet SIP Session Agent Total Sessions
+report.acmepacket.sa.sip.sessions.total.columns=apSipSAStatTotIn,apSipSAStatTotOut
+report.acmepacket.sa.sip.sessions.total.propertiesValues=apSipSAStatSAHost
+report.acmepacket.sa.sip.sessions.total.type=apSipSAStatIdx
+report.acmepacket.sa.sip.sessions.total.command=--title="{apSipSAStatSAHost} total SIP sessions" \
+ --vertical-label="SIP Sessions" \
+ DEF:in={rrd1}:apSipSAStatTotIn:AVERAGE \
+ DEF:out={rrd2}:apSipSAStatTotOut:AVERAGE \
+ CDEF:outNeg=0,out,- \
+ AREA:in#00ff00:"Inbound  " \
+ GPRINT:in:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:in:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:in:MAX:"Max  \\: %8.2lf %s\\n" \
+ AREA:outNeg#0000ff:"Outbound" \
+ GPRINT:out:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:out:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:out:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.acmepacket.sa.sip.sessions.rejects.name=Acme Packet SIP Session Agent Rejected Sessions
+report.acmepacket.sa.sip.sessions.rejects.columns=apSipSAStatTotNAIn,apSipSAStatTotNAOt
+report.acmepacket.sa.sip.sessions.rejects.propertiesValues=apSipSAStatSAHost
+report.acmepacket.sa.sip.sessions.rejects.type=apSipSAStatIdx
+report.acmepacket.sa.sip.sessions.rejects.command=--title="{apSipSAStatSAHost} rejected SIP sessions" \
+ --vertical-label="SIP Sessions" \
+ DEF:in={rrd1}:apSipSAStatTotNAIn:AVERAGE \
+ DEF:out={rrd2}:apSipSAStatTotNAOt:AVERAGE \
+ CDEF:outNeg=0,out,- \
+ AREA:in#ff0000:"Inbound  " \
+ GPRINT:in:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:in:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:in:MAX:"Max  \\: %8.2lf %s\\n" \
+ AREA:outNeg#000000:"Outbound" \
+ GPRINT:out:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:out:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:out:MAX:"Max  \\: %8.2lf %s\\n"
+
+## EOF

opennms-base-assembly/src/main/filtered/etc/snmp-graph.properties.d/ejn-graph.properties

+reports= ejnggsn.gtpc.pdpattempts, ejnggsn.gtpc.pdpdattempts, \
+ejnggsn.bits, ejnggsn.subscribers, ejnggsn.pdpstats, ejnggsn.packetStats, \
+ejnggsn.apn.bits, ejnggsn.apn.ippool, ejnggsn.apn.radfails, ejnggsn.apn.users, \
+ejnggsn.gtpc.cpuStats, ejnggsn.gtpc.ctrlcpu, ejnggsn.gtpc.ctrlload, ejnggsn.gtpc.memory, ejnggsn.gtpc.ctrldrops, \
+ejnggsn.gtpu.cpu, ejnggsn.gtpu.memory, ejnggsn.gtpu.ploadload, ejnggsn.gtpu.packetdrops
+
+######
+###### Reports for Ericsson Juniper Networks Mobile IP Packet Core equipment
+######
+
+
+report.ejnggsn.subscribers.name=GGSN Subscribers
+report.ejnggsn.subscribers.columns=ggsnSubscriberNo
+report.ejnggsn.subscribers.type=nodeSnmp
+report.ejnggsn.subscribers.command=--title="GGSN Subscribers" \
+ --vertical-label="Unique IMSI" \
+ DEF:freemem={rrd1}:ggsnSubscriberNo:AVERAGE \
+ DEF:minFreemem={rrd1}:ggsnSubscriberNo:MIN \
+ DEF:maxFreemem={rrd1}:ggsnSubscriberNo:MAX \
+ LINE1:freemem#ff0000:"Unique IMSI" \
+ GPRINT:freemem:AVERAGE:" Avg  \\: %8.2lf %s" \
+ GPRINT:freemem:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:freemem:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.ejnggsn.apn.bits.name=Bits In/Out
+report.ejnggsn.apn.bits.columns=ApnUplinkBytes,ApnDownlinkBytes
+report.ejnggsn.apn.bits.propertiesValues=ApnName
+report.ejnggsn.apn.bits.type=ejnGgsnApnIndex
+report.ejnggsn.apn.bits.command=--title="APN {ApnName} Traffic" \
+ --vertical-label="Bits per second" \
+ DEF:octOut={rrd1}:ApnUplinkBytes:AVERAGE \
+ DEF:minOctOut={rrd1}:ApnUplinkBytes:MIN \
+ DEF:maxOctOut={rrd1}:ApnUplinkBytes:MAX \
+ DEF:octIn={rrd2}:ApnDownlinkBytes:AVERAGE \
+ DEF:minOctIn={rrd2}:ApnDownlinkBytes:MIN \
+ DEF:maxOctIn={rrd2}:ApnDownlinkBytes:MAX \
+ CDEF:rawbitsIn=octIn,8,* \
+ CDEF:minRawbitsIn=minOctIn,8,* \
+ CDEF:maxRawbitsIn=maxOctIn,8,* \
+ CDEF:rawbitsOut=octOut,8,* \
+ CDEF:minRawbitsOut=minOctOut,8,* \
+ CDEF:maxRawbitsOut=maxOctOut,8,* \
+ CDEF:rawbitsOutNeg=0,rawbitsOut,- \
+ CDEF:rawtotBits=octIn,octOut,+,8,* \
+ CDEF:bitsIn=rawbitsIn,UN,0,rawbitsIn,IF \
+ CDEF:bitsOut=rawbitsOut,UN,0,rawbitsOut,IF \
+ CDEF:totBits=rawtotBits,UN,0,rawtotBits,IF \
+ CDEF:outSum=bitsOut,{diffTime},* \
+ CDEF:inSum=bitsIn,{diffTime},* \
+ CDEF:totSum=totBits,{diffTime},* \
+ AREA:rawbitsIn#00ff00:"Down " \
+ GPRINT:rawbitsIn:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:rawbitsIn:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:rawbitsIn:MAX:"Max  \\: %8.2lf %s\\n" \
+ AREA:rawbitsOutNeg#0000ff:"Up" \
+ GPRINT:rawbitsOut:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:rawbitsOut:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:rawbitsOut:MAX:"Max  \\: %8.2lf %s\\n" \
+ GPRINT:inSum:AVERAGE:"  Tot Down  \\: %8.2lf %s" \
+ GPRINT:outSum:AVERAGE:" Tot Up  \\: %8.2lf %s" \
+ GPRINT:totSum:AVERAGE:" Tot  \\: %8.2lf %s\\n"
+
+report.ejnggsn.apn.users.name=GGSN APN Active PDP Contexts
+report.ejnggsn.apn.users.columns=ApnActivePdpContext
+report.ejnggsn.apn.users.propertiesValues=ApnName
+report.ejnggsn.apn.users.type=ejnGgsnApnIndex
+report.ejnggsn.apn.users.command=--title="APN {ApnName} Active PDP Contexts" \
+ --vertical-label="PDP Contexts" \
+ DEF:active={rrd1}:ApnActivePdpContext:AVERAGE \
+ DEF:minActive={rrd1}:ApnActivePdpContext:MIN \
+ DEF:maxActive={rrd1}:ApnActivePdpContext:MAX \
+ LINE2:active#0000ff:"PDP Contexts" \
+ GPRINT:active:AVERAGE:"Avg \\: %8.2lf %s" \
+ GPRINT:active:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:active:MAX:"Max  \\: %8.2lf %s\\n" 
+
+report.ejnggsn.apn.ippool.name=GGSN APN Available IPs
+report.ejnggsn.apn.ippool.columns=ApnFreePoolIps
+report.ejnggsn.apn.ippool.propertiesValues=ApnName
+report.ejnggsn.apn.ippool.type=ejnGgsnApnIndex
+report.ejnggsn.apn.ippool.command=--title="APN {ApnName} Available IPs" \
+ --vertical-label="Free IPs" \
+ DEF:active={rrd1}:ApnFreePoolIps:AVERAGE \
+ DEF:minActive={rrd1}:ApnFreePoolIps:MIN \
+ DEF:maxActive={rrd1}:ApnFreePoolIps:MAX \
+ LINE2:active#0000ff:"Free IPs" \
+ GPRINT:active:AVERAGE:"Avg \\: %8.2lf %s" \
+ GPRINT:active:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:active:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.ejnggsn.apn.radfails.name=GGSN APN RADIUS Failures
+report.ejnggsn.apn.radfails.columns=ApnRadAuthFail,ApnRadAcctFail
+report.ejnggsn.apn.radfails.propertiesValues=ApnName
+report.ejnggsn.apn.radfails.type=ejnGgsnApnIndex
+report.ejnggsn.apn.radfails.command=--title="APN {ApnName} RADIUS Failures" \
+ --vertical-label="Fails/Sec" \
+ DEF:authFail={rrd1}:ApnRadAuthFail:AVERAGE \
+ DEF:minAuthFail={rrd1}:ApnRadAuthFail:MIN \
+ DEF:maxAuthFail={rrd1}:ApnRadAuthFail:MAX \
+ DEF:acctFail={rrd2}:ApnRadAcctFail:AVERAGE \
+ DEF:minAcctFail={rrd2}:ApnRadAcctFail:MIN \
+ DEF:maxAcctFail={rrd2}:ApnRadAcctFail:MAX \
+ CDEF:authFailNeg=0,authFail,- \
+ AREA:acctFail#00ff00:"Acct Fails" \
+ GPRINT:acctFail:AVERAGE:"Avg  \\: %lf" \
+ GPRINT:acctFail:MIN:"Min  \\: %lf" \
+ GPRINT:acctFail:MAX:"Max  \\: %lf\\n" \
+ AREA:authFailNeg#ff0000:"Auth Fails" \
+ GPRINT:authFail:AVERAGE:"Avg  \\: %lf" \
+ GPRINT:authFail:MIN:"Min  \\: %lf" \
+ GPRINT:authFail:MAX:"Max  \\: %lf\\n"
+
+report.ejnggsn.gtpc.ctrlload.name=CPIC Load
+report.ejnggsn.gtpc.ctrlload.columns=ggsnGtpcCtrlLoad
+report.ejnggsn.gtpc.ctrlload.propertiesValues=ggsnGtpcAddr
+report.ejnggsn.gtpc.ctrlload.type=ejnGgsnGtpcIndex
+report.ejnggsn.gtpc.ctrlload.command=--title="CPIC {ggsnGtpcAddr} Load" \
+ --vertical-label="Load" \
+ DEF:freemem={rrd1}:ggsnGtpcCtrlLoad:AVERAGE \
+ DEF:minFreemem={rrd1}:ggsnGtpcCtrlLoad:MIN \
+ DEF:maxFreemem={rrd1}:ggsnGtpcCtrlLoad:MAX \
+ LINE2:freemem#ff0000:"CPIC Load" \
+ GPRINT:freemem:AVERAGE:" Avg  \\: %8.2lf %s" \
+ GPRINT:freemem:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:freemem:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.ejnggsn.gtpc.pdpattempts.name=PDP Attempts
+report.ejnggsn.gtpc.pdpattempts.columns=ggsnPdpCreateAtmpt
+report.ejnggsn.gtpc.pdpattempts.type=nodeSnmp
+report.ejnggsn.gtpc.pdpattempts.command=--title="PDP Create Attempts" \
+ --vertical-label="Attempts / Sec" \
+ DEF:freemem={rrd1}:ggsnPdpCreateAtmpt:AVERAGE \
+ DEF:minFreemem={rrd1}:ggsnPdpCreateAtmpt:MIN \
+ DEF:maxFreemem={rrd1}:ggsnPdpCreateAtmpt:MAX \
+ AREA:freemem#ff0000:"Attempts / Sec" \
+ GPRINT:freemem:AVERAGE:" Avg  \\: %8.2lf %s" \
+ GPRINT:freemem:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:freemem:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.ejnggsn.gtpc.pdpdattempts.name=PDP Del Attempts
+report.ejnggsn.gtpc.pdpdattempts.columns=ggsnPdpDeleteAtmpt
+report.ejnggsn.gtpc.pdpdattempts.type=nodeSnmp
+report.ejnggsn.gtpc.pdpdattempts.command=--title="PDP Delete Attempts" \
+ --vertical-label="Attempts / Sec" \
+ DEF:freemem={rrd1}:ggsnPdpDeleteAtmpt:AVERAGE \
+ DEF:minFreemem={rrd1}:ggsnPdpDeleteAtmpt:MIN \
+ DEF:maxFreemem={rrd1}:ggsnPdpDeleteAtmpt:MAX \
+ AREA:freemem#ff0000:"Attempts / Sec" \
+ GPRINT:freemem:AVERAGE:" Avg  \\: %8.2lf %s" \
+ GPRINT:freemem:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:freemem:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.ejnggsn.gtpc.ctrlcpu.name=CPIC CPU
+report.ejnggsn.gtpc.ctrlcpu.columns=ggsnGtpcCpu
+report.ejnggsn.gtpc.ctrlcpu.propertiesValues=ggsnGtpcAddr
+report.ejnggsn.gtpc.ctrlcpu.type=ejnGgsnGtpcIndex
+report.ejnggsn.gtpc.ctrlcpu.command=--title="CPIC {ggsnGtpcAddr} CPU Usage" \
+ --vertical-label="Percentage" \
+ DEF:freemem={rrd1}:ggsnGtpcCpu:AVERAGE \
+ DEF:minFreemem={rrd1}:ggsnGtpcCpu:MIN \
+ DEF:maxFreemem={rrd1}:ggsnGtpcCpu:MAX \
+ LINE1:freemem#ff0000:"CPIC CPU Load" \
+ GPRINT:freemem:AVERAGE:" Avg  \\: %8.2lf %s" \
+ GPRINT:freemem:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:freemem:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.ejnggsn.gtpc.cpuStats.name=CPIC CPU Statistics
+report.ejnggsn.gtpc.cpuStats.columns=ggsnGtpcCpu
+report.ejnggsn.gtpc.cpuStats.propertiesValues=ggsnGtpcAddr
+report.ejnggsn.gtpc.cpuStats.suppress=ejnggsn.gtpc.ctrlcpu
+report.ejnggsn.gtpc.cpuStats.type=ejnGgsnGtpcIndex
+report.ejnggsn.gtpc.cpuStats.width=565
+report.ejnggsn.gtpc.cpuStats.height=200
+report.ejnggsn.gtpc.cpuStats.command=--title="CPIC {ggsnGtpcAddr} CPU Statistics" \
+ --units-exponent 0 \
+ --width 565 \
+ --height 200 \
+ --vertical-label Load \
+ --lower-limit 0 --upper-limit 100 --rigid \
+ DEF:ssCpuRawUser={rrd1}:ggsnGtpcCpu:AVERAGE \
+ DEF:minSsCpuRawUser={rrd1}:ggsnGtpcCpu:MIN \
+ DEF:maxSsCpuRawUser={rrd1}:ggsnGtpcCpu:MAX \
+ CDEF:float15=ssCpuRawUser \
+ CDEF:cpuUse=ssCpuRawUser \
+ CDEF:cpuUse10=0,cpuUse,GE,0,float15,IF \
+ CDEF:cpuUse20=10,cpuUse,GT,0,float15,IF \
+ CDEF:cpuUse30=20,cpuUse,GT,0,float15,IF \
+ CDEF:cpuUse40=30,cpuUse,GT,0,float15,IF \
+ CDEF:cpuUse50=40,cpuUse,GT,0,float15,IF \
+ CDEF:cpuUse60=50,cpuUse,GT,0,float15,IF \
+ CDEF:cpuUse70=60,cpuUse,GT,0,float15,IF \
+ CDEF:cpuUse80=70,cpuUse,GT,0,float15,IF \
+ CDEF:cpuUse90=80,cpuUse,GT,0,float15,IF \
+ CDEF:cpuUse100=90,cpuUse,GT,0,float15,IF \
+ COMMENT:"\\n" \
+ COMMENT:"CPU Utilization (%)\\n" \
+ COMMENT:" " \
+ AREA:cpuUse10#0066FF:" 0-10%" \
+ AREA:cpuUse20#00CCFF:"11-20%" \
+ AREA:cpuUse30#00FFFF:"21-30%" \
+ AREA:cpuUse40#00CC00:"31-40%" \
+ AREA:cpuUse50#00FF00:"41-50%" \
+ COMMENT:"           " \
+ GPRINT:cpuUse:MIN:"Minimum \\: %2.1lf%%%s " \
+ GPRINT:cpuUse:MAX:"Maximum \\: %2.1lf%%%s" \
+ COMMENT:"\\n" \
+ COMMENT:" " \
+ AREA:cpuUse60#FFFF99:"51-60%" \
+ AREA:cpuUse70#FFFF00:"61-70%" \
+ AREA:cpuUse80#FFCC66:"71-80%" \
+ AREA:cpuUse90#FF9900:"81-90%" \
+ AREA:cpuUse100#FF0000:"91-100%" \
+ COMMENT:"          " \
+ GPRINT:cpuUse:LAST:"Current \\: %2.1lf%%%s" \
+ GPRINT:cpuUse:AVERAGE:"Average \\: %2.1lf%%%s" \
+ COMMENT:"\\n" \
+ COMMENT:"\\n"
+
+report.ejnggsn.gtpc.memory.name=CPIC Memory Usage
+report.ejnggsn.gtpc.memory.columns=ggsnGtpcMem,ggsnGtpcMemUsed
+report.ejnggsn.gtpc.memory.propertiesValues=ggsnGtpcAddr
+report.ejnggsn.gtpc.memory.type=ejnGgsnGtpcIndex
+report.ejnggsn.gtpc.memory.command=--title="CPIC {ggsnGtpcAddr} Memory Usage" \
+ --vertical-label="Bytes" \
+ --base=1024 \
+ DEF:memMax={rrd1}:ggsnGtpcMem:AVERAGE \
+ DEF:minMemMax={rrd1}:ggsnGtpcMem:MIN \
+ DEF:maxMemMax={rrd1}:ggsnGtpcMem:MAX \
+ DEF:memUsed={rrd2}:ggsnGtpcMemUsed:AVERAGE \
+ DEF:minMemUsed={rrd2}:ggsnGtpcMemUsed:MIN \
+ DEF:maxMemUsed={rrd2}:ggsnGtpcMemUsed:MAX \
+ AREA:memUsed#0000ff:"Used    " \
+ GPRINT:memUsed:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:memUsed:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:memUsed:MAX:"Max  \\: %8.2lf %s\\n" \
+ LINE2:memMax#ff0000:"Limit" \
+ GPRINT:memMax:MAX:"%8.2lf %s\\n"
+
+report.ejnggsn.gtpc.ctrldrops.name=CPIC Control Packet Drops
+report.ejnggsn.gtpc.ctrldrops.columns=ggsnGtpcCtlPktDrop
+report.ejnggsn.gtpc.ctrldrops.propertiesValues=ggsnGtpcAddr
+report.ejnggsn.gtpc.ctrldrops.type=ejnGgsnGtpcIndex
+report.ejnggsn.gtpc.ctrldrops.command=--title="CPIC {ggsnGtpcAddr} Control Packet Drops" \
+ --vertical-label="Packet Drops" \
+ DEF:freemem={rrd1}:ggsnGtpcCtlPktDrop:AVERAGE \
+ DEF:minFreemem={rrd1}:ggsnGtpcCtlPktDrop:MIN \
+ DEF:maxFreemem={rrd1}:ggsnGtpcCtlPktDrop:MAX \
+ LINE1:freemem#ff0000:"CPIC Packet Drops" \
+ GPRINT:freemem:AVERAGE:" Avg  \\: %8.2lf %s" \
+ GPRINT:freemem:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:freemem:MAX:"Max  \\: %8.2lf %s\\n"
+
+
+report.ejnggsn.gtpu.ploadload.name=UPIC Payload Load
+report.ejnggsn.gtpu.ploadload.columns=ggsnGtpuPloadLoad
+report.ejnggsn.gtpu.ploadload.propertiesValues=ggsnGtpuAddr
+report.ejnggsn.gtpu.ploadload.type=ejnGgsnGtpuIndex
+report.ejnggsn.gtpu.ploadload.command=--title="UPIC {ggsnGtpuAddr} Weighted Payload Load" \
+ --vertical-label="Load" \
+ DEF:freemem={rrd1}:ggsnGtpuPloadLoad:AVERAGE \
+ DEF:minFreemem={rrd1}:ggsnGtpuPloadLoad:MIN \
+ DEF:maxFreemem={rrd1}:ggsnGtpuPloadLoad:MAX \
+ LINE2:freemem#0000ff:"UPIC Payload Load" \
+ GPRINT:freemem:AVERAGE:" Avg  \\: %8.2lf %s" \
+ GPRINT:freemem:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:freemem:MAX:"Max  \\: %8.2lf %s\\n"
+
+report.ejnggsn.gtpu.cpu.name=UPIC CPU
+report.ejnggsn.gtpu.cpu.columns=ggsnGtpuCpu
+report.ejnggsn.gtpu.cpu.propertiesValues=ggsnGtpuAddr
+report.ejnggsn.gtpu.cpu.type=ejnGgsnGtpuIndex
+report.ejnggsn.gtpu.cpu.command=--title="UPIC {ggsnGtpuAddr} CPU Usage" \
+ --vertical-label="Percentage" \
+ --lower-limit 0 --upper-limit 100 --rigid \
+ DEF:freemem={rrd1}:ggsnGtpuCpu:AVERAGE \
+ DEF:minFreemem={rrd1}:ggsnGtpuCpu:MIN \
+ DEF:maxFreemem={rrd1}:ggsnGtpuCpu:MAX \
+ LINE1:freemem#ff0000:"UPIC CPU Percentage" \
+ GPRINT:freemem:AVERAGE:" Avg  \\: %8.2lf %s" \
+ GPRINT:freemem:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:freemem:MAX:"Max  \\: %8.2lf %s\\n"
+
+
+report.ejnggsn.gtpu.memory.name=UPIC Memory Usage
+report.ejnggsn.gtpu.memory.columns=ggsnGtpuMem,ggsnGtpuMemUsed
+report.ejnggsn.gtpu.memory.propertiesValues=ggsnGtpuAddr
+report.ejnggsn.gtpu.memory.type=ejnGgsnGtpuIndex
+report.ejnggsn.gtpu.memory.command=--title="UPIC {ggsnGtpuAddr} Memory Usage" \
+ --vertical-label="Bytes" \
+ --base=1024 \
+ DEF:memMax={rrd1}:ggsnGtpuMem:AVERAGE \
+ DEF:minMemMax={rrd1}:ggsnGtpuMem:MIN \
+ DEF:maxMemMax={rrd1}:ggsnGtpuMem:MAX \
+ DEF:memUsed={rrd2}:ggsnGtpuMemUsed:AVERAGE \
+ DEF:minMemUsed={rrd2}:ggsnGtpuMemUsed:MIN \
+ DEF:maxMemUsed={rrd2}:ggsnGtpuMemUsed:MAX \
+ AREA:memUsed#0000ff:"Used    " \
+ GPRINT:memUsed:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:memUsed:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:memUsed:MAX:"Max  \\: %8.2lf %s\\n" \
+ LINE2:memMax#ff0000:"Limit" \
+ GPRINT:memMax:MAX:"%8.2lf %s\\n"
+
+report.ejnggsn.pdpstats.name=GGSN PDP Stats
+report.ejnggsn.pdpstats.columns=ggsnPdpsTClassBack,ggsnPdpsTClassConv,ggsnPdpsTClassStrm,ggsnPdpsTClassIntr,ggsnPdpsTotalActive
+report.ejnggsn.pdpstats.width=565
+report.ejnggsn.pdpstats.height=200
+report.ejnggsn.pdpstats.type=nodeSnmp
+report.ejnggsn.pdpstats.command=--title="GGSN PDP Stats" \
+ --vertical-label="GGSN PDP Stats" \
+ DEF:ggsnPdpsTClassBack={rrd1}:ggsnPdpsTClassBack:AVERAGE \
+ DEF:ggsnPdpsTClassConv={rrd2}:ggsnPdpsTClassConv:AVERAGE \
+ DEF:ggsnPdpsTClassStrm={rrd3}:ggsnPdpsTClassStrm:AVERAGE \
+ DEF:ggsnPdpsTClassIntr={rrd4}:ggsnPdpsTClassIntr:AVERAGE \ DEF:ggsnPdpsTotalActive={rrd5}:ggsnPdpsTotalActive:AVERAGE \
+ AREA:ggsnPdpsTotalActive#00ff00:"ggsnPdpsTotalActive" \
+ GPRINT:ggsnPdpsTotalActive:AVERAGE:"Avg \\: %8.2lf %s" \
+ GPRINT:ggsnPdpsTotalActive:MIN:"Min \\: %8.2lf %s" \
+ GPRINT:ggsnPdpsTotalActive:MAX:"Max \\: %8.2lf %s\\n" \
+ LINE1:ggsnPdpsTClassBack#000000:"ggsnPdpsTClassBack" \
+ GPRINT:ggsnPdpsTClassBack:AVERAGE:"Avg \\: %8.2lf %s" \
+ GPRINT:ggsnPdpsTClassBack:MIN:"Min \\: %8.2lf %s" \
+ GPRINT:ggsnPdpsTClassBack:MAX:"Max \\: %8.2lf %s\\n" \
+ LINE1:ggsnPdpsTClassIntr#0000ff:"ggsnPdpsTClassIntr" \
+ GPRINT:ggsnPdpsTClassIntr:AVERAGE:"Avg \\: %8.2lf %s" \
+ GPRINT:ggsnPdpsTClassIntr:MIN:"Min \\: %8.2lf %s" \
+ GPRINT:ggsnPdpsTClassIntr:MAX:"Max \\: %8.2lf %s\\n" \
+ LINE1:ggsnPdpsTClassConv#ff0000:"ggsnPdpsTClassConv" \
+ GPRINT:ggsnPdpsTClassConv:AVERAGE:"Avg \\: %8.2lf %s" \
+ GPRINT:ggsnPdpsTClassConv:MIN:"Min \\: %8.2lf %s" \
+ GPRINT:ggsnPdpsTClassConv:MAX:"Max \\: %8.2lf %s\\n" \
+ LINE1:ggsnPdpsTClassStrm#ff00ff:"ggsnPdpsTClassStrm" \
+ GPRINT:ggsnPdpsTClassStrm:AVERAGE:"Avg \\: %8.2lf %s" \
+ GPRINT:ggsnPdpsTClassStrm:MIN:"Min \\: %8.2lf %s" \
+ GPRINT:ggsnPdpsTClassStrm:MAX:"Max \\: %8.2lf %s\\n"
+
+report.ejnggsn.gtpu.packetdrops.name=UPIC Packet Drops
+report.ejnggsn.gtpu.packetdrops.columns=ggsnGtpuUplnkDrp,ggsnGtpuDnlnkDrp
+report.ejnggsn.gtpu.packetdrops.propertiesValues=ggsnGtpuAddr
+report.ejnggsn.gtpu.packetdrops.type=ejnGgsnGtpuIndex
+report.ejnggsn.gtpu.packetdrops.command=--title="UPIC {ggsnGtpuAddr} Packet Drops" \
+ --vertical-label="Packet Drops" \
+ --units-exponent=0 \
+ DEF:user={rrd1}:ggsnGtpuUplnkDrp:AVERAGE \
+ DEF:system={rrd2}:ggsnGtpuDnlnkDrp:AVERAGE \
+ LINE1:system#ff0000:"Downlink" \
+ GPRINT:system:AVERAGE:"Avg  \\: %8.2lf" \
+ GPRINT:system:MIN:"Min  \\: %8.2lf" \
+ GPRINT:system:MAX:"Max  \\: %8.2lf\\n" \
+ LINE1:user#0000ff:"Uplink  " \
+ GPRINT:user:AVERAGE:"Avg  \\: %8.2lf" \
+ GPRINT:user:MIN:"Min  \\: %8.2lf" \
+ GPRINT:user:MAX:"Max  \\: %8.2lf\\n"
+
+report.ejnggsn.packetStats.name=GGSN Packet Stats
+report.ejnggsn.packetStats.columns=ggsnUplnkPkts,ggsnUplnkDrp,ggsnDnlnkPkts,ggsnDnlnkDrp
+report.ejnggsn.packetStats.type=nodeSnmp
+report.ejnggsn.packetStats.command=--title="GGSN Packet Stats" \
+ --vertical-label="Packet Stats" \
+ DEF:ggsnUplnkPkts={rrd1}:ggsnUplnkPkts:AVERAGE \
+ DEF:ggsnUplnkDrp={rrd2}:ggsnUplnkDrp:AVERAGE \
+ DEF:ggsnDnlnkPkts={rrd3}:ggsnDnlnkPkts:AVERAGE \
+ DEF:ggsnDnlnkDrp={rrd4}:ggsnDnlnkDrp:AVERAGE \
+ AREA:ggsnUplnkDrp#0000FF:"Uplink Drops" \
+ GPRINT:ggsnUplnkDrp:AVERAGE:"Avg  \\: %8.2lf" \
+ GPRINT:ggsnUplnkDrp:MIN:"Min  \\: %8.2lf" \
+ GPRINT:ggsnUplnkDrp:MAX:"Max  \\: %8.2lf\\n" \
+ STACK:ggsnUplnkPkts#993366:"Uplink Packets  " \
+ GPRINT:ggsnUplnkPkts:AVERAGE:"Avg  \\: %8.2lf" \
+ GPRINT:ggsnUplnkPkts:MIN:"Min  \\: %8.2lf" \
+ GPRINT:ggsnUplnkPkts:MAX:"Max  \\: %8.2lf\\n" \
+ CDEF:ggsnDnlnkDrpNeg=0,ggsnDnlnkDrp,- \
+ CDEF:ggsnDnlnkPktsNeg=0,ggsnDnlnkPkts,- \
+ AREA:ggsnDnlnkDrpNeg#FF0000:"Downlink Drops" \
+ GPRINT:ggsnDnlnkDrp:AVERAGE:"Avg  \\: %8.2lf" \
+ GPRINT:ggsnDnlnkDrp:MIN:"Min  \\: %8.2lf" \
+ GPRINT:ggsnDnlnkDrp:MAX:"Max  \\: %8.2lf\\n" \
+ STACK:ggsnDnlnkPktsNeg#FFD700:"Downlink Packets  " \
+ GPRINT:ggsnDnlnkPkts:AVERAGE:"Avg  \\: %8.2lf" \
+ GPRINT:ggsnDnlnkPkts:MIN:"Min  \\: %8.2lf" \
+ GPRINT:ggsnDnlnkPkts:MAX:"Max  \\: %8.2lf\\n"
+
+
+report.ejnggsn.bits.name=GGSN Bits In/Out
+report.ejnggsn.bits.columns=ggsnUplnkBytes,ggsnDnlnkBytes
+report.ejnggsn.bits.type=nodeSnmp
+report.ejnggsn.bits.command=--title="GGSN Bits In/Out" \
+ --vertical-label="Bits per second" \
+ --base=1024 \
+ DEF:octIn={rrd1}:ggsnUplnkBytes:AVERAGE \
+ DEF:minOctIn={rrd1}:ggsnUplnkBytes:MIN \
+ DEF:maxOctIn={rrd1}:ggsnUplnkBytes:MAX \
+ DEF:octOut={rrd2}:ggsnDnlnkBytes:AVERAGE \
+ DEF:minOctOut={rrd2}:ggsnDnlnkBytes:MIN \
+ DEF:maxOctOut={rrd2}:ggsnDnlnkBytes:MAX \
+ CDEF:rawbitsIn=octIn,8,* \
+ CDEF:minRawbitsIn=minOctIn,8,* \
+ CDEF:maxRawbitsIn=maxOctIn,8,* \
+ CDEF:rawbitsOut=octOut,8,* \
+ CDEF:minRawbitsOut=minOctOut,8,* \
+ CDEF:maxRawbitsOut=maxOctOut,8,* \
+ CDEF:rawbitsOutNeg=0,rawbitsOut,- \
+ CDEF:rawbitsInNeg=0,rawbitsIn,- \
+ CDEF:rawtotBits=octIn,octOut,+,8,* \
+ CDEF:bitsIn=rawbitsIn,UN,0,rawbitsIn,IF \
+ CDEF:bitsOut=rawbitsOut,UN,0,rawbitsOut,IF \
+ CDEF:totBits=rawtotBits,UN,0,rawtotBits,IF \
+ CDEF:outSum=bitsOut,{diffTime},* \
+ CDEF:inSum=bitsIn,{diffTime},* \
+ CDEF:totSum=totBits,{diffTime},* \
+ AREA:rawbitsOut#0000ff:"Out" \
+ GPRINT:rawbitsOut:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:rawbitsOut:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:rawbitsOut:MAX:"Max  \\: %8.2lf %s\\n" \
+ AREA:rawbitsInNeg#00ff00:"In " \
+ GPRINT:rawbitsIn:AVERAGE:"Avg  \\: %8.2lf %s" \
+ GPRINT:rawbitsIn:MIN:"Min  \\: %8.2lf %s" \
+ GPRINT:rawbitsIn:MAX:"Max  \\: %8.2lf %s\\n" \
+ GPRINT:inSum:AVERAGE:"  Tot In  \\: %8.2lf %s" \
+ GPRINT:outSum:AVERAGE:" Tot Out  \\: %8.2lf %s" \
+ GPRINT:totSum:AVERAGE:" Tot  \\: %8.2lf %s\\n"
+

opennms-base-assembly/src/main/filtered/etc/snmp-graph.properties.d/ericsson-graph.properties

+reports=ipworks.dns.uptime, ipworks.dns.SrvQry, ipworks.dns.SrvQrySucc, ipworks.dns.SrvQryFail, ipworks.dns.SrvQryRecur
+
+######
+###### Reports for Ericsson IPWorks
+######
+
+report.ipworks.dns.uptime.name=IPWorks DNS Uptime
+report.ipworks.dns.uptime.columns=ipwksDnsSrvCnfUpTim
+report.ipworks.dns.uptime.type=nodeSnmp
+report.ipworks.dns.uptime.command=--title="IPWorks DNS Service Uptime" \
+ --vertical-label="Days" \
+ --units-exponent 0 \
+ DEF:time={rrd1}:ipwksDnsSrvCnfUpTim:AVERAGE \
+ DEF:minTime={rrd1}:ipwksDnsSrvCnfUpTim:MIN \
+ DEF:maxTime={rrd1}:ipwksDnsSrvCnfUpTim:MAX \
+ CDEF:days=time,86400,/ \
+ CDEF:minDays=minTime,86400,/ \
+ CDEF:maxDays=maxTime,86400,/ \
+ LINE2:days#0000ff:"DNS Uptime (Days)" \
+ GPRINT:days:AVERAGE:"Avg  \\: %8.1lf " \
+ GPRINT:days:MIN:"Min  \\: %8.1lf " \
+ GPRINT:days:MAX:"Max  \\: %8.1lf \\n"
+
+report.ipworks.dns.SrvQry.name=ipworks.dns.SrvQry
+report.ipworks.dns.SrvQry.columns=ipwksDnsSrvQrySucc,ipwksDnsSrvQryFail
+report.ipworks.dns.SrvQry.type=nodeSnmp
+report.ipworks.dns.SrvQry.command=--title="IPWorks DNS Queries" \
+ --vertical-label="Queries / Sec" \
+ --units-exponent=0 \
+ DEF:QrySucc={rrd1}:ipwksDnsSrvQrySucc:AVERAGE \
+ DEF:QryFail={rrd2}:ipwksDnsSrvQryFail:AVERAGE \
+ CDEF:totQueries=QrySucc,QryFail,+ \
+ LINE1:totQueries#0000ff:"Total    " \
+ GPRINT:totQueries:AVERAGE:"Avg  \\: %8.2lf" \
+ GPRINT:totQueries:MIN:"Min  \\: %8.2lf" \
+ GPRINT:totQueries:MAX:"Max  \\: %8.2lf\\n" \
+ AREA:QryFail#ff0000:"Fails    " \
+ GPRINT:QryFail:AVERAGE:"Avg  \\: %8.2lf" \
+ GPRINT:QryFail:MIN:"Min  \\: %8.2lf" \
+ GPRINT:QryFail:MAX:"Max  \\: %8.2lf\\n" \
+ LINE2:QrySucc#00ff00:"Success  " \
+ GPRINT:QrySucc:AVERAGE:"Avg  \\: %8.2lf" \
+ GPRINT:QrySucc:MIN:"Min  \\: %8.2lf" \
+ GPRINT:QrySucc:MAX:"Max  \\: %8.2lf\\n"
+
+report.ipworks.dns.SrvQrySucc.name=ipworks.dns.SrvQrySucc
+report.ipworks.dns.SrvQrySucc.columns=ipwksDnsSrvQrySucc
+report.ipworks.dns.SrvQrySucc.type=nodeSnmp
+report.ipworks.dns.SrvQrySucc.command=--title="IPWorks DNS Successfull Queries" \
+ --vertical-label="Queries / Sec" \
+ --units-exponent=0 \
+ DEF:user={rrd1}:ipwksDnsSrvQrySucc:AVERAGE \
+ AREA:user#0000ff:"Queries / Sec  " \
+ GPRINT:user:AVERAGE:"Avg  \\: %8.2lf" \
+ GPRINT:user:MIN:"Min  \\: %8.2lf" \
+ GPRINT:user:MAX:"Max  \\: %8.2lf\\n"
+
+report.ipworks.dns.SrvQryFail.name=ipworks.dns.SrvQryFail
+report.ipworks.dns.SrvQryFail.columns=ipwksDnsSrvQryFail
+report.ipworks.dns.SrvQryFail.type=nodeSnmp
+report.ipworks.dns.SrvQryFail.command=--title="IPWorks DNS Failed Queries" \
+ --vertical-label="Queries / Sec" \
+ --units-exponent=0 \
+ DEF:user={rrd1}:ipwksDnsSrvQryFail:AVERAGE \
+ AREA:user#ff0000:"DNS Queries / Sec  " \
+ GPRINT:user:AVERAGE:"Avg  \\: %8.2lf" \
+ GPRINT:user:MIN:"Min  \\: %8.2lf" \
+ GPRINT:user:MAX:"Max  \\: %8.2lf\\n"
+
+report.ipworks.dns.SrvQryRecur.name=ipworks.dns.SrvQryRecur
+report.ipworks.dns.SrvQryRecur.columns=ipwksDnsSrvQryRecur
+report.ipworks.dns.SrvQryRecur.type=nodeSnmp
+report.ipworks.dns.SrvQryRecur.command=--title="IPWorks DNS Recursive Queries" \
+ --vertical-label="Queries / Sec" \
+ --units-exponent=0 \
+ DEF:user={rrd1}:ipwksDnsSrvQryRecur:AVERAGE \
+ AREA:user#0000ff:"DNS Queries / Sec  " \
+ GPRINT:user:AVERAGE:"Avg  \\: %8.2lf" \
+ GPRINT:user:MIN:"Min  \\: %8.2lf" \
+ GPRINT:user:MAX:"Max  \\: %8.2lf\\n"
+

opennms-base-assembly/src/main/filtered/etc/snmp-graph.properties.d/lmsensors-graph.properties

+reports=lmsensors.temp, lmsensors.fan, lmsensors.volt
+
+report.lmsensors.temp.name=lmSensors Temperature Sensor
+report.lmsensors.temp.columns=lms-temp
+report.lmsensors.temp.type=lmTempIndex
+report.lmsensors.temp.propertiesValues=lms-tempdevice
+report.lmsensors.temp.command=--title="Temperature on {lms-tempdevice}" \
+  DEF:dtemp={rrd1}:lms-temp:AVERAGE \
+  DEF:minDtemp={rrd1}:lms-temp:MIN \
+  DEF:maxDtemp={rrd1}:lms-temp:MAX \
+  CDEF:btemp=dtemp,1024,/ \
+  CDEF:minBtemp=minDtemp,1024,/ \
+  CDEF:maxBtemp=maxDtemp,1024,/ \
+  LINE2:btemp#0000ff:"Temperature:" \
+  GPRINT:btemp:AVERAGE:" Avg  \\: %8.2lf %s" \
+  GPRINT:btemp:MIN:"Min  \\: %8.2lf %s" \
+  GPRINT:btemp:MAX:"Max  \\: %8.2lf %s\\n" \
+ 
+report.lmsensors.fan.name=lmSensors Fan Sensor
+report.lmsensors.fan.columns=lms-fan
+report.lmsensors.fan.type=lmFanIndex
+report.lmsensors.fan.propertiesValues=lms-fandevice
+report.lmsensors.fan.command=--title="Fan Speed on {lms-fandevice}" \
+  DEF:dfan={rrd1}:lms-fan:AVERAGE \
+  DEF:minDfan={rrd1}:lms-fan:MIN \
+  DEF:maxDfan={rrd1}:lms-fan:MAX \
+  LINE2:dfan#0000ff:"Fan Speed:" \
+  GPRINT:dfan:AVERAGE:" Avg  \\: %8.2lf %s" \
+  GPRINT:dfan:MIN:"Min  \\: %8.2lf %s" \
+  GPRINT:dfan:MAX:"Max  \\: %8.2lf %s\\n" \
+ 
+report.lmsensors.volt.name=lmSensors Volt Sensor
+report.lmsensors.volt.columns=lms-volt
+report.lmsensors.volt.type=lmVoltIndex
+report.lmsensors.volt.propertiesValues=lms-voltdevice
+report.lmsensors.volt.command=--title="Volt on {lms-voltdevice}" \
+  DEF:dvolt={rrd1}:lms-volt:AVERAGE \
+  DEF:minDvolt={rrd1}:lms-volt:MIN \
+  DEF:maxDvolt={rrd1}:lms-volt:MAX \
+  CDEF:bvolt=dvolt,1024,/ \
+  CDEF:minBvolt=minDvolt,1024,/ \
+  CDEF:maxBvolt=maxDvolt,1024,/ \
+  LINE2:bvolt#0000ff:"Volt Speed:" \
+  GPRINT:bvolt:AVERAGE:" Avg  \\: %8.2lf %s" \
+  GPRINT:bvolt:MIN:"Min  \\: %8.2lf %s" \
+  GPRINT:bvolt:MAX:"Max  \\: %8.2lf %s\\n" \
+

opennms-provision/opennms-detector-lineoriented/src/test/java/org/opennms/netmgt/provision/detector/AsyncDetectorFileDescriptorLeakTest.java

 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.opennms.core.utils.InetAddressUtils;
 import org.opennms.core.utils.LogUtils;
 import org.opennms.netmgt.provision.DetectFuture;
 import org.opennms.netmgt.provision.detector.simple.TcpDetector;
 import org.opennms.netmgt.provision.server.SimpleServer;
+import org.opennms.netmgt.provision.support.ConnectionFactory;
 import org.opennms.netmgt.provision.support.DefaultDetectFuture;
 import org.opennms.netmgt.provision.support.NullDetectorMonitor;
 import org.opennms.test.mock.MockLogAppender;
     @BeforeClass
     public static void beforeTest(){
         System.setProperty("org.opennms.netmgt.provision.maxConcurrentConnectors", "2000");
+        // Make sure that the ConnectionFactory reloads the system properties
+        ConnectionFactory.init();
     }
     
     @After
                 m_detector.setPort(port);
 
                 final DefaultDetectFuture future = (DefaultDetectFuture)m_detector.isServiceDetected(address, new NullDetectorMonitor());
+                /*
                 future.addListener(new IoFutureListener<DetectFuture>() {
                     public void operationComplete(final DetectFuture future) {
                         m_detector.dispose();
                     }
                 });
+                */
 
                 future.awaitUninterruptibly();
                 assertNotNull(future);
         m_detector.setPort(1999);
         System.err.printf("Starting testNoServerPresent with detector: %s\n", m_detector);
         
-        final DetectFuture future = m_detector.isServiceDetected(InetAddress.getLocalHost(), new NullDetectorMonitor());
+        final DetectFuture future = m_detector.isServiceDetected(InetAddressUtils.getLocalHostAddress(), new NullDetectorMonitor());
+        /*
         future.addListener(new IoFutureListener<DetectFuture>() {
 
             public void operationComplete(final DetectFuture future) {
             }
             
         });
+        */
         assertNotNull(future);
         future.awaitUninterruptibly();
         assertFalse(future.isServiceDetected());
+        assertNull(future.getException());
         
         System.err.printf("Finished testNoServerPresent with detector: %s\n", m_detector);
     }

opennms-provision/opennms-provision-api/src/main/java/org/opennms/netmgt/provision/support/AsyncBasicDetector.java

 import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
 import org.apache.mina.filter.logging.LoggingFilter;
 import org.apache.mina.filter.ssl.SslFilter;
+import org.opennms.core.utils.InetAddressUtils;
 import org.opennms.core.utils.LogUtils;
 import org.opennms.netmgt.provision.DetectFuture;
 import org.opennms.netmgt.provision.DetectorMonitor;
 
             // Start communication
             final InetSocketAddress socketAddress = new InetSocketAddress(address, getPort());
-            final ConnectFuture cf = m_connectionFactory.connect(socketAddress, init);
+            // Get an ephemeral port on the localhost interface
+            final InetSocketAddress localAddress = new InetSocketAddress(InetAddressUtils.getLocalHostAddress(), 0);
+            final ConnectFuture cf = m_connectionFactory.connect(socketAddress, localAddress, init);
             cf.addListener(retryAttemptListener(m_connectionFactory, detectFuture, socketAddress, init, getRetries() ));
         } catch (KeyManagementException e) {
             detectFuture.setException(e);
             detectFuture.setException(e);
         } catch (IOException e) {
             detectFuture.setException(e);
+        } catch (Throwable e) {
+            detectFuture.setException(e);
         }
 
         return detectFuture;
     /**
      * <p>dispose</p>
      */
+    @Override
     public void dispose(){
         LogUtils.debugf(this, "calling dispose on detector %s", getServiceName());
         ConnectionFactory.dispose(m_connectionFactory);
                         final ConnectFuture cf = m_connectionFactory.connect(address, init);
                         cf.addListener(retryAttemptListener( m_connectionFactory, detectFuture, address, init, retryAttempt - 1));
                         */
-                        future = connector.reConnect(address, init);
+                        // Get an ephemeral port on the localhost interface
+                        final InetSocketAddress localAddress = new InetSocketAddress(InetAddressUtils.getLocalHostAddress(), 0);
+                        future = connector.reConnect(address, localAddress, init);
                         future.addListener(retryAttemptListener(connector, detectFuture, address, init, retryAttempt - 1));
                     }
                 }else if(cause instanceof Throwable) {

opennms-provision/opennms-provision-api/src/main/java/org/opennms/netmgt/provision/support/BaseDetectorHandler.java

     }
     
     /** {@inheritDoc} */
+    @Override
     public void sessionCreated(IoSession session) throws Exception {
         
     }
 
     /** {@inheritDoc} */
+    @Override
     public void sessionOpened(IoSession session) throws Exception {
         if(!getConversation().hasBanner() && getConversation().getRequest() != null) {
             Object request = getConversation().getRequest();
     }
 
     /** {@inheritDoc} */
+    @Override
     public void sessionClosed(IoSession session) throws Exception {
         if(!getFuture().isDone()) {
             getFuture().setServiceDetected(false);
     }
 
     /** {@inheritDoc} */
+    @Override
     public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
         if(getConversation().hasBanner() && status == IdleStatus.READER_IDLE) {
             getFuture().setServiceDetected(false);
     }
 
     /** {@inheritDoc} */
+    @Override
     public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
         LogUtils.debugf(this, cause, "Caught a Throwable in BaseDetectorHandler");
         getFuture().setException(cause);
     }
 
     /** {@inheritDoc} */
+    @Override
     @SuppressWarnings("unchecked")
     public void messageReceived(IoSession session, Object message) throws Exception {
         try {
     }
 
     /** {@inheritDoc} */
+    @Override
     public void messageSent(IoSession session, Object message) throws Exception {}
 
     /**

opennms-provision/opennms-provision-api/src/main/java/org/opennms/netmgt/provision/support/ConnectionFactory.java

 import java.util.Iterator;
 import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.Semaphore;
 
 import org.apache.mina.core.future.ConnectFuture;
  * to have a Semaphore limiting the number of active Connections across all
  * Connectors.
  * </p>
+ * 
  * <p>
  * There will be one ConnectionFactory for each discrete connection timeout
  * value.
  * </p>
+ * 
  * <p>
  *  Adapted from original ConnectorFactory.
  * </p>
     private static Semaphore s_availableConnections;
     private static int s_connectionExecutionRetries = 3;
     
-    static{
+    static {
+        init();
+    }
+
+    public static void init() {
         if(System.getProperty("org.opennms.netmgt.provision.maxConcurrentConnections") != null){
             
             if(Integer.parseInt(System.getProperty("org.opennms.netmgt.provision.maxConcurrentConnections")) == 0){
         
         s_connectionExecutionRetries = Integer.parseInt(System.getProperty("org.opennms.netmgt.provision.maxConcurrentConnectors", "3"));
     }
-    
+
     /**
      * Count the number of references to this Factory so we can dispose it
      * when there are no active references
      */
     private int m_references = 0;
+
     /**
      * The actual connector
      */
     private NioSocketConnector m_connector;
     
+    /**
+     * A mutex that protects the connector instance since we must dispose() and 
+     * recreate it if it encounters errors.
+     */
+    private final Object m_connectorMutex = new Object();
+
     private final long m_timeout;
     
     /**
      */
     private ConnectionFactory(int timeoutInMillis) {
         m_timeout = timeoutInMillis;
-        m_connector = getSocketConnector();
+        synchronized (m_connectorMutex) {
+            m_connector = getSocketConnector(m_timeout);
+        }
     }
     
-    private final NioSocketConnector getSocketConnector() {
+    private static final NioSocketConnector getSocketConnector(long timeout) {
         NioSocketConnector connector = new NioSocketConnector();
         connector.setHandler(new SessionDelegateIoHandler());
-        connector.setConnectTimeoutMillis(m_timeout);
+        connector.setConnectTimeoutMillis(timeout);
         return connector;
     }
 
-    public long getTimeout() {
-        return m_timeout;
-    }
-
     /**
      * Get a new ConnectionFactory. If there is already a Factory with the
      * desired timeout, you will get that one; otherwise a new one is created.
      * 		An appropriate Factory
      */
     public static ConnectionFactory getFactory(int timeoutInMillis) {
-        ConnectionFactory factory = s_connectorPool.get(timeoutInMillis);
-        if (factory == null) {
-            LogUtils.debugf(ConnectionFactory.class, "Creating a ConnectionFactory for timeout %d, there are already %d factories", timeoutInMillis, s_connectorPool.size());
-            ConnectionFactory newFactory = new ConnectionFactory(timeoutInMillis);
-            factory = s_connectorPool.putIfAbsent(timeoutInMillis, newFactory);
-            // If there was no previous value for the factory in the map...
+        synchronized (s_connectorPool) {
+            ConnectionFactory factory = s_connectorPool.get(timeoutInMillis);
             if (factory == null) {
-                // ...then use the new value.
-                factory = newFactory;
-            } else {
-                LogUtils.debugf(ConnectionFactory.class, "ConnectionFactory for timeout %d was already created in another thread!", timeoutInMillis);
+                LogUtils.debugf(ConnectionFactory.class, "Creating a ConnectionFactory for timeout %d, there are %d factories total", timeoutInMillis, s_connectorPool.size());
+                ConnectionFactory newFactory = new ConnectionFactory(timeoutInMillis);
+                factory = s_connectorPool.putIfAbsent(timeoutInMillis, newFactory);
+                // If there was no previous value for the factory in the map...
+                if (factory == null) {
+                    // ...then use the new value.
+                    factory = newFactory;
+                } else {
+                    LogUtils.debugf(ConnectionFactory.class, "ConnectionFactory for timeout %d was already created in another thread!", timeoutInMillis);
+                    // Dispose of the new unused factory
+                    dispose(newFactory);
+                }
             }
+            factory.m_references++;
+            return factory;
         }
-        factory.m_references++;
-        return factory;
     }
 
     /**
      * You must dispose both the ConnectionFactory and ConncetFuture when done
      * by calling {@link #dispose(ConnectionFactory, ConnectFuture)}.
      * 
-     * @param destination
+     * @param remoteAddress
      * 		Destination address
      * @param init
      * 		Initialiser for the IoSession
      * 		ConnectFuture from a Mina connect call
      * @throws IOException 
      */
-    public ConnectFuture connect(SocketAddress destination, IoSessionInitializer<? extends ConnectFuture> init) throws IOException {
+    public ConnectFuture connect(SocketAddress remoteAddress, SocketAddress localAddress, IoSessionInitializer<? extends ConnectFuture> init) throws IOException {
         if (s_availableConnections != null) {
             s_availableConnections.acquireUninterruptibly();
         }
         for (int retries = 0; retries < s_connectionExecutionRetries; retries++) {