snmpa_mpd

Message Processing and Dispatch module for the SNMP agent

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).

Functions


init(Vsns) -> mpd_state()

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

This function can be called from the net_if process at start-up. 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} | {discovery, DiscoPacket}

  • 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()
  • Reason = term()
  • DiscoPacket = binary()

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}

  • 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}

  • 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()

  • 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.