查看源代码 snmpm_network_interface_filter 行为 (snmp v5.18)
SNMP 管理器网络接口过滤器的行为模块。
此模块定义了管理器网络接口过滤器的行为。符合 snmpm_network_interface_filter
的模块必须导出以下函数
它们的语义及其确切签名在下面解释。
网络接口过滤器的目的是允许过滤(接受或拒绝)接收和发送的消息。这在两个级别上完成
- 第一级在 UDP 入口/出口点,即在接收到消息后立即,在进行任何消息处理之前(accept_recv),以及在发送消息之前立即,在完成所有消息处理之后(accept_send)。
- 第二级在 MPD 入口/出口点,即在基本消息处理之后(accept_recv_pdu)/在基本消息处理之前(accept_send_pdu)。
请注意,网络接口过滤器是应用程序提供的网络接口实现(snmpm_net_if
和 snmpm_net_if_mt
)所使用的。默认过滤器接受所有消息。
网络接口过滤器例如可以在测试期间或用于负载调节。
旧的网络接口过滤器模块使用 (IpAddr, PortNumber,...)
形式的参数,而不是 (Domain, Addr, ...)
,并且如果 SNMP 管理器在不更改配置以使用传输域的情况下运行,网络接口过滤器仍将获得旧的参数并像以前一样工作。
概要
回调
在接收到消息时调用(在任何处理完成之前)。
在基本消息处理 (MPD) 完成后调用,但在将 pdu 移交给服务器进行主要处理之前调用。
在发送消息之前调用(在所有处理完成后)。
当从主代理接收到 pdu 时,在完成基本消息处理 (MPD) 之前调用。
类型
-type pdu_type() :: snmpm: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(Domain, Addr, PduType) -> boolean() when Domain :: transportDomain(), Addr :: transportAddressWithPort(), PduType :: pdu_type().
当从主代理接收到 pdu 时,在完成基本消息处理 (MPD) 之前调用。
要拒绝该消息,该函数必须返回 false。