.TH SNMP 7 "snmp 5.13.5" "Ericsson AB" "Erlang Application Definition" .SH NAME SNMP \- The SNMP Application .SH DESCRIPTION .LP This chapter describes the \fIsnmp\fR\& application in OTP\&. The SNMP application provides the following services: .RS 2 .TP 2 * a multilingual extensible SNMP agent .LP .TP 2 * a SNMP manager .LP .TP 2 * a MIB compiler .LP .RE .SH "CONFIGURATION" .LP The following configuration parameters are defined for the SNMP application\&. Refer to application(3erl) for more information about configuration parameters\&. .LP The snmp part of the config file specifying the configuration parameters is basically the following tuple: .LP .nf {snmp, snmp_components_config()} .fi .LP A minimal config file for starting a node with both a manager and an agent: .LP .nf [{snmp, [{agent, [{db_dir, "/tmp/snmp/agent/db"}, {config, [{dir, "/tmp/snmp/agent/conf"}]}]}, {manager, [{config, [{dir, "/tmp/snmp/manager/conf"}, {db_dir, "/tmp/snmp/manager/db"}]}]}]} ] } ]. .fi .LP Each snmp component has its own set of configuration parameters, even though some of the types are common to both components\&. .LP .nf snmp_components_config() -> [snmp_component_config()] snmp_component_config() -> {agent, agent_options()} | {manager, manager_options()} agent_options() = [agent_option()] agent_option() = {restart_type, restart_type()} | {agent_type, agent_type()} | {agent_verbosity, verbosity()} | {discovery, agent_discovery()} | {versions, versions()} | {gb_max_vbs, gb_max_vbs()} | {priority, priority()} | {multi_threaded, multi_threaded()} | {db_dir, db_dir()} | {db_init_error, db_init_error()} | {local_db, local_db()} | {net_if, agent_net_if()} | {mibs, mibs()} | {mib_storage, mib_storage()} | {mib_server, mib_server()} | {audit_trail_log, audit_trail_log()} | {error_report_mod, error_report_mod()} | {note_store, note_store()} | {symbolic_store, symbolic_store()} | {target_cache, target_cache()} | {config, agent_config()} manager_options() = [manager_option()] manager_option() = {restart_type, restart_type()} | {net_if, manager_net_if()} | {server, server()} | {note_store, note_store()} | {config, manager_config()} | {inform_request_behaviour, manager_irb()} | {mibs, manager_mibs()} | {priority, priority()} | {audit_trail_log, audit_trail_log()} | {versions, versions()} | {def_user_mod, def_user_module() | {def_user_data, def_user_data()} .fi .LP Agent specific config options and types: .RS 2 .TP 2 .B \fIagent_type() = master | sub \fR\&: If \fImaster\fR\&, one master agent is started\&. Otherwise, no agents are started\&. .RS 2 .LP Default is \fImaster\fR\&\&. .RE .TP 2 .B \fIagent_discovery() = [agent_discovery_opt()] \fR\&: \fIagent_discovery_opt() = {terminating, agent_terminating_discovery_opts()} | {originating, agent_originating_discovery_opts()}\fR\& .RS 2 .LP The \fIterminating\fR\& options effects discovery initiated by a manager\&. .RE .RS 2 .LP The \fIoriginating\fR\& options effects discovery initiated by this agent\&. .RE .RS 2 .LP For defaults see the options in \fIagent_discovery_opt()\fR\&\&. .RE .TP 2 .B \fIagent_terminating_discovery_opts() = [agent_terminating_discovery_opt()] \fR\&: \fIagent_terminating_discovery_opt() = {enable, boolean()} | {stage2, discovery | plain} | {trigger_username, string()}\fR\& .RS 2 .LP These are options effecting discovery \fIterminating\fR\& in this agent (i\&.e\&. initiated by a manager)\&. .RE .RS 2 .LP The default values for the \fIterminating\fR\& discovery options are: .RE .RS 2 .TP 2 * enable: \fItrue\fR\& .LP .TP 2 * stage2: \fIdiscovery\fR\& .LP .TP 2 * trigger_username: \fI""\fR\& .LP .RE .TP 2 .B \fIagent_originating_discovery_opts() = [agent_originating_discovery_opt()] \fR\&: \fIagent_originating_discovery_opt() = {enable, boolean()}\fR\& .RS 2 .LP These are options effecting discovery \fIoriginating\fR\& in this agent\&. .RE .RS 2 .LP The default values for the \fIoriginating\fR\& discovery options are: .RE .RS 2 .TP 2 * enable: \fItrue\fR\& .LP .RE .TP 2 .B \fImulti_threaded() = bool() | extended \fR\&: If \fItrue\fR\& (or \fIextended\fR\&), the agent is multi-threaded, with one thread for each get request\&. .RS 2 .LP The value \fIextended\fR\& means that a special \&'process\&' is also created intended to handle \fIall\fR\& notifications\&. .RE .RS 2 .TP 2 * \fItrue\fR\& - One worker dedicated to \&'set-requests\&' and one (main) worker for all other requests (\&'get-request\&' and notifications)\&. .RS 2 .LP If the \&'main\&' worker is busy, a temporary process is spawned to handle that job (\&'get-request\&' or notification)\&. .RE .LP .TP 2 * \fIextended\fR\& - One worker dedicated to \&'set-requests\&', one worker dedicated to notifications and one (main) worker for all \&'get-requests\&'\&. .RS 2 .LP If the \&'main\&' worker is busy, a temporary process is spawned to handle that \&'get-request\&'\&. .RE .LP .RE .LP .RS -4 .B Note: .RE Even with multi-threaded set to \fIextended\fR\& there is still a risk for \&'reorder\&' when sending inform-requsts, which require a response (and may therefore require resending)\&. .LP Also, there is of course no way to guarantee order once the package is on the network\&. .RS 2 .LP Default is \fIfalse\fR\&\&. .RE .TP 2 .B \fIdb_dir() = string() \fR\&: Defines where the SNMP agent internal db files are stored\&. .TP 2 .B \fIgb_max_vbs() = pos_integer() | infinity \fR\&: Defines the maximum number of varbinds allowed in a Get-BULK response\&. .RS 2 .LP Default is \fI1000\fR\&\&. .RE .TP 2 .B \fIlocal_db() = [local_db_opt()] \fR\&: \fIlocal_db_opt() = {repair, agent_repair()} | {auto_save, agent_auto_save()} | {verbosity, verbosity()}\fR\& .RS 2 .LP Defines options specific for the SNMP agent local database\&. .RE .RS 2 .LP For defaults see the options in \fIlocal_db_opt()\fR\&\&. .RE .TP 2 .B \fIagent_repair() = false | true | force \fR\&: When starting snmpa_local_db it always tries to open an existing database\&. If \fIfalse\fR\&, and some errors occur, a new database is created instead\&. If \fItrue\fR\&, an existing file will be repaired\&. If \fIforce\fR\&, the table will be repaired even if it was properly closed\&. .RS 2 .LP Default is \fItrue\fR\&\&. .RE .TP 2 .B \fIagent_auto_save() = integer() | infinity \fR\&: The auto save interval\&. The table is flushed to disk whenever not accessed for this amount of time\&. .RS 2 .LP Default is \fI5000\fR\&\&. .RE .TP 2 .B \fIagent_net_if() = [agent_net_if_opt()] \fR\&: \fIagent_net_if_opt() = {module, agent_net_if_module()} | {verbosity, verbosity()} | {options, agent_net_if_options()}\fR\& .RS 2 .LP Defines options specific for the SNMP agent network interface entity\&. .RE .RS 2 .LP For defaults see the options in \fIagent_net_if_opt()\fR\&\&. .RE .TP 2 .B \fIagent_net_if_module() = atom() \fR\&: Module which handles the network interface part for the SNMP agent\&. Must implement the snmpa_network_interface behaviour\&. .RS 2 .LP Default is \fIsnmpa_net_if\fR\&\&. .RE .TP 2 .B \fIagent_net_if_options() = [agent_net_if_option()] \fR\&: \fIagent_net_if_option() = {bind_to, bind_to()} | {sndbuf, sndbuf()} | {recbuf, recbuf()} | {no_reuse, no_reuse()} | {req_limit, req_limit()} | {filter, agent_net_if_filter_options()} | {open_err_filters, agent_net_if_open_err_filters()} | {extra_sock_opts, extra_socket_options()} | {inet_backend, inet | socket}\fR\& .RS 2 .LP These options are actually specific to the used module\&. The ones shown here are applicable to the default \fIagent_net_if_module()\fR\&\&. .RE .LP .RS -4 .B Note: .RE If the user has configured transports \fIwith\fR\& options then those will take precedence over these options\&. See agent information for more info\&. .RS 2 .LP For defaults see the options in \fIagent_net_if_option()\fR\&\&. .RE .TP 2 .B \fIreq_limit() = integer() | infinity \fR\&: Max number of simultaneous requests handled by the agent\&. .RS 2 .LP Default is \fIinfinity\fR\&\&. .RE .TP 2 .B \fIagent_net_if_filter_options() = [agent_net_if_filter_option()] \fR\&: \fIagent_net_if_filter_option() = {module, agent_net_if_filter_module()}\fR\& .RS 2 .LP These options are actually specific to the used module\&. The ones shown here are applicable to the default \fIagent_net_if_filter_module()\fR\&\&. .RE .RS 2 .LP For defaults see the options in \fIagent_net_if_filter_option()\fR\&\&. .RE .TP 2 .B \fIagent_net_if_filter_module() = atom() \fR\&: Module which handles the network interface filter part for the SNMP agent\&. Must implement the snmpa_network_interface_filter behaviour\&. .RS 2 .LP Default is \fIsnmpa_net_if_filter\fR\&\&. .RE .TP 2 .B \fIagent_net_if_open_err_filters() = [agent_net_if_open_err_filter()] \fR\&: \fIagent_net_if_open_err_filter() = atom()\fR\& .RS 2 .LP During agent initiation, the transports UDP sockets are opened\&. If this operation fails, the net-if (and the agent) fails to start (crash)\&. This (filter) list contains error (reasons) that will make net-if fail "nicely"\&. This (filter) list, is supposed to contain errors that can be returned by gen_udp:open/1,2\&. The effect is that any error returned by gen_udp:open which *are* in this list, will be considered "non-fatal" and will only result in an info message, rather than an error message\&. Net If, and the agent, will still crash, but will produce a less obnoxious message\&. .RE .TP 2 .B \fIagent_mibs() = [string()] \fR\&: Specifies a list of MIBs (including path) that defines which MIBs are initially loaded into the SNMP master agent\&. .RS 2 .LP Note that the following mibs will always be loaded: .RE .RS 2 .TP 2 * version v1: \fISTANDARD-MIB\fR\& .LP .TP 2 * version v2: \fISNMPv2\fR\& .LP .TP 2 * version v3: \fISNMPv2\fR\&, \fISNMP-FRAMEWORK-MIB\fR\& and \fISNMP-MPD-MIB\fR\& .LP .RE .RS 2 .LP Default is \fI[]\fR\&\&. .RE .TP 2 .B \fImib_storage() = [mib_storage_opt()] \fR\&: \fImib_storage_opt() = {module, mib_storage_module()} | {options, mib_storage_options()}\fR\& .RS 2 .LP This option specifies how basic mib data is stored\&. This option is used by two parts of the snmp agent: The mib-server and the symbolic-store\&. .RE .RS 2 .LP Default is \fI[{module, snmpa_mib_storage_ets}]\fR\&\&. .RE .TP 2 .B \fImib_storage_module() = snmpa_mib_data_ets | snmpa_mib_data_dets | snmpa_mib_data_mnesia | module()\fR\&: Defines the mib storage module of the SNMP agent as defined by the snmpa_mib_storage behaviour\&. .RS 2 .LP Several entities (\fImib-server\fR\& via the its data module and the \fIsymbolic-store\fR\&) of the snmp agent uses this for storage of miscellaneous mib related data retrieved while loading a mib\&. .RE .RS 2 .LP There are several implementations provided with the agent: \fIsnmpa_mib_storage_ets\fR\&, \fIsnmpa_mib_storage_dets\fR\& and \fIsnmpa_mib_storage_mnesia\fR\&\&. .RE .RS 2 .LP Default module is \fIsnmpa_mib_storage_ets\fR\&\&. .RE .TP 2 .B \fImib_storage_options() = list() \fR\&: This is implementation depended\&. That is, it depends on the module\&. For each module a specific set of options are valid\&. For the module provided with the app, these options are supported: .RS 2 .TP 2 * \fIsnmpa_mib_storage_ets\fR\&: \fI{dir, filename()} | {action, keep | clear}, {checksum, boolean()}\fR\& .RS 2 .TP 2 * \fIdir\fR\& - If present, points to a directory where a file to which all data in the ets table is "synced"\&. .RS 2 .LP Also, when a table is opened this file is read, if it exists\&. .RE .RS 2 .LP By default, this will \fInot\fR\& be used\&. .RE .LP .TP 2 * \fIaction\fR\& - Specifies the behaviour when a non-empty file is found: Keep its content or clear it out\&. .RS 2 .LP Default is \fIkeep\fR\&\&. .RE .LP .TP 2 * \fIchecksum\fR\& - Defines if the file is checksummed or not\&. .RS 2 .LP Default is \fIfalse\fR\&\&. .RE .LP .RE .LP .TP 2 * \fIsnmpa_mib_storage_dets\fR\&: \fI{dir, filename()} | {action, keep | clear}, {auto_save, default | pos_integer()} | {repair, force | boolean()}\fR\& .RS 2 .TP 2 * \fIdir\fR\& - This \fImandatory\fR\& option points to a directory where to place the file of a dets table\&. .LP .TP 2 * \fIaction\fR\& - Specifies the behaviour when a non-empty file is found: Keep its content or clear it out\&. .RS 2 .LP Default is \fIkeep\fR\&\&. .RE .LP .TP 2 * \fIauto_save\fR\& - Defines the dets auto-save frequency\&. .RS 2 .LP Default is \fIdefault\fR\&\&. .RE .LP .TP 2 * \fIrepair\fR\& - Defines the dets repair behaviour\&. .RS 2 .LP Default is \fIfalse\fR\&\&. .RE .LP .RE .LP .TP 2 * \fIsnmpa_mib_storage_mnesia\fR\&: \fI{action, keep | clear}, {nodes, [node()]}\fR\& .RS 2 .TP 2 * \fIaction\fR\& - Specifies the behaviour when a non-empty, already existing, table: Keep its content or clear it out\&. .RS 2 .LP Default is \fIkeep\fR\&\&. .RE .LP .TP 2 * \fInodes\fR\& - A list of node names (or an atom describing a list of nodes) defining where to open the table\&. Its up to the user to ensure that mnesia is actually running on the specified nodes\&. .RS 2 .LP The following distinct values are recognised: .RE .RS 2 .TP 2 * \fI[]\fR\& - Translated into a list of the own node: \fI[node()]\fR\& .LP .TP 2 * \fIall\fR\& - \fIerlang:nodes()\fR\& .LP .TP 2 * \fIvisible\fR\& - \fIerlang:nodes(visible)\fR\& .LP .TP 2 * \fIconnected\fR\& - \fIerlang:nodes(connected)\fR\& .LP .TP 2 * \fIdb_nodes\fR\& - \fImnesia:system_info(db_nodes)\fR\& .LP .RE .RS 2 .LP Default is the result of the call: \fIerlang:nodes()\fR\&\&. .RE .LP .RE .LP .RE .TP 2 .B \fImib_server() = [mib_server_opt()] \fR\&: \fImib_server_opt() = {mibentry_override, mibentry_override()} | {trapentry_override, trapentry_override()} | {verbosity, verbosity()} | {cache, mibs_cache()} | {data_module, mib_server_data_module()}\fR\& .RS 2 .LP Defines options specific for the SNMP agent mib server\&. .RE .RS 2 .LP For defaults see the options in \fImib_server_opt()\fR\&\&. .RE .TP 2 .B \fImibentry_override() = bool() \fR\&: If this value is false, then when loading a mib each mib- entry is checked prior to installation of the mib\&. The purpose of the check is to prevent that the same symbolic mibentry name is used for different oid\&'s\&. .RS 2 .LP Default is \fIfalse\fR\&\&. .RE .TP 2 .B \fItrapentry_override() = bool() \fR\&: If this value is false, then when loading a mib each trap is checked prior to installation of the mib\&. The purpose of the check is to prevent that the same symbolic trap name is used for different trap\&'s\&. .RS 2 .LP Default is \fIfalse\fR\&\&. .RE .TP 2 .B \fImib_server_data_module() = snmpa_mib_data_tttn | module() \fR\&: Defines the backend data module of the SNMP agent mib-server as defined by the snmpa_mib_data behaviour\&. .RS 2 .LP At present only the default module is provided with the agent, \fIsnmpa_mib_data_tttn\fR\&\&. .RE .RS 2 .LP Default module is \fIsnmpa_mib_data_tttn\fR\&\&. .RE .TP 2 .B \fImibs_cache() = bool() | mibs_cache_opts() \fR\&: Shall the agent utilize the mib server lookup cache or not\&. .RS 2 .LP Default is \fItrue\fR\& (in which case the \fImibs_cache_opts()\fR\& default values apply)\&. .RE .TP 2 .B \fImibs_cache_opts() = [mibs_cache_opt()] \fR\&: \fImibs_cache_opt() = {autogc, mibs_cache_autogc()} | {gclimit, mibs_cache_gclimit()} | {age, mibs_cache_age()}\fR\& .RS 2 .LP Defines options specific for the SNMP agent mib server cache\&. .RE .RS 2 .LP For defaults see the options in \fImibs_cache_opt()\fR\&\&. .RE .TP 2 .B \fImibs_cache_autogc() = bool() \fR\&: Defines if the mib server shall perform cache gc automatically or leave it to the user (see gc_mibs_cache/0,1,2,3)\&. .RS 2 .LP Default is \fItrue\fR\&\&. .RE .TP 2 .B \fImibs_cache_age() = integer() > 0 \fR\&: Defines how old the entries in the cache will be allowed to become before they are GC\&'ed (assuming GC is performed)\&. Each entry in the cache is "touched" whenever it is accessed\&. .RS 2 .LP The age is defined in milliseconds\&. .RE .RS 2 .LP Default is \fI10 timutes\fR\&\&. .RE .TP 2 .B \fImibs_cache_gclimit() = infinity | integer() > 0 \fR\&: When performing a GC, this is the max number of cache entries that will be deleted from the cache\&. .RS 2 .LP The reason why its possible to set a limit, is that if the cache is large, the GC can potentially take a long time, during which the agent is "busy"\&. \fIBut\fR\& on a heavily loaded system, we also risk not removing enough elements in the cache, instead causing it to grow over time\&. This is the reason the default value is \fIinfinity\fR\&, which will ensure that \fIall\fR\& candidates are removed as soon as possible\&. .RE .RS 2 .LP Default is \fIinfinity\fR\&\&. .RE .TP 2 .B \fIerror_report_mod() = atom() \fR\&: Defines an error report module, implementing the snmpa_error_report behaviour\&. Two modules are provided with the toolkit: \fIsnmpa_error_logger\fR\& and \fIsnmpa_error_io\fR\&\&. .RS 2 .LP Default is \fIsnmpa_error_logger\fR\&\&. .RE .TP 2 .B \fIsymbolic_store() = [symbolic_store_opt()]\fR\&: \fIsymbolic_store_opt() = {verbosity, verbosity()}\fR\& .RS 2 .LP Defines options specific for the SNMP agent symbolic store\&. .RE .RS 2 .LP For defaults see the options in \fIsymbolic_store_opt()\fR\&\&. .RE .TP 2 .B \fItarget_cache() = [target_cache_opt()]\fR\&: \fItarget_cache_opt() = {verbosity, verbosity()}\fR\& .RS 2 .LP Defines options specific for the SNMP agent target cache\&. .RE .RS 2 .LP For defaults see the options in \fItarget_cache_opt()\fR\&\&. .RE .TP 2 .B \fIagent_config() = [agent_config_opt()] \fR\&: \fIagent_config_opt() = {dir, agent_config_dir()} | {force_load, force_load()} | {verbosity, verbosity()}\fR\& .RS 2 .LP Defines specific config related options for the SNMP agent\&. .RE .RS 2 .LP For defaults see the options in \fIagent_config_opt()\fR\&\&. .RE .TP 2 .B \fIagent_config_dir = dir() \fR\&: Defines where the SNMP agent configuration files are stored\&. .TP 2 .B \fIforce_load() = bool() \fR\&: If \fItrue\fR\& the configuration files are re-read during start-up, and the contents of the configuration database ignored\&. Thus, if \fItrue\fR\&, changes to the configuration database are lost upon reboot of the agent\&. .RS 2 .LP Default is \fIfalse\fR\&\&. .RE .RE .LP Manager specific config options and types: .RS 2 .TP 2 .B \fIserver() = [server_opt()] \fR\&: \fIserver_opt() = {timeout, server_timeout()} | {verbosity, verbosity()} | {cbproxy, server_cbproxy()} | {netif_sup, server_nis()}\fR\& .RS 2 .LP Specifies the options for the manager server process\&. .RE .RS 2 .LP Default is \fIsilence\fR\&\&. .RE .TP 2 .B \fIserver_timeout() = integer() \fR\&: Asynchronous request cleanup time\&. For every requests, some info is stored internally, in order to be able to deliver the reply (when it arrives) to the proper destination\&. If the reply arrives, this info will be deleted\&. But if there is no reply (in time), the info has to be deleted after the \fIbest before\fR\& time has been passed\&. This cleanup will be performed at regular intervals, defined by the \fIserver_timeout()\fR\& time\&. The information will have an \fIbest before\fR\& time, defined by the \fIExpire\fR\& time given when calling the request function (see async_get, async_get_next and async_set)\&. .RS 2 .LP Time in milli-seconds\&. .RE .RS 2 .LP Default is \fI30000\fR\&\&. .RE .TP 2 .B \fIserver_cbproxy() = temporary (default) | permanent \fR\&: This option specifies how the server will handle callback calls\&. .RS 2 .TP 2 .B \fItemporary (default)\fR\&: A temporary process will be created for each callback call\&. .TP 2 .B \fIpermanent\fR\&: With this the server will create a permanent (named) process that in effect serializes all callback calls\&. .RE .RS 2 .LP Default is \fItemporary\fR\&\&. .RE .TP 2 .B \fIserver_nis() = none (default) | {PingTO, PongTO} \fR\&: This option specifies if the server should actively supervise the net-if process\&. Note that this will only work if the used net-if process actually supports the protocol\&. See snmpm_network_interface behaviour for more info\&. .RS 2 .TP 2 .B \fInone (default)\fR\&: No active supervision of the net-if process\&. .TP 2 .B \fI{PingTO :: pos_integer(), PongTO :: pos_integer()}\fR\&: The \fIPingTO\fR\& time specifies the between a successful ping (or start) and the time when a ping message is to be sent to the net-if process (basically the time between ping)\&. .RS 2 .LP The \fIPongTO\fR\& time specifies how long time the net-if process has to respond to a ping message, with a \fIpong\fR\& message\&. Its starts counting when the ping message has been sent\&. .RE .RS 2 .LP Both times are in milli seconds\&. .RE .RE .RS 2 .LP Default is \fInone\fR\&\&. .RE .TP 2 .B \fImanager_config() = [manager_config_opt()] \fR\&: \fImanager_config_opt() = {dir, manager_config_dir()} | {db_dir, manager_db_dir()} | {db_init_error, db_init_error()} | {repair, manager_repair()} | {auto_save, manager_auto_save()} | {verbosity, verbosity()}\fR\& .RS 2 .LP Defines specific config related options for the SNMP manager\&. .RE .RS 2 .LP For defaults see the options in \fImanager_config_opt()\fR\&\&. .RE .TP 2 .B \fImanager_config_dir = dir() \fR\&: Defines where the SNMP manager configuration files are stored\&. .TP 2 .B \fImanager_db_dir = dir() \fR\&: Defines where the SNMP manager store persistent data\&. .TP 2 .B \fImanager_repair() = false | true | force \fR\&: Defines the repair option for the persistent database (if and how the table is repaired when opened)\&. .RS 2 .LP Default is \fItrue\fR\&\&. .RE .TP 2 .B \fImanager_auto_save() = integer() | infinity \fR\&: The auto save interval\&. The table is flushed to disk whenever not accessed for this amount of time\&. .RS 2 .LP Default is \fI5000\fR\&\&. .RE .TP 2 .B \fImanager_irb() = auto | user | {user, integer()} \fR\&: This option defines how the manager will handle the sending of response (acknowledgment) to received inform-requests\&. .RS 2 .TP 2 * \fIauto\fR\& - The manager will autonomously send response (acknowledgment> to inform-request messages\&. .LP .TP 2 * \fI{user, integer()}\fR\& - The manager will send response (acknowledgment) to inform-request messages when the handle_inform function completes\&. The integer is the time, in milli-seconds, that the manager will consider the stored inform-request info valid\&. .LP .TP 2 * \fIuser\fR\& - Same as \fI{user, integer()}\fR\&, except that the default time, 15 seconds (15000), is used\&. .LP .RE .RS 2 .LP See snmpm_network_interface, handle_inform and definition of the manager net if for more info\&. .RE .RS 2 .LP Default is \fIauto\fR\&\&. .RE .TP 2 .B \fImanager_mibs() = [string()] \fR\&: Specifies a list of MIBs (including path) and defines which MIBs are initially loaded into the SNMP manager\&. .RS 2 .LP Default is \fI[]\fR\&\&. .RE .TP 2 .B \fImanager_net_if() = [manager_net_if_opt()] \fR\&: \fImanager_net_if_opt() = {module, manager_net_if_module()} | {verbosity, verbosity()} | {options, manager_net_if_options()}\fR\& .RS 2 .LP Defines options specific for the SNMP manager network interface entity\&. .RE .RS 2 .LP For defaults see the options in \fImanager_net_if_opt()\fR\&\&. .RE .TP 2 .B \fImanager_net_if_options() = [manager_net_if_option()] \fR\&: \fImanager_net_if_option() = {bind_to, bind_to()} | {sndbuf, sndbuf()} | {recbuf, recbuf()} | {no_reuse, no_reuse()} | {filter, manager_net_if_filter_options()} | {extra_sock_opts, extra_socket_options()} | {inet_backend, inet | socket}\fR\& .RS 2 .LP These options are actually specific to the used module\&. The ones shown here are applicable to the default \fImanager_net_if_module()\fR\&\&. .RE .RS 2 .LP For defaults see the options in \fImanager_net_if_option()\fR\&\&. .RE .TP 2 .B \fImanager_net_if_module() = atom() \fR\&: The module which handles the network interface part for the SNMP manager\&. It must implement the snmpm_network_interface behaviour\&. .RS 2 .LP Default is \fIsnmpm_net_if\fR\&\&. .RE .TP 2 .B \fImanager_net_if_filter_options() = [manager_net_if_filter_option()] \fR\&: \fImanager_net_if_filter_option() = {module, manager_net_if_filter_module()}\fR\& .RS 2 .LP These options are actually specific to the used module\&. The ones shown here are applicable to the default \fImanager_net_if_filter_module()\fR\&\&. .RE .RS 2 .LP For defaults see the options in \fImanager_net_if_filter_option()\fR\&\&. .RE .TP 2 .B \fImanager_net_if_filter_module() = atom() \fR\&: Module which handles the network interface filter part for the SNMP manager\&. Must implement the snmpm_network_interface_filter behaviour\&. .RS 2 .LP Default is \fIsnmpm_net_if_filter\fR\&\&. .RE .TP 2 .B \fIdef_user_module() = atom() \fR\&: The module implementing the default user\&. See the snmpm_user behaviour\&. .RS 2 .LP Default is \fIsnmpm_user_default\fR\&\&. .RE .TP 2 .B \fIdef_user_data() = term() \fR\&: Data for the default user\&. Passed to the user module when calling the callback functions\&. .RS 2 .LP Default is \fIundefined\fR\&\&. .RE .RE .LP Common config types: .RS 2 .TP 2 .B \fIrestart_type() = permanent | transient | temporary\fR\&: See supervisor documentation for more info\&. .RS 2 .LP Default is \fIpermanent\fR\& for the agent and \fItransient\fR\& for the manager\&. .RE .TP 2 .B \fIdb_init_error() = terminate | create | create_db_and_dir\fR\&: Defines what to do if the agent or manager is unable to open an existing database file\&. \fIterminate\fR\& means that the agent/manager will terminate and \fIcreate\fR\& means that the agent/manager will remove the faulty file(s) and create new ones, and \fIcreate_db_and_dir\fR\& means that the agent/manager will create the database file along with any missing parent directories for the database file\&. .RS 2 .LP Default is \fIterminate\fR\&\&. .RE .TP 2 .B \fIpriority() = atom() \fR\&: Defines the Erlang priority for all SNMP processes\&. .RS 2 .LP Default is \fInormal\fR\&\&. .RE .TP 2 .B \fIversions() = [version()] \fR\&: \fIversion() = v1 | v2 | v3\fR\& .RS 2 .LP Which SNMP versions shall be accepted/used\&. .RE .RS 2 .LP Default is \fI[v1,v2,v3]\fR\&\&. .RE .TP 2 .B \fIverbosity() = silence | info | log | debug | trace \fR\&: Verbosity for a SNMP process\&. This specifies now much debug info is printed\&. .RS 2 .LP Default is \fIsilence\fR\&\&. .RE .TP 2 .B \fIbind_to() = bool() \fR\&: If \fItrue\fR\&, net_if binds to the IP address\&. If \fIfalse\fR\&, net_if listens on any IP address on the host where it is running\&. .RS 2 .LP Default is \fIfalse\fR\&\&. .RE .TP 2 .B \fIno_reuse() = bool() \fR\&: If \fItrue\fR\&, net_if does not specify that the IP and port address should be reusable\&. If \fIfalse\fR\&, the address is set to reusable\&. .RS 2 .LP Default is \fIfalse\fR\&\&. .RE .TP 2 .B \fIrecbuf() = integer() \fR\&: Receive buffer size\&. .RS 2 .LP Default value is defined by \fIgen_udp\fR\&\&. .RE .TP 2 .B \fIsndbuf() = integer() \fR\&: Send buffer size\&. .RS 2 .LP Default value is defined by \fIgen_udp\fR\&\&. .RE .TP 2 .B \fIextra_socket_options() = list() \fR\&: A list of arbitrary socket options\&. .RS 2 .LP This list is not inspected by snmp (other then checking that its a list)\&. Its the users responsibility to ensure that these are valid options and does not conflict with the "normal" options\&. .RE .RS 2 .LP Default is \fI[]\fR\&\&. .RE .TP 2 .B \fInote_store() = [note_store_opt()] \fR\&: \fInote_store_opt() = {timeout, note_store_timeout()} | {verbosity, verbosity()}\fR\& .RS 2 .LP Specifies the start-up verbosity for the SNMP note store\&. .RE .RS 2 .LP For defaults see the options in \fInote_store_opt()\fR\&\&. .RE .TP 2 .B \fInote_store_timeout() = integer() \fR\&: Note cleanup time\&. When storing a note in the note store, each note is given lifetime\&. Every \fItimeout\fR\& the note_store process performs a GC to remove the expired note\&'s\&. Time in milli-seconds\&. .RS 2 .LP Default is \fI30000\fR\&\&. .RE .TP 2 .B \fIaudit_trail_log() = [audit_trail_log_opt()] \fR\&: \fIaudit_trail_log_opt() = {type, atl_type()} | {dir, atl_dir()} | {size, atl_size()} | {repair, atl_repair()} | {seqno, atl_seqno()}\fR\& .RS 2 .LP If present, this option specifies the options for the audit trail logging\&. The \fIdisk_log\fR\& module is used to maintain a wrap log\&. If present, the \fIdir\fR\& and \fIsize\fR\& options are mandatory\&. .RE .RS 2 .LP If not present, audit trail logging is not used\&. .RE .TP 2 .B \fIatl_type() = read | write | read_write \fR\&: Specifies what type of an audit trail log should be used\&. The effect of the type is actually different for the the agent and the manager\&. .RS 2 .LP For the agent: .RE .RS 2 .TP 2 * If \fIwrite\fR\& is specified, only set requests are logged\&. .LP .TP 2 * If \fIread\fR\& is specified, only get requests are logged\&. .LP .TP 2 * If \fIread_write\fR\&, all requests are logged\&. .LP .RE .RS 2 .LP For the manager: .RE .RS 2 .TP 2 * If \fIwrite\fR\& is specified, only sent messages are logged\&. .LP .TP 2 * If \fIread\fR\& is specified, only received messages are logged\&. .LP .TP 2 * If \fIread_write\fR\&, both outgoing and incoming messages are logged\&. .LP .RE .RS 2 .LP Default is \fIread_write\fR\&\&. .RE .TP 2 .B \fIatl_dir = dir() \fR\&: Specifies where the audit trail log should be stored\&. .RS 2 .LP If \fIaudit_trail_log\fR\& specifies that logging should take place, this parameter \fImust\fR\& be defined\&. .RE .TP 2 .B \fIatl_size() = {integer(), integer()} \fR\&: Specifies the size of the audit trail log\&. This parameter is sent to \fIdisk_log\fR\&\&. .RS 2 .LP If \fIaudit_trail_log\fR\& specifies that logging should take place, this parameter \fImust\fR\& be defined\&. .RE .TP 2 .B \fIatl_repair() = true | false | truncate | snmp_repair \fR\&: Specifies if and how the audit trail log shall be repaired when opened\&. Unless this parameter has the value \fIsnmp_repair\fR\& it is sent to \fIdisk_log\fR\&\&. If, on the other hand, the value is \fIsnmp_repair\fR\&, snmp attempts to handle certain faults on its own\&. And even if it cannot repair the file, it does not truncate it directly, but instead \fImoves it aside\fR\& for later off-line analysis\&. .RS 2 .LP Default is \fItrue\fR\&\&. .RE .TP 2 .B \fIatl_seqno() = true | false \fR\&: Specifies if the audit trail log entries will be (sequence) numbered or not\&. The range of the sequence numbers are according to RFC 5424, i\&.e\&. 1 through 2147483647\&. .RS 2 .LP Default is \fIfalse\fR\&\&. .RE .RE .SH "SEE ALSO" .LP application(3erl), disk_log(3erl)