Module org.snmp4j
Package org.snmp4j

Class SNMP4JSettings

java.lang.Object
org.snmp4j.SNMP4JSettings

public final class SNMP4JSettings extends Object
The SNMP4JSettings class implements a central configuration class of the SNMP4J framework. As a rule of thumb, changes to the default configuration should be made before any other classes of the SNMP4J API are instantiated or referenced by the application code.
Since:
1.5
Version:
3.6.1
  • Field Details

    • AGENTPP_ENTERPRISE_ID

      public static final int AGENTPP_ENTERPRISE_ID
      The enterprise ID of AGENT++ which is the root OID also for SNMP4J.
      See Also:
    • maxEngineIdCacheSize

      private static int maxEngineIdCacheSize
      By default allow worth of ~2MB memory for engine ID cache.
    • extensibilityEnabled

      private static boolean extensibilityEnabled
      Specifies whether SNMP4J can be extended by own implementation of security protocols, transport mappings, address types, SMI syntaxes, etc. through property files defined via System properties. If set to false all classes SNMP4J is aware of will be used hard coded which speeds up initialization and is required to use SNMP4J in a secure environment where System properties are not available (i.e. in an unsigned applet).
      Since:
      1.2.2
    • forwardRuntimeExceptions

      private static volatile boolean forwardRuntimeExceptions
      By default SNMP4J (and SNMP4J-Agent*) catch runtime exceptions at thread boundaries of API controlled threads. In SNMP4J such a thread runs in each TransportMapping and in each Snmp session object. To ensure robust runtime behavior, unexpected runtime exceptions are caught and logged. If you need to localize and debug such exceptions then set this value to true.
      Since:
      1.8.1
    • threadFactory

      private static ThreadFactory threadFactory
      By default SNMP4J uses Thread instances to run concurrent tasks. For environments with restricted thread management like Java EE application servers, a custom thread factory can be used.
      Since:
      1.9
    • timerFactory

      private static TimerFactory timerFactory
      By default SNMP4J uses Timer instances to run timed tasks. For environments with restricted thread management like Java EE application servers, a custom timer factory can be used.
      Since:
      1.9
    • oidTextFormat

      private static OIDTextFormat oidTextFormat
      By default SNMP4J uses the SimpleOIDTextFormat to convert OIDs to/from a textual representation.
      Since:
      1.10
    • variableTextFormat

      private static VariableTextFormat variableTextFormat
      By default SNMP4J uses the SimpleVariableTextFormat to convert VariableBindings to/from a textual representation.
      Since:
      1.10
    • threadJoinTimeout

      private static long threadJoinTimeout
      The default Thread join timeout, used for example by the DefaultThreadFactory, defines the maximum time to wait for a Thread running a worker task to end that task (end join the main thread if that Thread has been exclusively used for that task). The default value is 60 seconds (1 min.).
    • allowSNMPv2InV1

      private static boolean allowSNMPv2InV1
      This setting can used to be compatible with some faulty SNMP implementations which send Counter64 objects with SNMPv1 PDUs.
    • noGetBulk

      private static boolean noGetBulk
      Suppress GETBULK sending. Instead use GETNEXT. This option may be useful in environments with buggy devices which support SNMPv2c or v3 but do not support the mandatory GETBULK PDU type.
    • reportSecurityLevelStrategy

      private static SNMP4JSettings.ReportSecurityLevelStrategy reportSecurityLevelStrategy
      This flag enables/disables (default) whether REPORT PDUs should be send by a command responder with securityLevel SecurityLevel.noAuthNoPriv if otherwise the command generator would not able to receive the PDU.REPORT. RFC 3412 §7.6.2.3 requires that the securityLevel is the same as in the confirmed class PDU if not explicitly otherwise specified.

      For SnmpConstants.usmStatsUnsupportedSecLevels reports, this would always render the command responder unable to return the report.

      Setting this flag to SNMP4JSettings.ReportSecurityLevelStrategy.noAuthNoPrivIfNeeded reactivates the behavior of SNMP4J prior to v2.2 which sends out the reports with SecurityLevel.noAuthNoPriv if otherwise, the report would not be sent out.

      Since:
      2.2
    • enterpriseID

      private static int enterpriseID
      The enterprise ID that is used to build SNMP engine IDs and other enterprise specific OIDs. This value should be changed by API users from other enterprises (companies or organizations).
      Since:
      2.2.4
    • snmp4jStatistics

      private static SNMP4JSettings.Snmp4jStatistics snmp4jStatistics
      The snmp4jStatistics value defines the level of statistic values that are collected in extension to those collected for the SNMP standard.
      Since:
      2.4.2
    • checkUsmUserPassphraseLength

      private static boolean checkUsmUserPassphraseLength
      The checkUsmUserPassphraseLength specifies whether the minimum USM pasaphrase length should be checked when creating UsmUser instances (RFC3414 §11.2). Default is yes.
      Since:
      2.5.0
    • defaultTimeoutMillis

      private static long defaultTimeoutMillis
      Default timeout in milliseconds for SNMP communication (Command Request invalid input: '<'invalid input: '<'->> Response) is 1000 milliseconds.
      Since:
      3.5.0
    • defaultRetries

      private static int defaultRetries
      Default number of retries for packet oriented transport protocols (i.e. UDP and DTLS) is no retry (0).
      Since:
      3.5.0
    • maxSizeRequestPDU

      private static int maxSizeRequestPDU
      Default maximum size of request PDUs. Although this value is typically configured on Targets individually, it sometimes makes sense to configure this value to less than the maximum value of 65535 (which is the default).
      Since:
      3.5.0
    • defaultNonPrintableEscapeCharacter

      private static Character defaultNonPrintableEscapeCharacter
      Default escape character for Variables to avoid non-printable characters in their Variable.toString() output.
      Since:
      3.6.1
    • secretLoggingEnabled

      private static Boolean secretLoggingEnabled
  • Constructor Details

    • SNMP4JSettings

      public SNMP4JSettings()
  • Method Details

    • getMaxSizeRequestPDU

      public static int getMaxSizeRequestPDU()
    • setMaxSizeRequestPDU

      public static void setMaxSizeRequestPDU(int maxSizeRequestPDU)
      Sets the maximum size of a request PDU. This value must be between SnmpConstants.MIN_PDU_LENGTH and 65536 bytes (including).
      Parameters:
      maxSizeRequestPDU - a value greater or equal to 494 and less or equal to 65535.
      Since:
      3.5.0
    • getDefaultRetries

      public static int getDefaultRetries()
      Get the default number of retries for packet oriented transport mappings.
      Returns:
      the default number of retries, should be greater than or equal to zero.
      Since:
      3.5.0
    • setDefaultRetries

      public static void setDefaultRetries(int defaultRetries)
      Set the default number of retries for packet oriented transport mappings, default is 0.
      Parameters:
      defaultRetries - the number maximum of retries before a request is timed out. Must be greater than or equal to zero.
    • setExtensibilityEnabled

      public static void setExtensibilityEnabled(boolean enable)
      Enables (or disables) the extensibility feature of SNMP4J. When enabled, SNMP4J checks certain properties files that describe which transport mappings, address types, SMI syntaxes, security protocols, etc. should be supported by SNMP4J.

      By default, the extensibility feature is disabled which provides a faster startup and since no system properties are read, it ensures that SNMP4J can be used also in secure environments like applets.

      Parameters:
      enable - if true activates extensibility or if false disables it. In the latter case, SNMP4J's default configuration will be used with all available features.
      Since:
      1.2.2
    • isExtensibilityEnabled

      public static boolean isExtensibilityEnabled()
      Tests if the extensibility feature is enabled.
      Returns:
      if true the extensibility is enabled otherwise it is disabled. In the latter case, SNMP4J's default configuration will be used with all available features.
      Since:
      1.2.2
    • setForwardRuntimeExceptions

      public static void setForwardRuntimeExceptions(boolean forwardExceptions)
      Enables or disables runtime exception forwarding.
      Parameters:
      forwardExceptions - true runtime exceptions are thrown on thread boundaries controlled by SNMP4J and related APIs. Default is false.
      Since:
      1.8.1
      See Also:
    • isForwardRuntimeExceptions

      public static boolean isForwardRuntimeExceptions()
      Indicates whether runtime exceptions should be thrown on thread boundaries controlled by SNMP4J and related APIs.
      Returns:
      true runtime exceptions are thrown on thread boundaries controlled by SNMP4J and related APIs. Default is false.
      Since:
      1.8.1
    • getThreadFactory

      public static ThreadFactory getThreadFactory()
      Gets the thread factory.
      Returns:
      a ThreadFactory.
      Since:
      1.9
    • setThreadFactory

      public static void setThreadFactory(ThreadFactory newThreadFactory)
      Sets the thread factory for creating new threads of execution.
      Parameters:
      newThreadFactory - a ThreadFactory (must not be null).
      Since:
      1.9
    • getTimerFactory

      public static TimerFactory getTimerFactory()
      Gets the timer factory.
      Returns:
      a TimerFactory.
      Since:
      1.9
    • setTimerFactory

      public static void setTimerFactory(TimerFactory newTimerFactory)
      Sets the timer factory for creating new timer instances.
      Parameters:
      newTimerFactory - a TimerFactory (must not be null).
      Since:
      1.9
    • getOIDTextFormat

      public static OIDTextFormat getOIDTextFormat()
      Gets the OID text format for textual representation of OIDs.
      Returns:
      an OIDTextFormat instance.
      Since:
      1.10
    • setOIDTextFormat

      public static void setOIDTextFormat(OIDTextFormat newOidTextFormat)
      Sets the OID text format to be used by SNMP4J.
      Parameters:
      newOidTextFormat - the new OIDTextFormat (must not be null).
      Since:
      1.10
    • getVariableTextFormat

      public static VariableTextFormat getVariableTextFormat()
      Gets the variable text format for textual representation of variable bindings.
      Returns:
      an VariableTextFormat instance.
      Since:
      1.10
    • setVariableTextFormat

      public static void setVariableTextFormat(VariableTextFormat newVariableTextFormat)
      Sets the variable text format to be used by SNMP4J.
      Parameters:
      newVariableTextFormat - the new VariableTextFormat (must not be null).
      Since:
      1.10
    • getThreadJoinTimeout

      public static long getThreadJoinTimeout()
      Gets the Thread join timeout used to join threads if no explicit timeout is set.
      Returns:
      the timeout millis.
      Since:
      1.10.2
    • setThreadJoinTimeout

      public static void setThreadJoinTimeout(long millis)
      Sets the Thread join timeout used to join threads if no explicit timeout is set.
      Parameters:
      millis - the maximum time in milli-seconds to wait for a Thread to join if no explicit timeout has been set.
      Since:
      1.10.2
    • isAllowSNMPv2InV1

      public static boolean isAllowSNMPv2InV1()
    • setAllowSNMPv2InV1

      public static void setAllowSNMPv2InV1(boolean allowSNMPv2InV1)
      Sets the compatibility flag for Counter64 usage in SNMPv1 PDUs and the ability to decode SNMPv2 traps in SNMPv1 version PDUs. The default is false. Note: By setting this to true you disable SNMP standard conformity.
      Parameters:
      allowSNMPv2InV1 - if set to true, SNMP4J will allow Counter64 objects in SNMPv1 PDUs although the SNMPv1 standard does not allow this. There are several buggy implementations which send such v1 PDUs.
      Since:
      2.2
    • getReportSecurityLevelStrategy

      public static SNMP4JSettings.ReportSecurityLevelStrategy getReportSecurityLevelStrategy()
    • setReportSecurityLevelStrategy

      public static void setReportSecurityLevelStrategy(SNMP4JSettings.ReportSecurityLevelStrategy reportSecurityLevelStrategy)
    • isNoGetBulk

      public static boolean isNoGetBulk()
    • setNoGetBulk

      public static void setNoGetBulk(boolean noGetBulk)
    • getEnterpriseID

      public static int getEnterpriseID()
      Gets the enterprise OID used for creating SNMP engine IDs and other enterprise specific identifiers.
      Returns:
      an enterprise ID. For example 4976 as enterprise ID (IANA number) for AGENT++ (SNMP4J). This value should be changed for other enterprises (i.e., companies or organizations).
    • setEnterpriseID

      public static void setEnterpriseID(int enterpriseID)
      Sets the enterprise OID used for creating SNMP engine IDs and other enterprise specific identifiers.
      Parameters:
      enterpriseID - the new enterprise ID.
    • getMaxEngineIdCacheSize

      public static int getMaxEngineIdCacheSize()
      Gets the maximum number of engine IDs to be hold in the cache of the MPv3. A upper limit is necessary to avoid DoS attacks with unconfirmed SNMPv3 PDUs.
      Returns:
      the maximum number, by default 50.000 (~2MB of cached data).
      Since:
      2.3.4
    • setMaxEngineIdCacheSize

      public static void setMaxEngineIdCacheSize(int maxEngineIdCacheSize)
      Sets the maximum number of engine IDs that can be cached by theMPv3.
      Parameters:
      maxEngineIdCacheSize - the maximum number of engine IDs in the cache, by default 50.000 (~2MB of cached data).
      Since:
      2.3.4
    • getSnmp4jStatistics

      public static SNMP4JSettings.Snmp4jStatistics getSnmp4jStatistics()
      Get the SNMP4J statistics level.
      Returns:
      the Snmp4jStatistics enum value.
      Since:
      2.4.2
    • setSnmp4jStatistics

      public static void setSnmp4jStatistics(SNMP4JSettings.Snmp4jStatistics snmp4jStatistics)
      Sets the SNMP4J statistics level.
      Parameters:
      snmp4jStatistics - the level of statistics to be collected by SNMP4J and provided through CounterEvents.
      Since:
      2.4.2
    • isCheckUsmUserPassphraseLength

      public static boolean isCheckUsmUserPassphraseLength()
    • setCheckUsmUserPassphraseLength

      public static void setCheckUsmUserPassphraseLength(boolean checkUsmUserPassphraseLength)
    • getDefaultTimeoutMillis

      public static long getDefaultTimeoutMillis()
      Get the default timeout for AbstractTarget.
      Returns:
      the default timeout in milli seconds.
      Since:
      3.5.0
    • setDefaultTimeoutMillis

      public static void setDefaultTimeoutMillis(long defaultTimeoutMillis)
      Set the default timeout for AbstractTarget. The default of the default value is 1000 milli-seconds (= one second).
      Parameters:
      defaultTimeoutMillis - the default timeout for Targets in milli seconds.
      Since:
      3.5.0
    • getDefaultNonPrintableEscapeCharacter

      public static Character getDefaultNonPrintableEscapeCharacter()
      Gets the default non-printable character escape character. If null non-printable OctetString and other Variable will be printed/formatted with Variable#toString() as hexadecimal string. If non null non-printable characters (see OctetString.isPrintable()) will be replaced by the given character in the output.
      Returns:
      the escape character for non-printable characters.
      Since:
      3.6.1
    • setDefaultNonPrintableEscapeCharacter

      public static void setDefaultNonPrintableEscapeCharacter(Character defaultNonPrintableEscapeCharacter)
      Gets the default non-printable character escape character. If null non-printable OctetString and other Variable will be printed/formatted with Variable#toString() as hexadecimal string. If non null non-printable characters (see OctetString.isPrintable()) will be replaced by the given character in the output.
      Parameters:
      defaultNonPrintableEscapeCharacter - the escape character for non-printable characters. null disables escaping.
      Since:
      3.6.1
    • isSecretLoggingEnabled

      public static Boolean isSecretLoggingEnabled()
      Check if logging secrets with their secret value in any debug level is allowed (true) or not (false). This value is false by default.
      Returns:
      true if secret logging is enabled, false otherwise.
    • setSecretLoggingEnabled

      public static boolean setSecretLoggingEnabled(boolean enableSecretLogging)
      Activates or deactivates the secret logging. Note: Disabling secret logging is possible at any time, but enabling it is only possible if it has not yet been disabled.
      Parameters:
      enableSecretLogging - true for enabling secret logging, false otherwise. Enabling will work only initially.
      Returns:
      the new status (true if secret logging is enabled, false otherwise).
      Since:
      3.6.1