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.