mp4j.1.9.1f.source-code.CHANGES.txt Maven / Gradle / Ivy
CHANGE LOG OF SNMP4J
====================
[2008-03-18] Version 1.9.1:
* Improved: OID parsing from string now supports embedded
string to OID conversion, for example the following OIDs
are equal:
a = new OID("1.3.6.2.1.5.'hal.'.'''.'lo'.1");
b = new OID("1.3.6.2.1.5.104.97.108.46.39.108.111.1");
* Improved: Added factory pattern for creating PDU for
incoming messages parsed by message processing models.
* Fixed: Null LogLevel returned by JavaLogAdapter.getLogLevel.
* Fixed: With async request processing and retry>0 there
could have been a race condition where a response event
had been generated twice for a request.
* Fixed: ArgumentParser option multi parameter support
which failed to parse options like "-option param1 param2"
correctly.
* Changed: MessageDispatcherImpl can now be used to register
more than one transport mapping per address class (UDP/TCP).
Nevertheless, only the first registered one will be used
for sending SNMP messages if no specific transport mapping
is given.
* Improved: Target is cloned when used internally by Snmp
instance to avoid errors through concurrent target usage.
[2008-01-31] Version 1.9:
* Improved: PDU.add(VariableBinding) no longer clones
VariableBindings while adding it if the contained variable
is dynamic. Instead VariableBinding.setVariable clones
the set variable always as well the oid set by setOid(OID).
* Improved: Added factories for thread and timer instances
configurable through SNMP4JSettings class.
* Improved: Created interfaces for ThreadPool (WorkerPool)
and thread of execution (WorkerTask) as well as Timer
(CommonTimer) for better Java EE intergration.
* Added: ArgumentParser for simple command line parsing.
* Fixed: Local engine ID could not be set for simple PDU
request for the command line tool.
[2007-11-06] Version 1.9 RC2:
* Fixed: Walk modus of console example.
* Added: -Ocs and -Ods to create and dump subtree
snapshot files.
[2007-10-18] Version 1.9 RC1:
* Fixed: LogFactory.getLogFactory() returned null if
log factory has not been initialized yet. Now
a new instance of LogFactory is returned instead.
* Fixed: Typo in Snmp JavaDoc (getPdu() -> getPDU()).
* Added: Hook-up method in DefaultTCPTransportMapping
to allow setting socket options by extending the
class and overwriting the setSocketOptions method.
* Added: TripleDES-EDE privacy protocol implementation.
* Changed: SecurityProtocol interface to allow dynamic
key extension.
* Fixed: Race condition in DefaultTCPTransportMapping.
[2007-05-04] Version 1.8.2:
* Fixed: Null.clone() did not copy/preserve syntax.
* Fixed: MPv3.addEngineID added engine ID to the local cache
although if it matched the local engine ID.
[2007-04-23] Version 1.8.1a:
* Fixed: No error was reported by TableUtils when sending
of a request failed.
* Fixed: MPv3.removeEngineID fired "engine ID added"
event.
[2007-03-12] Version 1.8.1:
* Fixed: Race condition in DefaultTCPTransportMapping
that could cause message loss because messages are
accidentially never send (because at the same time
another message came in).
* Improved: Snmp.addNotificationListener(..) sets the
connection timeout to 0 for TCP transport mappings.
* Fixed: Snmp.removeNotificationListener(..) caused
memory leak because it did not deregister the
notification transport mapping properly.
* Fixed/Improved: Several code cosmetics and Serializable
issues.
* Improved: REPORT messages are now sent over the same
transport mapping as the message reported on has been
received. This improves firewall interoperability.
[2007-02-01] Version 1.8:
* Fixed: Race condition with sync requests in Snmp.send
that could cause a deadlock.
* Fixed: Added missing serialVersionUIDs.
* Changed: PduHandleCallback.pduHandleAssigned(..) to
use Object as type of the PDU reference.
[2007-01-08] Version 1.8 RC1:
* Changed: Variable is now an interface and the former
abstract class implementation is now moved to
AbstractVariable. Serialized Variables from 1.7.x
or earliers released can be deserialized with 1.8
because the Variable interface defines the same
serialVersionUID as the former Variable abstract class.
* Fixed: MessageDispatcherImpl.getMessageProcessingModel
no longer throws an ArrayIndexOutOfBoundsException
when the requested model is not known.
* Added: GenericAddress constants for the default address
types "udp", "tcp", and "ip".
* Fixed: OctetString.fromSubIndex for implied length values.
* Added: Constants for default command responder and
notification receiver ports in SnmpConstants class.
* Added: Append constructor for OID class, to facilitate
creating an instance OID from a class OID and an index
OID.
* Improved: DefaultTcpTransportMapping can now also
reconnect if its connection is in state "unconnected".
* Fixed: OctetString.startsWith did not work if prefix
length did not match the string's length.
* Added: Option (-m) to set maxMessageResponseSize for
SNMPv3 requests in console example.
* Improved: Clarified and implemented TODOs left from
earlier versions.
* Fixed: IllegalStateException seldom occured in a race
condition while waiting for a sync response in
Snmp.send(..) or when canceled an async response while
a retry was started.
* Improved: Performance of message sending and receiving
due to less (narrow) synchronization.
* Added: -l option to SnmpRequest console example to
allow setting the local engine ID to avoid engine ID
conflicts.
* Added: -b option to set the engine boots counter for the
console example (SnmpRequest).
* Added: TreeUtils to conveniently walk sub-trees.
* Fixed: Bug in LogLevel class causing incorrect log levels
to be used in some cases when converting from a levels
string representation.
* Improved: JavaLogAdapter DEBUG level from SNMP4J (Log4J)
now maps to FINE in Java logging.
* Added: LogFactory can now be configured through the
system property "snmp4j.LogFactory" with the factories
class name.
* Added: LogProxy for implementing late logger binding.
* Changed: BERSerializable no longer extends Serializable.
* Added: Security check for transport not listening when
sending confirmed PDU.
[2006-10-07] Version 1.7.6a:
* Fixed: Possible deadlock in ThreadPool when
stopping a busy thread pool.
* Added: SMIConstants.SYNTAX_BITS to map to
SMIConstants.SYNTAX_OCTET_STRING.
* Added: TableUtils.destroyRow(..).
* Fixed: Opaque.clone() was missing.
[2006-09-04] Version 1.7.5:
* Changed: VariableBinding(OID, Variable) now checks OID
for not being null.
* Fixed: MessageDispatcherImpl.addAuthenticationFailureListener
did not work.
* Fixed: OctetString.split(OctetString, OctetString).
[2006-08-19] Version 1.7.4a:
* Fixed: Concurrent access to the internal server
thread during close() calls does no longer cause
a NullPointerException. The synchronization that
caused a deadlock in 1.7.4 has been removed again.
* Added: Support for the obsolete SMI type BIT STRING
for compatibility with very old SNMPv2 draft
implementations. In order to activate support for it
call SNMP4JSettings.setExtensibilityEnabled(true).
See also the org.snmp4j.smi.BitString class.
[2006-08-03] Version 1.7.3:
* Added: SnmpConstants.getTrapOID to convert a v1 trap info
to a v2/v3 notification OID.
* Improved: PDU and PDUv1 now check against setting a wrong
PDU type for that PDU class (i.e. V1TRAP is not allowed
for PDU and ScopedPDU and NOTIFICATION is not allowed for
PDUv1).
* Added: DefaultPDUFactory.createPDU(int targetVersion).
* Changed: PDUv1.toString() to use PDU.toString() for all PDU
types other than PDU.V1TRAP.
* Added: Constructor to DefaultUDPTransportMapping to create
a socket that reuses an address that is in timeout state
after a closed connection (TIME_WAIT).
* Fixed: Fixed multi-threading issue in MPv3 where the incoming
request pdu handle was overwritten which caused state information
to get lost when more than one incoming request were processed
concurrently.
[2006-05-29] Version 1.7.2:
* Added: JavaLogFactory and JavaLogAdapter for Java logging.
This is now also the default logging for the SnmpRequest
tool.
* Improved: OctetString.isPrintable to accept whitespaces as
printable characters.
* Fixed: When connection closed remotely the corresponding
event has not been fired in all cases (DefaultTCPTransportMapping).
[2006-04-24] Version 1.7.1:
* Fixed: Stackoverflow in OID.nextPeer().
* Added: ConnectionOrientedTransportMapping.close(Address peerAddress).
* Improved: Reporting of RuntimeExceptions while handling retries.
[2006-04-10] Version 1.7:
* Improved: Logging interface enhanced.
* Added: Variable.toInt() and Variable.toLong() to reduce
casting when converting to native integer or long values.
* Fixed: OID.mask.
* Added: When PDUv1 decodes a Counter64 object, a
MessageException is thrown.
* Added: OID.nextPeer(), OID.successor(),
and OID.predecessor().
* Fixed: ThreadPool.stop() blocked.
* Fixed: Additional retries with sync requests when first
try failed and second (or second to last) succeeded.
* Fixed: Possible NullPointerException when closing Snmp.
* Improved: Closing UDP default transport mapping first
disconnects socket before closing it.
* Fixed: Possible ConcurrentModificationException when using
List returned by sync TableUtils.getTable(..).
* Added: OctetString.fromByteArray to create an OctetString
from a byte array.
* Improved: OID.successor() to build correct successor for
128 subidentifier OIDs.
* Added: OID.min(OID a, OID b) and OID.max(OID a, OID b)
* Fixed: Handling of remote disconnect of TCP transport
mapping.
* Added: ConnectionOrientedTransportMapping interface and
TransportStateListener event listener.
* Added: Variable.getSyntaxString().
* Fixed: Bug in Snmp.send(PDU pdu, Target target,
TransportMapping transport) which did not propagate the
transport mapping.
* Added: UsignedInteger32(int) and UsignedInteger32(byte)
constructor.
* Fixed: Set SnmpMessageLengthDecoder as default for
DefaultTCPTransportMapping.
* Added sysOREntry OID constant in SnmpConstants.
[2005-12-27] Version 1.6e:
* Improved: Performance of TableUtils by using a better
end condition when traversing a table.
[2005-12-06] Version 1.6d:
* Fixed: SNMP4J did not detect USM out-of-time-window errors
when checking non-authoritative times.
[2005-11-30] Version 1.6c:
* Fixed: Sync requests were not removed from pending requests list
when a response has been received which resulted in additional
retries.
[2005-11-23] Version 1.6b:
* Fixed: Request ID handling for request IDs > 2^31.
* Fixed: If request ID < 0 of a incoming request a different
request ID has been sent with the corresponding response.
* Changed: To let SNMP4J generate a request ID it has to be
provided as 0 (negative request IDs will no longer result
in a new request ID being generated)
* Fixed: Memory leak when sending synchronous requests introduced
in v1.6beta. The memory leak was caused because the pending
message is not removed when a response has been received which
also led SNMP4J send requests messages even though a response
had already been received.
[2005-10-23] Version 1.6:
* Fixed: Retry handling of Snmp.
* Added: TaskScheduler and SchedulerTask.
* Added: MessageDispatcher.getTransport(..) and made corresponding
private method in MessageDispatcherImpl public.
[2005-10-13] Version 1.6 RC 1:
* Fixed: Asynchronous Snmp.inform() used wrong PDU type (GETBULK
instead INFORM).
* Fixed: MessageDispatcherImpl did not set peer transport mapping
in StateReference (needed to respond correctly if multiple TCP
transport mappings are used).
* Fixed: IpAddress.equals(Object o) threw ClassCastException if
o was not an IpAddress.
* Added: Static method PDUFactory.createPDU(..).
* Improved: Made Target cloneable.
* Fixed: Fixed execution of broadcast requests in Snmp.java.
* Added: tryToExceute in ThreadPool and added two other methods
to better interrupt/cancel tasks.
* Added: Interface for external handling of reports in Snmp.
* Added: ConsoleLogAdapter and ConsoleLogFactory for console
logging.
[2005-08-24] Version 1.6 beta 1:
* Added: LogAdapter.fatal(..) methods.
* Fixed: TransportIpAddress.parse did not parse IPv6 addresses
correctly.
* Improved: Introduced TransportListener interface to clearly
separate TransportMappings from MessageDispatchers.
* Fixed: BER length encoding of length > 2^31.
* Added: TransportMapping.getListenAddress() returns the listen
address of transport mappings.
* Fixed: Initialization of CommunityTarget SNMP version to 1
for constructor with address.
* Fixed: MessageDispatcherImpl.getNextRequestID() did return 1
after max int has been reached for all negative integer values.
* Fixed: Snmp.processReport(..) did not remove pending request
when a final report has been received.
* Fixed: Counter64.getBERLength() [Thanks to Jim Doble].
* Added: SnmpEngineEvent and Listener that provide a callback
hook for engine ID cache updates of the MPv3 local storage.
* Changed: UsmUserTable.UsmUserKey is now public.
* Improved: Hash code computation for UsmUserEntry.
* Fixed: Snmp.send(PDU,Target,TransportMapping) did not pass
the transport mapping to the underlying calls.
* Added: Support for localized USM users.
* Fixed: Sometimes lost MPv3 cache information when processing
reports (out of time, etc.) due to garbage collection on
WeakHashMap.
[2005-04-26] Version 1.5:
* Fixed: Encoding of OIDs with sub-identifiers > 2^31.
* Fixed: Counter64 encoding error for some values > 2^24.
* Fixed: Timeout option descritpion of console tool.
* Added: Some debug messages for notInTimeWindow exceptions.
* Changed: Address is now an interface (was an abstract class).
An new abstract base class for IpAddress and TransportIpAddress
has been introduced which is called SMIAddress. Because of the
class type change of Address you will need to recompile your
application, when upgrading to SNMP4J 1.5.
* Improved: UdpAddress and TcpAddress BER encoding routines
now encode the respective address as OCTET STRING according
to the TRANSPORT-ADDRESS-MIB.
* Fixed: ThreadPool.stop did not notify TaskManagers which
could block the stop() method execution.
* Improved: By default system properties are no longer used
to determine SNMP4J configuration, instead the configuration
(which transport protocols, security protocols, SMI syntaxes,
address types, etc. to use) is hard coded and contains all
available features. To add additional features without
changing SNMP4J classes/code, use the
SNMP4JSettings.setExtensibility method.
Consequently, SNMP4J can now be used with Applets.
* Added: OID.mask(OctetString) to mask an OID by a bit string.
* Added: TransportIpAddress.getValue() which returns the
address value as a byte array.
* Fixed: Typo in -OtCSV options and description CVS changed into
CSV.
* Added: snmpInPkts counter support.
* Improved: Console example can now be extended more easily.
* Changed: Made Snmp default constructor public.
* Added: Snmp(MessageDispatcher).
[2005-04-04] Version 1.2.1:
* Changed: Due to incomplete state of Log4J 1.3-alpha6 and
for the sake of a more flexible logging interface the
new package org.snmp4j.log has been introduced. By default
SNMP4J does not use logging. To enable logging, for example
Log4J logging which is supported out-of-the-box, use
"static { LogFactory.setLogFactory(new Log4LogFactory());}"
[2005-03-30] Version 1.2:
* Improved: Replaced the log4j-1.3alpha-6.jar with a patched
version that does not print out Log4J internal messages.
These internal logging messages will be also removed from
the official log4j 1.3 version once it is released as beta.
* Added: OctetString.startsWith(OctetString).
* Changed: Logging API again back from JCL to Log4J-1.3's
UGLI independent logging interface.
* Improved: Privacy protocols know also return their maximum
key length. Privacy keys now adhere to that maximum length
when keys are generated by passwordToKey.
* Added: USM.getSecurityProtocols()
* Added: OID.toByteArray() to simplify conversion of index OIDs
to SMI values.
* Fixed: OctetString.compareTo function did not compare
byte values as unsigned causing wrong ordering of bytes > 127.
* Added: OctetString.set(int, byte).
* Changed: Target is now an interface (as an abstract
class). AbstractTarget has been introduced which
implements the same functionality as the former Target
object. CAUTION: v1.2 is therefore *not* binary compatible
with older versions. Please recompile your classes when
upgrading to v1.2!
* Fixed: Snmp.trap threw always an exception.
* Added: USM.updateUser(..) and new constructor that accepts
a custom SecurityProtocols set.
* Added: zeroDotZero to SnmpConstants.
* Changed: Log4J logging is now wrapped by the Apache
commons logging to be more independent regarding the
used logging framework.
* Fixed: notInTimeWindow report was sent with wrong
securityLevel (should be authNoPriv - was noAuthNoPriv).
* Improved: StateReference now also holds the TransportMapping
that was/should be used to communicate with the peer.
* Fixed: Added missing clone() method to TimeTicks.
* Added: Range option for plain OIDs for the command line
parsing of the SnmpRequest command line tool. The range
specification allows more convenient specification of the
columns of a table (for example '1.3.6.1.2.1.2.2.1-18').
* Fixed: JavaDoc of Snmp class used deprecated methods.
[2005-02-17] Version 1.1.1:
* Fixed: BER decoding of zero Counter64 value and optimized
encoding of Counter64 values.
* Added: -tCVS and -ttCVS operation modes to support
CVS dumps of tabular SNMP data with the console
example (SnmpRequest.java).
[2005-02-04] Version 1.1a:
* Added: UsmUser checks for minimum passphrase length (8).
See RFC3414 ?11.2.
* Fixed: TableUtils did not recognize SNMP exception VB
status and errors (SNMPv1) indicating table boundary.
[2005-02-02] Version 1.1:
* Improved: ResponseEvent now includes the peer address
of the response sending entity.
* Added: PDU.toArray() and PDU.addAll(VariableBinding[]).
* Added: OID.trim(int n) which removes the n rightmost
subidentifiers of an OID.
* Changed: MessageDispatcherImpl.addTransportMapping
does not replace a transport mapping for the same
address class any more.
* Changed: Snmp.sendPDU methods are now deprecated, because
they do not return the peer address. The new
Snmp.send methods return a ResponseEvent object that
provides this information.
* Added: PDU type send methods that set the PDU type when
sending the PDU.
* Added: Snmp.addNotificationListener() and related methods
to support simple (de)registration of inbound only transport
mappings.
* Improved: Snmp's and DefaultTcpTransportMapping's threads
now run as daemon threads and thus no longer prevents an
application to exit. Nevertheless, it is strongly
recommended to call Snmp.close() before exiting to close
all ports nicely.
* Improved: Removed redundant class UsmUserNameTable.
* Added: Methods to extract and delete USM users (USM class).
* Improved: MPv3.Cache entries are now removed even if the
target agent does not respond.
* Changed: Made OctetString.isPrintable() public.
* Added: TransportMapping.isListening().
* Added: TransportMappings class which allows generic mapping
of address classes to transport mappings.
* Fixed: TableUtils did not handle sparse tables correctly.
* Fixed: MPv3.setLocalEngineID did not check parameter.
* Fixed: DefaultPDUFactory did not create SNMPv3 ScopedPDUs.
* Changed: Replaced -D option of console tool by -d to avoid
name clashes with JVM option -D.
[2005-01-13] Version 1.0.4c:
* Fixed: UsmUserKey.compareTo and UsmUserEntry.compareTo
methods did not compare classes engine ID correctly.
[2004-11-22] Version 1.0.4b:
* Fixed: In some situations an SNMPv3_USM_ERROR could
have returned when trying to send a request/response
PDU to a target for whose engine ID no engine time
notion has been stored in the local cache.
[2004-11-18] Version 1.0.4a:
* Fixed: TableUtils.getTable did not cancel requests
which caused a memory leak.
* Fixed: UnsupportedOperationException was thrown in
TableUtils.getTable() when using it on a SNMPv1 target.
* Fixed: Unclosed file handle when reading
smisyntax.properties.
* Fixed: Memory leak when sending asynchronous requests.
When sending an async request do not forget to cancel
the request using Snmp.cancel(PDU, ReponseListener)
within the onResponse method of your listener!
* Fixed: Unclosed file handles when reading
address.properties and SecurityProtocols.properties.
* Added: Synchronous TableUtils.getTable() method.
* Improved: TransportMapping inheritance regarding
asynchronous message processing support.
* Added: DefaultPDUFactory implementation.
* Fixed: PDU.isConfirmedPdu().
[2004-11-04] Version 1.0.3c:
* Added: The DefaultUdpTransportMapping and
DefaultTcpTransportMapping now by default support
asynchronous (i.e. multi-threaded) message processing.
For synchronous message processing the flag
asyncMsgProcessingSupported should be set to false, to
increase performance!
[2004-10-30] Version 1.0.3b:
* Fixed: TableUtils did use GETBULK PDU type also for
SNMPv1 targets.
* Improved: By default, the MessageDispatcherImpl class
now checks for inconsistencies between PDU type and
used SNMP version.
[2004-10-13] Version 1.0.3a:
* Fixed: Race condition in Variable.registerSyntaxes().
In a multithreaded usage, this could have caused some
BER decoding failures.
* Improved: Minor JavaDoc improvements.
[2004-08-20] Version 1.0.3:
* Added: Variable.isException().
* Improved: DefaultUdpTransportMapping now closes socket
in close() even if listen() has not been called before.
* Added: Variable.createVariableFromSyntax(int smiSyntax).
* Fixed: Uncaught exception thrown by the Snmp class
because of an incomplete synchronization within the
retry processing.
* Improved: Several JavaDoc improvements, for example added
documentation for the different PDU types.
[2004-08-07] Version 1.0.2:
* Improved: Added constants for exception Null variables and
Null constructor that takes an exception status syntax as
parameter.
* Fixed: GenericAddress.parseAddress was not multi-threading
safe.
* Added: Package org.snmp4j.util containing a ThreadPool
implementation and a MultiThreadedMessageDispatcher.
* Added: TableUtils to retrieve a columns of one or more SNMP
tables effeciently and row oriented using GETBULK requests.
* Added: OID(int[] rawOID, int offset, int length) constructor.
[2004-07-02] Version 1.0.1a:
* Fixed: Two regression issues that broke the TCP transport
mapping.
* Fixed: TCP transport mapping left an unused timer thread
running when closed.
[2004-06-26] Version 1.0.1:
* Fixed: SNMPv3 trap sending did not use local engine ID
and time values (although it should have because the
sending engine is the authoritative).
* Fixed: Context engine ID was not set to the local
engine ID when empty and the sent PDU was a unconfirmed one.
* Added: DefaultCounterListener which implements SNMP error
counters in a generic way. It is not used by SNMP4J by
default.
* Fixed: Incorrect usage description in SnmpRequest.
* Fixed: clone() methods of Counter32 and Gauge32.
* Added: clone() method to VariableBinding.
* Added: Counter32.increment() and Counter64.increment() methods.
[2004-06-21] Version 1.0a:
* Fixed: Stack overflow when using PDUv1 for other PDU types
than PDU.V1TRAP (which is *not* recommended anyway!).
* Improved: MessageDispatcherImpl.sendPdu throws now a
MessageException when USM fails to prepare the outgoing
message (instead of a NullPointerException).
* Fixed: Two race conditions when creating Snmp instances
concurrently (two singleton factory methods needed to be
synchronized).
* Improved: Console example returned "strange variable ..."
when reaching end of a subtree-walk.
[2004-05-21] Version 1.0:
* Fixed: Several small cosmetic fixes in code, build, and
JavaDoc.
[2004-05-08] Version 1.0 RC2:
* Fixed: SNMPv3 interoperability problems due to incorrect
(too long) Mesage Authentication Code length.
* Fixed: Regression bug in the privacy module that has been
introduced by the optimization in the last version.
* Fixed: The SNMP4J-Tool did not use supplied context and
contextEngineID parameters.
[2004-04-20] Version 1.0 RC:
* Fixed: Bug in Counter64.getBERLength() - length was too
short by one for very big counter values.
* Improved: Performance of BER encoding and decoding because
less buffer copying is used now. There is still a small
optimization potential for SNMPv3 message handling. This
will be utilized in the final 1.0 release.
* Improved: Report handling.
* Improved: JavaDoc but package descriptions are still
incomplete.
* Fixed: When Snmp.close() has been called all resources
are freed now - also the internal message processing
thread.
[2004-04-07] Version 1.0beta(2):
* Fixed: The dist/lib/SNMP4J.jar was not up-to-date
and contained a bug, the sources did not contain.
If you have downloaded the intial release you can
simply rebuild it using "ant". There is then no need
to download the beta(2) release.
© 2015 - 2025 Weber Informatics LLC | Privacy Policy