diff options
Diffstat (limited to 'lib/snmp/doc/src/snmp_manager_netif.xml')
-rw-r--r-- | lib/snmp/doc/src/snmp_manager_netif.xml | 257 |
1 files changed, 156 insertions, 101 deletions
diff --git a/lib/snmp/doc/src/snmp_manager_netif.xml b/lib/snmp/doc/src/snmp_manager_netif.xml index 0dfcdbda0d..9825f3f3bd 100644 --- a/lib/snmp/doc/src/snmp_manager_netif.xml +++ b/lib/snmp/doc/src/snmp_manager_netif.xml @@ -37,7 +37,7 @@ <icaption>The Purpose of Manager Net if</icaption> </image> - <p>The Network Interface (Net if) process delivers SNMP PDUs to the + <p>The Network Interface (Net If) process delivers SNMP PDUs to the manager server, and receives SNMP PDUs from the manager server. The most common behaviour of a Net if process is that is receives request PDU from the manager server, encodes the PDU into bytes @@ -54,131 +54,186 @@ both uses UDP as the transport protocol i.e the transport domains <c>transportDomainUdpIpv4</c> and/or <c>transportDomainUdpIpv6</c>. The difference between the two modules is that the latter is - "multi-threaded", i.e. for each message/request a new process + "multi-threaded", i.e. for each message/request a new process is created that processes the message/request and then exits. </p> + <p>There is a <c>server</c> config option, + <seealso marker="snmp_config#manager_server_nis">netif_sup</seealso> + that enables "active" Net If supervision. This is very simple mechanism. + The (supervising) process simply sends a + <seealso marker="#im_ping">ping</seealso> message and expects a + <seealso marker="#om_pong">pong</seealso> message response + (withing a specific time). + The interval between each <c>ping/pong</c> exhange is user configurable. + As is the time that is allowed for the + <seealso marker="#om_pong">pong</seealso> + message to arrive. + Both the NetIf module(s) provided with the app supports active supervision. + If a NetIf module/process is used which do not implement this, then + the server cannot be configured with active supervision. </p> + <p>It is also possible to write your own Net if process and this section describes how to do that.</p> <section> <marker id="mandatory_functions"></marker> <title>Mandatory Functions</title> - <p>A Net if process must implement the SNMP manager + <p>A Net If process must implement the SNMP manager <seealso marker="snmpm_network_interface">network interface behaviour</seealso>. </p> </section> <section> <title>Messages</title> - <p>The section <em>Messages</em> describes mandatory messages, which - Net if must send to the manager server process. - </p> + <p>The section <em>Messages</em> describes mandatory (with exception + for the ping/pong messages) messages, + which Net If must send to the manager server process. </p> <p>In this section a <c>Domain</c> field is the transport domain i.e one of <c>transportDomainUdpIpv4</c> or <c>transportDomainUdpIpv6</c>, and an <c>Addr</c> field is an <c>{</c><seealso marker="kernel:inet#type-ip_address"><c>IpAddr</c></seealso><c>,IpPort}</c> tuple.</p> - <p>Net if must send the following message when it receives an - SNMP PDU from the network that is aimed for the MasterAgent: - </p> - <pre> + <section> + <marker id="outgoing_messages"></marker> + <title>Outgoing Messages</title> + + <p>Net if must send the following message when it receives an + SNMP PDU from the network that is aimed for the MasterAgent: </p> + <pre> Server ! {snmp_pdu, Pdu, Domain, Addr} - </pre> - <list type="bulleted"> - <item> - <p><c>Pdu</c> is an SNMP PDU record, as defined in - <c>snmp_types.hrl</c>, with the SNMP request.</p> - </item> - <item> - <p><c>Domain</c> is the source transport domain. </p> - </item> - <item> - <p><c>Addr</c> is the source address. </p> - </item> - </list> - <pre> + </pre> + <list type="bulleted"> + <item> + <p><c>Pdu</c> is an SNMP PDU record, as defined in + <c>snmp_types.hrl</c>, with the SNMP request.</p> + </item> + <item> + <p><c>Domain</c> is the source transport domain. </p> + </item> + <item> + <p><c>Addr</c> is the source address. </p> + </item> + </list> + + <pre> Server ! {snmp_trap, Trap, Domain, Addr} - </pre> - <list type="bulleted"> - <item> - <p><c>Trap</c> is either an SNMP pdu record or an trappdu record, - as defined in <c>snmp_types.hrl</c>, with the SNMP request.</p> - </item> - <item> - <p><c>Domain</c> is the source transport domain. </p> - </item> - <item> - <p><c>Addr</c> is the source address. </p> - </item> - </list> - <pre> + </pre> + <list type="bulleted"> + <item> + <p><c>Trap</c> is either an SNMP pdu record or an trappdu record, + as defined in <c>snmp_types.hrl</c>, with the SNMP request.</p> + </item> + <item> + <p><c>Domain</c> is the source transport domain. </p> + </item> + <item> + <p><c>Addr</c> is the source address. </p> + </item> + </list> + + <pre> Server ! {snmp_inform, Ref, Pdu, PduMS, Domain, Addr} - </pre> - <list type="bulleted"> - <item> - <p><c>Ref</c> is either the atom <c>ignore</c> or something - that can be used to identify the inform-request (e.g. request-id). - <c>ignore</c> is used if the response (acknowledgment) to the - inform-request has already been sent (this means that the server - will not make the call to the - <seealso marker="snmpm_network_interface#inform_response">inform_response</seealso> - function). See the - <seealso marker="snmp_config#manager_irb">inform request behaviour</seealso> - configuration option for more info.</p> - </item> - <item> - <p><c>Pdu</c> is an SNMP PDU record, as defined in - <c>snmp_types.hrl</c>, with the SNMP request.</p> - </item> - <item> - <p><c>Domain</c> is the source transport domain. </p> - </item> - <item> - <p><c>Addr</c> is the source address. </p> - </item> - </list> - <pre> + </pre> + <list type="bulleted"> + <item> + <p><c>Ref</c> is either the atom <c>ignore</c> or something + that can be used to identify the inform-request (e.g. request-id). + <c>ignore</c> is used if the response (acknowledgment) to the + inform-request has already been sent (this means that the server + will not make the call to the + <seealso marker="snmpm_network_interface#inform_response">inform_response</seealso> + function). See the + <seealso marker="snmp_config#manager_irb">inform request behaviour</seealso> + configuration option for more info.</p> + </item> + <item> + <p><c>Pdu</c> is an SNMP PDU record, as defined in + <c>snmp_types.hrl</c>, with the SNMP request.</p> + </item> + <item> + <p><c>Domain</c> is the source transport domain. </p> + </item> + <item> + <p><c>Addr</c> is the source address. </p> + </item> + </list> + + <pre> Server ! {snmp_report, Data, Domain, Addr} - </pre> - <list type="bulleted"> - <item> - <p><c>Data</c> is either <c>{ok, Pdu}</c> or - <c>{error, ReqId, ReasonInfo, Pdu}</c>. Which one is used depends - on the return value from the MPD - <seealso marker="snmpm_mpd#process_msg">process_msg</seealso> function. If the MsgData is <c>ok</c>, - the first is used, and if it is <c>{error, ReqId, Reason}</c> - the latter is used.</p> - </item> - <item> - <p><c>Pdu</c> is an SNMP PDU record, as defined in - <c>snmp_types.hrl</c>, with the SNMP request.</p> - </item> - <item> - <p><c>ReqId</c> is an integer.</p> - </item> - <item> - <p><c>ReasonInfo</c> is a term().</p> - </item> - <item> - <p><c>Domain</c> is the source transport domain. </p> - </item> - <item> - <p><c>Addr</c> is the source address. </p> - </item> - </list> + </pre> + <list type="bulleted"> + <item> + <p><c>Data</c> is either <c>{ok, Pdu}</c> or + <c>{error, ReqId, ReasonInfo, Pdu}</c>. Which one is used depends + on the return value from the MPD + <seealso marker="snmpm_mpd#process_msg">process_msg</seealso> function. If the MsgData is <c>ok</c>, + the first is used, and if it is <c>{error, ReqId, Reason}</c> + the latter is used.</p> + </item> + <item> + <p><c>Pdu</c> is an SNMP PDU record, as defined in + <c>snmp_types.hrl</c>, with the SNMP request.</p> + </item> + <item> + <p><c>ReqId</c> is an integer.</p> + </item> + <item> + <p><c>ReasonInfo</c> is a term().</p> + </item> + <item> + <p><c>Domain</c> is the source transport domain. </p> + </item> + <item> + <p><c>Addr</c> is the source address. </p> + </item> + </list> + + <marker id="om_pong"></marker> + <pre> +Supervisor ! {pong, self()} + </pre> + <list type="bulleted"> + <item> + <p><c>Supervisor</c> is the process that sent the + <seealso marker="#im_ping">ping</seealso> message (see below). </p> + </item> + </list> + </section> <section> - <title>Notes</title> - <p>Since the Net if process is responsible for encoding and - decoding of SNMP messages, it must also update the relevant - counters in the SNMP group in MIB-II. It can use the functions - in the module <c>snmpm_mpd</c> for this purpose (refer to the - Reference Manual, section <c>snmp</c>, module <c>snmpm_mpd</c> - for more details). - </p> - <p>There are also some useful functions for encoding and - decoding of SNMP messages in the module <c>snmp_pdus</c>. - </p> + <marker id="incoming_messages"></marker> + <title>Incoming Messages</title> + <p>This section describes the incoming messages which a Net If + process may choose to respond to. </p> + + <list type="bulleted"> + <item> + <marker id="im_ping"></marker> + <p><c>{ping, Supervisor}</c></p> + <p>This message is sent to the Net If process by a process that + has been configured to perfor "active supervision" of the Net If + process. The Net If process should respond immediately with + a <seealso marker="#om_pong">pong</seealso> message. </p> + <list type="bulleted"> + <item> + <p><c>Supervisor</c> is a <c>pid()</c>. </p> + </item> + </list> + </item> + </list> </section> </section> + + <section> + <title>Notes</title> + <p>Since the Net if process is responsible for encoding and + decoding of SNMP messages, it must also update the relevant + counters in the SNMP group in MIB-II. It can use the functions + in the module <c>snmpm_mpd</c> for this purpose (refer to the + Reference Manual, section <c>snmp</c>, module <c>snmpm_mpd</c> + for more details). </p> + + <p>There are also some useful functions for encoding and + decoding of SNMP messages in the module <c>snmp_pdus</c>. </p> + </section> </chapter> |