CHANGE LOG OF SNMP4J-Agent ========================== [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.