檢視原始碼 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) 完成之前呼叫。

類型

連結到此類型

pdu_type()

檢視原始碼 (未匯出)
-type pdu_type() :: snmpa:pdu_type().
連結到此類型

transportAddressWithPort()

檢視原始碼 (未匯出)
-type transportAddressWithPort() :: snmpa_conf:transportAddressWithPort().
連結到此類型

transportDomain()

檢視原始碼 (未匯出)
-type transportDomain() :: snmpa_conf:transportDomain().

回呼

連結到此回呼

accept_recv(Domain, Addr)

檢視原始碼
-callback accept_recv(Domain, Addr) -> boolean()
                         when Domain :: transportDomain(), Addr :: transportAddressWithPort().

在接收到訊息時呼叫(在任何處理完成之前)。

若要捨棄訊息,函式必須回傳 false

連結到此回呼

accept_recv_pdu(Domain, Addr, PduType)

檢視原始碼
-callback accept_recv_pdu(Domain, Addr, PduType) -> boolean()
                             when
                                 Domain :: transportDomain(),
                                 Addr :: transportAddressWithPort(),
                                 PduType :: pdu_type().

在基本訊息處理 (MPD) 完成後呼叫,但在將 pdu 交給主代理程式進行主要處理之前呼叫。

若要捨棄 pdu,函式必須回傳 false

連結到此回呼

accept_send(Domain, Addr)

檢視原始碼
-callback accept_send(Domain, Addr) -> boolean()
                         when Domain :: transportDomain(), Addr :: transportAddressWithPort().

在傳送訊息之前呼叫(在所有處理完成之後)。

若要捨棄訊息,函式必須回傳 false

連結到此回呼

accept_send_pdu(Targets, PduType)

檢視原始碼
-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) 來篩選目標(但不能新增自己的目標)。