Index: opennms-joesnmp/src/main/java/org/opennms/protocols/snmp/SnmpPduTrap.java =================================================================== --- opennms-joesnmp/src/main/java/org/opennms/protocols/snmp/SnmpPduTrap.java (revision 5337) +++ opennms-joesnmp/src/main/java/org/opennms/protocols/snmp/SnmpPduTrap.java (working copy) @@ -301,10 +301,13 @@ * Set's the timeticks in the trap. * * @param ts - * The timeticks for the trap. + * The timeticks (centiseconds) for the trap, not to exceed 2^32-1. * */ - public void setTimeStamp(long ts) { + public void setTimeStamp(long ts) throws IllegalArgumentException { + if ((ts < 0) || (ts > 4294967295L)) { + throw new IllegalArgumentException("Value must be within bounds for an unsigned 32-bit integer"); + } m_tstamp = ts; } Index: opennms-snmp/opennms-snmp-api/src/main/java/org/opennms/netmgt/snmp/SnmpV1TrapBuilder.java =================================================================== --- opennms-snmp/opennms-snmp-api/src/main/java/org/opennms/netmgt/snmp/SnmpV1TrapBuilder.java (revision 5337) +++ opennms-snmp/opennms-snmp-api/src/main/java/org/opennms/netmgt/snmp/SnmpV1TrapBuilder.java (working copy) @@ -43,6 +43,11 @@ void setSpecific(int specific); + /** + * + * @param timeStamp + * A timestamp value, in TimeTicks (centiseconds), not to exceed 2^32-1 + */ void setTimeStamp(long timeStamp); } Index: opennms-services/src/test/java/org/opennms/netmgt/trapd/TrapdTest.java =================================================================== --- opennms-services/src/test/java/org/opennms/netmgt/trapd/TrapdTest.java (revision 5337) +++ opennms-services/src/test/java/org/opennms/netmgt/trapd/TrapdTest.java (working copy) @@ -50,7 +50,17 @@ pdu.setEnterprise(SnmpObjId.get(".1.3.6.1.4.1.5813")); pdu.setGeneric(1); pdu.setSpecific(0); - pdu.setTimeStamp(System.currentTimeMillis()); + + boolean boundsCheckOK = false; + try { + pdu.setTimeStamp(4398046511104L); // 4398046511104L == 2^42 > 2^32-1 + } catch (IllegalArgumentException iae) { + boundsCheckOK = true; + } + if (! boundsCheckOK) { + throw new Exception("Strategy class TRAPv1.setTimestamp() did not except on a TimeTicks value > 2^32-1"); + } + pdu.setTimeStamp(666L); pdu.setAgentAddress(localAddr); @@ -76,5 +86,6 @@ assertEquals(0, ea.unanticipatedEvents().size()); } + }