SNMP4J-Agent & SNMP4J-Agent-DB 3.9.2 Release

SNMP4J-Agent and SNMP4J-Agent-DB have been released 2026-07-14T22:00:00Z and 2026-07-16T22:00:00Z respectively.
Both version improve the sample security configuration to provide a more realistic (secure) setup.

SNMP4J-Agent CHANGES

  • SECURITY: VacmMIB now selects the best matching vacmAccessTable entry by scoring each candidate instead of an order-dependent chained condition. Following RFC 3415 section 4.4.2, an entry with an exact securityModel is now preferred over one using anySecurityModel, an exact context match over a (shorter) prefix match, and a higher securityLevel over a lower one. This removes a latent access decision that depended on table iteration order.
  • SECURITY: VacmMIB.getViewName(..) now also verifies that the requested context is supported before resolving a view (defense in depth), so callers reusing it as an entry point cannot obtain a view for a context that is not served by the agent. VACM.getViewName returns null for unsupported contexts.
  • SECURITY: Removed full read-write access for SNMPv3 noAuthNoPriv “unsec” users from SampleAgent’s sample configuration. Limted all auhtNoPriv users to read-only access limited to system group.
  • SECURITY: Further improved SampleAgentConfig.properties VACM configuration: Removed ‘unsec’ noAuthNoPriv access from broader “viewer” views and assigned it to “minaccessgroup” (like all noPriv users).
  • Added: New org.snmp4j.agent.io.prop.PropertyMOTreeBuilder builds an in-memory MIBTree from an MOInput formatted property configuration (e.g. SampleAgentConfig.properties), reusing PropertyMOInput for value parsing. Values that reference runtime instances which cannot be resolved statically (e.g. {$oid}) are preserved as UnresolvedReference placeholders (through the new ReferenceVariableProvider) so that the
    configured reference remains visible.
  • Added: New org.snmp4j.agent.util.MIBTreeFormatter interface with a MarkdownMIBTreeFormatter implementation that renders a MIBTree as a compact GitHub flavored Markdown overview (collapsed OID tree, scalars with their SMI syntax, and conceptual tables as Markdown tables).
  • Added: The SampleAgent accepts the optional “-write-init-config <file>” command line option that writes a human readable Markdown overview of the initial MIB configuration (using PropertyMOTreeBuilder and MarkdownMIBTreeFormatter) before the agent starts. Any provided “-viewer”/“-admin” pass keys are reflected in the overview.

SNMP4J-Agent-DB CHANGES

  • SECURITY: Removed full read-write access for SNMPv3 noAuthNoPriv “unsec” users from SampleAgent’s sample configuration. Limted all auhtNoPriv users to read-only access limited to system group.
  • SECURITY: Further improved SampleAgentConfig.properties VACM configuration: Removed ‘unsec’ noAuthNoPriv access from broader “viewer” views and assigned it to “minaccessgroup” (like all noPriv users).
  • Added: New org.snmp4j.agent.io.prop.PropertyMOTreeBuilder builds an in-memory MIBTree from an MOInput formatted property configuration (e.g. SampleAgentConfig.properties), reusing PropertyMOInput for value parsing. Values that reference runtime instances which cannot be resolved statically (e.g. {$oid}) are preserved as UnresolvedReference placeholders (through the new ReferenceVariableProvider) so that the
    configured reference remains visible.
  • Added: New org.snmp4j.agent.util.MIBTreeFormatter interface with a MarkdownMIBTreeFormatter implementation that renders a MIBTree as a compact GitHub flavored Markdown overview (collapsed OID tree, scalars with their SMI syntax, and conceptual tables as Markdown tables).
  • Added: The SampleAgent accepts the optional “-write-init-config <file>” command line option that writes a human readable Markdown overview of the initial MIB configuration (using PropertyMOTreeBuilder and MarkdownMIBTreeFormatter) before the agent starts. Any provided “-viewer”/“-admin” pass keys are reflected in the overview.