檢視原始碼 snmpm_mpd (snmp v5.18)
SNMP 管理器的訊息處理與分派模組
模組 snmpm_mpd
實作了 SNMP 管理器中獨立於版本的訊息處理與分派功能。它應該由網路介面程序(管理器網路介面定義)使用。
為了向後相容性,舊版 API 函式 process_msg/7
具有獨立的 IpAddr
和 PortNumber
引數,仍然可以像以前一樣運作。
摘要
型別
一個處理稽核追蹤記錄的 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 訊息所需的安全性資訊。
函式
-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().
產生一個可能加密的封包,將被傳送到網路。
NoteStore
是 note-store
程序的 pid()
。
MsgData
是 SNMP 訊息中使用的訊息特定資料。在 SNMPv1 和 SNMPv2c 中,此訊息資料是社群字串。在 SNMPv3 中,它是內容資訊。
Logger
是用於稽核追蹤記錄的函式。
-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 計數器。
-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().
處理傳入的訊息。執行必要的驗證和解密。傳回值應傳遞給管理器伺服器。
NoteStore
是 note-store
程序的 pid()
。
Logger
是用於稽核追蹤記錄的函式。
在 PDU 類型為 report
的情況下,MsgData
要么是 ok
,要么是 {error, ReqId, Reason}
。