檢視原始碼 snmpa_mpd (snmp v5.18)

SNMP 代理程式的訊息處理和分派模組

模組 snmpa_mpd 實作 SNMP 中用於代理程式的版本獨立訊息處理和分派功能。它應該從網路介面程序中使用(代理程式網路介面定義)。

資料類型

如需詳細資訊,請參閱 snmpa_conf 中的資料類型。

摘要

類型

這是 SNMP 訊息中使用的訊息特定資料。此值在來自代理程式(由 net-if 程序)的 send_pdusend_pdu_req 訊息中接收。

這是 SNMPv1 和 SNMPv2c 訊息中使用的訊息特定資料。

這是 SNMPv3 訊息中使用的訊息特定資料。

處理稽核追蹤記錄的 fun

這是 SNMP 訊息中使用的訊息特定資料。此值在來自代理程式(由 net-if 程序)的 send_pdusend_pdu_req 訊息中接收。

這是 SNMP 訊息中使用的訊息特定資料。在 SNMPv1 和 SNMPv2c 中,此訊息資料是社群字串。

這是 SNMP 訊息中使用的訊息特定資料。在 SNMPv3 中,它是上下文資訊。

函式

遞增與丟棄的 PDU 相關聯的變數。當 net_if 程序從代理程式接收到 discarded_pdu 訊息時,可以使用此函式。

產生一個可能加密的請求封包,以傳送到網路。

產生一個可能加密的回應封包,以傳送到網路。Type 是原始請求的 #pdu.type

可以在啟動時從 net_if 程序呼叫此函式。選項清單定義要使用的版本。

處理傳入的封包。必要時執行驗證和解密。傳回值應傳遞給代理程式。

將位址從內部 MIB 格式轉換為對 代理程式網路介面更有用的格式。

類型

-type acm_data() :: acm_data_cmy() | acm_data_v3().

這是 SNMP 訊息中使用的訊息特定資料。此值在來自代理程式(由 net-if 程序)的 send_pdusend_pdu_req 訊息中接收。

-opaque acm_data_cmy()

這是 SNMPv1 和 SNMPv2c 訊息中使用的訊息特定資料。

-opaque acm_data_v3()

這是 SNMPv3 訊息中使用的訊息特定資料。

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

處理稽核追蹤記錄的 fun

-opaque mpd_state()
-type msg_data() :: msg_data_cmy() | msg_data_ctx().

這是 SNMP 訊息中使用的訊息特定資料。此值在來自代理程式(由 net-if 程序)的 send_pdusend_pdu_req 訊息中接收。

-opaque msg_data_cmy()

這是 SNMP 訊息中使用的訊息特定資料。在 SNMPv1 和 SNMPv2c 中,此訊息資料是社群字串。

-opaque msg_data_ctx()

這是 SNMP 訊息中使用的訊息特定資料。在 SNMPv3 中,它是上下文資訊。

函式

連結到此函式

discarded_pdu(Variable)

檢視原始碼
-spec discarded_pdu(Variable) -> snmp:void() when Variable :: snmpa:name() | false.

遞增與丟棄的 PDU 相關聯的變數。當 net_if 程序從代理程式接收到 discarded_pdu 訊息時,可以使用此函式。

連結到此函式

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

檢視原始碼 (自 OTP R14B 起)
-spec generate_msg(Vsn, NoteStore, Pdu, MsgData, To) -> {ok, PacketsAndAddresses} | {discarded, Reason}
                      when
                          Vsn :: snmp_pdus:version(),
                          NoteStore :: pid(),
                          Pdu :: snmp_pdus:pdu(),
                          MsgData :: msg_data(),
                          To :: [{Domain, Address}],
                          PacketsAndAddresses :: [{Domain, Address, Packet}],
                          Domain :: snmpa_conf:transportDomain(),
                          Address :: snmpa_conf:transportAddress(),
                          Packet :: binary(),
                          Reason :: term().

等同於 generate_msg/6

連結到此函式

generate_msg(Vsn, NoteStore, Pdu, MsgData, LocalEngineID, To)

檢視原始碼 (自 OTP R14B 起)
-spec generate_msg(Vsn, NoteStore, Pdu, MsgData, LocalEngineID, To) ->
                      {ok, PacketsAndAddresses} | {discarded, Reason}
                      when
                          Vsn :: snmp_pdus:version(),
                          NoteStore :: pid(),
                          Pdu :: snmp_pdus:pdu(),
                          MsgData :: msg_data(),
                          LocalEngineID :: snmp_framework_mib:engine_id(),
                          To :: [DestAddr],
                          DestAddr :: {Domain, Address} | {{Domain, Address}, SecData},
                          SecData :: term(),
                          PacketsAndAddresses :: [{Domain, Address, Packet}],
                          Domain :: snmpa_conf:transportDomain(),
                          Address :: snmpa_conf:transportAddress(),
                          Packet :: binary(),
                          Reason :: term().

產生一個可能加密的請求封包,以傳送到網路。

MsgData 是 SNMP 訊息中使用的訊息特定資料。此值在來自代理程式的 send_pdusend_pdu_req 訊息中接收。在 SNMPv1 和 SNMPv2c 中,此訊息資料是 社群 字串。在 SNMPv3 中,它是 上下文 資訊。

To 是目的地位址及其對應安全參數的清單。此值從代理程式在同一個訊息中接收,然後通過 process_taddrs 轉換,然後傳遞給此函式。

注意

請注意,LocalEngineID 引數的使用僅適用於特殊情況,如果代理程式要「模擬」多個 EngineID!預設情況下,代理程式使用 SnmpEngineID 的值(請參閱 SNMP-FRAMEWORK-MIB)。

連結到此函式

generate_response_msg(Vsn, RePdu, Type, ACMData, Log)

檢視原始碼 (自 OTP R14B 起)
-spec generate_response_msg(Vsn, RePdu, Type, ACMData, Log) -> {ok, Packet} | {discarded, Reason}
                               when
                                   Vsn :: snmp_pdus:version(),
                                   RePdu :: snmp_pdus:pdu(),
                                   Type :: snmp_pdus:pdu_type(),
                                   ACMData :: acm_data(),
                                   Log :: logger(),
                                   Packet :: binary(),
                                   Reason :: term().

等同於 generate_response_msg/6

連結到此函式

generate_response_msg(Vsn, RePdu, Type, ACMData, LocalEngineID, Log)

檢視原始碼 (自 OTP R14B 起)
-spec generate_response_msg(Vsn, RePdu, Type, ACMData, LocalEngineID, Log) ->
                               {ok, Packet} | {discarded, Reason}
                               when
                                   Vsn :: snmp_pdus:version(),
                                   RePdu :: snmp_pdus:pdu(),
                                   Type :: snmp_pdus:pdu_type(),
                                   ACMData :: acm_data(),
                                   LocalEngineID :: snmp_framework_mib:engine_id(),
                                   Log :: logger(),
                                   Packet :: binary(),
                                   Reason :: term().

產生一個可能加密的回應封包,以傳送到網路。Type 是原始請求的 #pdu.type

注意

請注意,LocalEngineID 引數的使用僅適用於特殊情況,如果代理程式要「模擬」多個 EngineID!預設情況下,代理程式使用 SnmpEngineID 的值(請參閱 SNMP-FRAMEWORK-MIB)。

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

可以在啟動時從 net_if 程序呼叫此函式。選項清單定義要使用的版本。

它也會初始化一些 SNMP 計數器。

連結到此函式

process_packet(Packet, From, State, NoteStore, Log)

檢視原始碼 (自 OTP 17.3 起)
-spec process_packet(Packet, From, State, NoteStore, Log) ->
                        {ok, Vsn, Pdu, PduMS, ACMData} | {discarded, Reason} | {discovery, DiscoPacket}
                        when
                            Packet :: binary(),
                            From :: {TDomain, TAddress},
                            TDomain :: snmpa_conf:transportDomain(),
                            TAddress :: {IpAddr, IpPort},
                            IpAddr :: inet:ip_address(),
                            IpPort :: inet:port_number(),
                            State :: mpd_state(),
                            NoteStore :: pid(),
                            Log :: logger(),
                            Vsn :: snmp_pdus:version(),
                            Pdu :: snmp_pdus:pdu(),
                            PduMS :: pos_integer(),
                            ACMData :: acm_data(),
                            Reason :: term(),
                            DiscoPacket :: binary().

等同於 process_packet/6

連結到此函式

process_packet/6

檢視原始碼 (自 OTP R14B 起)
-spec process_packet(Packet, TDomain, TAddress, State, NoteStore, Log) ->
                        {ok, Vsn, Pdu, PduMS, ACMData} | {discarded, Reason} | {discovery, DiscoPacket}
                        when
                            Packet :: binary(),
                            TDomain :: snmpa_conf:transportDomain(),
                            TAddress :: {IpAddr, IpPort},
                            IpAddr :: inet:ip_address(),
                            IpPort :: inet:port_number(),
                            State :: mpd_state(),
                            NoteStore :: pid(),
                            Log :: logger(),
                            Vsn :: snmp_pdus:version(),
                            Pdu :: snmp_pdus:pdu(),
                            PduMS :: pos_integer(),
                            ACMData :: acm_data(),
                            Reason :: term(),
                            DiscoPacket :: binary();
                    (Packet, From, LocalEngineID, State, NoteStore, Log) ->
                        {ok, Vsn, Pdu, PduMS, ACMData} | {discarded, Reason} | {discovery, DiscoPacket}
                        when
                            Packet :: binary(),
                            From :: {TDomain, TAddress},
                            TDomain :: snmpa_conf:transportDomain(),
                            TAddress :: {IpAddr, IpPort},
                            IpAddr :: inet:ip_address(),
                            IpPort :: inet:port_number(),
                            LocalEngineID :: snmp_framework_mib:engine_id(),
                            State :: mpd_state(),
                            NoteStore :: pid(),
                            Log :: logger(),
                            Vsn :: snmp_pdus:version(),
                            Pdu :: snmp_pdus:pdu(),
                            PduMS :: pos_integer(),
                            ACMData :: acm_data(),
                            Reason :: term(),
                            DiscoPacket :: binary().

處理傳入的封包。必要時執行驗證和解密。傳回值應傳遞給代理程式。

注意

請注意,LocalEngineID 引數的使用僅適用於特殊情況,如果代理程式要「模擬」多個 EngineID!預設情況下,代理程式使用 SnmpEngineID 的值(請參閱 SNMP-FRAMEWORK-MIB)。

連結到此函式

process_taddrs(InDests)

檢視原始碼 (自 OTP 17.3 起)
-spec process_taddrs(InDests) -> OutDests
                        when
                            InDests :: [InDest],
                            InDest :: {{InDomain, InAddress}, SecData} | {InDomain, InAddress},
                            InDomain :: term(),
                            InAddress :: term(),
                            SecData :: term(),
                            OutDests :: [OutDest],
                            OutDest :: {{OutDomain, OutAddress}, SecData} | {OutDomain, OutAddress},
                            OutDomain :: snmpa_conf:transportDomain(),
                            OutAddress :: snmpa_conf:transportAddress().

將位址從內部 MIB 格式轉換為對 代理程式網路介面更有用的格式。

另請參閱 generate_msg