查看源码 snmpm_mpd (snmp v5.18)

SNMP 管理器的消息处理和分发模块

模块 snmpm_mpd 实现了 SNMP 中管理器端版本无关的消息处理和分发功能。它应该从网络接口进程中使用(管理器网络接口的定义)。

旧版 API 函数 process_msg/7 仍然像以前一样工作,为了向后兼容,它有单独的 IpAddrPortNumber 参数。

概要

类型

一个处理审计跟踪日志的 fun

是一个不透明的数据结构,包含(传入)v3 消息的必要安全信息。

是一个不透明的数据结构,包含 v1 和 v2 消息的必要安全信息。

是一个不透明的数据结构,包含 v1 和 v2 消息的必要安全和传输信息。

是一个不透明的数据结构,包含 v3 消息的必要安全信息。

函数

生成一个可能加密的、要发送到网络的包。

生成一个可能加密的、要发送到网络的响应包。

此函数可以在启动时从 net-if 进程调用。选项列表定义要使用的版本。

处理传入的消息。根据需要执行身份验证和解密。返回值应传递给管理器服务器。

类型

-type logger() ::
          fun((Data ::
                   binary() |
                   snmp_pdus:pdu() |
                   snmp_pdus:trappdu() |
                   snmp_pdus:message() |
                   {V3Hdr :: snmp_pdus:v3_hdr(), ScopedPDUBytes :: binary()}) ->
                  snmp:void()).

一个处理审计跟踪日志的 fun

-opaque mpd_state()
-opaque msg_data_acm()

是一个不透明的数据结构,包含(传入)v3 消息的必要安全信息。

-opaque msg_data_cmy()

是一个不透明的数据结构,包含 v1 和 v2 消息的必要安全信息。

-opaque msg_data_cmyt()

是一个不透明的数据结构,包含 v1 和 v2 消息的必要安全和传输信息。

-opaque msg_data_v3()

是一个不透明的数据结构,包含 v3 消息的必要安全信息。

函数

链接到此函数

generate_msg(Vsn, NoteStore, Pdu, MsgData, Log)

查看源码
-spec generate_msg(Vsn, NoteStore, Pdu, MsgData, Log) -> {ok, Packet} | {discarded, Reason}
                      when
                          Vsn :: snmp_pdus:version(),
                          NoteStore :: pid(),
                          Pdu :: snmp_pdus:pdu(),
                          MsgData :: msg_data_cmy() | msg_data_v3(),
                          Log :: logger(),
                          Packet :: binary(),
                          Reason :: term().

生成一个可能加密的、要发送到网络的包。

NoteStorenote-store 进程的 pid()

MsgData 是 SNMP 消息中使用的消息特定数据。在 SNMPv1 和 SNMPv2c 中,此消息数据是团体字符串。在 SNMPv3 中,它是上下文信息。

Logger 是用于审计跟踪日志的函数。

链接到此函数

generate_response_msg(Vsn, Pdu, MsgData, Log)

查看源码
-spec generate_response_msg(Vsn, Pdu, MsgData, Log) ->
                               {ok, Packet} | {discarded, Reason} | {error, Reason}
                               when
                                   Vsn :: snmp_pdus:version(),
                                   Pdu :: snmp_pdus:pdu(),
                                   MsgData :: msg_data_cmy() | msg_data_cmyt() | msg_data_v3(),
                                   Log :: logger(),
                                   Packet :: binary(),
                                   Reason :: term().

生成一个可能加密的、要发送到网络的响应包。

MsgData 是 SNMP 消息中使用的消息特定数据。此值从 process_msg/6 函数接收。

-spec init(Vsns) -> MPDState when Vsns :: [snmp:version()], MPDState :: mpd_state().

此函数可以在启动时从 net-if 进程调用。选项列表定义要使用的版本。

它还会初始化一些 SNMP 计数器。

链接到此函数

process_msg(Msg, Domain, Addr, State, NoteStore, Log)

查看源码 (自 OTP 17.3 起)
-spec process_msg(Msg, Domain, Addr, State, NoteStore, Log) ->
                     {ok, Vsn, PduV2, PduMS, MsgDataV2} |
                     {ok, 'version-3', PduV3, PduMS, MsgDataV3} |
                     {discarded, Reason}
                     when
                         Msg :: binary(),
                         Domain :: snmpUDPDomain | snmp:tdomain(),
                         Addr :: {Ip, Port},
                         Ip :: inet:ip_address(),
                         Port :: inet:port_number(),
                         State :: mpd_state(),
                         NoteStore :: pid(),
                         Log :: logger(),
                         Vsn :: 'version-1' | 'version-2',
                         PduV2 :: snmp_pdus:pdu() | snmp_pdus:trappdu(),
                         PduV3 :: snmp_pdus:pdu(),
                         PduMS :: pos_integer(),
                         MsgDataV2 :: msg_data_cmyt(),
                         MsgDataV3 :: ok | {error, ReqId, ACM} | undefined | msg_data_acm(),
                         ReqId :: snmpm:request_id(),
                         ACM :: term(),
                         Reason :: term().

处理传入的消息。根据需要执行身份验证和解密。返回值应传递给管理器服务器。

NoteStorenote-store 进程的 pid()

Logger 是用于审计跟踪日志的函数。

当 pdu 类型为 report 时,MsgData 要么是 ok,要么是 {error, ReqId, Reason}