檢視原始碼 snmpa_network_interface_filter 行為 (snmp v5.18)
SNMP 代理程式網路介面篩選器的行為模組。
此模組定義了代理程式網路介面篩選器的行為。一個符合 snmpa_network_interface_filter
的模組必須匯出以下函式:
accept_recv/2
accept_send/2
accept_recv_pdu/3
accept_send_pdu/2
它們的語義及其確切的簽名將在下面解釋。
網路介面篩選器的目的是允許對接收和傳送的訊息進行篩選(接受或拒絕)。這是分兩個層次進行的:
- 第一層位於傳輸進入/離開點,也就是在接收到訊息後、執行任何訊息處理之前(accept_recv),以及在完成所有訊息處理後、傳送訊息之前(accept_send)。
- 第二層位於 MPD 進入/離開點,也就是在基本訊息處理(accept_recv_pdu)之後,以及在基本訊息處理之前(accept_send_pdu)。
請注意,網路介面篩選器是應用程式(snmpa_net_if
)提供的網路介面實作所使用的東西。預設篩選器會接受所有訊息。
網路介面篩選器可以例如在測試期間或用於負載調節。如果預期的用途是負載調節,另請參閱req_limit和函式register_notification_filter。
舊版的網路介面篩選器模組使用 (IpAddr, PortNumber,...)
形式的參數,而不是 (Domain, Addr, ...)
,如果 SNMP 代理程式在不更改組態以使用傳輸網域的情況下執行,網路介面篩選器仍會取得舊參數,並像之前一樣運作。
另請參閱 snmpa_conf
中的資料類型。
摘要
回呼
在接收到訊息時呼叫(在任何處理完成之前)。
在基本訊息處理 (MPD) 完成後呼叫,但在將 pdu 交給主代理程式進行主要處理之前呼叫。
在傳送訊息之前呼叫(在所有處理完成之後)。
當從主代理程式接收到 pdu 時,在基本訊息處理 (MPD) 完成之前呼叫。
類型
-type pdu_type() :: snmpa:pdu_type().
-type transportAddressWithPort() :: snmpa_conf:transportAddressWithPort().
-type transportDomain() :: snmpa_conf:transportDomain().
回呼
-callback accept_recv(Domain, Addr) -> boolean() when Domain :: transportDomain(), Addr :: transportAddressWithPort().
在接收到訊息時呼叫(在任何處理完成之前)。
若要捨棄訊息,函式必須回傳 false。
-callback accept_recv_pdu(Domain, Addr, PduType) -> boolean() when Domain :: transportDomain(), Addr :: transportAddressWithPort(), PduType :: pdu_type().
在基本訊息處理 (MPD) 完成後呼叫,但在將 pdu 交給主代理程式進行主要處理之前呼叫。
若要捨棄 pdu,函式必須回傳 false。
-callback accept_send(Domain, Addr) -> boolean() when Domain :: transportDomain(), Addr :: transportAddressWithPort().
在傳送訊息之前呼叫(在所有處理完成之後)。
若要捨棄訊息,函式必須回傳 false。
-callback accept_send_pdu(Targets, PduType) -> Reply when Targets :: [Target], Target :: {Domain, Addr}, Domain :: transportDomain(), Addr :: transportAddressWithPort(), PduType :: pdu_type(), Reply :: boolean() | NewTargets, NewTargets :: Targets.
當從主代理程式接收到 pdu 時,在基本訊息處理 (MPD) 完成之前呼叫。
若要完全捨棄訊息,函式必須回傳 false。
請注意,此函式可以透過回傳更新的 Targets
列表 (NewTargets
) 來篩選目標(但不能新增自己的目標)。