CHANGE LOG OF SNMP4J-Agent ========================== [2024-04-11] v3.7.2 (Requires SNMP4J v3.8.0 or later) * Added: Added MOPersistentProvider.close() method. [2024-04-05] v3.7.1 (Requires SNMP4J v3.8.0 or later) * Fixed: Regression in 3.7.0 CommandProcessor.GetHandler NullPointer exception on GET requests with noSuchObject exceptions. * Fixed: OID returned in RESPONSE PDU for a GET request was wrong if such an instance does not exist or such an object does not exists (noSuchInstance and noSuchObject exception). According to RFC 3416 §4.2.1, the returned OID must be the OID of the corresponding variable binding from the request. Instead, the OID of the scalar was returned managing the accessed OID region. [2024-04-02] v3.7.0 (Requires SNMP4J v3.8.0 or later) * Fixed: SnmpNotificationMIB.passesFilter(OID notificationID, VariableBinding[] vbs, List profiles) did return false (i.e., "do not send notification") when no matching filter was found for a matching profile. According to RFC 3413 §6 this behavior is wrong and notification should be sent instead. * Fixed: Deadlock in DefaultMOServer.lock(..) if timeoutMillis are set to 0. * Fixed: Race condition in NotificationOriginatorImpl.notify(..) if notificationEventID is being modified by another thread before notifications are actually sent out. * Fixed: nlmLogTable: NotificationLogMib.NlmConfigGlobalEntryLimit.commit() tried update limits using profileName that is not available by this object. This update is now executed by NlmConfigLogEntryRow.commit(..). * Fixed: VacmMIB.VacmContextTableModel.tailIterator() did not return objects in correct order for all cases because it used the wrong comparator for its binarySearch operation. * Fixed: snmpTargetAddrTMask did not validate length of mask to match length of the corresponding snmpTargetAddrTAddress. * Fixed: MOPropertyInput threw NullPointerException on loading DefaultMOTable data from a config properties file when table data was defined for a supported context. * Fixed: Implemented snmpUnknownContexts.0 Counter and corresponding checks in CommandProcessor.isContextNotSupported(). * Changed: Snmp4JLogMib's textual convention LogLevel now allows to set notSpecified(0) too. * Improved: MOMutableColum.validate now takes 3rd parameter to be able to identify the cell instance to be validated. which is sometime necessary to verify a value against other values in a MIB. * Improved: Multi-threading support by copying notificationID before processing notifications. * Improved: NotificationOriginator uses common sysUpTime by default for the same notification sent to different targets. * Improved: coldStart notification is sent asynchronously. * Improved: Logging if a VB OID of a notification payload is not granted access and therefore notification is not sent. * Improved: Unlock of ManagedObjects now uses notifyAll() instead notify() to avoid temporary deadlocks across 3 or more ManagedObjects and SET requests. * Improved: GET, GETNEXT, and GETBULK requests can now be included in a lock strategy for locking too. GET requests and SET requests are first locked (if necessary by lock strategy) and then processed if are locks have been acquired. For GETNEXT and GETBULK locks are acquired by sub-request step-by-step. The search operation for NEXT-type requests can require several locks per sub-requests. Locking all managed objects before processing the requests, would be not efficient for these request types. * Improved: LookupListener.useCompleted(SubRequest) is now called too for GET, GETNEXT, and GETBULK requests. * Improved: Even if exceptions are thrown while MangedObjects are locked by request processing, these ManagedObjects are properly unlocked when request is finished. * Added: Support for "configurable-only" SerializableManagedObjects. By setting setVolatile(true) and setConfigurable(false), the behaviour before <3.7.0 can be restored. If setConfigurable(true) (default) and isVolatile(true) objects can be configured using MOInput (for example from a properties file) but not persistently saved or restored. Although DefaultMOTable and MOScalar objects are configurable by default, MOScalar is not configurable if its value has the syntax Counter32, Counter64, or TimeTicks. * Added: Option CommandProcessor.setLockNonNextRequestsSortedByVbOid flag to enable/disable reordering of locking SNMP subrequests based on their OID to implement a hierarchy based deadlock prevention for processing SET and GET requests. This reordering is disabled by default. If enabled the sub-requests of SET and GET requests will be locked in the lexicographic order of the VB OIDs. This eliminates any likelihood of deadlocks caused by intersecting PDU requests (at least with the default LockStrategy that locks for SET requests only). * Added: Option DefaultMOServer.setDeadlockPreventionEnabled (disabled by default) to enable super-thread based deadlock prevention. Enabling this option reduces overall performance if deadlocks are prevented by OID hierarchy based lock access (see SnmpRequest.USE_VBS_REORDERING_ON_SET_TO_PREVENT_DEADLOCKS for SNMP requests) anyway. * Added: Unit tests for SNMP4J's TableUtils with sparse table with null columns and fewer rows than columns and single max columns and repetitions per PDU. * Added: AgentConfigManager.getCommandProcessor() * Added: VACM.hasContext(OctetString contextName) with default implementation which returns true (which provides full backward compatibility). * Added: MOServer.unlockNow(..) which unlocks a ManagedObject for a specified owner regardless of any recursive locks. * Added: MOServer.waitForUnlockedState(long timeoutMillis) and AgentConfigManager.waitUntilPendingModificationsDone() to support a clean shutdown of a SNMP agent by waiting for write access operations to complete on managed objects before saving agent state to persistent storage. [2024-01-25] v3.6.8 (Requires SNMP4J v3.7.8 or later) * Fixed: AgentConfigManager.getAgentNotificationOriginator() did not return the multi-threaded NotificationOriginator implemented by CommandProcessor. Instead, it returned the same NotificationOriginator as used by the AgentConfigManager. * Fixed: SnapshotAgent.registerManagedObjects() does not register any objects from snapshot file if there are objects registered starting with “1.1.” *and* “1.0.”. * Improved: SnapshotAgent now uses AgentConfigManager instead of deprecated BaseAgent. * Updated: Copyright header for all source files. [2023-08-07] v3.6.7 (Requires SNMP4J v3.7.7 or later) * Fixed [AS-41]: NullPointerException in UsmMIB.usmUserChange when USM.removeAllUsers is being called. [2023-03-21] v3.6.6 (Requires SNMP4J v3.7.7 or later) * Improved: DefaultMOServer.iterator(..) is now synchronized to avoid ConcurrentModificationException when calling the method while the registration of managed objects is modified concurrently. [2022-11-11] v3.6.5 (Requires SNMP4J v3.7.4 or later) * SECURITY [AS-38]: Command processing of GETBULK PDUs with large max-repetition values could lead to DoS/OutOfMemory when used in conjunction with a Snmp4J-AgentX master agent. Now repetition sub-requests are limited to the maximum theoretical possible variable bindings fitting into the maximum sized response PDU - according the maximum outbound message size. [2022-10-14] v3.6.4 (Requires SNMP4J v3.7.3 or later) * Fixed: Possible NullPointerExceptions in SnmpTargetMIB.getTarget(..) if SnmpTlsTmMib is present but does not provide a matching target. This fixes a regression caused by [AS-36]. [2022-10-08] v3.6.3 (Requires SNMP4J v3.7.3 or later) * Fixed: Java 9 API compatibility by adding maven.compiler.release option the maven-compiler-plugin. [2022-10-07] v3.6.2 (Requires SNMP4J v3.7.2 or later) * Fixed [AS-36]: TLSTM Notifications: Despite configuring authPriv SecurityLevel notifications are always sent with noAuthNoPriv. [2022-09-30] v3.6.1 (Requires SNMP4J v3.7.1 or later) * Added: Unix domain address handling support. * Fixed: Context specific MIB instance loading from properties files in PropertyMOInput. * Fixed: TDomainAddressFactory.getTransportDomain(Address address) to be able to return TlsAddress if Address is TlsAddress. [2022-06-14] v3.6.0 (Requires SNMP4J v3.7.0 or later) * Improved: MOScalar.setValue(..) now fires MOChangeEvent.afterMOChange too. That allows SNMP4J-Agent-DB to store scalar value modifications done programmatically like it was already the case for DefaultMOTable rows of SNMP4J-Agent before version 3.6.0. [2022-05-16] v3.5.6 (Requires SNMP4J v3.7.0 or later) * Updated: Dependency to SNMP4J 3.7.0. [2021-12-31] v3.5.5 (Requires SNMP4J v3.6.4 or later) * Improved [AS-28]: Added getter and setter for modifying AgentConfigManager configuration factory and persistence provider. [2021-12-15] v3.5.4 (Requires SNMP4J v3.6.4 or later) * Fixed [AS-26]: Added missing constructor and setter for modifying PropertyMOInput's import mode. [2021-12-04] v3.5.3 (Requires SNMP4J v3.6.3 or later) * Fixed [AS-24]: Made sure that authPassword and privPassword hidden columns are null if user is localised. This fixes a regression caused by SFJ-222 that generated wrong keys if users were initially loaded from properties file and localisation key was given. * Improved: Suppressed redundant usmUserChange event processing on USM entries created by UsmMIB itself. * Changed: Re-enabled secret logging in SampleAgent by default. [2021-11-23] v3.5.2 (Requires SNMP4J v3.6.2 or later) * Fixed: Typo in MOQuery.subtractScope(MOScope scope) method name (if used in instrumentation code this change will cause changes in that code, i.e. there is no binary compatibility then). * Improved: JavaDoc. [2021-11-15] v3.5.1 (Requires SNMP4J v3.6.1 or later) * Fixed [AS-23]: USM persistent data using SNMP4J-Agent-DB was not correctly restored for authNoPriv and authPriv users that have been changed using UsmKeyChange method via SNMP (authPriv was only affected if only a single key (auth or priv) was changed. * Fixed [SFJ-244]: Removed secret information (keys and passwords) from any log output. To reactivate output use SNMP4JSettings.setSecretLoggingEnabled(true). * Improved: JavaDoc. [2021-05-26] v3.5.0 (Requires SNMP4J v3.5.1 or later) * Fixed [SFJ-241]: SNMP4J-Agent RowStatus returns wrongValue instead inconsistentValue when new status transition is not allowed. * Improved [SFJ-240]: Moved org.snmp4j.agent.cfg package supporting engine ID and boots counter persistence from SNMP4J-Agent to SNMP4J org.snmp4j.cfg in order to simplify the same for SNMP command generators too. * Added support for multiple agents per Java process in AgentConfigManager and SampleAgent. * Added SFJ-201: Allow ordering of ManagedObjects for store/restore by priorities using SNMP4J-CONFIG-MIB snmp4jCfgStorageSeqTable. * Changed: Made SnmpTargetAddrExtEntryRow public. [2020-11-13] v3.3.6 (Requires SNMP4J v3.4.4 or later) * Fixed SFJ-233: SNMP4J-Agent's SnmpFrameworkMIB needs USM defined to support localEngineID object although this is independently defined. * Fixed SFJ-222: Error after changing/using a USM user and then trying to reset all user's passwords/keys by loading them from persistent storage again (user key is not reset) * Enhanced SNMP4J-CONFIG-MIB to support resetting configuration to factory default. * Updated dependencies to SNMP4J and maven plugins. [2020-09-21] v3.3.5 (Requires SNMP4J v3.4.3 or later) * Updated dependencies to SNMP4J and maven plugins. [2020-05-25] v3.3.4 (Requires SNMP4J v3.4.1 or later) * Fixed [SFJ-228]: Added missing DH kickstart with PBKDF2 key derivation from DH shared key (z) to USM auth/priv keys. * Removed: DHGroups class which has been moved to package org.snmp4j.security.dh of SNMP4J 3.4.1. * Fixed [SFJ-227]: SNMP4J-Agent RowStatus.commit(..) does not release lock if change set is empty. [2020-04-27] v3.3.3 (Requires SNMP4J v3.4.0 or later) * Fixed [SFJ-226]: usmDHUserPrivKeyChange produces wrong priv key length if authentication protocol uses different key length than privacy protocol. * Fixed: Typo in DisplayString.MIN_SIZE * Fixed: JavaDoc typos. * Fixed: Added missing counter listener for snmpv2MIB in AgentConfigManager. [2020-03-16] v3.3.2 (Requires SNMP4J v3.4.0 or later) * Fixed [SFJ-222]: USM user with modified authentication or privacy passphrase cannot be used after reload from persistent storage using DefaultMOPersistenceProvider (SNMP4J-Agent-DB persistence worked correctly though). [2020-03-12] v3.3.1 (Requires SNMP4J v3.4.0 or later) * Fixed [SFJ-222]: Error after changing/using a USM user and then trying to reset all user's passwords by loading them from persistent storage again. * Improved: DefaultMOTable.removeRow returns removed row even if row change listener deletes the row as side effect. * Added: DefaultMOTableRow.getColumnValue to get a columns value by type (instead by index). * Added: StorageType.getStorageType method to access the storage type value of a row efficiently. [2020-03-05] v3.3.0 (Requires SNMP4J v3.4.0 or later) * Fixed [SFJ-196]: UsmUser incorrectly removed from USM when restoring agent state after version upgrade from 2.x to 3.x. An affected agent will show a DEBUG log sequence while restoring agent state as follows: Updated row... Adding user... Removed user with secName=... Loaded row DefaultMOMutableRow2PC... A well behaving agent should log this sequence instead: Updated row... Adding user... * Added [SFJ-217]: Add EngineIdProvider support to EngineBootsCounterFile. * Fixed [SFJ-219]: DateAndTime columnar object's validate method hides super class moValidateListener mechanism. * Fixed [SFJ-220]: Deleting a row using RowStatus destroy(6) with StorageType permanent(4) is not rejected. [2019-11-11] v3.2.3 (Requires SNMP4J v3.3.3 or later) * SECURITY: Fixed SnmpTlsTmMib.isClientCertificateAccepted which did not use the client public key fingerprint correctly to match the locally configured fingerprint. * Fixed: TLS configuration for SampleAgent did not contain a fingerprint to TLSPRIV mapping for DTLS test communication. * Added: SubRequest is now available from MOChangeEvent if the change event is triggered by a (SNMP) request. [2019-08-13] v3.2.2 (Requires SNMP4J v3.3.1 or later) * Fixed [SFJ-207]: SNMP4J-Agent NotificationOriginatorImpl does not use snmpTlsAddrTable when sending TLS notifications. * Fixed: SnmpTargetMib.getTarget, SnmpTargetMib.SnmpTargetAddrEntryRow.getTarget and .getTlsTmTarget methods returned target definitions for inactive rows. Now only active rows will be used to determined target definitions. [2019-06-24] v3.2.1 (Requires SNMP4J v3.2.0 or later) * Fixed [SFJ-202]: CertifiedTarget for SNMPv3 TLS notifications not handled in NotificationOriginatorImpl. This includes fixes to the TlsTmMib regarding (D)TLS target resolving as well as fixes to the SNMP4J MessageDispatcher and TransportMappings in order to be able to use a "client mode" transport mapping with a different source port than the "server" mode TLS transport mapping that acts as command responder. * Added: TLSv1.3 support for SampleAgent command line parsing and added TLS notification target default configuration. [2019-04-18] v3.2.0 (Requires SNMP4J v3.1.0 or later) * Added [SFJ-200]: Added RandomAccessObject.isVolatile(OID) to check if a sub-instance (i.e., table row) is volatile or not. This is needed for filtering volatile rows by SNMP4J-Agent-DB when persistently storing rows of a table. * Fixed: Possible NullPointerException in RowStatus.commit if the new value does not differ to the existing RowStatus. * Fixed: StaticMOGroup and MOSubtreeProxy now implement the mandatory new GenericManagedObject interface too. [2019-04-16] v3.1.1 (Requires SNMP4J v3.1.0 or later) * Fixed: MOServer instances could have been added to the CommandProcessor twice. Causing additional processing time at end of MIB (view). * Changed: CommandProcessor addMOServer and removeMOServer now return boolean true on success and the first now logs a warning if the same MOServer is added twice and will not add it again. * Improved: Moved adding MOServer instances to CommandProcessor from its constructor to the AgentConfigManager.initialize method. [2019-03-13] v3.1.0 (Requires SNMP4J v3.1.0 or later) * Fixed [SFJ-188]: MOTableSizeLimit checkLimits returns false, although a table contains less rows than "limit". (Regression in 3.0.0). * Improved: Generics usage and added GenericManagedObject interface that marks ManagedObject instances that can be used with any type of org.snmp4j.agent.request.SubRequest, thus with any type of agent (regular, master, and sub-agent). * Added: ManagedObject now takes a type parameter SR for SubRequest. * Improved: Code readability for MOServerLookupEvent by removing unnecessary type parameters. * Fixed: Java 9 module info: made snmp4j requirement transitive. * Removed SSH mib file. * Fixed: Repo URLs. [2018-10-15] v3.0.3 (Requires SNMP4J v3.0.3 or later) * Fixed possible NullPointerException in MOTableIndex. * Fixed generic type of AgentStateListeners in AgentConfigManager. [2018-10-07] v3.0.2 (Requires SNMP4J v3.0.1 or later) * Fixed [SFJ-178]: Default implementation of MOFactory.createSubIndex(OID oid, int smiSyntax, int minLength, int maxLength) does not create sub-index with OID. * Added: MOServer.registerNew to register ManagedObjects without exception handling for duplicate registrations. * Fixed: Removed dependency to class AgentConfigManager from AgentState interface. [2018-09-28] v3.0.1 (Requires SNMP4J v3.0.1 or later) * Fixed [SFJ-176]: SNMP4J-Agent does not restore SnmpCommunityMib content properly when using SNMP4J-Agent-DB. [2018-09-24] v3.0.0 (Requires SNMP4J v3.0.1 or later) * Added [SFJ-114]:Implemented DTLS support according to RFC6353 by DTLSTM. * Added [SFJ-175]: Support for Java 9 modules. * Added [SFJ-152]: Diffie Hellman key exchange support for SNMP4J-Agent (and SNMP4J). * Improved: MOServerLookupListener and -Event object now cover all lookup types DefaultMOServer executes allowing users to use their callbacks to process get and set requests without changing the default MO object implementations. * Improved: MOTableRelation processing if existing rows are updated in the base table. * Added: MOTableRowEvent.EXISTS event type which can be used to process table row events of rows in a base table that already exist when the MOTableRowListener is being added. * Added: MOFactoryAdapter to facilitate MOFactory extension/adaptation. * Added: DefaultMOTable.getDependentTableRow(OID dependentTableID, OID index) * Added: DefaultMOTable.getRowPreview(Request request, OID index) * Improved [SFJ-158]: ArrayIndexOutOfBoundsException in org.snmp4j.smi.OID.setValue(OID.java:330) when a property configuration has an invalid index definition and that row is being accessed by a SNMP query. Now such a row will no longer be loaded into the table and a warning log about that will be issued. * Fixed [SFJ-166]: Rows with security model 1 and 2 (SNMPv1 and SNMPv2c) cannot be added through SNMP to vacmAccessEntry. * Improved [SFJ-140]: MOFactory implementation complexity reduced by using default method implementations. * Fixed [SFJ-145]: Set operation deleting two rows fails if one row exists and the other not. * Changed: Removed bz2 format from distribution. Relaxed MOScalar import check. * Added: EngineIdProvider. * Improved: Added toString() to MOChangeEvent, MOTableIndex, MOTableSubIndex. Avoid NPE in NotificationLogMib.checkAccess. * Fixed: Added counter support for USM in snmpv2MIB in BaseAgent. Added getSnmpEnableAuthenTraps in SNMPv2MIB. * Added: Added unit test for SNMP4J TableUtils class that uses an AgentConfigManager to simulate a SNMP agent. * Changed: Fixed SNMP4J-CONFIG-MIB primary persistence provider detection. Moved getVariable method from SampleAgent to AgentConfigManager. * Added: RandomAccessManagedObject for MOScalar and DefaultMOTable. * Fixed [SFJ-167]: User password change also changes unmodified columns of usmUserTable. * Fixed: Removed generics warnings about MOMutableTableModel.getRowFactory and setRowFactory methods. * Changed: Removed log4j dependencies. * Improved: Added toString() to MOChangeEvent, MOTableIndex, MOTableSubIndex. Removed possible NPE in NotificationLogMib.checkAccess. * Changed: Updated copyright headers. * Improved: JavaDoc style for Java 9/10 javadoc compilers. * Added: BasicVacmConfigurator to simplify VACM modifications. * Improved: A lot of code refactorings to improve code quality. [2018-02-21] v2.6.3 (Requires SNMP4J v2.5.8 or later) * Fixed [SFJ-167]: User password change also changes unmodified columns of usmUserTable. [2017-12-14] v2.6.2 (Requires SNMP4J v2.5.8 or later) * Fixed [SFJ-157]: MOTableIndex.getIndexOID did not return the correct index OID for sub-index values that can have variable length (like OctetString) but have a definition with fixed length. For such index values, a length sub-identifier prefix was incorrectly generated. This method is not used within the SNMP4J-Agent framework but could have been used by API users, of course. [2017-10-02] v2.6.1 (Requires SNMP4J v2.5.8 or later) * Fixed [SFJ-151]: USM users created programmatically or by loading from a properties file were not saved persistently in Agent.cfg file since SNMP4J 2.3.2 (regression caused by SFJ-99 fix). This bug affects all tables with hidden columnas, i.e. columns for which no corresponding MOColumn exists in the MOTable object. * Improved: SampleAgent uses shutdown hook to commit configuration data to persistent storage. [2017-06-22] v2.6.0 (Requires SNMP4J v2.5.3 or later) * Improved [SFJ-139]: SNMP4J-Agent DefaultMOTable and MOColumn do not allow SubRequest based GETNEXT/GETBULK processing. * Fixed [SFJ-138]: SNMP-MPD-MIB implementation is missing from SNMP4J-Agent. [2016-06-09] v2.5.3 (Requires SNMP4J v2.5.0 or later) * Fixed [SFJ-129]: Timeout occurs when sending a GETBULK with non-repeaters but zero max-repetitions and on-zero number of repetition sub-request OIDs (e.g. 3 VBs and max-repetitions 0 and 2 non-repeaters). [2016-06-09] v2.5.2 (Requires SNMP4J v2.5.0 or later) * Fixed [SFJ-129]: AgentXMaster GET BULK processing fails with general variable binding error when running a GETBULK request on a sequence of registered scalars/single object nodes that is as long (or longer) than max repetitions of the request and non-repeaters is greater than one (SnmpRequest.java). The computation of the repetitions vb start index was incorrect when a request is reprocessed (which happens with AgentX and single instance (scalar) registrations quite often). [2016-05-23] v2.5.1 (Requires SNMP4J v2.5.0 or later) * Fixed [SFJ-127]: NPE in MOSubtreeProxy (contextName and contextEngineID not used by constructor for DefaultPDUFactory). [2016-05-06] v2.5.0 (Requires SNMP4J v2.5.0 or later) * Added [SFJ-120]: Maven Central deployment support (refactored pom.xml). * Added: MOAccessImpl.asString() and .toString(). * Fixed [SFJ-122]: DateAndTime.makeCalendar does not return correct time (millis) for non default timezones. * Fixed [SFJ-123]: GET request on a MOScalar with null value causes a NullPointerException and GETNEXT on such a MOScalar with null value returned noSuchObject instead of skipping the scalar object. * Improved: Added Getter/Setter for MOSubTreeProxy undoEnabled. * Changed: Dependency to SNMP4J updated to 2.5.0. [2016-02-25] v2.4.2 (Requires SNMP4J v2.4.3 or later) * Fixed: Unnecessary call to ManagedObject.toString() during INFO level logging output of the DefaultMOServer.register method. * Added: Address caching (60min maximum by default) to the SnmpTargetMIB$SnmpTargetAddrEntryRow for higher performance with supporting DNS based target addresses. * Added: DNS based transport address support to the TDomainAddressFactoryImpl. [2015-12-30] v2.4.1 (Requires SNMP4J v2.4.1 or later) * Added: Support for SHA-2 authentication protocols. Added SHA256AES128 and SHA512AES256 USM users to SampleAgent configuration. * Added: RequestStatus.toString() method. * Improved: Made SysUpTimeImpl serializable. Made MOScalar subclasses serializable. * Added: Sparse table demo to Snmp4jDemoAgent and the corresponding SNMP4J-DEMO-MIB. * Improved: Remove redundant code from SampleAgent and TestAgent belonging to the EngineBootsCounterFile. [2015-07-18] v2.4.0 (Requires SNMP4J v2.3.4 or later) * Fixed [SFJ-108]: GETBULK with too fewer OIDs than specified non-repeaters and max-repetitions > 0 causes agent worker thread to stop with an IndexOutOfBoundsException. * Improved [SFJ-105]: Add option to SNMP4J-Agent that blocks any request processing on selected ManagedObjects. This has been realized by adding the MOLockStrategy class to MOServer and extended the MOServer.lookup by a second variant that locks looked-up managed objects based on the provided strategy. * Fixed: Moved resources to standard maven folder layout compatible resource folder. * Fixed [SFJ-109]: SnmpCommunityMIB.removeSnmpCommuntiyEntry does not remove coexistenceInfo. * Added: MOMutableTableModel.getRowFactory() method in order to provide symmetry of row factory access (needed also by SFJ-109). [2015-05-26] v2.3.3 (Requires SNMP4J v2.3.3 or later) * Fixed [SFJ-104]: Infinite loop in AgentXNode.next(SubRequest request) causes worker thread to use max CPU kernel when a GETBULK PDU is processed that has no repeaters. [2015-03-24] v2.3.2 (Requires SNMP4J v2.3.3 or later) * Fixed [SFJ-99]: Security Issue: The SnmpCommunityMib.getCoexistenceInfo(..) returns outdated coexistence info when the snmpCommunityName of a row in the snmpCommunityTable has been updated via SNMP or by the setCommunityName(..) setter of that row. This may cause the agent accept community names which have been already disabled or changed. * Improved: Changed source code folder structure to standard Maven layout. [2014-12-15] v2.3.1 (Requires SNMP4J v2.3.2 or later) * Added: Missing methods for easy SnmpCommunityMIB configuration. * Added: Missing methods for easy SnmpNotificationMIB configuration. * Fixed: PropertyMOInput with empty data configuration but non-empty contexts. * Added: Getter/setter for USM and VACM to AgentConfigManager. [2014-10-16] v2.3.0 (Requires SNMP4J v2.3.1 or later) * Added: MOFactory.getSysUpTime. * Fixed: Shutdown of non-used transport mappings with the AgentConfigManager. * Fixed: Fixed DefaultMOServer.getManagedObject did not return table objects and had imperfect performance. * Fixed NPE in MOScalar.next. * Improved: Defined SimpleOIDTextFormat as default for PropertyMOInput. * Added: RowFactory to SNMPv2MIB SysOREntry. * Fixed: Cast in line 630 to include row class parameter: MOMutableTableModel mmodel = (MOMutableTableModel)model; * Fixed [SFJ-94]: Fixed DefaultMOServer.unregister method for provided context. [2014-05-26] v2.2.2 (Requires SNMP4J v2.3.0 or later) * Fixed [SFJ-93]: Regression (from v2.2.0) in UsmMIB.usmUserChange processing UsmUserEvent.USER_CHANGED (because of missing break statement) causes crash if UsmUserEvent.USER_REMOVED. [2014-05-16] v2.2.1 (Requires SNMP4J v2.3.0 or later) * Fixed [SFJ-92]: DateAndTime.makeDateAndTime creates incorrect timezone information in the timezone field of the create OctetString if time zone offset is negative. [2014-05-12] v2.2 (Requires SNMP4J v2.3.0 or later) * Added: UsmUserEvent.USER_CHANGED firing. * Improved: Introduced MOTableModel.isEmpty() to improve performance for virtual table models. * Improved: Generics support (removed unchecked warnings and introduced missing template parameters). [2014-02-11] v2.1.1 (Requires SNMP4J v2.2.5 or later) * Fixed [SFJ-86]: Serious bug in TemporaryList where the timeout value is treated as nanoseconds although specified as milliseconds. This bug may cause an agent to drop requests before they are answered if it takes long to answer the request and concurrently other requests are processed. This is a regression in all SNMP4J-Agent versions since 2.0 and until 2.1.0. * Updated SNMP4J to version 2.2.5. [2014-01-07] v2.1.0 (Requires SNMP4J v2.2.3 or later) * Improved: MOScalar value type usage. * Improved: Generified VacmMIB. * Fixed: NPE in NotificationOriginatorImpl. * Added: New AES privacy user test code in TestAgent (SNMP4J 2.2.3). * Fixed: [SFJ-74] Regression which caused SNMPv3 notifications are not sent when there is no community mapping for the used securityName. * Fixed: [SFJ-74]: Made notificationOriginatorImpl robust against missing securityName to community name mappings. * Fixed: VacmMIB did not allow to create entries via SNMP with securityModels 0, 1 and 2. * Changed: MOServer.unregister to return the removed ManagedObject. * Fixed: BaseAgent to use snmpCommunityMIB when creating NotificationOriginator. * Fixed: Added missing maven-plugin versions in pom.xml. [2013-07-02] v2.0.8 (Requires SNMP4J v2.2.2 or later) * Fixed [SFJ-74] NPE in SnmpCommunityMib.getCommunity. * Fixed: Typo in SNMP4JSettings.isForwardRuntimeException(). [2013-01-28] v2.0.7 (Requires SNMP4J v2.1.0 or later) * Fixed: [SFJ-68] NullPointerException in NotificationOriginatorImpl.notify if target address exists but matching target params row not. * Fixed: [SFJ-61] Incorrect type in NlmLogVariableValueType for octetString and ipAddress. * Improved: Snapshot sample agent can now load snapshots even if parts of the snapshot overlaps with the OIDs registered for the sample agent natively. [2012-04-03] v2.0.6 (Requires SNMP4J v2.1.0 or later) * Fixed: [SFJ-59] Multiple "addRow" events when multiple columns are committed by DefaultMOTable. * Fixed: [SFJ-56] StaticMOGroup.get which caused IllegalArgumentException while returning a request on a non-existing OID. * Added: SNMP4J-DEMO-MIB.txt. [2011-11-24] v2.0.5 (Requires SNMP4J v2.0.3 or later) * Fixed [SFJ-55]: IndexOutOfBoundsException while sending notifications through NotificationOriginatorImpl. * Improved template support for predefined MOScalar subclasses. [2011-09-09] v2.0.4 (Requires SNMP4J v2.0.2 or later) Fixed [SFJ-50]: SysUpTimeImpl returns 1.000.000 times to high value (regression in SNMP4J-AGENT 2.0.0). Improved [SFJ-49]: TTLSTM and DefaultTcoTransportMapping on AIX did caught in an endless loop because select() there returns a spurious read indication while write data is pending in fact. [2011-09-08] v2.0.3 (Requires SNMP4J v2.0.0 or later) Fixed [SFJ-48]: Inconsistent register/unregister behavior of MODefaultServer when using zero length OctetString as context for register and unregister operation. This was a regression in version 2.0.0. Fixed also unregister operation in Snmp4jProxyMib of MOSubtreeProxy instances (incorrect context info was used). [2011-09-01] v2.0.2 (Requires SNMP4J v2.0.0 or later) * Fixed: [SFJ-47] Registration lookup in DefaultMOServer in some cases returned wrong results for MOScalar and possibly also when using several contexts. [2011-08-22] v2.0.1 (Requires SNMP4J v2.0.0 or later) * Fixed: [SFJ-44] NullPointerException in master agent when starting agent. [2011-08-22] v2.0.0 (Requires SNMP4J v2.0.0) * Changed: Migrated code to use Java 1.6 Generics and System.nanoTime() where appropriate. * Added: Support of RFC 5343 (context engine ID discovery), RFC 5590 (Transport Subsystem for the SNMP), RFC 5591 (Transport Security Model for the SNMP - TSM), RFC 5953 (Transport Layer Security (TLS) Transport Model for the SNMP - TLSTM) * Added [SFJ-42]: MOSubTreeProxy to forward requests within a subtree to another agent based on a simple runtime changeable configuration (see SNMP4J-PROXY-MIB). * Fixed: [SFJ-33] Race condition in TcpTransportMapping.fireTransportStateChanged. * Added: MOQueryWithSource.java. * Fixed: A couple of minor bug and performance fixes. [2010-10-25] v1.4.2 (Requires SNMP4J v1.11.2) * Updated: SNMP4J 1.11.2. * Fixed: [SFJ-31] NotificationLogMib implementation logs sent notification messages not fired notification events. Now the NotificationLogMib.setLogMode can be used to switch between both modes (also at runtime by the new snmp4jNotificationLogMode MIB object). [2010-06-09] v1.4.1 (Requires SNMP4J v1.11.1) * Updated: SNMP4J 1.11.1. * Added: JavaDoc for DefaultMOTable constructor. [2010-02-20] v1.4 (Requires SNMP4J v1.11) * Added: MOServer.getRegisteredContexts. * Fixed: DuplicateRegistrationException was incorrectly thrown by DefaultMOServer.register if a ManagedObject had been registered for all contexts before another ManagedObject is registered for a specific context but the same scope (OID). * Added: AgentConfigManager.getState(). * Added: MOFilter to support filtering of ManagedObjects for certain types or attributes. * Fixed: SET request on an object that does not exist and could not ever be created returns now noCreation error status instead notWritable. * Fixed: DateAndTime.makeCalendar did not support 8 byte DateAndTime strings. * Fixed: Added missing usm.addUsmUserListener to AgentConfigManager. * Improved: Thread safety of transaction IDs. * Fixed: Incomplete persistence data for AgentConfigManager. * Fixed: MOTableSizeLimit checkLimits caused endless loop. Changed property name to conform property camel case. * Added Table size limits to sample agent. * Added: NOTIFICATION-LOG-MIB implementation. * Improved: RowStatusEvent now contains also Request information. [2009-10-22] v1.3.2 (Requires SNMP4J v1.10.2) * Fixed: Snmp4jLogMib NullPointerException when loading config from persistent storage without a logger defined. * Fixed: [SFJ-17] Counter64 instances in tables or other multi instance ManagedObjects where not properly skipped for SNMPv1. * Fixed: Snmp4jHeartbeatMib did not allow to create heartbeat without start time set. * Added: MutableMOColumn.setMandatory(boolean) to allow non-mandatory read-create columns without default value. [2009-07-30] v1.3.1 (Requires SNMP4J v1.10.1) * Fixed: UsmMIB did not forward row creation event to USM for noAuthNoPriv users, which caused inconsistent state when configuring noAuthNoPriv users with the property configuration. * Improved: SampleAgent and TestAgent use async inform processing now. * Fixed: [SFJ-7] CoexistenceInfoProvider does not allow multiple communities for different targets. Changed CoexistenceInfo getCoexistenceInfo(OctetString) to CoexistenceInfo[] getCoexistenceInfo(OctetString). * Fixed: [SFJ-9] GETBULK request with non-repeaters 0 and max-repetitions 0 timed out. * Fixed: GETBULK response which does fit into response PDU does no longer create an genErr. * Improved: Authentication failure traps are no longer sent on usmNotInTimeWindow and usmUnknownEngineID reports. [2009-04-30] v1.3 (Requires SNMP4J v1.10) * Changed: Additional method createInitialValue for TextualConvention interface. * Added: MOServer.lock(..,long timeoutMillis). Use the CommandProcessor.setInternalRequestTimeout(..) to modify the default 5min timeout for internal request processing. * Changed: MOServer.lock(..) returns now a boolean to indicate if the lock has been acquired successfully or not. CommandProcessor now checks the return value and returns an genErr on a SET request, if a lock cannot be acquired. * Fixed: NPE when changing keys for authNoPriv user in UsmMIB. * Fixed: AgentConfigManager did not initialize VACM correctly when agent was restarted. * Changed: SampleAgent does no longer restart itself after 30 seconds. * Improved: Wrapped Object.wait() calls in loops as suggested/needed by Java 1.6. [2008-12-15] v1.2.2 (Requires SNMP4J v1.9.3d) * Fixed: Possible NPE in CommandProcessor when trying to send a report as response to a report which caused a silent proxy drop. * Fixed: Log handlers of JavaLogFactory where not properly listed in snmp4jLogLoggerTable. * Added: DefaultMOTableModel.dump(..) to dump the content of a table model to a stream in a textual representation. [2008-08-29] v1.2.1d (Requires SNMP4J v1.9.3c) * Updated: SNMP4J to 1.9.3c [2008-08-19] v1.2.1c (Requires SNMP4J v1.9.3b) * Fixed: Creation of noAuthNoPriv users using SNMP operations could have caused a commitFailed error. * Fixed: Deletion of a notReady usmUser failed with a commitFailed error caused by a NPE. [2008-08-11] v1.2.1b (Requires SNMP4J v1.9.3b) * Updated: SNMP4J to 1.9.3b [2008-07-22] v1.2.1a (Requires SNMP4J v1.9.3a) * Updated: SNMP4J to 1.9.3a [2008-07-21] v1.2.1 (Requires SNMP4J v1.9.3) * Fixed: TDomainAdressFactoryImpl.getAddress did return wrong port number for ports > 255. * Fixed: VACM did not return correct view when similar group entries with different security levels where used. [2008-06-30] v1.2d (Requires SNMP4J v1.9.2) * Updated: SNMP4J to 1.9.2a. [2008-06-11] v1.2c (Requires SNMP4J v1.9.2) * Updated: SNMP4J to 1.9.2. [2008-06-02] v1.2b (Requires SNMP4J v1.9.1g) * Fixed: BaseAgent did not update its run state correctly. [2008-05-27] v1.2a (Requires SNMP4J v1.9.1g) * Updated: SNMP4J to 1.9.1g. [2008-05-19] v1.2 (Requires SNMP4J v1.9.1f) * Fixed: SNMPv2MIB.unregister did not unregister sysORLastChange. * Added: SNMPv1 community to SampleAgent config. * Fixed: Notification filtering by profiles. * Fixed: BaseAgent and SampleAgent stop/restart. * Improved: Removed unnecessary anonymous class definitions. * Fixed: Sending of authenticationFailure trap for BaseAgent and AgentConfigManager. [2008-04-22] v1.2 RC1 (Requires SNMP4J v1.9.1e) * Fixed: Stackoverflow in UsmMIB. * Added: RegisteredManagedObject interface. * Added: VersionInfo in org.snmp4j.agent.version. * Improved: Made constants of built-in MIB modules public. * Added: AgentConfigManager run state and stages. * Improved: SampleAgent with SNMP4J-DEMO-MIB implementation. [2008-03-18] v1.2 beta (Requires SNMP4J v1.9.1) * Fixed: Direct usage of table model for row creation and removal has been replaced by calling the corresponding table methods for better object orientation. * Fixed: MOScalar did return noSuchObject on a GET request on the scalar without instance identifier instead noSuchInstance. * Added: UpdateStrategy and UpdatableManagedObject have been added to allow centralized controlled updating of dynamic managed objects (like DefaultMOTable) * Improved: Design of org.snmp4j.agent.io components. * Added: AgentConfigManager for IoC agent configuration which replaces BaseAgent. The latter is deprecated now. * Changed: MOServer interface. * Added: BITS support for Enumerated[Scalar] classes. * Added: USM user table persistency support. * Changed: Made MOScalar.getAccess() public. * Improved: TextAndIncr event generation. * Changed: Access to public for MOScalar.getAccess() * Added: Session update for AgentConfigurator. [2007-07-25] v1.1.4 (Requires SNMP4J v1.8.2) * Fixed: Serialization of non-default context objects. * Fixed: Proxy forwarding from SNMPv2c/v3 to v1. * Fixed: The SNMPv1 error status noSuchName was returned for SNMPv2c/SNMPv3 for SET requests on not existing of not in view objects. Instead noAccess (not in view) or notWritable (not existing object) is returned. [2007-05-31] v1.1.3 (Requires SNMP4J v1.8.2) * Fixed: VacmMIB.vacmContextTable was not volatile. * Fixed: DefaultMOTable.removeAll() threw exception when called with a MOTableModel. * Fixed: VacmMIB.vacmContextTable.firstIndex(). * Fixed: BaseAgent boot counter file error message. * Fixed: GET or SET requests on OIDs within the subtree of a MOScalar (wihtout the .0) now returns noSuchInstance and noCreation respectively (instead noSuchObject and noSuchName). * Fixed: CommandResponder sent non-conforming report PDUs (not PDU instead ScopedPDU). * Fixed: DefaultMOTable returned noSuchInstance on GET request on non-existing column (now noSuchObject is returned). * Fixed: ProxyForwarderImpl did not forward SNMPv1/v2c traps if community name did not match securityName mapped by SNMP-COMMUNITY-MIB. * Fixed: badValue error status was returned for SNMPv2c and SNMPv3 instead of wrongValue. [2007-05-04] v1.1.2 (Requires SNMP4J v1.8.2) * Fixed: GET or SET requests on OIDs within the subtree of a MOScalar now returns noSuchInstance and noCreation respectively (instead noSuchObject and noSuchName). * Fixed: SNMPv1 traps send by NotificationOriginatorImpl did not correctly set generic trap id field to 6 for specific traps. * Fixed: Removed sendColdStartNotification() from BaseAgent.finishInit to allow SNMPv3 cold start events. * Added: sendColdStartNotification() to TestAgent. [2007-04-23] v1.1.1a (Requires SNMP4J v1.8.1a) * Fixed: Agent returned SNMPv2c error codes even for SNMPv1 messages. [2007-04-02] v1.1.1 (Requires SNMP4J v1.8.1) * Added: Support for authentication failure notifications in SNMPv2MIB. * Fixed: Context engine ID and context name were not correctly set by ProxyForwarderImpl for notifications and informs forwarded to SNMPv3 targets. [2007-03-12] v1.1 (Requires SNMP4J v1.8.1) * Added: DeniableEventObject to get a common interface for SNMP events that can be canceled by reporting a SNMP error status in the preparation phase of a SNMP SET request. * Fixed: NPE in MOMutableColumn's removeMOValueValidationListener method. * Improved: DefaultMOQuery now returns also the source Request object on whose behalf the query is executed to allow MOServerLookup listener to determine whether an update of a ManagedObject is necessary or not. * Added: Runtime exception rethrow on thread boundaries controlled by this API when SNMP4JSettings.isForward- RuntimeExceptions() is true. * Changed: MOFactory to allow sub-index creation for AgentX sub-agents. ATTENTION: Direct implementations of the MOFactory interface have to be adapted to this change. * Added: BaseAgent.setDefaultContext to control the context for which objects are registered by BaseAgent. [2007-02-21] v1.1 RC3 (Requires SNMP4J v1.8) * Changed: Made agentState protected in BaseAgent. * Improved: Added MOServerListener.queryEvent method to properly notify query events that not necessarily result into a lookup of a managed object. ATTENTION: This requires that classes implementing the MOServerListener interface have to add this method. * Improved: MOScalar can now fire MOChangeEvents to associated listeners. * Added: MOQuery.isWriteAccessQuery to allow listeners of MOServerLookupEvents to distinguish between read and write access. ATTENTION: This requires that classes implementing the MOQuery interface have to add this method. [2007-02-01] v1.1 RC2 (Requires SNMP4J v1.8) * Fixed: If a ManagedObject had been registered under a non-default context only, the agent returned it also on queries on context "". * Changed: BaseAgent.finishInit() will no longer be called from within init() to better control agent startup. The user (subclass) is required to call it manually after init(). The user setup code has been moved to init() at the same time. * Improved: BaseAgent controls now its own state so that initialization errors can be easily detected. * Added: BaseAgent can now be stopped by calling stop(). * Fixed: CommandProcessor did not use coexistence info provided by SnmpCommunityMib correctly. Now mapping a community to a different security name is properly supported. * Fixed: DefaultMOContextScope.isOverlapping did not honour contexts. * Fixed: Added missing serialVersionUIDs. [2007-01-08] v1.1 RC1 (Requires SNMP4J v1.8) * Fixed: SysUpTime threw exception after 248 days up. * Fixed: sysOREntry was not registered by SNMPv2MIB. * Changed: Made necessary changes for SNMP4J 1.8. * Changed: Made member "model" of DefaultMOTableModel protected. * Changed: MOFactory.createTableModel now takes three parameters! Implementors of their own MOFactory, will have to change the signature of their method. * Improved: Speeded up table walk by using caching of recently accessed (from the same request) rows. * Added: DefaultMOServer.getManagedObject(..) as a shorcut wrapper for a special "lookup" call. * Fixed: BaseAgent did not set NotificationOriginator to its CommandResponder instance. * Improved: Implemented FilteredRowIterator.remove(). * Fixed: tooBig error is now correctly returned and GETBULK responses are truncated if longer than maxResponsePDUSize. * Improved: Duplicate registration check in DefaultMOServer. * Fixed: Modifying vacmAccessTable entries with 'any' security model sub-index value. * Fixed: Reporting of authorizationError state. * Fixed: Log levels configured in snmp4jLogLoggerTable are now properly restored from persistent storage (StorageType is also no correctly handled). * Added: Max. timeout for incoming request is now 1 min. by default (see requestList member initialization of CommandProcessor). * Added: Counter64 skipping for SNMPv1 GETNEXT request processing. * Fixed: Snmp4jLogMib persistency and log level restore. [2006-09-30] v1.0.1 (Requires SNMP4J v1.7.6a) * Fixed: DefaultMOTable did not check access rights for read (GETNEXT, GETBULK) access. * Added: SubRequest.setErrorStatus(int). * Fixed: RowStatus(int columnID) constructor did not use default maximum access right 'read-create'. * Improved: Row creation with createAndWait(5) for snmpTargetAddrTable when no domain and no address has been specified when row is being created. * Added: SubRequest.setUserObject(Object o) and SubRequest.getUserObject() to allow instrumentation code to associate resources with a sub-request. * Fixed: AbstractRequest.setPhase(int) did not reset completion status which caused SNMP4J-AgentX subagent to fail commiting SET requests. [2006-09-12] v1.0a (Requires SNMP4J v1.7.5) * Fixed: SnmpCommunityMIB.passesFilter(..). * Changed: Removed MOAccessImpl.setValue(..) to make MOAccessImpl immutable. * Improved: Added MOFactory.createAccess to better support aspect oriented approaches of management instrumentation. * Improved: Added a lot of JavaDoc for core classes. * Fixed: ProxyForwarderImpl.multipleForward(..) did only forward to a single target. * Added: org.snmp4j.agent.mo.ext package for objects that extend the basic functions of a SNMP agent. The first such implementation is the SimMOFactory to build simulation agents and the corresponding MIB to control them. * Fixed: Bug in DefaultMOTable.getNextCell did return the second-next cell instead of the next when an index of a non-existant row before the target row has been specified in a GETNEXT/GETBULK. * Fixed: DefaultMOTable.prepare did not check column access rights for create and write access. * Fixed: Possible IllegalStateException in DefaultMOServer.removeLock because of concurrent object locking/unlocking. * Fixed: Restoring values for table rows where the table definition has been extended by additional columns between last store action and the current restore operation caused exceptions when trying to access the new columns later. * Changed: Removed MOChangeEvent.setOldValue(..) and setNewValue(..). * Changed: MOTableIndex removed static methods to create sub- index OIDs (replaced by Variable.toSubIndex). * Changed: MOTableModelEvent.getColumnIndex() now returns -1 if no column has been associated with the event (was 0). * Added: AutonomousTypeTC. * Added: Implementation for RFC 3584 4.3.1(3) in ProxyForwarderImpl. [2006-08-04] v1.0 beta-7 * Fixed: Regression bug from beta 5 in ProxyForwarderImpl where the response request ID was not set for response PDUs. * Fixed: UnsupportedOperationException in ProxyForwarderImpl when forwarding to a SNMPv1 target. * Added: Public methods to SnmpProxyMIB to change the proxy configuration programmatically. * Fixed: SNMPv3 context info was not properly set in SNMPv3 response to a proxy request in ProxyForwarderImpl. * Fixed: UnsupportedOperationException in ProxyForwarderImpl when forwarding from a SNMPv1 target. [2006-08-03] v1.0 beta-5 * Changed: SNMP4J-Agent beta-5 requires SNMP4J 1.7.3. * Fixed: RowStatus did not check for mandatory columns when creating row with createAndGo(4). * Fixed: SnmpTargetMIB implementation did accept v1 and v2c security model values. * Added: AgenPro instrumentation example Snmp4jHeartbeatMib which shows how to use the generated stubs. * Fixed: ProxyForwarderImpl did not translate PDUs between different SNMP version on upstream and downstream side. This is now implemented as defined in RFC3584 but needs more testing during the next weeks until 1.0 can be released. * Fixed: Context engine ID was not used in SnmpTargetMIB.getTarget(..) which caused NullPointerException when proxying requests. [2006-07-15] v1.0 beta-4 * Fixed: Bug in DefaultMOTableModel firstRow() and lastRow() returning always null. * Fixed: DefaultMOTable did not set sub-request completed if that is successfully completed causing request to "hang". [2006-05-29] v1.0 beta-3 * Fixed: Several issues in conjunction with AgentX master agent processing. * Fixed: MOScalar.undo and MOScalar.commit methods to properly set the processed/completed status. * Fixed: Repetition creation for GETBULK processing. * Improved: Introduced AbstractRequest to implement general Request processing elements. * Changed: BaseAgent does no longer initialize logging. [2006-05-16] v1.0 beta-2 * Fixed: Request handling towards AgentX support. * Changed: Made BaseAgent abstract to clearly define which methods need to be overwritten in a sub-class. * Added: BaseAgent.addCommunities(..). * Added: Optionally OID to MOTableSubIndex to allow naming sub-index values for sub-agent index registration and other purposes (JMX?). [2006-04-10] v1.0 beta-1 * Added: SNMP-COMMUNITY-MIB support for coexistence. * Added: ProxyForwarder implementation including SNMP-PROXY-MIB. * Added: SNMP4J-CONFIG-MIB and SNMP4J-LOG-MIB implementations. * Fixed: A couple of bugs regarding notification originator and filtering. * Improved: Table relationships. * Added: MOFatory, MOTableModelEvent, etc. * Added: TextualConvention interface and related objects in org.snmp4j.agent.mo.snmp.tc. * Improved: Value constraint handling through classes in org.snmp4j.agent.mo.snmp.smi. * Added: Some more TCs like TruthValue, TimeStamp, etc. * Added: IndexGenerator to create unique index values. * And many more changes... [2005-08-23] v1.0 alpha-2 * Fixed: CommandProcessor.removeServer(..) did actually add the server. * Fixed: Exception in MOScalar when getting values. * Fixed: Memory leak in CommandProcessor. * Added: Temporary request list. * Changed: The alpha-2 version requires SNMP4J 1.6. [2005-04-26] v1.0 alpha-1 * Fixed: SNMPv1 message processing threw exception. * Fixed: Persistence support now basically works. * Updated: SNMP4J.jar to v1.5. [2005-04-19] v1.0 alpha-0 * Initial release: Use at your own risk! There are many untested areas in the code. Most JavaDoc is missing and there are still a lot of TODOs for the code. Nevertheless, you can already build full featured agent with it. Persistency support is not yet working though.