Class AgentConfigManager

java.lang.Object
org.snmp4j.agent.AgentConfigManager
All Implemented Interfaces:
Runnable, VariableProvider

public class AgentConfigManager extends Object implements Runnable, VariableProvider
The AgentConfigManager is the main component of a SNMP4J-Agent. It puts together agent configuration and agent components like command processor, message dispatcher, managed objects and server, and standard MIB modules like USM, VACM, etc.
Since:
1.2
Version:
3.0
Author:
Frank Fock
  • Field Details

    • agent

      protected CommandProcessor agent
      The CommandProcessor that processes the incoming SNMP requests of this agent.
    • workerPool

      protected org.snmp4j.util.WorkerPool workerPool
      The WorkerPool that provides the threads used to process incoming requests.
    • vacm

      protected VACM vacm
      The view access control model of this agent or null if the vacmMIB is used as access control model.
    • usm

      protected org.snmp4j.security.USM usm
      The User Based Security Model (USM) of this agent.
    • servers

      protected MOServer[] servers
      The managed object servers that provide the managed objects of this agent.
    • session

      protected org.snmp4j.Session session
      The SNMP session used to send notifications and to forward proxied requests.
    • dispatcher

      protected org.snmp4j.MessageDispatcher dispatcher
      The message dispatcher that dispatches incoming and outgoing SNMP messages.
    • engineID

      protected org.snmp4j.smi.OctetString engineID
      The authoritative engine ID of this agent.
    • proxyForwarder

      protected ProxyForwarder proxyForwarder
      The proxy forwarder application of this agent or null if proxy forwarding is not supported by this agent.
    • notificationOriginator

      protected NotificationOriginator notificationOriginator
      The notification originator that sends the notifications (traps and informs) of this agent.
    • configuration

      protected MOInputFactory configuration
      The factory that provides the MOInput with the initial configuration of this agent or null if no initial configuration is available.
    • persistenceProvider

      protected MOPersistenceProvider persistenceProvider
      The primary persistence provider used to load and store the persistent managed objects of this agent.
    • persistenceImportMode

      protected int persistenceImportMode
      The ImportMode used when the persistent configuration is restored.
    • engineBootsProvider

      protected org.snmp4j.cfg.EngineBootsProvider engineBootsProvider
      The provider of the engine boots counter of this agent.
    • counterSupport

      protected org.snmp4j.mp.CounterSupport counterSupport
      The counter support that records and provides the event counters of this agent.
    • securityProtocols

      protected org.snmp4j.security.SecurityProtocols securityProtocols
      The security protocols (authentication and privacy protocols) supported by this agent.
    • securityModels

      protected org.snmp4j.security.SecurityModels securityModels
      The security models supported by this agent.
    • snmpv2MIB

      protected SNMPv2MIB snmpv2MIB
      The SNMPv2-MIB implementation of this agent.
    • snmpMpdMib

      protected SnmpMpdMib snmpMpdMib
      The SNMP-MPD-MIB implementation of this agent.
    • targetMIB

      protected SnmpTargetMIB targetMIB
      The SNMP-TARGET-MIB implementation of this agent.
    • communityMIB

      protected SnmpCommunityMIB communityMIB
      The SNMP-COMMUNITY-MIB implementation of this agent.
    • notificationMIB

      protected SnmpNotificationMIB notificationMIB
      The SNMP-NOTIFICATION-MIB implementation of this agent.
    • frameworkMIB

      protected SnmpFrameworkMIB frameworkMIB
      The SNMP-FRAMEWORK-MIB implementation of this agent.
    • usmMIB

      protected UsmMIB usmMIB
      The SNMP-USER-BASED-SM-MIB implementation of this agent.
    • vacmMIB

      protected VacmMIB vacmMIB
      The SNMP-VIEW-BASED-ACM-MIB implementation of this agent.
    • tlsTmMib

      protected SnmpTlsTmMib tlsTmMib
      The SNMP-TLS-TM-MIB implementation of this agent.
    • proxyMIB

      protected SnmpProxyMIB proxyMIB
      The SNMP-PROXY-MIB implementation of this agent or null if not supported.
    • snmpUsmDhObjectsMib

      protected SnmpUsmDhObjectsMib snmpUsmDhObjectsMib
      The SNMP-USM-DH-OBJECTS-MIB implementation of this agent or null if Diffie-Hellman key exchange is not supported.
    • snmp4jLogMIB

      protected Snmp4jLogMib snmp4jLogMIB
      The SNMP4J-LOG-MIB implementation of this agent or null if not supported.
    • snmp4jConfigMIB

      protected Snmp4jConfigMib snmp4jConfigMIB
      The SNMP4J-CONFIG-MIB implementation of this agent or null if not supported.
    • snmp4jProxyMIB

      protected Snmp4jProxyMib snmp4jProxyMIB
      The SNMP4J-PROXY-MIB implementation of this agent or null if not supported.
    • notificationLogMIB

      protected NotificationLogMib notificationLogMIB
      The NOTIFICATION-LOG-MIB implementation of this agent or null if not supported.
    • notificationLogDefaultLimit

      protected org.snmp4j.smi.UnsignedInteger32 notificationLogDefaultLimit
      The maximum number of notifications held by the default notification log.
    • notificaitonLogGlobalLimit

      protected org.snmp4j.smi.UnsignedInteger32 notificaitonLogGlobalLimit
      The maximum number of notifications held by all notification logs together.
    • notificaitonLogGlobalAge

      protected org.snmp4j.smi.UnsignedInteger32 notificaitonLogGlobalAge
      The maximum age of a logged notification in minutes where zero means no age limit.
    • moFactory

      protected MOFactory moFactory
      The factory used to create the managed objects of the MIB modules of this agent.
    • sysDescr

      protected org.snmp4j.smi.OctetString sysDescr
      The value of the sysDescr object of this agent.
    • sysOID

      protected org.snmp4j.smi.OID sysOID
      The value of the sysObjectID object of this agent.
    • sysServices

      protected org.snmp4j.smi.Integer32 sysServices
      The value of the sysServices object of this agent.
    • defaultContext

      protected org.snmp4j.smi.OctetString defaultContext
      The default context of this agent, which is the empty context by default.
    • runState

      protected AgentState runState
      The current run state of this agent.
    • tableSizeLimit

      protected MOTableSizeLimit<MOTableRow> tableSizeLimit
      The table size limit applied to the tables of this agent or null if the table sizes are not limited.
    • diffieHellmanKickstartParameters

      protected Collection<DHKickstartParameters> diffieHellmanKickstartParameters
      The Diffie-Hellman kickstart parameters of this agent or null if there are none.
    • agentStateListeners

      protected List<AgentStateListener<AgentConfigManager>> agentStateListeners
      The listeners that are informed about run state changes of this agent.
    • auditPolicy

      protected transient volatile AgentAuditPolicy auditPolicy
      A protected, transient, and volatile variable representing the audit policy associated with an agent. This variable is used to manage and enforce audit-related policies for monitoring and recording activities or events within the system.

      The use of the transient keyword indicates that this variable will not be serialized when the containing object is serialized. The volatile modifier ensures that the value of this variable is always read from and written to the main memory, rather than being cached.

      The variable is declared as protected, meaning it is accessible within the same class, within subclasses, and within other classes in the same package.

  • Constructor Details

    • AgentConfigManager

      public AgentConfigManager(org.snmp4j.smi.OctetString agentsOwnEngineID, org.snmp4j.MessageDispatcher messageDispatcher, VACM vacm, MOServer[] moServers, org.snmp4j.util.WorkerPool workerPool, MOInputFactory configurationFactory, MOPersistenceProvider persistenceProvider, org.snmp4j.cfg.EngineBootsProvider engineBootsProvider)
      Creates an SNMP agent configuration which can be run by calling run() later.
      Parameters:
      agentsOwnEngineID - the authoritative engine ID of the agent.
      messageDispatcher - the MessageDispatcher to use. The message dispatcher must be configured outside, i.e., transport mappings have to be added before this constructor is being called.
      vacm - a view access control model. Typically, this parameter is set to null to use the default VACM associated with the VacmMIB.
      moServers - the managed object server(s) that serve the managed objects available to this agent.
      workerPool - the WorkerPool to be used to process incoming request.
      configurationFactory - a MOInputFactory that creates a MOInput stream with containing serialized ManagedObject information with the agent's configuration or null otherwise.
      persistenceProvider - the primary MOPersistenceProvider to be used to load and store persistent MOs.
      engineBootsProvider - the provider of engine boots counter.
    • AgentConfigManager

      public AgentConfigManager(org.snmp4j.smi.OctetString agentsOwnEngineID, org.snmp4j.MessageDispatcher messageDispatcher, VACM vacm, MOServer[] moServers, org.snmp4j.util.WorkerPool workerPool, MOInputFactory configurationFactory, MOPersistenceProvider persistenceProvider, org.snmp4j.cfg.EngineBootsProvider engineBootsProvider, MOFactory moFactory)
      Creates an SNMP agent configuration which can be run by calling run() later.
      Parameters:
      agentsOwnEngineID - the authoritative engine ID of the agent.
      messageDispatcher - the MessageDispatcher to use. The message dispatcher must be configured outside, i.e. transport mappings have to be added before this constructor is being called.
      vacm - a view access control model. Typically, this parameter is set to null to use the default VACM associated with the VacmMIB.
      moServers - the managed object server(s) that serve the managed objects available to this agent.
      workerPool - the WorkerPool to be used to process incoming request.
      configurationFactory - a MOInputFactory that creates a MOInput stream with containing serialized ManagedObject information with the agent's configuration or null otherwise.
      persistenceProvider - the primary MOPersistenceProvider to be used to load and store persistent MOs.
      engineBootsProvider - the provider of engine boots counter.
      moFactory - the MOFactory to be used to create ManagedObjects created by this config manager. If null the DefaultMOFactory will be used.
      Since:
      1.4
    • AgentConfigManager

      public AgentConfigManager(org.snmp4j.smi.OctetString agentsOwnEngineID, org.snmp4j.MessageDispatcher messageDispatcher, VACM vacm, MOServer[] moServers, org.snmp4j.util.WorkerPool workerPool, MOInputFactory configurationFactory, MOPersistenceProvider persistenceProvider, org.snmp4j.cfg.EngineBootsProvider engineBootsProvider, MOFactory moFactory, Collection<DHKickstartParameters> diffieHellmanKickstartParameters)
      Creates an SNMP agent configuration which can be run by calling run() later.
      Parameters:
      agentsOwnEngineID - the authoritative engine ID of the agent.
      messageDispatcher - the MessageDispatcher to use. The message dispatcher must be configured outside, i.e., transport mappings have to be added before this constructor is being called.
      vacm - a view access control model. Typically, this parameter is set to null to use the default VACM associated with the VacmMIB.
      moServers - the managed object server(s) that serve the managed objects available to this agent.
      workerPool - the WorkerPool to be used to process incoming request.
      configurationFactory - a MOInputFactory that creates a MOInput stream with containing serialized ManagedObject information with the agent's configuration or null otherwise.
      persistenceProvider - the primary MOPersistenceProvider to be used to load and store persistent MOs.
      engineBootsProvider - the provider of engine boots counter.
      moFactory - the MOFactory to be used to create ManagedObjects created by this config manager. If null the DefaultMOFactory will be used.
      diffieHellmanKickstartParameters - an optional list of Diffie-Hellman kickstart parameters to initialize the USM authentication and privacy keys.
      Since:
      3.0
    • AgentConfigManager

      public AgentConfigManager(org.snmp4j.smi.OctetString agentsOwnEngineID, org.snmp4j.MessageDispatcher messageDispatcher, VACM vacm, MOServer[] moServers, org.snmp4j.util.WorkerPool workerPool, MOInputFactory configurationFactory, MOPersistenceProvider persistenceProvider, org.snmp4j.cfg.EngineBootsProvider engineBootsProvider, MOFactory moFactory, Collection<DHKickstartParameters> diffieHellmanKickstartParameters, AgentAuditPolicy auditPolicy)
      Creates an SNMP agent configuration which can be run by calling run() later.
      Parameters:
      agentsOwnEngineID - the authoritative engine ID of the agent.
      messageDispatcher - the MessageDispatcher to use. The message dispatcher must be configured outside, i.e., transport mappings have to be added before this constructor is being called.
      vacm - a view access control model. Typically, this parameter is set to null to use the default VACM associated with the VacmMIB.
      moServers - the managed object server(s) that serve the managed objects available to this agent.
      workerPool - the WorkerPool to be used to process incoming request.
      configurationFactory - a MOInputFactory that creates a MOInput stream with containing serialized ManagedObject information with the agent's configuration or null otherwise.
      persistenceProvider - the primary MOPersistenceProvider to be used to load and store persistent MOs.
      engineBootsProvider - the provider of engine boots counter.
      moFactory - the MOFactory to be used to create ManagedObjects created by this config manager. If null the DefaultMOFactory will be used.
      diffieHellmanKickstartParameters - an optional list of Diffie-Hellman kickstart parameters to initialize the USM authentication and privacy keys.
      auditPolicy - the AgentAuditPolicy to be used to audit SNMP requests. When null the auditing is disabled.
      Since:
      3.12.0
  • Method Details

    • getAuditPolicy

      public AgentAuditPolicy getAuditPolicy()
      Gets the audit policy that is applied by this agent.
      Returns:
      the AgentAuditPolicy of this agent or null if no audit policy is being applied.
    • setAuditPolicy

      public void setAuditPolicy(AgentAuditPolicy auditPolicy)
      Sets the audit policy to be applied by this agent.
      Parameters:
      auditPolicy - the AgentAuditPolicy to be applied or null to not apply any audit policy.
    • setContext

      public void setContext(org.snmp4j.security.SecurityModels securityModels, org.snmp4j.security.SecurityProtocols securityProtocols, org.snmp4j.mp.CounterSupport counterSupport)
      Sets context objects needed for common security services that are derived from static instances by default. By setting this to a different set of instances of these objects for each agent, several agents controlled by different AgentConfigManager instances can coexist within the same Java process. Thus, using this method is required before calling run() for concurrent execution of run(), i.e. in a multithreaded multi-agent architecture.
      Parameters:
      securityModels - the security models supported by this agent.
      securityProtocols - the security protocols supported by this agent.
      counterSupport - the CounterSupport instance that records and returns all event counters of this agent.
      Since:
      3.5.0
    • run

      public void run()
      Initializes, configures, restores agent state, and then launches the SNMP agent depending on its current run state. For example, if initialize() has not yet been called it will be called before the agent is being configured in the next step.

      See also initialize(), configure(), restoreState(), and launch().

      Specified by:
      run in interface Runnable
    • addAgentStateListener

      public void addAgentStateListener(AgentStateListener<AgentConfigManager> agentStateListener)
      Adds a listener that is informed whenever the run state of this agent changes.
      Parameters:
      agentStateListener - the AgentStateListener to add.
    • removeAgentStateListener

      public boolean removeAgentStateListener(AgentStateListener<AgentConfigManager> agentStateListener)
      Removes a previously added agent state listener.
      Parameters:
      agentStateListener - the AgentStateListener to remove.
      Returns:
      true if the listener has been removed, false if it was not registered.
    • fireAgentStateChange

      protected void fireAgentStateChange()
      Informs all registered AgentStateListeners about the current run state of this agent.
    • getState

      public int getState()
      Returns the state of the agent.
      Returns:
      a integer constant from AgentState.STATE_CREATED thru AgentState.STATE_RUNNING.
    • getVACM

      public VACM getVACM()
      Returns the VACM used by this agent config manager.
      Returns:
      the VACM instance of this agent.
      Since:
      1.4
    • getSNMPv2MIB

      public SNMPv2MIB getSNMPv2MIB()
      Returns the SNMPv2-MIB implementation used by this config manager.
      Returns:
      the SNMPv2MIB instance of this agent.
      Since:
      1.4
    • getSnmpMpdMib

      public SnmpMpdMib getSnmpMpdMib()
      Returns the SNMPv2-MPD-MIB implementation used by this config manager.
      Returns:
      the SnmpMpdMib instance of this agent.
      Since:
      2.6
    • getSnmpTargetMIB

      public SnmpTargetMIB getSnmpTargetMIB()
      Returns the SNMP-TARGET-MIB implementation used by this config manager.
      Returns:
      the SnmpTargetMIB instance of this agent.
      Since:
      1.4
    • getSnmpNotificationMIB

      public SnmpNotificationMIB getSnmpNotificationMIB()
      Returns the SNMP-NOTIFICATION-MIB implementation used by this config manager.
      Returns:
      the SnmpNotificationMIB instance of this agent.
      Since:
      1.4
    • getSnmpCommunityMIB

      public SnmpCommunityMIB getSnmpCommunityMIB()
      Returns the SNMP-COMMUNITY-MIB implementation used by this config manager.
      Returns:
      the SnmpCommunityMIB instance of this agent.
      Since:
      1.4
    • getNotificationLogMIB

      public NotificationLogMib getNotificationLogMIB()
      Returns the NOTIFICATION-LOG-MIB implementation used by this config manager.
      Returns:
      the NotificationLogMib instance of this agent.
      Since:
      1.4.2
    • getSnmp4jLogMIB

      public Snmp4jLogMib getSnmp4jLogMIB()
      Returns the SNMP4J-LOG-MIB implementation used by this config manager.
      Returns:
      the Snmp4jLogMib instance of this agent.
      Since:
      1.4.2
    • getSnmp4jConfigMIB

      public Snmp4jConfigMib getSnmp4jConfigMIB()
      Returns the SNMP4J-CONFIG-MIB implementation used by this config manager.
      Returns:
      the Snmp4jConfigMib instance of this agent.
      Since:
      1.4.2
    • getSnmp4jProxyMIB

      public Snmp4jProxyMib getSnmp4jProxyMIB()
      Returns the SNMP4J-CONFIG-MIB implementation used by this config manager.
      Returns:
      the Snmp4jConfigMib instance of this agent.
      Since:
      2.0
    • launch

      protected void launch()
      Launch the agent by registering and launching (i.e., set to listen mode) transport mappings.
    • fireLaunchNotifications

      protected void fireLaunchNotifications()
      Fire notifications after agent start, i.e., sending a coldStart trap.
    • continueProcessing

      public boolean continueProcessing()
      Continues processing of SNMP requests by coupling message dispatcher and agent. To succeed, the current state of the agent must be AgentState.STATE_SUSPENDED.
      Returns:
      true if the running state could be restored, false otherwise.
    • suspendProcessing

      public void suspendProcessing()
      Suspends processing of SNMP requests. This call decouples message dispatcher and agent. All transport mappings remain unchanged and thus all ports remain opened.
    • shutdown

      public void shutdown()
      Shutdown the agent by closing the internal SNMP session - including the transport mappings provided through the configured MessageDispatcher and then store the agent state to persistent storage (if available).
    • waitUntilPendingModificationsDone

      protected void waitUntilPendingModificationsDone()
      Wait until all pending modifications (external via SNMP request or internal by LockRequest) to any of the servers are done.
      Since:
      3.7.0
    • registerShutdownHook

      public void registerShutdownHook()
      Registers a shutdown hook Thread at the Runtime instance.
    • initSnmp4jLogMIB

      public void initSnmp4jLogMIB()
      Creates the SNMP4J-LOG-MIB instance of this agent.
    • initSnmp4jConfigMIB

      public void initSnmp4jConfigMIB(MOPersistenceProvider[] persistenceProvider)
      Creates the SNMP4J-CONFIG-MIB instance of this agent and associates it with the persistence providers that can be selected through that MIB module.
      Parameters:
      persistenceProvider - the secondary persistence providers to be made available in addition to the primary MOPersistenceProvider of this agent, or null if there are none.
    • initSnmp4jProxyMIB

      public void initSnmp4jProxyMIB(org.snmp4j.smi.OctetString context)
      Creates the SNMP4J-PROXY-MIB instance of this agent for the specified context.
      Parameters:
      context - the context whose MOServer is used by the proxy MIB to look up the managed objects to be proxied.
    • getCommandProcessor

      public CommandProcessor getCommandProcessor()
      Gets the command processor that processes the SNMP requests of this agent.
      Returns:
      the CommandProcessor of this agent.
    • getVacmMIB

      public VacmMIB getVacmMIB()
      Gets the SNMP-VIEW-BASED-ACM-MIB implementation of this agent.
      Returns:
      the VacmMIB of this agent or null if this agent has not yet been initialized.
    • getUsm

      public org.snmp4j.security.USM getUsm()
      Gets the User Based Security Model (USM) of this agent.
      Returns:
      the USM of this agent or null if this agent has not yet been initialized.
    • getUsmMIB

      public UsmMIB getUsmMIB()
      Gets the SNMP-USER-BASED-SM-MIB implementation of this agent.
      Returns:
      the UsmMIB of this agent or null if this agent has not yet been initialized.
    • getSecurityProtocols

      public org.snmp4j.security.SecurityProtocols getSecurityProtocols()
      Gets the security protocols supported by this agent.
      Returns:
      the SecurityProtocols of this agent or null if the security context has not yet been initialized.
    • getSecurityModels

      public org.snmp4j.security.SecurityModels getSecurityModels()
      Gets the security models supported by this agent.
      Returns:
      the SecurityModels of this agent or null if the security context has not yet been initialized.
    • initNotificationLogMIB

      protected void initNotificationLogMIB(VACM vacm, SnmpNotificationMIB notifyMIB)
      Creates the NOTIFICATION-LOG-MIB instance of this agent, creates its default log, and registers the log as notification log listener at the NotificationOriginator of this agent.
      Parameters:
      vacm - the view access control model used to check access to the logged notifications.
      notifyMIB - the SNMP-NOTIFICATION-MIB instance that defines the notifications to be logged.
    • initSecurityContext

      protected void initSecurityContext()
      Initializes the security models and security protocols of this agent with the static default instances, if they have not been set before by setContext(SecurityModels, SecurityProtocols, CounterSupport).
    • initSecurityModels

      protected void initSecurityModels(org.snmp4j.cfg.EngineBootsProvider engineBootsProvider)
      Creates the USM and the TSM security models of this agent, adds them to the supported SecurityModels, and creates the SNMP-FRAMEWORK-MIB instance of this agent.
      Parameters:
      engineBootsProvider - the EngineBootsProvider that provides the engine boots counter of the USM.
    • initMessageDispatcherWithMPs

      protected void initMessageDispatcherWithMPs(org.snmp4j.MessageDispatcher mp)
      Adds the message processing models for SNMPv1, SNMPv2c, and SNMPv3 to the supplied message dispatcher.
      Parameters:
      mp - the MessageDispatcher the message processing models are added to.
    • registerTransportMappings

      protected void registerTransportMappings()
      Registers the MessageDispatcher of this agent as transport listener at all transport mappings of that dispatcher and sets the TLS security callback for TLS/DTLS transports.
    • launchTransportMappings

      protected void launchTransportMappings() throws IOException
      Puts all transport mappings of the MessageDispatcher of this agent into listen mode.
      Throws:
      IOException - if a transport cannot listen to incoming messages.
    • launchTransportMappings

      protected void launchTransportMappings(Collection<? extends org.snmp4j.TransportMapping<?>> transportMappings) throws IOException
      Puts a list of transport mappings into listen mode.
      Parameters:
      transportMappings - a list of TransportMapping instances.
      Throws:
      IOException - if a transport cannot listen to incoming messages.
    • stopTransportMappings

      protected void stopTransportMappings(Collection<? extends org.snmp4j.TransportMapping<?>> transportMappings) throws IOException
      Closes a list of transport mappings.
      Parameters:
      transportMappings - a list of TransportMapping instances.
      Throws:
      IOException - if transport cannot be closed.
    • saveState

      public boolean saveState()
      Save the state of the agent persistently - if necessary persistent storage is available.
      Returns:
      true if state has been saved successfully, false is returned if an error occurred or no persistenceProvider is set. The error details can be found in the runState object.
    • restoreState

      public boolean restoreState()
      Restore a previously persistently saved state - if available.
      Returns:
      true if the agent state could be restored successfully, false otherwise.
    • configure

      public void configure()
      Configures components and managed objects using the getConfigurationFactory(). If the factory is null then nothing will be done. In any case, the agent state is advanced to AgentState.STATE_CONFIGURED if no error occurred.
    • initMandatoryMIBs

      protected void initMandatoryMIBs()
      Creates the instances of the mandatory MIB modules of this agent (SNMPv2-MIB, SNMP-MPD-MIB, SNMP-TARGET-MIB, SNMP-NOTIFICATION-MIB, SNMP-VIEW-BASED-ACM-MIB, SNMP-USER-BASED-SM-MIB, SNMP-COMMUNITY-MIB, and SNMP-TLS-TM-MIB).
    • linkCounterListener

      protected void linkCounterListener()
      Registers the MIB modules of this agent that provide counter objects as counter listeners at the command processor, the message dispatcher, the USM, the message processing models, and the TLS transport mappings of this agent. Already registered listeners are removed before, so this method can be called more than once.
    • getSupportedSecurityProtocols

      protected org.snmp4j.security.SecurityProtocols getSupportedSecurityProtocols()
      Gets the set of security protocols supported by this agent configuration (only called if initialize() if setContext(SecurityModels, SecurityProtocols, CounterSupport) did not set a non-null SecurityProtocols instance before.
      Returns:
      SecurityProtocols.getInstance() by default after initialization by SecurityProtocols.addDefaultProtocols().
    • createUSM

      protected org.snmp4j.security.USM createUSM(org.snmp4j.cfg.EngineBootsProvider engineBootsProvider, org.snmp4j.smi.OctetString engineID)
      Creates the USM used by this agent configuration.
      Parameters:
      engineBootsProvider - the EngineBootsProvider that provides the engine boots counter of the created USM.
      engineID - the local engine ID of the created USM.
      Returns:
      an USM initialized by the engine boots from the engineBootsProvider and engineID.
    • createUSM

      protected org.snmp4j.security.USM createUSM()
      Creates an USM used by this agent configuration.
      Returns:
      the USM instance.
    • createTSM

      protected org.snmp4j.security.TSM createTSM()
      Creates the TSM used by this agent configuration.
      Returns:
      an USM initialized by the engine boots from the engineBootsProvider and engineID.
    • getSysServices

      public org.snmp4j.smi.Integer32 getSysServices()
      Gets the system services ID which can be modified by altering its value.
      Returns:
      72 by default.
    • getSysOID

      public org.snmp4j.smi.OID getSysOID()
      Gets the system OID which can be modified by altering its value.
      Returns:
      an OID - by default the SNMP4J root OID is returned.
    • getSysDescr

      public org.snmp4j.smi.OctetString getSysDescr()
      Returns the sysDescr.0 value for this agent which can be modified by altering its value.
      Returns:
      an OctetString describing the node of the form SNMP4J-Agent version [SNMP4J-version] - <os.name> - <os.arch> - <os.version>.
    • getSysUpTime

      public SysUpTime getSysUpTime()
      Gets the sysUpTime.0 instance for the default context.
      Returns:
      a SysUpTime instance.
    • getNotificationOriginator

      public NotificationOriginator getNotificationOriginator()
      Returns the notification originator of this agent configuration. To get the (multi-threaded) NotificationOriginator of the agent, use getAgentNotificationOriginator() instead.
      Returns:
      a NotificationOriginator instance.
    • getAgentNotificationOriginator

      public NotificationOriginator getAgentNotificationOriginator()
      Returns the notification originator of the agent. Use this method to get a NotificationOriginator for sending your notifications.
      Returns:
      the NotificationOriginator instance.
      Since:
      1.4
    • setNotificationOriginator

      public void setNotificationOriginator(NotificationOriginator notificationOriginator)
      Sets the notification originator of this agent configuration.
      Parameters:
      notificationOriginator - a NotificationOriginator instance.
    • getCounterSupport

      public org.snmp4j.mp.CounterSupport getCounterSupport()
      Gets the counter support that records the event counters of this agent.
      Returns:
      the CounterSupport of this agent or null if the counter support has not yet been initialized.
    • setCounterSupport

      public void setCounterSupport(org.snmp4j.mp.CounterSupport counterSupport)
      Sets the counter support that records the event counters of this agent. To be effective, this method has to be called before initialize().
      Parameters:
      counterSupport - the CounterSupport to be used by this agent.
    • getConfigurationFactory

      public MOInputFactory getConfigurationFactory()
      Gets the factory that generates a MOInput instance to load initial or reset configuration into the agent.
      Returns:
      a configuration provider factory or null if no configuration is set.
      Since:
      3.5.5
    • setConfigurationFactory

      public void setConfigurationFactory(MOInputFactory configuration)
      Sets the configuration factory that generates a MOInput instance to load initial or reset configuration into the agent. Configuration is a read-only source for MIB data whereas a getPersistenceProvider() provides the mechanism to store and restore MIB data persistently.
      Parameters:
      configuration - a configuration provider factory.
      Since:
      3.5.5
    • getPersistenceProvider

      public MOPersistenceProvider getPersistenceProvider()
      Gets the persistence provider which stores and restores non-volatile (i.e., persistent) MIB data.
      Returns:
      a MOPersistenceProvider instance.
      Since:
      3.5.5
    • setPersistenceProvider

      public void setPersistenceProvider(MOPersistenceProvider persistenceProvider)
      Sets the persistence provider which stores and restores non-volatile (i.e., persistent) MIB data.
      Parameters:
      persistenceProvider - a MOPersistenceProvider instance.
      Since:
      3.5.5
    • initialize

      public void initialize()
      Initialize the agent by creating counter support, SNMP session, engine ID, command processor, worker pool, security models (initSecurityModels(EngineBootsProvider)), message dispatcher with message processing models (initMessageDispatcherWithMPs(MessageDispatcher), mandatory MIBs (initMandatoryMIBs()), link MIBs with each other, link counter listeners (linkCounterListener()), and initialize optional MIBs (initOptionalMIBs(). Advance state to AgentState.STATE_INITIALIZED.
    • createCounterSupport

      protected org.snmp4j.mp.CounterSupport createCounterSupport()
      Creates the counter support of this agent. Overwrite this method to use a different CounterSupport implementation.
      Returns:
      a new CounterSupport instance by default.
    • setTableSizeLimits

      public void setTableSizeLimits(Properties sizeLimits)
      Sets the table size limits for the tables in this agent. If this method is called while the agent's registration is being changed, a ConcurrentModificationException might be thrown.
      Parameters:
      sizeLimits - a set of properties as defined by MOTableSizeLimit.
      Since:
      1.4
    • setTableSizeLimit

      public void setTableSizeLimit(int sizeLimit)
      Sets the table size limit for the tables in this agent. If this method is called while the agent's registration is being changed, a ConcurrentModificationException might be thrown.
      Parameters:
      sizeLimit - the maximum size (numer of rows) of tables allowed for this agent.
      Since:
      1.4
    • initOptionalMIBs

      protected void initOptionalMIBs()
      Creates the instances of the optional MIB modules of this agent (SNMP4J-LOG-MIB, SNMP4J-CONFIG-MIB, NOTIFICATION-LOG-MIB, SNMP4J-PROXY-MIB, and SNMP-USM-DH-OBJECTS-MIB).
    • initSnmpUsmDhObjectsMib

      protected void initSnmpUsmDhObjectsMib()
      Creates the SNMP-USM-DH-OBJECTS-MIB instance of this agent using the Diffie-Hellman kickstart parameters returned by getDhKickstartParameters().
    • getDhKickstartParameters

      protected Collection<DHKickstartParameters> getDhKickstartParameters()
      Overwrite this method to provide Diffie Hellman kick start parameters.
      Returns:
      an empty list of DHKickstartParameters by default.
      Since:
      3.0
    • getDefaultContext

      public org.snmp4j.smi.OctetString getDefaultContext()
      Returns the default context - which is the context that is used by the base agent to register its MIB objects. By default it is null which causes the objects to be registered virtually for all contexts. In that case, subagents for example my not register their own objects under the same subtree(s) in any context. To allow subagents to register their own instances of those MIB modules, an empty OctetString should be used as default context instead.
      Returns:
      null or an OctetString (normally the empty string) denoting the context used for registering default MIBs.
    • getContext

      protected org.snmp4j.smi.OctetString getContext(MOGroup mibGroup, org.snmp4j.smi.OctetString defaultContext)
      This method can be overwritten by a subagent to specify the contexts each MIB module (group) will be registered to.
      Parameters:
      mibGroup - a group of ManagedObjects (i.e., a MIB module).
      defaultContext - the context to be used by default (i.e., the null context)
      Returns:
      the context for which the module should be registered.
    • registerMIBs

      protected void registerMIBs(org.snmp4j.smi.OctetString context) throws DuplicateRegistrationException
      Register the initialized MIB modules in the specified context of the agent.
      Parameters:
      context - the context to register the internal MIB modules. This should be null by default.
      Throws:
      DuplicateRegistrationException - if some of the MIB modules registration regions conflict with already registered regions.
    • unregisterMIBs

      protected void unregisterMIBs(org.snmp4j.smi.OctetString context)
      Unregister the initialized MIB modules from the default context of the agent.
      Parameters:
      context - the context where the MIB modules have been previously registered.
    • setupProxyForwarder

      public void setupProxyForwarder()
      Creates and registers the proxy forwarder of this agent by calling createProxyForwarder(CommandProcessor).
    • setupSnmpUsmDhObjectsMib

      public void setupSnmpUsmDhObjectsMib(Collection<DHKickstartParameters> dhKickstartParameters)
      Creates the SNMP-USM-DH-OBJECTS-MIB instance of this agent with the supplied Diffie-Hellman kickstart parameters.
      Parameters:
      dhKickstartParameters - the DHKickstartParameters to be used to kickstart the USM users of this agent.
    • createNotificationOriginator

      protected NotificationOriginator createNotificationOriginator()
      Creates the notification originator of this agent. Overwrite this method to use a different NotificationOriginator implementation.
      Returns:
      a new NotificationOriginatorImpl instance by default.
    • createProxyForwarder

      protected ProxyForwarder createProxyForwarder(CommandProcessor agent)
      Creates and registers the default proxy forwarder application (ProxyForwarderImpl).
      Parameters:
      agent - the command processor that uses the proxy forwarder.
      Returns:
      a ProxyForwarder instance.
    • createCommandProcessor

      protected CommandProcessor createCommandProcessor(org.snmp4j.smi.OctetString engineID)
      Creates the command processor.
      Parameters:
      engineID - the engine ID of the agent.
      Returns:
      a new CommandProcessor instance.
    • createSnmpSession

      protected org.snmp4j.Session createSnmpSession(org.snmp4j.MessageDispatcher dispatcher)
      Creates the SNMP session to be used for this agent.
      Parameters:
      dispatcher - the message dispatcher to be associated with the session.
      Returns:
      a SNMP session (a Snmp instance by default).
    • setPersistenceImportMode

      public void setPersistenceImportMode(int importMode)
      Sets the import mode for the MOPersistenceProvider.
      Parameters:
      importMode - one of the import modes defined by ImportMode.
      Since:
      1.4
    • getPersistenceImportMode

      public int getPersistenceImportMode()
      Returns the currently active import mode for the MOPersistenceProvider.
      Returns:
      one of the import modes defined by ImportMode.
      Since:
      1.4
    • getVariable

      public org.snmp4j.smi.Variable getVariable(String name)
      Description copied from interface: VariableProvider
      Gets the variable with the specified name, which might be either a textual name or an instance OID.
      Specified by:
      getVariable in interface VariableProvider
      Parameters:
      name - the name or OID of the variable to return.
      Returns:
      a Variable instance or null if such a variable with the specified name or OID does not exists.
    • getMessageDispatcher

      public org.snmp4j.MessageDispatcher getMessageDispatcher()
      Retrieves the current instance of the MessageDispatcher.
      Returns:
      the instance of MessageDispatcher associated with this class
      Since:
      3.9.0