diff options
Diffstat (limited to 'lib/snmp/doc')
| -rw-r--r-- | lib/snmp/doc/src/notes.xml | 104 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmp_agent_config_files.xml | 56 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmp_agent_netif.xml | 34 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmp_manager_config_files.xml | 63 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmp_manager_netif.xml | 45 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmp_target_mib.xml | 22 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmpa_conf.xml | 66 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmpa_mpd.xml | 67 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmpa_network_interface_filter.xml | 40 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmpa_notification_delivery_info_receiver.xml | 32 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmpm.xml | 14 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmpm_conf.xml | 8 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmpm_mpd.xml | 14 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmpm_network_interface.xml | 12 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmpm_network_interface_filter.xml | 34 | ||||
| -rw-r--r-- | lib/snmp/doc/src/snmpm_user.xml | 15 | 
16 files changed, 458 insertions, 168 deletions
| diff --git a/lib/snmp/doc/src/notes.xml b/lib/snmp/doc/src/notes.xml index 06674095f2..fd307ef824 100644 --- a/lib/snmp/doc/src/notes.xml +++ b/lib/snmp/doc/src/notes.xml @@ -33,7 +33,109 @@    </header> -  <section><title>SNMP 4.25.1</title> +  <section> +    <title>SNMP Development Toolkit 5.1.1</title> +    <p>Version 5.1.1 supports code replacement in runtime from/to +    version 5.1. </p> + +    <section> +      <title>Improvements and new features</title> +<!-- +      <p>-</p> +--> + +      <list type="bulleted"> +        <item> +          <p>[compiler] Refinement of type Opaque was not allowed. </p> +          <p>MIB constructs such as '<c>SYNTAX Opaque (SIZE(0..65535))</c>'  +	  was previously not allowed,  +	  see the standard <c>ALARM-MIB</c> for eaxmple. </p> +          <p>Own Id: OTP-12066</p> +          <p>Aux Id: Seq 12669</p> +        </item> + +      </list> + +    </section> + +    <section> +      <title>Fixed Bugs and Malfunctions</title> +      <p>-</p> + +<!-- +      <list type="bulleted"> +        <item> +          <p>[agent]  +	  see <seealso marker="snmpa#load_mibs">load_mibs</seealso> and  +	  <seealso marker="snmpa#unload_mibs">unload_mibs</seealso>. </p> +          <p>Own Id: OTP-11216</p> +        </item> + +      </list> +--> + +    </section> + +    <section> +      <title>Incompatibilities</title> +      <p>-</p> + +<!-- +      <list type="bulleted"> +        <item> +          <p>[manager] The old Addr-and-Port based API functions, previously +	  long deprecated and marked for deletion in R16B, has now been +	  removed. </p> +          <p>Own Id: OTP-10027</p> +        </item> + +      </list> +--> +    </section> +  </section> <!-- 5.1.1 --> + + + +  <section><title>SNMP 5.1</title> + +    <section><title>Improvements and New Features</title> +      <list> +        <item> +          <p> +	    The SNMP manager has been enhanced with dual stack +	    IPv4+IPv6, as the agent just was. The documentation is +	    also now updated for both the agent and the manager.</p> +          <p> +	    Own Id: OTP-12108 Aux Id: OTP-12020 </p> +        </item> +      </list> +    </section> + +</section> + +<section><title>SNMP 5.0</title> + +    <section><title>Improvements and New Features</title> +      <list> +        <item> +          <p> +	    SNMP has been improved to handle IPv6. The agent can +	    handle dual stack IPv4 + IPv6, but not yet the manager. +	    The documentation also still lags behind... If you do +	    such advanced stuff like writing a custom net_if module, +	    the interface for it has changed, but other than that +	    SNMP is backwards compatible.</p> +          <p> +	    *** POTENTIAL INCOMPATIBILITY ***</p> +          <p> +	    Own Id: OTP-12020 Aux Id: OTP-11518 </p> +        </item> +      </list> +    </section> + +</section> + +<section><title>SNMP 4.25.1</title>      <section><title>Fixed Bugs and Malfunctions</title>        <list> diff --git a/lib/snmp/doc/src/snmp_agent_config_files.xml b/lib/snmp/doc/src/snmp_agent_config_files.xml index 1e8e879814..1e938c0dc8 100644 --- a/lib/snmp/doc/src/snmp_agent_config_files.xml +++ b/lib/snmp/doc/src/snmp_agent_config_files.xml @@ -4,7 +4,7 @@  <chapter>    <header>      <copyright> -      <year>1997</year><year>2013</year> +      <year>1997</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -102,20 +102,41 @@  	<p><c>AgentVariable</c> is one of the variables is  	SNMP-FRAMEWORK-MIB or one of the internal variables  	<c>intAgentUDPPort</c>, which defines which UDP port the agent -	listens to, or <c>intAgentIpAddress</c>, which defines the IP -	address of the agent. </p> +	listens to, or <c>intAgentTransports</c>, which defines the +	transport domains and addresses of the agent. </p>        </item>        <item>  	<p><c>Value</c> is the value for the variable.</p>        </item>      </list> -    <p>The following example shows a <c>agent.conf</c> file: </p> +    <p>The following example shows an <c>agent.conf</c> file: </p>      <pre>  {intAgentUDPPort, 4000}. -{intAgentIpAddress,[141,213,11,24]}. +{intAgentTransports, + [{transportDomainUdpIpv4, {141,213,11,24}}, +  {transportDomainUdpIpv6, {0,0,0,0,0,0,0,1}}]}.  {snmpEngineID, "mbj's engine"}.  {snmpEngineMaxPacketSize, 484}.      </pre> +    <p>The value of <c>intAgentTransports</c> is a list of +    <c>{Domain, Addr}</c> tuples, where <c>Domain</c> +    is either <c>transportDomainUdpIpv4</c> or <c>transportDomainUdpIpv6</c>, +    and <c>Addr</c> is the address in the domain. +    <c>Addr</c> can be specified either as an +    <c>IpAddr</c> or as an <c>{IpAddr, IpPort}</c> tuple. +    <c>IpAddr</c> is either a regular Erlang/OTP +    <seealso marker="kernel:inet#type-ip_address"><c>ip_address()</c></seealso> +    or a traditional SNMP integer list and <c>IpPort</c> is an integer. +    </p> + +    <p>When the <c>Addr</c> value does not contain a port number, +    the value of <c>intAgentUDPPort</c> is used.</p> + +    <p>The legacy and intermediate variables <c>intAgentIpAddress</c> +    and <c>intAgentTransportDomain</c> are still supported so old +    <c>agent.conf</c> files will work. +    </p> +      <p>The value of <c>snmpEngineID</c> is a string, which for a       deployed agent should have a very specific structure. See      RFC 2271/2571 for details.</p> @@ -362,9 +383,9 @@      SNMP-TARGET-MIB and <c>snmpTargetAddrExtTable</c> in the       SNMP-COMMUNITY-MIB. </p>      <p>Each entry is a term: </p> -    <p><c>{TargetName, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId}.</c> <br></br> or <br></br>  -<c>{TargetName, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize}.</c> <br></br> or  <br></br> -<c>{TargetName, Domain, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize}.</c> </p> +    <p><c>{TargetName, Domain, Addr, Timeout, RetryCount, TagList, ParamsName, EngineId}.</c> +    <br></br> or <br></br> +    <c>{TargetName, Domain, Addr, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize}.</c> </p>      <list type="bulleted">        <item>          <p><c>TargetName</c> is a unique non-empty string. </p> @@ -374,11 +395,14 @@  	<c>transportDomainUdpIpv4</c> | <c>transportDomainUdpIpv6</c>. </p>        </item>        <item> -        <p><c>Ip</c> is a list of four or eight integers. </p> -      </item> -      <item> -        <p><c>Udp</c> is an integer. </p> +	<p><c>Addr</c> is either an <c>IpAddr</c> or +	an <c>{IpAddr, IpPort}</c> tuple. <c>IpAddr</c> is either +	a regular Erlang/OTP +	<seealso marker="kernel:inet#type-ip_address"><c>ip_address()</c></seealso> +	or a traditional SNMP integer list, and <c>IpPort</c> is an integer.</p> +	<p>If <c>IpPort</c> is omitted <c>162</c> is used.</p>        </item> +        <item>          <p><c>Timeout</c> is an integer. </p>        </item> @@ -395,13 +419,17 @@          <p><c>EngineId</c> is a string or the atom <c>discovery</c>. </p>        </item>        <item> -        <p><c>TMask</c> is a list of integer() of size 0,  -	size 6 or size 10 (default: []). </p> +	<p><c>TMask</c> is specified just as <c>Addr</c> or as <c>[]</c>. +	Note in particular that using a list of 6 bytes	for IPv4 +	or 8 words plus 2 bytes for IPv6 are still valid address formats +	so old configurations will work.</p>        </item>        <item>          <p><c>MaxMessageSize</c> is an integer (default: 2048). </p>        </item>      </list> +    <p>The old tuple formats with <c>Ip</c> address and <c>Udp</c> +    port number found in old configurations still work.</p>      <p>Note that if <c>EngineId</c> has the value <c>discovery</c>,       the agent cannot send      <c>inform</c> messages to that manager until it has performed the diff --git a/lib/snmp/doc/src/snmp_agent_netif.xml b/lib/snmp/doc/src/snmp_agent_netif.xml index fccfc8857a..a9ce05e757 100644 --- a/lib/snmp/doc/src/snmp_agent_netif.xml +++ b/lib/snmp/doc/src/snmp_agent_netif.xml @@ -4,7 +4,7 @@  <chapter>    <header>      <copyright> -      <year>1997</year><year>2013</year> +      <year>1997</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -51,7 +51,8 @@      </p>    <p>It is also possible to write your own Net if process. The default      Net if process is implemented in the module <c>snmpa_net_if</c> and -    it uses UDP as the transport protocol. +    it uses UDP as the transport protocol i.e the transport domains +    <c>transportDomainUdpIpv4</c> and/or <c>transportDomainUdpIpv6</c>.      </p>    <p>This section describes how to write a Net if process.      </p> @@ -70,6 +71,12 @@      <p>The section <em>Messages</em> describes mandatory messages, which        Net if must send and be able to receive.             </p> +    <p>In this section an <c>Address</c> field is a +    <c>{Domain, Addr}</c> tuple where <c>Domain</c> is +    <c>transportDomainUdpIpv4</c> or <c>transportDomainUdpIpv4</c>, +    and <c>Addr</c> is an +    <c>{<seealso marker="kernel:inet#type-ip_address">IpAddr</seealso>, +    IpPort}</c> tuple.</p>      <section>        <marker id="outgoing_messages"></marker> @@ -96,10 +103,7 @@ MasterAgent ! {snmp_pdu, Vsn, Pdu, PduMS, ACMData, From, Extra}           in use.  Normally this is returned from          <c>snmpa_mpd:process_packet</c> (see Reference Manual).          </item> -        <item><c>From</c> is the source address. If UDP over IP is -         used, this should be a 2-tuple <c>{IP, UDPport}</c>, where -        <c>IP</c> is a 4-tuple with the IP address, and <c>UDPport</c> -         is an integer. +        <item><c>From</c> is the source <c>Address</c>.          </item>          <item><c>Extra</c> is any term the Net if process wishes to           send to the agent. This term can be retrieved by the @@ -127,10 +131,7 @@ Pid ! {snmp_response_received, Vsn, Pdu, From}          </item>          <item><c>Pdu</c> is the SNMP Pdu received          </item> -        <item><c>From</c> is the source address. If UDP over IP is -         used, this should be a 2-tuple <c>{IP, UDPport}</c>, where -        <c>IP</c> is a 4-tuple with the IP address, and <c>UDPport</c> -         is an integer. +        <item><c>From</c> is the source <c>Address</c>.          </item>        </list>      </section> @@ -168,10 +169,9 @@ Pid ! {snmp_response_received, Vsn, Pdu, From}  	      (see Reference Manual). </p>              </item>              <item> -	      <p><c>To</c> is the destination address. If UDP over IP -	      is used, this should be a 2-tuple <c>{IP, UDPport}</c>, -	      where <c>IP</c> is a 4-tuple with the IP address, and -	      <c>UDPport</c> is an integer. </p> +	      <p><c>To</c> is the destination <c>Address</c> that comes +	      from the <c>From</c> field in the corresponding <c>snmp_pdu</c> +	      message previously sent to the MasterAgent.</p>              </item>              <item>  	      <p><c>Extra</c> is the term that the Net if process @@ -230,7 +230,8 @@ Pid ! {snmp_response_received, Vsn, Pdu, From}  	      SNMPv3, it is the context information. </p>              </item>              <item> -	      <p><c>To</c> is a list of the destination addresses and +	      <p><c>To</c> is a list of <c>{Address, SecData}</c> +	      tuples i.e the destination addresses and  	      their corresponding security parameters.  This value is  	      normally sent to <c>snmpa_mpd:generate_message/4</c>. </p>              </item> @@ -268,7 +269,8 @@ Pid ! {snmp_response_received, Vsn, Pdu, From}  	      SNMPv3, it is the context information. </p>  	    </item>  	    <item> -	      <p><c>To</c> is a list of the destination addresses and +	      <p><c>To</c> is a list of <c>{Address, SecData}</c> +	      tuples i.e the destination addresses and  	      their corresponding security parameters. This value is  	      normally sent to <c>snmpa_mpd:generate_message/4</c>. </p>  	    </item> diff --git a/lib/snmp/doc/src/snmp_manager_config_files.xml b/lib/snmp/doc/src/snmp_manager_config_files.xml index 486ef7c170..d8bd4b0f3a 100644 --- a/lib/snmp/doc/src/snmp_manager_config_files.xml +++ b/lib/snmp/doc/src/snmp_manager_config_files.xml @@ -4,7 +4,7 @@  <chapter>    <header>      <copyright> -      <year>2004</year><year>2013</year> +      <year>2004</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -64,13 +64,42 @@        <item>          <p><c>Variable</c> is one of the following:</p>          <list type="bulleted"> -          <item> -            <p><c>address</c> - which defines the IP address of the  -              manager. Default is local host.</p> -          </item> +	  <item> +	    <p><c>transports</c> - which defines the transport domains +	    and their addresses for the manager. <em>Mandatory</em> +	    </p> +	    <p><c>Value</c> is a list of <c>{Domain, Addr}</c> tuples +	    or <c>Domain</c> atoms. +	    </p> +	    <list type="bulleted"> +	      <item> +		<p><c>Domain</c> is one of <c>transportDomainUdpIpv4</c> +		or <c>transportDomainUdpIpv6</c>.</p> +	      </item> +	      <item> +		<p><c>Addr</c> is for the currently supported domains +		either an <c>IpAddr</c> or an <c>{IpAddr, IpPort}</c> +		tuple.<c>IpAddr</c> is either a regular Erlang/OTP +		<seealso marker="kernel:inet#type-ip_address"> +		<c>ip_address()</c></seealso> or a traditional SNMP integer list +		and <c>IpPort</c> is an integer. +		</p> +		<p>When <c>Addr</c> does not contain a port number, +		the value of <c>port</c> is used. +		</p> +		<p>When a <c>Addr</c> is not specified i.e by +		using only a <c>Domain</c> atom, the host's name +		is resolved to find the IP address, and the value of +		<c>port</c> is used. +		</p> +	      </item> +	    </list> +	  </item>            <item>              <p><c>port</c> - which defines which UDP port the manager uses -              for communicating with agents. <em>Mandatory</em>.</p> +              for communicating with agents. +	    <em>Mandatory</em> if <c>transports</c> does not define +	    a port number for every transport.</p>            </item>            <item>              <p><c>engine_id</c> - The <c>SnmpEngineID</c> as defined in  @@ -87,11 +116,13 @@            </p>        </item>      </list> +    <p>The legacy and intermediate variables <c>address</c> and <c>domain</c> +    are still supported so old configurations will work.</p>      <p>The following example shows a <c>manager.conf</c> file:         </p>      <pre> -{address,          [141,213,11,24]}. -{port,             5000}. +{transports,       [{transportDomainUdpIpv4, {{141,213,11,24}, 5000}}, +                    {transportDomainUdpIpv6, {{0,0,0,0,0,0,0,1}, 5000}}]}.  {engine_id,        "mgrEngine"}.  {max_message_size, 484}.      </pre> @@ -146,7 +177,7 @@        </p>      <p>Each entry is a tuple:        </p> -    <p><c>{UserId,  TargetName, Comm, Ip, Port, EngineID, Timeout,  MaxMessageSize, Version, SecModel, SecName, SecLevel}.</c></p> +    <p><c>{UserId,  TargetName, Comm, Domain, Addr, EngineID, Timeout,  MaxMessageSize, Version, SecModel, SecName, SecLevel}.</c></p>      <list type="bulleted">        <item>          <p><c>UserId</c> is the identity of the <em>manager user</em> @@ -160,10 +191,17 @@          <p><c>Comm</c> is the community string (string).</p>        </item>        <item> -        <p><c>Ip</c> is the ip address of the agent (a list of four integers).</p> +	<p><c>Domain</c> is the transport domain, either +	<c>transportDomainUdpIpv4</c> or <c>transportDomainUdpIpv6</c>.</p>        </item>        <item> -        <p><c>Port</c> is the port number of the agent (integer).</p> +	<p><c>Addr</c> is the address in the transport domain, +	either an <c>{IpAddr, IpPort}</c> tuple or a traditional SNMP +	integer list containing port number. <c>IpAddr</c> is either +	a regular Erlang/OTP +	<seealso marker="kernel:inet#type-ip_address"><c>ip_address()</c></seealso> +	or a traditional SNMP integer list not containing port number, +	and <c>IpPort</c> is an integer.</p>        </item>        <item>          <p><c>EngineID</c> is the engine-id of the agent (string).</p> @@ -190,6 +228,9 @@            authPriv).</p>        </item>      </list> +    <p>Legacy configurations using tuples without <c>Domain</c> element, +    as well as with all <c>TDomain</c>, <c>Ip</c> and <c>Port</c> elements +    still work.</p>    </section>    <section> diff --git a/lib/snmp/doc/src/snmp_manager_netif.xml b/lib/snmp/doc/src/snmp_manager_netif.xml index 757ed32880..97cedf00c0 100644 --- a/lib/snmp/doc/src/snmp_manager_netif.xml +++ b/lib/snmp/doc/src/snmp_manager_netif.xml @@ -4,7 +4,7 @@  <chapter>    <header>      <copyright> -      <year>2004</year><year>2013</year> +      <year>2004</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -50,13 +50,14 @@    <p>The snmp application provides two different modules,     <c>snmpm_net_if</c> (the default) and <c>snmpm_net_if_mt</c>,  -  both uses the UDP as the transport protocol. The difference  -  between the two modules is that the latter is "multi-threaded",  -  i.e. for each message/request a new process is created that  -  process the message/request and then exits. </p> +  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 +  is created that processes the message/request and then exits. </p> -  <p>It is also possible to write your own Net if process,  -  this section describes how to write a Net if processdo that.</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> @@ -70,11 +71,17 @@      <p>The section <em>Messages</em> describes mandatory 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>{<seealso marker="kernel:inet#type-ip_address">IpAddr</seealso>, +    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> -Server ! {snmp_pdu, Pdu, Addr, Port} +Server ! {snmp_pdu, Pdu, Domain, Addr}      </pre>      <list type="bulleted">        <item> @@ -82,14 +89,14 @@ Server ! {snmp_pdu, Pdu, Addr, Port}            <c>snmp_types.hrl</c>, with the SNMP request.</p>        </item>        <item> -        <p><c>Addr</c> is the source address. </p> +        <p><c>Domain</c> is the source transport domain. </p>        </item>        <item> -        <p><c>Port</c> is port number of the sender.</p> +        <p><c>Addr</c> is the source address. </p>        </item>      </list>      <pre> -Server ! {snmp_trap, Trap, Addr, Port} +Server ! {snmp_trap, Trap, Domain, Addr}      </pre>      <list type="bulleted">        <item> @@ -97,14 +104,14 @@ Server ! {snmp_trap, Trap, Addr, Port}            as defined in <c>snmp_types.hrl</c>, with the SNMP request.</p>        </item>        <item> -        <p><c>Addr</c> is the source address. </p> +        <p><c>Domain</c> is the source transport domain. </p>        </item>        <item> -        <p><c>Port</c> is port number of the sender.</p> +        <p><c>Addr</c> is the source address. </p>        </item>      </list>      <pre> -Server ! {snmp_inform, Ref, Pdu, PduMS, Addr, Port} +Server ! {snmp_inform, Ref, Pdu, PduMS, Domain, Addr}      </pre>      <list type="bulleted">        <item> @@ -123,14 +130,14 @@ Server ! {snmp_inform, Ref, Pdu, PduMS, Addr, Port}            <c>snmp_types.hrl</c>, with the SNMP request.</p>        </item>        <item> -        <p><c>Addr</c> is the source address. </p> +        <p><c>Domain</c> is the source transport domain. </p>        </item>        <item> -        <p><c>Port</c> is port number of the sender.</p> +        <p><c>Addr</c> is the source address. </p>        </item>      </list>      <pre> -Server ! {snmp_report, Data, Addr, Port} +Server ! {snmp_report, Data, Domain, Addr}      </pre>      <list type="bulleted">        <item> @@ -152,10 +159,10 @@ Server ! {snmp_report, Data, Addr, Port}          <p><c>ReasonInfo</c> is a term().</p>        </item>        <item> -        <p><c>Addr</c> is the source address. </p> +        <p><c>Domain</c> is the source transport domain. </p>        </item>        <item> -        <p><c>Port</c> is port number of the sender.</p> +        <p><c>Addr</c> is the source address. </p>        </item>      </list> diff --git a/lib/snmp/doc/src/snmp_target_mib.xml b/lib/snmp/doc/src/snmp_target_mib.xml index be6fa15c73..a076ff2d8e 100644 --- a/lib/snmp/doc/src/snmp_target_mib.xml +++ b/lib/snmp/doc/src/snmp_target_mib.xml @@ -4,7 +4,7 @@  <erlref>    <header>      <copyright> -      <year>1998</year><year>2013</year> +      <year>1998</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -38,18 +38,18 @@        functions for the SNMP-TARGET-MIB,         and functions for configuring the database. </p>      <p>The configuration files are described in the SNMP User's Manual.</p> +    <p>Legacy API functions <c>add_addr/10</c> that does not specify +      transport domain, and <c>add_addr/11</c> that has got separate +      <c>IpAddr</c> and <c>PortNumber</c> arguments still work as before +      for backwards compatibility reasons.</p>      <marker id="types"></marker>    </description>    <section>      <title>DATA TYPES</title> -    <code type="none"><![CDATA[ -transportDomain() = transportDomainUdpIpv4 | transportDomainUdpIpv6 -transportAddressIPv4() = [integer()], length 4 -transportAddressIPv6() = [integer()], length 8 -transportAddressMask() = [integer()], length 0 (default), 6 (IPv4) or 10 (IPv6) -    ]]></code> +    <p>See the <seealso marker="snmpa_conf#types"> +    data types in <c>snmpa_conf</c></seealso>.</p>      <marker id="configure"></marker>    </section> @@ -129,20 +129,18 @@ transportAddressMask() = [integer()], length 0 (default), 6 (IPv4) or 10 (IPv6)      </func>      <func> -      <name>add_addr(Name, Ip, Port, Timeout, Retry, TagList, Params, EngineId, TMask, MMS) -> Ret</name> -      <name>add_addr(Name, Domain, Ip, Port, Timeout, Retry, TagList, Params, EngineId, TMask, MMS) -> Ret</name> +      <name>add_addr(Name, Domain, Addr, Timeout, Retry, TagList, Params, EngineId, TMask, MMS) -> Ret</name>        <fsummary>Add one target address definition</fsummary>        <type>          <v>Name = string()</v>          <v>Domain = transportDomain()</v> -        <v>Ip = transportAddressIPv4() | transportAddressIPv6() (depends on the value of Domain)</v> -        <v>Port = integer()</v> +	<v>Addr = transportAddress()  % Default port is 162</v>          <v>Timeout = integer()</v>          <v>Retry = integer()</v>          <v>TagList = string()</v>          <v>ParamsName = string()</v>          <v>EngineId = string()</v> -        <v>TMask = transportAddressMask() (depends on Domain)</v> +        <v>TMask = transportAddressMask()  % Depends on Domain</v>          <v>MMS = integer()</v>          <v>Ret = {ok, Key} | {error, Reason}</v>          <v>Key = term()</v> diff --git a/lib/snmp/doc/src/snmpa_conf.xml b/lib/snmp/doc/src/snmpa_conf.xml index 99a56cd601..2780cec156 100644 --- a/lib/snmp/doc/src/snmpa_conf.xml +++ b/lib/snmp/doc/src/snmpa_conf.xml @@ -4,7 +4,7 @@  <erlref>    <header>      <copyright> -      <year>2006</year><year>2013</year> +      <year>2006</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -45,20 +45,56 @@      <title>DATA TYPES</title>      <code type="none"><![CDATA[  transportDomain() = transportDomainUdpIpv4 | transportDomainUdpIpv6 -transportAddressIPv4() = [integer()], length 4 -transportAddressIPv6() = [integer()], length 8 -transportAddressMask() = [integer()], length 0 (default), 6 (IPv4) or 10 (IPv6) + +transportAddress() = +    transportAddressIPv4() | transportAddressIPv6() + +transportAddressWithPort() = +    transportAddressIPv4WithPort() | transportAddressIPv6WithPort() + +transportAddressWithoutPort() = +    transportAddressIPv4WithoutPort() | transportAddressIPv6WithoutPort() + +transportAddressIPv4() = +    transportAddressIPv4WithPort() | transportAddressIPv4WithoutPort() +transportAddressIPv4WithPort = +    {transportAddressIPv4WithoutPort(), inet:port_number()} | +    [byte() x 4, byte() x 2] +transportAddressIPv4WithoutPort = +    inet:ip4_address() | [byte() x 4] + +transportAddressIPv6() = +    transportAddressIPv6WithPort() | transportAddressIPv6WithoutPort() +transportAddressIPv6WithPort = +    {transportAddressIPv6WithoutPort(), inet:port_number()} | +    [word() x 8, inet:port_number()] | +    [word() x 8, byte() x 2] | +    {byte() x 16, byte() x 2] +transportAddressIPv6WithoutPort = +    inet:ip6_address() | [word() x 8] | [byte() x 16] + +transportAddressMask() = +    [] | transportAddressWithPort() + +byte() = 0..255 +word() = 0..65535      ]]></code> +    <p>For <c>inet:ip4_address()</c>, <c>inet:ip6_address()</c> +    and <c>inet:port_number()</c>, see also +    <seealso marker="kernel:inet#type-ip_address"> +    <c>inet:ip_address()</c></seealso></p>      <marker id="agent_entry"></marker>    </section> + +    <funcs>      <func>        <name>agent_entry(Tag, Val) -> agent_entry()</name>        <fsummary>Create an agent entry</fsummary>        <type> -        <v>Tag = intAgentIpAddress | intAgentUDPPort | intAgentMaxPacketSize | snmpEngineMaxMessageSize | snmpEngineID</v> +        <v>Tag = intAgentTransports | intAgentUDPPort | intAgentMaxPacketSize | snmpEngineMaxMessageSize | snmpEngineID</v>          <v>Val = term()</v>          <v>agent_entry() = term()</v>        </type> @@ -390,17 +426,15 @@ transportAddressMask() = [integer()], length 0 (default), 6 (IPv4) or 10 (IPv6)      </func>      <func> -      <name>target_addr_entry(Name, Ip, TagList, ParamsName, EngineId) -> target_addr_entry()</name> -      <name>target_addr_entry(Name, Ip, TagList, ParamsName, EngineId, TMask) -> target_addr_entry()</name> -      <name>target_addr_entry(Name, Ip, Udp, TagList, ParamsName, EngineId, TMask, MaxMessageSize) -> target_addr_entry()</name> -      <name>target_addr_entry(Name, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize) -> target_addr_entry()</name> -      <name>target_addr_entry(Name, Domain, Ip, Udp, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize) -> target_addr_entry()</name> +      <name>target_addr_entry(Name, Domain, Addr, TagList, ParamsName, EngineId) -> target_addr_entry()</name> +      <name>target_addr_entry(Name, Domain, Addr, TagList, ParamsName, EngineId, TMask) -> target_addr_entry()</name> +      <name>target_addr_entry(Name, Domain, Addr, TagList, ParamsName, EngineId, TMask, MaxMessageSize) -> target_addr_entry()</name> +      <name>target_addr_entry(Name, Domain, Addr, Timeout, RetryCount, TagList, ParamsName, EngineId, TMask, MaxMessageSize) -> target_addr_entry()</name>        <fsummary>Create an target_addr entry</fsummary>        <type>          <v>Name = string()</v>          <v>Domain = transportDomain()</v> -        <v>Ip = transportAddressIPv4() | transportAddressIPv6() (depends on Domain)</v> -        <v>Udp = integer()</v> +        <v>Ip = transportAddress() (depends on Domain)</v>          <v>Timeout = integer()</v>          <v>RetryCount = integer()</v>          <v>TagList = string()</v> @@ -414,12 +448,12 @@ transportAddressMask() = [integer()], length 0 (default), 6 (IPv4) or 10 (IPv6)          <p>Create an entry for the agent target_addr config file,             <c>target_addr.conf</c>. </p>          <p><c>Name</c> must be a <em>non-empty</em> string. </p> -        <p><c>target_addr_entry/5</c> translates to the following call: -          <c>target_addr_entry(Name, Ip, TagList, ParamsName, EngineId)</c>. </p>          <p><c>target_addr_entry/6</c> translates to the following call: -          <c>target_addr_entry(Name, Ip, 162, TagList, ParamsName, EngineId, TMask, 2048)</c>. </p> +          <c>target_addr_entry(Name, Domain, Addr, TagList, ParamsName, EngineId, [])</c>. </p> +        <p><c>target_addr_entry/7</c> translates to the following call: +          <c>target_addr_entry(Name, Domain, Addr, TagList, ParamsName, EngineId, TMask, 2048)</c>. </p>          <p><c>target_addr_entry/8</c> translates to the following call: -          <c>target_addr_entry(Name, Ip, Udp, 1500, 3, TagList, ParamsName, EngineId, TMask, MaxMessageSize)</c>. </p> +          <c>target_addr_entry(Name, Domain, Addr, 1500, 3, TagList, ParamsName, EngineId, TMask, MaxMessageSize)</c>. </p>          <p>See             <seealso marker="snmp_agent_config_files#target_addr">Target Address Definitions</seealso>             for more info. </p> diff --git a/lib/snmp/doc/src/snmpa_mpd.xml b/lib/snmp/doc/src/snmpa_mpd.xml index c5ab0a0520..518100d30c 100644 --- a/lib/snmp/doc/src/snmpa_mpd.xml +++ b/lib/snmp/doc/src/snmpa_mpd.xml @@ -4,7 +4,7 @@  <erlref>    <header>      <copyright> -      <year>1999</year><year>2013</year> +      <year>1999</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -43,6 +43,12 @@      <marker id="init"></marker>    </description> +  <section> +    <title>DATA TYPES</title> +    <p>See the <seealso marker="snmpa_conf#types"> +    data types in <c>snmpa_conf</c></seealso>.</p> +  </section> +    <funcs>      <func>        <name>init(Vsns) -> mpd_state()</name> @@ -63,16 +69,17 @@      </func>      <func> -      <name>process_packet(Packet, TDomain, TAddress, State, NoteStore, Log) -> {ok, Vsn, Pdu, PduMS, ACMData} | {discarded, Reason} | {discovery, DiscoPacket}</name> -      <name>process_packet(Packet, TDomain, TAddress, LocalEngineID, State, NoteStore, Log) -> {ok, Vsn, Pdu, PduMS, ACMData} | {discarded, Reason} | {discovery, DiscoPacket}</name> +      <name>process_packet(Packet, From, State, NoteStore, Log) -> {ok, Vsn, Pdu, PduMS, ACMData} | {discarded, Reason} | {discovery, DiscoPacket}</name> +      <name>process_packet(Packet, From, LocalEngineID, State, NoteStore, Log) -> {ok, Vsn, Pdu, PduMS, ACMData} | {discarded, Reason} | {discovery, DiscoPacket}</name>        <fsummary>Process a packet received from the network</fsummary>        <type>          <v>Packet = binary()</v> -        <v>TDomain = snmpUDPDomain</v> -        <v>TAddress = {Ip, Udp}</v> +	<v>From = {TDomain, TAddr}</v> +        <v>TDomain = transportDomainUdpIpv4 | transportDomainUdpIpv6</v> +        <v>TAddr = {IpAddr, IpPort}</v>          <v>LocalEngineID = string()</v> -        <v>Ip = {integer(), integer(), integer(), integer()}</v> -        <v>Udp = integer()</v> +        <v>IpAddr = <seealso marker="kernel:inet#type-ip_address">inet:ip_address()</seealso></v> +        <v>IpPort = inet:port_number()</v>          <v>State = mpd_state()</v>          <v>NoteStore = pid()</v>          <v>Log = snmp_log()</v> @@ -85,7 +92,7 @@        </type>        <desc>          <p>Processes an incoming packet.  Performs authentication and  -          decryption as necessary.  The return values should be passed the +          decryption as necessary.  The return values should be passed to the            agent.</p>          <note> @@ -150,14 +157,20 @@            network.            </p>          <p><c>MsgData</c> is the message specific data used in -          the SNMP message.  This value is received in a <c>send_pdu</c> -          or <c>send_pdu_req</c> message from the agent.  In SNMPv1 and +          the SNMP message.  This value is received in a +	  <seealso marker="snmp_agent_netif#im_send_pdu"><c>send_pdu</c></seealso> +          or +	  <seealso marker="snmp_agent_netif#im_send_pdu_req"> +	  <c>send_pdu_req</c></seealso> +	  message from the agent.  In SNMPv1 and            SNMPv2c, this message data is the community string.  In -          SNMPv3, it is the context information. -          <c>To</c> is a list of the destination addresses and +          SNMPv3, it is the context information.</p> +	<p> +          <c>To</c> is a list of destination addresses and            their corresponding security parameters.  This value is -          also received from the requests mentioned above. -          </p> +          received in the same message from the agent and then transformed +	  trough <seealso marker="#process_taddrs"><c>process_taddrs</c></seealso> +	  before passed to this function.</p>          <note>            <p>Note that the use of the LocalEngineID argument is only intended  @@ -166,6 +179,32 @@              (see SNMP-FRAMEWORK-MIB). </p>  	</note> +        <marker id="process_taddrs"></marker> +      </desc> +    </func> + +    <func> +      <name>process_taddrs(TDests) -> Dests</name> +      <fsummary>Transform addresses from internal MIB format to a less internal +      </fsummary> +      <type> +	<v>TDests = [TDest]</v> +	<v>TDest = {{TDomain, TAddr}, SecData} | {TDomain, TAddr}</v> +	<v>TDomain = term()  % Not at tuple</v> +	<v>TAddr = term()</v> +	<v>SecData = term()</v> +	<v>Dests = [Dest]</v> +	<v>Dest = {{Domain, Addr}, SecData} | {Domain, Addr}</v> +	<v>Domain = transportDomain()</v> +	<v>Addr = transportAddress()  % Depends on Domain</v> +      </type> +      <desc> +	<p>Transforms addresses from internal MIB format to one +	more useful to <seealso marker="snmp_agent_netif">Agent Net if</seealso>. +	</p> +	<p>See also <seealso marker="#generate_msg"><c>generate_msg</c>.</seealso> +	</p> +          <marker id="discarded_pdu"></marker>        </desc>      </func> diff --git a/lib/snmp/doc/src/snmpa_network_interface_filter.xml b/lib/snmp/doc/src/snmpa_network_interface_filter.xml index e08a26ed92..eb640e1bc3 100644 --- a/lib/snmp/doc/src/snmpa_network_interface_filter.xml +++ b/lib/snmp/doc/src/snmpa_network_interface_filter.xml @@ -4,7 +4,7 @@  <erlref>    <header>      <copyright> -      <year>2007</year><year>2013</year> +      <year>2007</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -58,10 +58,10 @@        on two levels: </p>      <list type="bulleted">        <item> -        <p>The first level is at the UDP entry / exit point, i.e.  -          immediately after the receipt of the message, before any message  +        <p>The first level is at the transport entry / exit point, i.e. +          immediately after the receipt of the message before any message            processing is done (accept_recv) and  -          immediately before sending the message, after all message  +          immediately before sending the message after all message            processing is done (accept_send).</p>        </item>        <item> @@ -78,6 +78,12 @@        <seealso marker="snmp_app#configuration_params">req_limit</seealso> and         the function         <seealso marker="snmpa#register_notification_filter">register_notification_filter</seealso>. </p> +    <p>Legacy network interface filter modules used arguments on the form +      <c>(IpAddr, PortNumber,...)</c> instead of +      <c>(Domain, Addr, ...)</c>, and if the SNMP agent is run without +      changing the configuration to use transport domains +      the network interface filter will still get +      the old arguments and work as before.</p>    </description>    <section> @@ -88,15 +94,17 @@ pdu_type() = 'get-request' | 'get-next-request' | 'get-response' |               'set-request' | trap | 'get-bulk-request' | 'inform-request' |                report      </code> +    <p>See also the <seealso marker="snmpa_conf#types"> +    data types in <c>snmpa_conf</c></seealso>.</p>      <marker id="accept_recv"></marker>    </section>    <funcs>      <func> -      <name>accept_recv(Ip, Port) -> boolean()</name> +      <name>accept_recv(Domain, Addr) -> boolean()</name>        <fsummary>Shall the received message be accepted</fsummary>        <type> -        <v>Ip = ip_address()</v> -        <v>Port = port()</v> +	<v>Domain = transportDomain()</v> +	<v>Addr = transportAddressWithPort()</v>        </type>        <desc>          <p>Called at the reception of a message (before <em>any</em> processing  @@ -107,11 +115,11 @@ pdu_type() = 'get-request' | 'get-next-request' | 'get-response' |        </desc>      </func>      <func> -      <name>accept_send(Ip, Port) -> boolean()</name> +      <name>accept_send(Domain, Addr) -> boolean()</name>        <fsummary>Shall the message be sent</fsummary>        <type> -        <v>Ip = ip_address()</v> -        <v>Port = port()</v> +	<v>Domain = transportDomain()</v> +	<v>Addr = transportAddressWithPort()</v>        </type>        <desc>          <p>Called before the sending of a message (after <em>all</em> processing  @@ -122,11 +130,11 @@ pdu_type() = 'get-request' | 'get-next-request' | 'get-response' |        </desc>      </func>      <func> -      <name>accept_recv_pdu(Ip, Port, PduType) -> boolean()</name> +      <name>accept_recv_pdu(Domain, Addr, PduType) -> boolean()</name>        <fsummary>Shall the received pdu be accepted</fsummary>        <type> -        <v>Ip = ip_address()</v> -        <v>Port = port()</v> +	<v>Domain = transportDomain()</v> +	<v>Addr = transportAddressWithPort()</v>          <v>PduType = pdu_type()</v>        </type>        <desc> @@ -144,7 +152,9 @@ pdu_type() = 'get-request' | 'get-next-request' | 'get-response' |        <type>          <v>Targets = targets()</v>          <v>targets() = [target()]</v> -        <v>target() = {ip_address(), port()}</v> +        <v>target() = {Domain, Addr}</v> +	<v>Domain = transportDomain()</v> +	<v>Addr = transportAddressWithPort()</v>          <v>PduType = pdu_type() > 0</v>          <v>Reply = boolean() | NewTargets</v>          <v>NewTargets = targets()</v> @@ -155,7 +165,7 @@ pdu_type() = 'get-request' | 'get-next-request' | 'get-response' |          <p>For the message to be discarded all together, the function             <em>must</em> return <em>false</em>. </p>          <p>Note that it is possible for this function to filter out targets -          (but <em>not</em> add its own) by returning an updated +          (but <em>not</em> to add its own) by returning an updated            <c>Targets</c> list (<c>NewTargets</c>). </p>        </desc>      </func> diff --git a/lib/snmp/doc/src/snmpa_notification_delivery_info_receiver.xml b/lib/snmp/doc/src/snmpa_notification_delivery_info_receiver.xml index aff71688b6..814f02a14c 100644 --- a/lib/snmp/doc/src/snmpa_notification_delivery_info_receiver.xml +++ b/lib/snmp/doc/src/snmpa_notification_delivery_info_receiver.xml @@ -5,7 +5,7 @@    <header>      <copyright>        <year>2008</year> -      <year>2013</year> +      <year>2014</year>        <holder>Ericsson AB, All Rights Reserved</holder>      </copyright>      <legalnotice> @@ -45,22 +45,30 @@        must export the following functions: </p>      <list type="bulleted">        <item> -        <p><seealso marker="#delivery_targets">delivery_targets/3</seealso></p> +        <p><seealso marker="#delivery_targets/3">delivery_targets/3</seealso></p>        </item>        <item> -        <p><seealso marker="#delivery_info">delivery_info/4</seealso></p> +        <p><seealso marker="#delivery_info/4">delivery_info/4</seealso></p>        </item>      </list>      <p>The semantics of them and their exact signatures are explained        below. </p> +    <p>Legacy notification delivery information receiver modules +      used a target argument on the form +      <c>{IpAddr, PortNumber}</c> instead of +      <c>{Domain, Addr}</c>, and if the SNMP Agent is run without +      changing the configuration to use transport domains +      the notification delivery information receiver will still get +      the old arguments and work as before.</p> +    </description>    <section>      <title>DATA TYPES</title> -    <code type="none"><![CDATA[ -address() = A 4-tuple -    ]]></code> +    <p>See the <seealso marker="snmpa_conf#types"> +    data types in <c>snmpa_conf</c></seealso>.</p> +    <marker id="accept_recv"></marker>       <marker id="delivery_targets"></marker>    </section> @@ -71,10 +79,8 @@ address() = A 4-tuple        <fsummary>Inform about target addresses</fsummary>        <type>          <v>Tag = term()</v> -        <v>Targets = [target()]</v> -        <v>target() = {Address, Port}</v> -        <v>Address = address()</v> -        <v>Port = integer()</v> +        <v>Targets = [Target]</v> +        <v>Target = {transportDomain(), transportAddressWithPort()</v>          <v>Extra = term()</v>        </type>        <desc> @@ -94,10 +100,8 @@ address() = A 4-tuple        <fsummary>Inform about delivery result</fsummary>        <type>          <v>Tag = term()</v> -        <v>Target = target()</v> -        <v>target() = {Address, Port}</v> -        <v>Address = address()</v> -        <v>Port = integer()</v> +        <v>Targets = [Target]</v> +        <v>Target = {transportDomain(), transportAddressWithPort()</v>          <v>DeliveryResult = delivery_result()</v>          <v>delivery_result() = no_response | got_response</v>          <v>Extra = term()</v> diff --git a/lib/snmp/doc/src/snmpm.xml b/lib/snmp/doc/src/snmpm.xml index dc8226bb87..ff90e49968 100644 --- a/lib/snmp/doc/src/snmpm.xml +++ b/lib/snmp/doc/src/snmpm.xml @@ -4,7 +4,7 @@  <erlref>    <header>      <copyright> -      <year>2004</year><year>2013</year> +      <year>2004</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -69,6 +69,9 @@ sec_name() = string()  sec_level() = noAuthNoPriv | authNoPriv | authPriv  ]]></code> +    <p>See also the <seealso marker="snmpa_conf#types"> +    data types in <c>snmpa_conf</c></seealso>.</p> +      <marker id="monitor"></marker>    </section>    <funcs> @@ -300,9 +303,9 @@ sec_level = noAuthNoPriv | authNoPriv | authPriv  	<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]  tdomain = transportDomainUdpIpv4 | transportDomainUdpIpv6 +[mandatory] tadress = transportAddress()  % Depends on tdomain +[optional]  port = inet:port_number() +[optional]  tdomain = transportDomain()  [optional]  community = string()  [optional]  timeout = integer() | snmp_timer()  [optional]  max_message_size = integer() @@ -313,7 +316,8 @@ sec_level = noAuthNoPriv | authNoPriv | authPriv  ]]></code>          <p>Note that if no <c>tdomain</c> is given, the default value,  	<c>transportDomainUdpIpv4</c>, is used.</p> -        <p>Note that if no <c>port</c> is given, the default value is used.</p> +        <p>Note that if no <c>port</c> is given and if <c>taddress</c> does not +	contain a port number, the default value is used.</p>          <marker id="unregister_agent"></marker>        </desc> diff --git a/lib/snmp/doc/src/snmpm_conf.xml b/lib/snmp/doc/src/snmpm_conf.xml index 0cc9ff3379..8635fb705b 100644 --- a/lib/snmp/doc/src/snmpm_conf.xml +++ b/lib/snmp/doc/src/snmpm_conf.xml @@ -4,7 +4,7 @@  <erlref>    <header>      <copyright> -      <year>2006</year><year>2013</year> +      <year>2006</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -195,14 +195,14 @@        </desc>      </func>      <func> -      <name>agents_entry(UserId, TargetName, Comm, Ip, Port, EngineID, Timeout, MaxMessageSize, Version, SecModel, SecName, SecLevel) -> agents_entry()</name> +      <name>agents_entry(UserId, TargetName, Comm, Domain, Addr, EngineID, Timeout, MaxMessageSize, Version, SecModel, SecName, SecLevel) -> agents_entry()</name>        <fsummary>Create an agents entry</fsummary>        <type>          <v>UserId = term()</v>          <v>TargetName = string()</v>          <v>Comm = string()</v> -        <v>Ip = string()</v> -        <v>Port = integer()</v> +	<v>Domain = transportDomain()</v> +	<v>Addr = transportAddress()</v>          <v>EngineID = string()</v>          <v>Timeout = integer()</v>          <v>MaxMessageSize = integer()</v> diff --git a/lib/snmp/doc/src/snmpm_mpd.xml b/lib/snmp/doc/src/snmpm_mpd.xml index ad72fd7bc0..c23b2b6833 100644 --- a/lib/snmp/doc/src/snmpm_mpd.xml +++ b/lib/snmp/doc/src/snmpm_mpd.xml @@ -4,7 +4,7 @@  <erlref>    <header>      <copyright> -      <year>2004</year><year>2013</year> +      <year>2004</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -39,7 +39,12 @@        It is supposed to be used from a Network Interface process         (<seealso marker="snmp_manager_netif">Definition of Manager Net if</seealso>).        </p> + +    <p>Legacy API function <c>process_msg/7</c> that has got separate +      <c>IpAddr</c> and <c>PortNumber</c> arguments still works as before +      for backwards compatibility reasons.</p>    </description> +    <funcs>      <func>        <name>init_mpd(Vsns) -> mpd_state()</name> @@ -58,13 +63,12 @@        </desc>      </func>      <func> -      <name>process_msg(Msg, TDomain, Addr, Port, State, NoteStore, Logger) -> {ok, Vsn, Pdu, PduMS, MsgData} | {discarded, Reason}</name> +      <name>process_msg(Msg, Domain, Addr, State, NoteStore, Logger) -> {ok, Vsn, Pdu, PduMS, MsgData} | {discarded, Reason}</name>        <fsummary>Process a message received from the network</fsummary>        <type>          <v>Msg = binary()</v> -        <v>TDomain = snmpUDPDomain</v> -        <v>Addr = {integer(), integer(), integer(), integer()}</v> -        <v>Port = integer()</v> +        <v>Domain = transportDomainUdpIpv4 | transportDomainUdpIpv6</v> +	<v>Addr = {<seealso marker="kernel:inet#type-ip_address">inet:ip_address(), inet:port_number()</seealso>} </v>          <v>State = mpd_state()</v>          <v>NoteStore = pid()</v>          <v>Logger = function()</v> diff --git a/lib/snmp/doc/src/snmpm_network_interface.xml b/lib/snmp/doc/src/snmpm_network_interface.xml index 6cf7bd6ed7..bea6b46dc7 100644 --- a/lib/snmp/doc/src/snmpm_network_interface.xml +++ b/lib/snmp/doc/src/snmpm_network_interface.xml @@ -4,7 +4,7 @@  <erlref>    <header>      <copyright> -      <year>2004</year><year>2013</year> +      <year>2004</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -69,6 +69,10 @@      <p>The semantics of them and their exact signatures are explained        below. </p> +    <p>Legacy API function <c>send_pdu/7</c> that has got separate +      <c>IpAddr</c> and <c>PortNumber</c> arguments still works as before +      for backwards compatibility reasons.</p> +      <marker id="start_link"></marker>    </description> @@ -103,15 +107,15 @@      </func>      <func> -      <name>send_pdu(Pid, Pdu, Vsn, MsgData, Addr, Port, ExtraInfo) -> void()</name> +      <name>send_pdu(Pid, Pdu, Vsn, MsgData, Domain, Addr, ExtraInfo) -> void()</name>        <fsummary>Request the network interface process to send this pdu</fsummary>        <type>          <v>Pid = pid()</v>          <v>Pdu = pdu()</v>          <v>Vsn = 'version-1' | 'version-2' | 'version-3'</v>          <v>MsgData = term()</v> -        <v>Addr = address()</v> -        <v>Port = integer()</v> +        <v>Domain = transportDomainUdpIpv4 | transportDomainUdpIpv6</v> +	<v>Addr = {<seealso marker="kernel:inet#type-ip_address">inet:ip_address(), inet:port_number()</seealso>} </v>          <v>ExtraInfo = term()</v>        </type>        <desc> diff --git a/lib/snmp/doc/src/snmpm_network_interface_filter.xml b/lib/snmp/doc/src/snmpm_network_interface_filter.xml index f0526269b3..1ef4f29c0f 100644 --- a/lib/snmp/doc/src/snmpm_network_interface_filter.xml +++ b/lib/snmp/doc/src/snmpm_network_interface_filter.xml @@ -4,7 +4,7 @@  <erlref>    <header>      <copyright> -      <year>2007</year><year>2013</year> +      <year>2007</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -76,6 +76,12 @@      The default filter accepts all messages.</p>      <p>A network interface filter can e.g. be used during testing or for load       regulation. </p> +    <p>Legacy network interface filter modules used arguments on the form +      <c>(IpAddr, PortNumber,...)</c> instead of +      <c>(Domain, Addr, ...)</c>, and if the SNMP manager is run without +      changing the configuration to use transport domains +      the network interface filter will still get +      the old arguments and work as before.</p>    </description>    <section> @@ -86,16 +92,18 @@ pdu_type() = 'get-request' | 'get-next-request' | 'get-response' |               'set-request' | trap | 'get-bulk-request' | 'inform-request' |                report | trappdu      </code> +    <p>See also the <seealso marker="snmpa_conf#types"> +    data types in <c>snmpa_conf</c></seealso>.</p>      <marker id="accept_recv"></marker>    </section>    <funcs>      <func> -      <name>accept_recv(Addr, Port) -> boolean()</name> +      <name>accept_recv(Domain, Addr) -> boolean()</name>        <fsummary>Shall the received message be accepted</fsummary>        <type> -        <v>Addr = ip_address()</v> -        <v>Port = port()</v> +	<v>Domain = transportDomain()</v> +	<v>Addr = transportAddressWithPort()</v>        </type>        <desc>          <p>Called at the reception of a message (before <em>any</em> processing  @@ -107,11 +115,11 @@ pdu_type() = 'get-request' | 'get-next-request' | 'get-response' |      </func>      <func> -      <name>accept_send(Addr, Port) -> boolean()</name> +      <name>accept_send(Domain, Addr) -> boolean()</name>        <fsummary>Shall the message be sent</fsummary>        <type> -        <v>Addr = ip_address()</v> -        <v>Port = port()</v> +	<v>Domain = transportDomain()</v> +	<v>Addr = transportAddressWithPort()</v>        </type>        <desc>          <p>Called before the sending of a message (after <em>all</em> processing  @@ -123,11 +131,11 @@ pdu_type() = 'get-request' | 'get-next-request' | 'get-response' |      </func>      <func> -      <name>accept_recv_pdu(Addr, Port, PduType) -> boolean()</name> +      <name>accept_recv_pdu(Domain, Addr, PduType) -> boolean()</name>        <fsummary>Shall the received pdu be accepted</fsummary>        <type> -        <v>Addr = ip_address()</v> -        <v>Port = port()</v> +	<v>Domain = transportDomain()</v> +	<v>Addr = transportAddressWithPort()</v>          <v>PduType = pdu_type()</v>        </type>        <desc> @@ -141,11 +149,11 @@ pdu_type() = 'get-request' | 'get-next-request' | 'get-response' |      </func>      <func> -      <name>accept_send_pdu(Addr, Port, PduType) -> boolean()</name> +      <name>accept_send_pdu(Domain, Addr, PduType) -> boolean()</name>        <fsummary>Shall the pdu be sent</fsummary>        <type> -        <v>Addr = ip_address()</v> -        <v>Port = port()</v> +	<v>Domain = transportDomain()</v> +	<v>Addr = transportAddressWithPort()</v>          <v>PduType = pdu_type() > 0</v>        </type>        <desc> diff --git a/lib/snmp/doc/src/snmpm_user.xml b/lib/snmp/doc/src/snmpm_user.xml index 6f412d90f8..a4492839cd 100644 --- a/lib/snmp/doc/src/snmpm_user.xml +++ b/lib/snmp/doc/src/snmpm_user.xml @@ -4,7 +4,7 @@  <erlref>    <header>      <copyright> -      <year>2004</year><year>2013</year> +      <year>2004</year><year>2014</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> @@ -63,10 +63,15 @@      <p>The semantics of them and their exact signatures are explained      below. </p>      <p>Some of the function has no defined return value (<c>void()</c>),  -    they can ofcourse return anythyng. But the functions that do have  +    they can of course return anything. But the functions that do have      specified return value(s) <em>must</em> adhere to this. None of the       functions can use exit of throw to return. </p> +    <p>If the manager is not configured to use any particular +    transport domain, the behaviour <c>handle_agent/4</c> +    will for backwards copmpatibility reasons be called with the old +    <c>IpAddr</c> and <c>PortNumber</c> arguments</p> +      <marker id="types"></marker>    </description> @@ -116,11 +121,11 @@ snmp_v1_trap_info() :: {Enteprise :: snmp:oid(),      </func>      <func> -      <name>handle_agent(Addr, Port, Type, SnmpInfo, UserData) -> Reply</name> +      <name>handle_agent(Domain, Addr, Type, SnmpInfo, UserData) -> Reply</name>        <fsummary>Handle agent</fsummary>        <type> -        <v>Addr = ip_address()</v> -        <v>Port = integer()</v> +        <v>Domain = transportDomainUdpIpv4 | transportDomainUdpIpv6</v> +	<v>Addr = {<seealso marker="kernel:inet#type-ip_address">inet:ip_address(), inet:port_number()</seealso>} </v>          <v>Type = pdu | trap | report | inform</v>          <v>SnmpInfo = SnmpPduInfo | SnmpTrapInfo | SnmpReportInfo | SnmpInformInfo</v>          <v>SnmpPduInfo = snmp_gen_info()</v> | 
