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

[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.

