# snmpa_mpd

### MODULE

snmpa_mpd

### MODULE SUMMARY

Message Processing and Dispatch module for the SNMP agent

### DESCRIPTION

The module `snmpa_mpd` implements the version independent Message Processing and Dispatch functionality in SNMP for the agent. It is supposed to be used from a Network Interface process ( Definition of Agent Net if).

### EXPORTS

`init(Vsns) -> mpd_state()`

Types:

`Vsns = [Vsn]`
`Vsn = v1 | v2 | v3`

This function can be called from the net_if process at startup. The options list defines which versions to use.

It also initializes some SNMP counters.

`process_packet(Packet, TDomain, TAddress, State) -> {ok, Vsn, Pdu, PduMS, ACMData} | {discarded, Reason}`

Types:

`Packet = binary()`
`TDomain = snmpUDPDomain`
`TAddress = {Ip, Udp}`
`Ip = {integer(), integer(), integer(), integer()}`
`Udp = integer()`
`State = mpd_state()`
`Vsn = 'version-1' | 'version-2' | 'version-3'`
`Pdu = #pdu`
`PduMs = integer()`
`ACMData = acm_data()`

Processes an incoming packet. Performs authentication and decryption as necessary. The return values should be passed the agent.

`generate_response_msg(Vsn, RePdu, Type, ACMData) -> {ok, Packet} | {discarded, Reason}`

Types:

`Vsn = 'version-1' | 'version-2' | 'version-3'`
`RePdu = #pdu`
`Type = atom()`
`ACMData = acm_data()`
`Packet = binary()`

Generates a possibly encrypted response packet to be sent to the network. `Type` is the `#pdu.type` of the original request.

`generate_msg(Vsn, Pdu, MsgData, To) -> {ok, PacketsAndAddresses} | {discarded, Reason}`

Types:

`Vsn = 'version-1' | 'version-2' | 'version-3'`
`Pdu = #pdu`
`MsgData = msg_data()`
`To = [dest_addrs()]`
`PacketsAndAddresses = [{TDomain, TAddress, Packet}]`
`TDomain = snmpUDPDomain`
`TAddress = {Ip, Udp}`
`Ip = {integer(), integer(), integer(), integer()}`
`Udp = integer()`
`Packet = binary()`

Generates a possibly encrypted request packet to be sent to the network.

`MsgData` is the message specific data used in the SNMP message. This value is received in a `send_pdu` or `send_pdu_req` message from the agent. In SNMPv1 and SNMPv2c, this message data is the community string. In SNMPv3, it is the context information. `To` is a list of the destination addresses and their corresponding security parameters. This value is also received from the requests mentioned above.

`discarded_pdu(Variable) -> void()`

Types:

`Variable = atom()`

Increments the variable associated with a discarded pdu. This function can be used when the net_if process receives a `discarded_pdu` message from the agent.

### AUTHORS

Martin Björklund - support@erlang.ericsson.se

snmp 4.9.3
Copyright © 1991-2007 Ericsson AB