diff options
Diffstat (limited to 'lib/snmp/doc/src/snmpm.xml')
-rw-r--r-- | lib/snmp/doc/src/snmpm.xml | 1043 |
1 files changed, 1043 insertions, 0 deletions
diff --git a/lib/snmp/doc/src/snmpm.xml b/lib/snmp/doc/src/snmpm.xml new file mode 100644 index 0000000000..9e7ac75daf --- /dev/null +++ b/lib/snmp/doc/src/snmpm.xml @@ -0,0 +1,1043 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE erlref SYSTEM "erlref.dtd"> + +<erlref> + <header> + <copyright> + <year>2004</year><year>2009</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + </legalnotice> + + <title>snmpm</title> + <prepared></prepared> + <responsible></responsible> + <docno></docno> + <approved></approved> + <checked></checked> + <date></date> + <rev></rev> + <file>snmpm.xml</file> + </header> + <module>snmpm</module> + <modulesummary>Interface functions to the SNMP toolkit manager</modulesummary> + <description> + <p>The module <c>snmpm</c> contains interface functions to the + SNMP manager. </p> + </description> + + <section> + <title>Common Data Types</title> + <p>The following data types are used in the functions below:</p> +<code type="none"><![CDATA[ +oid() = [byte()] - The oid() type is used to represent an ASN.1 OBJECT IDENTIFIER +snmp_reply() = {error_status(), error_index(), varbinds()} +error_status() = noError | atom() +error_index() = integer() +varbinds() = [varbind()] +atl_type() = read | write | read_write +target_name() = string() - Is a unique *non-empty* string +vars_and_vals() = [var_and_val()] +var_and_val() = {oid(), value_type(), value()} | {oid(), value()} +value_type() = o ('OBJECT IDENTIFIER') | + i ('INTEGER') | + u ('Unsigned32') | + g ('Unsigned32') | + s ('OCTET SRING') | + b ('BITS') | + ip ('IpAddress') | + op ('Opaque') | + c32 ('Counter32') | + c64 ('Counter64') | + tt ('TimeTicks') +value() = term() +]]></code> + + <marker id="monitor"></marker> + </section> + <funcs> + <func> + <name>monitor() -> Ref</name> + <fsummary>Monitor the snmp manager</fsummary> + <type> + <v>Ref = reference()</v> + </type> + <desc> + <p>Monitor the SNMP manager. In case of a crash, the calling + (monitoring) process will get a 'DOWN' message (see the erlang + module for more info). </p> + + <marker id="demonitor"></marker> + </desc> + </func> + + <func> + <name>demonitor(Ref) -> void()</name> + <fsummary>Turn off monitoring of the snmp manager</fsummary> + <type> + <v>Ref = reference()</v> + </type> + <desc> + <p>Turn off monitoring of the SNMP manager. </p> + + <marker id="notify_started"></marker> + </desc> + </func> + + <func> + <name>notify_started(Timeout) -> Pid</name> + <fsummary>Request to be notified when manager started</fsummary> + <type> + <v>Timeout = integer()</v> + <v>Pid = pid()</v> + </type> + <desc> + <p>Request a notification (message) when the SNMP manager has + started. </p> + <p>The <c>Timeout</c> is the time the request is valid. The + value has to be greater then zero. </p> + <p>The <c>Pid</c> is the process handling the supervision of the + SNMP manager start. When the manager has started a completion + message will be sent to the client from this process: + <c>{snmpm_started, Pid}</c>. If the SNMP manager was not started + in time, a timeout message will be sent to the client: + <c>{snmpm_start_timeout, Pid}</c>. </p> + <p>A client application that is dependent on the SNMP manager + will use this function in order to be notified of when the + manager has started. There are two situations when this + is useful:</p> + <list type="bulleted"> + <item> + <p>During the start of a system, when a client application + <em>could</em> start prior to the SNMP manager but is dependent + upon it, and therefor has to wait for it to start.</p> + </item> + <item> + <p>When the SNMP manager has crashed, the dependent client + application has to wait for the SNMP manager to be restarted + before it can <em>reconnect</em>.</p> + </item> + </list> + <p>The function returns the pid() of a handler process, that does + the supervision on behalf of the client application. Note that the + client application is linked to this handler. </p> + <p>This function is used in conjunction with the monitor function.</p> + + <marker id="cancel_notify_started"></marker> + </desc> + </func> + + <func> + <name>cancel_notify_started(Pid) -> void()</name> + <fsummary>Cancel request to be notified when manager started</fsummary> + <type> + <v>Pid = pid()</v> + </type> + <desc> + <p>Cancel a previous request to be notified of SNMP manager start.</p> + + <marker id="register_user"></marker> + </desc> + </func> + + <func> + <name>register_user(Id, Module, Data) -> ok | {error, Reason}</name> + <name>register_user(Id, Module, Data, DefaultAgentConfig) -> ok | {error, Reason}</name> + <fsummary>Register a user of the manager</fsummary> + <type> + <v>Id = term()</v> + <v>Module = snmpm_user()</v> + <v>Data = term()</v> + <v>DefaultAgentConfig = [default_agent_config()]</v> + <v>default_agent_config() = {Item, Val}</v> + <v>Item = community | timeout | max_message_size | version | sec_model | sec_name | sec_level</v> + <v>Val = term()</v> + <v>Reason = term()</v> + <v>snmpm_user() = Module implementing the snmpm_user behaviour</v> + </type> + <desc> + <p>Register the manager entity (=user) responsible for specific + agent(s). </p> + + <p><c>Module</c> is the callback module (snmpm_user behaviour) which + will be called whenever something happens (detected + agent, incoming reply or incoming trap/notification). + Note that this could have already been done as a + consequence of the node config. (see users.conf).</p> + + <p>The argument <c>DefaultAgentConfig</c> is used as default values when + this user register agents.</p> + + <p>The type of <c>Val</c> depends on <c>Item</c>: </p> +<code type="none"><![CDATA[ +community = string() +timeout = integer() | snmp_timer() +max_message_size = integer() +version = v1 | v2 | v3 +sec_model = any | v1 | v2c | usm +sec_name = string() +sec_level = noAuthNoPriv | authNoPriv | authPriv + ]]></code> + + <marker id="register_user_monitor"></marker> + </desc> + </func> + + <func> + <name>register_user_monitor(Id, Module, Data) -> ok | {error, Reason}</name> + <name>register_user_monitor(Id, Module, Data, DefaultAgentConfig) -> ok | {error, Reason}</name> + <fsummary>Register a monitored user of the manager</fsummary> + <type> + <v>Id = term()</v> + <v>Module = snmpm_user()</v> + <v>DefaultAgentConfig = [default_agent_config()]</v> + <v>default_agent_config() = {Item, Val}</v> + <v>Item = community | timeout | max_message_size | version | sec_model | sec_name | sec_level</v> + <v>Val = term()</v> + <v>Data = term()</v> + <v>Reason = term()</v> + <v>snmpm_user() = Module implementing the snmpm_user behaviour</v> + </type> + <desc> + <p>Register the monitored manager entity (=user) responsible + for specific agent(s). </p> + + <p>The process performing the registration will be monitored. + Which means that if that process should die, all agents + registered by that user process will be unregistered. All + outstanding requests will be canceled. </p> + + <p><c>Module</c> is the callback module (snmpm_user behaviour) which + will be called whenever something happens (detected + agent, incoming reply or incoming trap/notification). + Note that this could have already been done as a + consequence of the node config. (see users.conf).</p> + + <p>The argument <c>DefaultAgentConfig</c> is used as default values when + this user register agents.</p> + + <p>The type of <c>Val</c> depends on <c>Item</c>: </p> +<code type="none"><![CDATA[ +community = string() +timeout = integer() | snmp_timer() +max_message_size = integer() +version = v1 | v2 | v3 +sec_model = any | v1 | v2c | usm +sec_name = string() +sec_level = noAuthNoPriv | authNoPriv | authPriv + ]]></code> + + <marker id="unregister_user"></marker> + </desc> + </func> + + <func> + <name>unregister_user(Id) -> ok | {error, Reason}</name> + <fsummary>Unregister the user</fsummary> + <type> + <v>Id = term()</v> + </type> + <desc> + <p>Unregister the user.</p> + + <marker id="which_users"></marker> + </desc> + </func> + + <func> + <name>which_users() -> Users</name> + <fsummary>Get a list of all users</fsummary> + <type> + <v>Users = [UserId]</v> + <v>UserId = term()</v> + </type> + <desc> + <p>Get a list of the identities of all registered users.</p> + + <marker id="register_agent"></marker> + </desc> + </func> + + <func> + <name>register_agent(UserId, TargetName, Config) -> ok | {error, Reason}</name> + <fsummary>Register this agent</fsummary> + <type> + <v>UserId = term()</v> + <v>Addr = ip_address()</v> + <v>TargetName = target_name()</v> + <v>Config = [agent_config()]</v> + <v>agent_config() = {Item, Val}</v> + <v>Item = engine_id | address | port | community | timeout | max_message_size | version | sec_model | sec_name | sec_level</v> + <v>Val = term()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Explicitly instruct the manager to handle this agent, with + <c>UserId</c> as the responsible user. </p> + <p>Called to instruct the manager that this agent + shall be handled. This function is used when + the user knows in advance which agents the + manager shall handle. + Note that there is an alternate way to do the same thing: + Add the agent to the manager config files (see + <seealso marker="snmp_manager_config_files#agents">agents.conf</seealso>).</p> + <p><c>TargetName</c> is a non-empty string, + uniquely identifying the agent. </p> + <p>The type of <c>Val</c> depends on <c>Item</c>: </p> +<code type="none"><![CDATA[ +[mandatory] engine_id = string() +[mandatory] address = ip_address() +[optional] port = integer() +[optional] community = string() +[optional] timeout = integer() | snmp_timer() +[optional] max_message_size = integer() +[optional] version = v1 | v2 | v3 +[optional] sec_model = any | v1 | v2c | usm +[optional] sec_name = string() +[optional] sec_level = noAuthNoPriv | authNoPriv | authPriv +]]></code> + <p>Note that if no <c>Port</c> is given, the default value is used.</p> + + <marker id="unregister_agent"></marker> + </desc> + </func> + + <func> + <name>unregister_agent(UserId, TargetName) -> ok | {error, Reason}</name> + <fsummary>Unregister the user</fsummary> + <type> + <v>UserId = term()</v> + <v>TargetName = target_name()</v> + </type> + <desc> + <p>Unregister the agent.</p> + + <marker id="agent_info"></marker> + </desc> + </func> + + <func> + <name>agent_info(TargetName, Item) -> {ok, Val} | {error, Reason}</name> + <fsummary>Retrieve agent config</fsummary> + <type> + <v>TargetName = target_name()</v> + <v>Item = atom()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Retrieve agent config.</p> + + <marker id="update_agent_info"></marker> + </desc> + </func> + + <func> + <name>update_agent_info(UserId, TargetName, Item, Val) -> ok | {error, Reason}</name> + <fsummary>Update agent config</fsummary> + <type> + <v>UserId = term()</v> + <v>TargetName = target_name()</v> + <v>Item = atom()</v> + <v>Val = term()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Update agent config.</p> + + <marker id="which_agents"></marker> + </desc> + </func> + + <func> + <name>which_agents() -> Agents</name> + <name>which_agents(UserId) -> Agents</name> + <fsummary>List the registered agents</fsummary> + <type> + <v>UserId = term()</v> + <v>Agents = [TargetName]</v> + <v>TargetName = target_name()</v> + </type> + <desc> + <p>Get a list of all registered agents or all agents registered + by a specific user.</p> + + <marker id="register_usm_user"></marker> + </desc> + </func> + + <func> + <name>register_usm_user(EngineID, UserName, Conf) -> ok | {error, Reason}</name> + <fsummary>Register this USM user</fsummary> + <type> + <v>EngineID = string()</v> + <v>UserName = string()</v> + <v>Conf = [usm_config()]</v> + <v>usm_config() = {Item, Val}</v> + <v>Item = sec_name | auth | auth_key | priv | priv_key</v> + <v>Val = term()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Explicitly instruct the manager to handle this USM user. + Note that there is an alternate way to do the same thing: + Add the usm user to the manager config files (see + <seealso marker="snmp_manager_config_files#usm_user">usm.conf</seealso>).</p> + <p>The type of <c>Val</c> depends on <c>Item</c>: </p> +<code type="none"><![CDATA[ +sec_name = string() +auth = usmNoAuthProtocol | usmHMACMD5AuthProtocol | usmHMACSHAAuthProtocoltimeout +auth_key = [integer()] (length 16 if auth = usmHMACMD5AuthProtocol, + length 20 if auth = usmHMACSHAAuthProtocol) +priv = usmNoPrivProtocol | usmDESPrivProtocol | usmAesCfb128Protocol +priv_key = [integer()] (length is 16 if priv = usmDESPrivProtocol | usmAesCfb128Protocol). +]]></code> + + <marker id="unregister_usm_user"></marker> + </desc> + </func> + + <func> + <name>unregister_usm_user(EngineID, UserName) -> ok | {error, Reason}</name> + <fsummary>Unregister this USM user</fsummary> + <type> + <v>EngineID = string()</v> + <v>UserName = string()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Unregister this USM user.</p> + + <marker id="which_usm_users1"></marker> + </desc> + </func> + + <func> + <name>usm_user_info(EngineID, UserName, Item) -> {ok, Val} | {error, Reason}</name> + <fsummary>Retrieve usm user config</fsummary> + <type> + <v>EngineID = string()</v> + <v>UsmName = string()</v> + <v>Item = sec_name | auth | auth_key | priv | priv_key</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Retrieve usm user config.</p> + + <marker id="update_usm_user_info"></marker> + </desc> + </func> + + <func> + <name>update_usm_user_info(EngineID, UserName, Item, Val) -> ok | {error, Reason}</name> + <fsummary>Update agent config</fsummary> + <type> + <v>EngineID = string()</v> + <v>UsmName = string()</v> + <v>Item = sec_name | auth | auth_key | priv | priv_key</v> + <v>Val = term()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Update usm user config.</p> + + <marker id="which_usm_users"></marker> + </desc> + </func> + + <func> + <name>which_usm_users() -> UsmUsers</name> + <fsummary>List all the registered usm users</fsummary> + <type> + <v>UsmUsers = [{EngineID,UserName}]</v> + <v>EngineID = string()</v> + <v>UsmName = string()</v> + </type> + <desc> + <p>Get a list of all registered usm users.</p> + + <marker id="which_usm_users2"></marker> + </desc> + </func> + + <func> + <name>which_usm_users(EngineID) -> UsmUsers</name> + <fsummary>List the registered usm users</fsummary> + <type> + <v>UsmUsers = [UserName]</v> + <v>UserName = string()</v> + </type> + <desc> + <p>Get a list of all registered usm users with engine-id + <c>EngineID</c>.</p> + + <marker id="sync_get"></marker> + </desc> + </func> + + <func> + <name>sync_get(UserId, TargetName, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_get(UserId, TargetName, ContextName, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_get(UserId, TargetName, Oids, Timeout) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_get(UserId, TargetName, ContextName, Oids, Timeout) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_get(UserId, TargetName, ContextName, Oids, Timeout, ExtraInfo) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <fsummary>Synchronous <c>get-request</c></fsummary> + <type> + <v>UserId = term()</v> + <v>TargetName = target_name()</v> + <v>ContextName = string()</v> + <v>Oids = [oid()]</v> + <v>Timeout = integer()</v> + <v>ExtraInfo = term()</v> + <v>SnmpReply = snmp_reply()</v> + <v>Remaining = integer()</v> + <v>Reason = {send_failed, ReqId, R} | {invalid_sec_info, SecInfo, SnmpInfo} | term()</v> + <v>R = term()</v> + <v>SecInfo = [sec_info()]</v> + <v>sec_info() = {sec_tag(), ExpectedValue, ReceivedValue}</v> + <v>sec_tag() = atom()</v> + <v>ExpectedValue = ReceivedValue = term()</v> + <v>SnmpInfo = term()</v> + </type> + <desc> + <p>Synchronous <c>get-request</c>. </p> + <p><c>Remaining</c> is the remaining time of the given or + default timeout time.</p> + <p>When <em>Reason</em> is <em>{send_failed, ...}</em> it means that + the net_if process failed to send the message. This could happen + because of any number of reasons, i.e. encoding error. <em>R</em> + is the actual reason in this case. </p> + <p><c>ExtraInfo</c> is an opaque data structure passed on to + the net-if process. The net-if process included in this + application makes no use of this info, so the only use for it + in such a configuration (when using the built in net-if) would + be tracing.</p> + <p>For <c>SnmpInfo</c>, see the user callback function + <seealso marker="snmpm_user#handle_report">handle_report</seealso>.</p> + + <marker id="async_get"></marker> + </desc> + </func> + + <func> + <name>async_get(UserId, TargetName, Oids) -> {ok, ReqId} | {error, Reason}</name> + <name>async_get(UserId, TargetName, ContextName, Oids) -> {ok, ReqId} | {error, Reason}</name> + <name>async_get(UserId, TargetName, Oids, Expire) -> {ok, ReqId} | {error, Reason}</name> + <name>async_get(UserId, TargetName, ContextName, Oids, Expire) -> {ok, ReqId} | {error, Reason}</name> + <name>async_get(UserId, TargetName, ContextName, Oids, Expire, ExtraInfo) -> {ok, ReqId} | {error, Reason}</name> + <fsummary>Asynchronous <c>get-request</c></fsummary> + <type> + <v>UserId = term()</v> + <v>TargetName = target_name()</v> + <v>ContextName = string()</v> + <v>Oids = [oid()]</v> + <v>Expire = integer()</v> + <v>ExtraInfo = term()</v> + <v>ReqId = term()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Asynchronous <c>get-request</c>.</p> + <p>The reply, if it arrives, will be delivered to the user + through a call to the snmpm_user callback function + <c>handle_pdu</c>.</p> + <p>The <c>Expire</c> time indicates for how long the request is + valid (after which the manager is free to delete it).</p> + <p><c>ExtraInfo</c> is an opaque data structure passed on to + the net-if process. The net-if process included in this + application makes no use of this info, so the only use for it + in such a configuration (when using the built in net-if) would + be tracing.</p> + + <marker id="sync_get_next"></marker> + </desc> + </func> + + <func> + <name>sync_get_next(UserId, TargetName, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_get_next(UserId, TargetName, ContextName, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_get_next(UserId, TargetName, Oids, Timeout) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_get_next(UserId, TargetName, ContextName, Oids, Timeout) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_get_next(UserId, TargetName, ContextName, Oids, Timeout, ExtraInfo) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <fsummary>Synchronous <c>get-next-request</c></fsummary> + <type> + <v>UserId = term()</v> + <v>TargetName = target_name()</v> + <v>ContextName = string()</v> + <v>Oids = [oid()]</v> + <v>Timeout = integer()</v> + <v>ExtraInfo = term()</v> + <v>SnmpReply = snmp_reply()</v> + <v>Remaining = integer()</v> + <v>Reason = {send_failed, ReqId, R} | {invalid_sec_info, SecInfo, SnmpInfo} | term()</v> + <v>R = term()</v> + </type> + <desc> + <p>Synchronous <c>get-next-request</c>. </p> + <p><c>Remaining</c> time of the given or default timeout time.</p> + <p>When <em>Reason</em> is <em>{send_failed, ...}</em> it means that + the net_if process failed to send the message. This could happen + because of any number of reasons, i.e. encoding error. <em>R</em> + is the actual reason in this case. </p> + <p><c>ExtraInfo</c> is an opaque data structure passed on to + the net-if process. The net-if process included in this + application makes no use of this info, so the only use for it + in such a configuration (when using the built in net-if) would + be tracing.</p> + + <marker id="async_get_next"></marker> + </desc> + </func> + + <func> + <name>async_get_next(UserId, TargetName, Oids) -> {ok, ReqId} | {error, Reason}</name> + <name>async_get_next(UserId, TargetName, ContextName, Oids) -> {ok, ReqId} | {error, Reason}</name> + <name>async_get_next(UserId, TargetName, Oids, Expire) -> {ok, ReqId} | {error, Reason}</name> + <name>async_get_next(UserId, TargetName, ContextName, Oids, Expire) -> {ok, ReqId} | {error, Reason}</name> + <name>async_get_next(UserId, TargetName, ContextName, Oids, Expire, ExtraInfo) -> {ok, ReqId} | {error, Reason}</name> + <fsummary>Asynchronous <c>get-next-request</c></fsummary> + <type> + <v>UserId = term()</v> + <v>TargetName = target_name()</v> + <v>ContextName = string()</v> + <v>Oids = [oid()]</v> + <v>Expire = integer()</v> + <v>ExtraInfo = term()</v> + <v>ReqId = integer()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Asynchronous <c>get-next-request</c>. </p> + <p>The reply will be delivered to the user through a call + to the snmpm_user callback function <c>handle_pdu</c>.</p> + <p>The <c>Expire</c> time indicates for how long the request is + valid (after which the manager is free to delete it).</p> + + <marker id="sync_set"></marker> + </desc> + </func> + + <func> + <name>sync_set(UserId, TargetName, VarsAndVals) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_set(UserId, TargetName, ContextName, VarsAndVals) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_set(UserId, TargetName, VarsAndVals, Timeout) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_set(UserId, TargetName, ContextName, VarsAndVals, Timeout) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_set(UserId, TargetName, ContextName, VarsAndVals, Timeout, ExtraInfo) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <fsummary>Synchronous <c>set-request</c></fsummary> + <type> + <v>UserId = term()</v> + <v>TargetName = target_name()</v> + <v>ContextName = string()</v> + <v>VarsAndVals = vars_and_vals()</v> + <v>Timeout = integer()</v> + <v>ExtraInfo = term()</v> + <v>SnmpReply = snmp_reply()</v> + <v>Remaining = integer()</v> + <v>Reason = {send_failed, ReqId, ActualReason} | {invalid_sec_info, SecInfo, SnmpInfo} | term()</v> + <v>ActualReason = term()</v> + </type> + <desc> + <p>Synchronous <c>set-request</c>. </p> + <p><c>Remaining</c> time of the given or default timeout time.</p> + <p>When <em>Reason</em> is <em>{send_failed, ...}</em> it means that + the net_if process failed to send the message. This could happen + because of any number of reasons, i.e. encoding error. <em>R</em> + is the actual reason in this case. </p> + <p>When <em>var_and_val()</em> is <em>{oid(), value()}</em>, the + manager makes an educated guess based on the loaded mibs. </p> + <p><c>ExtraInfo</c> is an opaque data structure passed on to + the net-if process. The net-if process included in this + application makes no use of this info, so the only use for it + in such a configuration (when using the built in net-if) would + be tracing.</p> + + <marker id="async_set"></marker> + </desc> + </func> + + <func> + <name>async_set(UserId, TargetName, VarsAndVals) -> {ok, ReqId} | {error, Reason}</name> + <name>async_set(UserId, TargetName, ContextName, VarsAndVals) -> {ok, ReqId} | {error, Reason}</name> + <name>async_set(UserId, TargetName, VarsAndVals, Expire) -> {ok, ReqId} | {error, Reason}</name> + <name>async_set(UserId, TargetName, ContextName, VarsAndVals, Expire) -> {ok, ReqId} | {error, Reason}</name> + <name>async_set(UserId, TargetName, ContextName, VarsAndVals, Expire, ExtraInfo) -> {ok, ReqId} | {error, Reason}</name> + <fsummary>Asynchronous <c>set-request</c></fsummary> + <type> + <v>UserId = term()</v> + <v>TargetName = target_name()</v> + <v>VarsAndVals = vars_and_vals()</v> + <v>Expire = integer()</v> + <v>ExtraInfo = term()</v> + <v>ReqId = term()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Asynchronous <c>set-request</c>. </p> + <p>The reply will be delivered to the user through a call + to the snmpm_user callback function <c>handle_pdu</c>.</p> + <p>The <c>Expire</c> time indicates for how long the request is + valid (after which the manager is free to delete it).</p> + <p>When <em>var_and_val()</em> is <em>{oid(), value()}</em>, the + manager makes an educated guess based on the loaded mibs. </p> + <p><c>ExtraInfo</c> is an opaque data structure passed on to + the net-if process. The net-if process included in this + application makes no use of this info, so the only use for it + in such a configuration (when using the built in net-if) would + be tracing.</p> + + <marker id="sync_get_bulk"></marker> + </desc> + </func> + + <func> + <name>sync_get_bulk(UserId, TragetName, NonRep, MaxRep, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_get_bulk(UserId, TragetName, NonRep, MaxRep, ContextName, Oids) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_get_bulk(UserId, TragetName, NonRep, MaxRep, Oids, Timeout) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_get_bulk(UserId, TragetName, NonRep, MaxRep, ContextName, Oids, Timeout) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <name>sync_get_bulk(UserId, TragetName, NonRep, MaxRep, ContextName, Oids, Timeout, ExtraInfo) -> {ok, SnmpReply, Remaining} | {error, Reason}</name> + <fsummary>Synchronous <c>get-bulk-request</c></fsummary> + <type> + <v>UserId = term()</v> + <v>TargetName = target_name()</v> + <v>NonRep = integer()</v> + <v>MaxRep = integer()</v> + <v>ContextName = string()</v> + <v>Oids = [oid()]</v> + <v>Timeout = integer()</v> + <v>ExtraInfo = term()</v> + <v>SnmpReply = snmp_reply()</v> + <v>Remaining = integer()</v> + <v>Reason = {send_failed, ReqId, R} | {invalid_sec_info, SecInfo, SnmpInfo} | term()</v> + </type> + <desc> + <p>Synchronous <c>get-bulk-request</c> (See RFC1905).</p> + <p><c>Remaining</c> time of the given or default timeout time.</p> + <p>When <em>Reason</em> is <em>{send_failed, ...}</em> it means that + the net_if process failed to send the message. This could happen + because of any number of reasons, i.e. encoding error. <em>R</em> + is the actual reason in this case. </p> + <p><c>ExtraInfo</c> is an opaque data structure passed on to + the net-if process. The net-if process included in this + application makes no use of this info, so the only use for it + in such a configuration (when using the built in net-if) would + be tracing.</p> + + <marker id="async_get_bulk"></marker> + </desc> + </func> + + <func> + <name>async_get_bulk(UserId, TargetName, NonRep, MaxRep, Oids) -> {ok, ReqId} | {error, Reason}</name> + <name>async_get_bulk(UserId, TargetName, NonRep, MaxRep, ContextName, Oids) -> {ok, ReqId} | {error, Reason}</name> + <name>async_get_bulk(UserId, TargetName, NonRep, MaxRep, Oids, Expire) -> {ok, ReqId} | {error, Reason}</name> + <name>async_get_bulk(UserId, TargetName, NonRep, MaxRep, ContextName, Oids, Expire) -> {ok, ReqId} | {error, Reason}</name> + <name>async_get_bulk(UserId, TargetName, NonRep, MaxRep, ContextName, Oids, Expire, ExtraInfo) -> {ok, ReqId} | {error, Reason}</name> + <fsummary>Asynchronous <c>get-bulk-request</c></fsummary> + <type> + <v>UserId = term()</v> + <v>TargetName = target_name()</v> + <v>NonRep = integer()</v> + <v>MaxRep = integer()</v> + <v>ContextName = string()</v> + <v>Oids = [oid()]</v> + <v>Expire = integer()</v> + <v>ExtraInfo = term()</v> + <v>ReqId = integer()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Asynchronous <c>get-bulk-request</c> (See RFC1905).</p> + <p>The reply will be delivered to the user through a call + to the snmpm_user callback function <c>handle_pdu</c>.</p> + <p>The <c>Expire</c> time indicates for how long the request is + valid (after which the manager is free to delete it).</p> + + <marker id="cancel_async_request"></marker> + </desc> + </func> + + <func> + <name>cancel_async_request(UserId, ReqId) -> ok | {error, Reason}</name> + <fsummary>Cancel a asynchronous request</fsummary> + <type> + <v>UserId = term()</v> + <v>ReqId = term()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Cancel a previous asynchronous request.</p> + + <marker id="log_to_txt"></marker> + </desc> + </func> + + <func> + <name>log_to_txt(LogDir, Mibs)</name> + <name>log_to_txt(LogDir, Mibs, OutFile) -> ok | {error, Reason}</name> + <name>log_to_txt(LogDir, Mibs, OutFile, LogName) -> ok | {error, Reason}</name> + <name>log_to_txt(LogDir, Mibs, OutFile, LogName, LogFile) -> ok | {error, Reason}</name> + <name>log_to_txt(LogDir, Mibs, OutFile, LogName, LogFile, Start) -> ok | {error, Reason}</name> + <name>log_to_txt(LogDir, Mibs, OutFile, LogName, LogFile, Start, Stop) -> ok | {error, Reason}</name> + <fsummary>Convert an Audit Trail Log to text format</fsummary> + <type> + <v>LogDir = string()</v> + <v>Mibs = [MibName]</v> + <v>MibName = string()</v> + <v>OutFile = string()</v> + <v>LogName = string()</v> + <v>LogFile = string()</v> + <v>Start = Stop = null | datetime() | {local_time,datetime()} | {universal_time,datetime()} </v> + <v>Reason = disk_log_open_error() | file_open_error() | term()</v> + <v>disk_log_open_error() = {LogName, term()}</v> + <v>file_open_error() = {OutFile, term()}</v> + </type> + <desc> + <p>Converts an Audit Trail Log to a readable text file. + <c>OutFile</c> defaults to "./snmpm_log.txt". + <c>LogName</c> defaults to "snmpm_log". + <c>LogFile</c> defaults to "snmpm.log". + See <seealso marker="snmp#log_to_txt">snmp:log_to_txt</seealso> + for more info.</p> + + <marker id="change_log_size"></marker> + </desc> + </func> + + <func> + <name>change_log_size(NewSize) -> ok | {error, Reason}</name> + <fsummary>Change the size of the Audit Trail Log</fsummary> + <type> + <v>NewSize = {MaxBytes, MaxFiles}</v> + <v>MaxBytes = integer()</v> + <v>MaxFiles = integer()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Changes the log size of the Audit Trail Log. The application must + be configured to use the audit trail log function. Please refer to + disk_log(3) in Kernel Reference Manual for a description of how to + change the log size. + </p> + <p>The change is permanent, as long as the log is not deleted. + That means, the log size is remembered across reboots.</p> + + <marker id="set_log_type"></marker> + </desc> + </func> + + <func> + <name>set_log_type(NewType) -> {ok, OldType} | {error, Reason}</name> + <fsummary>Change the Audit Trail Log type</fsummary> + <type> + <v>NewType = OldType = atl_type()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Changes the run-time Audit Trail log type. </p> + <p>Note that this has no effect on the application configuration as + defined by configuration files, so a node restart will revert the + config to whatever is in those files. </p> + <p>This function is primarily useful in testing/debugging + scenarios. </p> + + <marker id="load_mib"></marker> + </desc> + </func> + + <func> + <name>load_mib(Mib) -> ok | {error, Reason}</name> + <fsummary>Load a MIB into the manager</fsummary> + <type> + <v>Mib = MibName</v> + <v>MibName = string()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Load a <c>Mib</c> into the manager. The <c>MibName</c> is the + name of the Mib, including the path to where the compiled mib is + found. For example,</p> + <code type="none"> + Dir = code:priv_dir(my_app) ++ "/mibs/", + snmpm:load_mib(Dir ++ "MY-MIB"). + </code> + + <marker id="unload_mib"></marker> + </desc> + </func> + + <func> + <name>unload_mib(Mib) -> ok | {error, Reason}</name> + <fsummary>Unload a MIB from the manager</fsummary> + <type> + <v>Mib = MibName</v> + <v>MibName = string()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Unload a <c>Mib</c> from the manager. The <c>MibName</c> is the + name of the Mib, including the path to where the compiled mib is + found. For example,</p> + <code type="none"> + Dir = code:priv_dir(my_app) ++ "/mibs/", + snmpm:unload_mib(Dir ++ "MY-MIB"). + </code> + + <marker id="which_mibs"></marker> + </desc> + </func> + + <func> + <name>which_mibs() -> Mibs</name> + <fsummary>Which mibs are loaded into the manager</fsummary> + <type> + <v>Mibs = [{MibName, MibFile}]</v> + <v>MibName = atom()</v> + <v>MibFile = string()</v> + </type> + <desc> + <p>Get a list of all the mib's loaded into the manager.</p> + + <marker id="name_to_oid"></marker> + </desc> + </func> + + <func> + <name>name_to_oid(Name) -> {ok, Oids} | {error, Reason}</name> + <fsummary>Get all the possible oid's for an alias-name</fsummary> + <type> + <v>Name = atom()</v> + <v>Oids = [oid()]</v> + </type> + <desc> + <p>Transform a alias-name to it's oid.</p> + <p>Note that an alias-name is only unique within the mib, so + when loading several mib's into a manager, there might be + several instances of the same aliasname.</p> + + <marker id="oid_to_name"></marker> + </desc> + </func> + + <func> + <name>oid_to_name(Oid) -> {ok, Name} | {error, Reason}</name> + <fsummary>Get the alias-name of the oid </fsummary> + <type> + <v>Oid = oid()</v> + <v>Name = atom()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Transform a oid to it's aliasname.</p> + + <marker id="oid_to_type"></marker> + </desc> + </func> + + <func> + <name>oid_to_type(Oid) -> {ok, Type} | {error, Reason}</name> + <fsummary>Get the type of the the oid</fsummary> + <type> + <v>Oid = oid()</v> + <v>Type = atom()</v> + <v>Reason = term()</v> + </type> + <desc> + <p>Retreive the type (asn1 bertype) of an oid.</p> + + <marker id="backup"></marker> + </desc> + </func> + + <func> + <name>backup(BackupDir) -> ok | {error, Reason}</name> + <fsummary>Backup manager data</fsummary> + <type> + <v>BackupDir = string()</v> + </type> + <desc> + <p>Backup persistent data handled by the manager. </p> + <p>BackupDir cannot be identical to DbDir. </p> + + <marker id="info"></marker> + </desc> + </func> + + <func> + <name>info() -> [{Key, Value}]</name> + <fsummary>Return information about the manager</fsummary> + <type> + <v>Key = atom()</v> + <v>Value = term()</v> + </type> + <desc> + <p>Returns a list (a dictionary) containing information about + the manager. Information includes statistics counters, + miscellaneous info about each process (e.g. memory allocation), + and so on.</p> + + <marker id="verbosity"></marker> + </desc> + </func> + + <func> + <name>verbosity(Ref, Verbosity) -> void()</name> + <fsummary>Assign a new verbosity for the process</fsummary> + <type> + <v>Ref = server | config | net_if | note_store | all</v> + <v>Verbosity = verbosity()</v> + <v>verbosity() = silence | info | log | debug | trace </v> + </type> + <desc> + <p>Sets verbosity for the designated process. For the lowest + verbosity <c>silence</c>, nothing is printed. The higher the + verbosity, the more is printed.</p> + + <marker id="format_reason"></marker> + </desc> + </func> + + <func> + <name>format_reason(Reason) -> string()</name> + <name>format_reason(Prefix, Reason) -> string()</name> + <fsummary>Assign a new verbosity for the process</fsummary> + <type> + <v>Reason = term()</v> + <v>Prefix = integer() | string()</v> + </type> + <desc> + <p>This utility function is used to create a formatted + (pretty printable) string of the error reason received + from either: + </p> + <list type="bulleted"> + <item> + <p>The <c>Reason</c> returned value if any of the + sync/async get/get-next/set/get-bulk + functions returns <c>{error, Reason}</c></p> + </item> + <item> + <p>The <c>Reason</c> parameter in the + <seealso marker="snmpm_user#handle_error">handle_error</seealso> user callback function.</p> + </item> + </list> + <p><c>Prefix</c> should either be an indention string + (e.g. a list of spaces) or a positive integer (which will be used + to create the indention string of that length).</p> + </desc> + </func> + </funcs> + + +</erlref> + |