
CHANGE LOG OF SNMP4J-Agent
==========================

[2020-01-02] Version 2.7.2 (Requires SNMP4J v2.8.2 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.
* Fixed [SFJ-214]: Removed Log4J 1.2 dependency (Log4j 2.x can be used with the snmp4j-log4j package add-on).

[2019-08-15] Version 2.7.1 (Requires SNMP4J v2.8.0 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.
* 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-06-24] v2.7.0 (Requires SNMP4J v2.7.0 or later)

* Fixed [SFJ-202]: CertifiedTarget for SNMPv3 TLS notifications not handled in NotificationOriginatorImpl.

[2019-03-28] v2.6.4 (Requires SNMP4J v2.7.0 or later)

* Updated: Dependency to SNMP4J 2.7.0. No other changes.

[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.getrIndexOID 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<R> mmodel = (MOMutableTableModel<R>)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.

