Java SNMP Package
This is an open-source implementation of the SNMP protocol as a Java
package. It provides support for basic SNMP client and agent operations
as defined in SNMP versions
1 and 2 (excluding the security model proposed as part of SNMP version
2,
which was never widely accept or deployed). The package provides a
mechanism
for "getting and setting" SNMP object identifier (OID) values through a
simple
communication interface, and represents SNMP structures and datatypes
as
corresponding Java objects. The package has been used to provide SNMP
communication
capabilities for the Airport/RG-1000
Configurator and SNMP
Inquisitor applications.
Version 1.1 adds support for SNMP Trap generation and reception.
Version 1.2 provides separate classes for trap generation and
monitoring,
and a method for retrieving table data
Version 1.3 adds SNMP agent functionality, and methods for setting and
retrieving multiple OID values in a single PDU
Version 1.4 improves error handling and reporting functionality, adds
support for SNMPv2 Traps and Inform Requests, and includes Ant and GNU
Make build scripts
Source
The source distribution contains
the Java source files for the package,
as well as the source code for four sample applications which utilize
the
package, a simple example application that illustrates basic use of the
package, a simple GUI agent application that listens for and responds
to get- and set-requests, a simple GUI trap application that listens
for and generates traps, and the source for the SNMP Inquisitor, a
utility for querying
SNMP-enabled devices.
Current version:
Note
The trap support provided in versions 1.4 and later is not directly
backward
compatible with versions 1.3 and earlier; several classes have been
renamed to differentiate better between v1 and v2 traps. As such,
applications written to previous versions of the SNMP package which use
traps will need to be modified to use the version 1.4 package.
Previous versions:
Documentation
JavaDoc documentation for the classes in the package:
Introduction and short tutorial:
Change Log
Version 1.4.1:
- Added communityName parameter to processTrap methods of
SNMPv1TrapListener and SNMPv2TrapListener classes, so listeners can
accept or reject traps based on community name (thanks to Kim Le)
Version 1.4:
- Replaced SNMPInteger values in Get and GetNext requests
with SNMP Nulls
- Changed SNMP TimeTicks in trap sender timestamp to 1/100ths
of second rather than 1/1000ths
- Restricted SNMPTimeTicks to be 32-bit quantity (rather than
arbitrarily large, which caused problems with some receivers)
- Added PrintWriter for error reporting in AgentListener and
TrapListener interfaces so error reporting can be directed as desired
(rather than always to System.out)
- Changed internal representation of SNMPObjectIdentifier to
array
of longs to accept OID components up to 2^32 - 1 (thanks to Norman
Elton)
- Changed toString() methods to utilize StringBuffer
internally, for efficiency (thanks to Philip Yarra)
- Added radix specification to SNMPInteger class toString()
method
- Improved error handling:
- Messages and PDUs perform more detailed qualification of
contents, reporting more specific errors (rather than passing on
generic Java exception types)
- Agent Interface now catches and reports all exceptions
- Fixed bug in SNMPv1AgentInterface, in which handled OIDs
checked by reference rather than by value (thanks to Roman Levandovsky)
- Added equals() and hashCode() methods to SNMP object
subclasses for use in collections
- Added support for SNMPv2 traps and inform request messages.
Note
that as a result the 1.4 version of the package is not directly
backward-compatible with the 1.3 version as all classes related to trap
messages have been qualified to indicate whether the trap is a v1 or v2
trap. Thus applications which use traps will need to be changed to use
the 1.4 version package; however, the changes should be simple textual
substitutions, e.g., changing all references to SNMPTrapPDU to
SNMPv1TrapPDU.
- Added build scripts for GNU Make and Apache Ant
Questions/comments: jsevy@mcs.drexel.edu