檢視原始碼 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}