我一直在使用this code作为在 Linux 机器上接收接口(interface)启动/关闭事件的示例。我能够正确接收事件,但是当接口(interface)从先前的关闭状态恢复时,我会收到多个这样的网络链接事件:
Event received >> NETLINK::Down
Event received >> NETLINK::Down
Event received >> NETLINK::Up
编辑:我修改了这段代码中的一行:
addr.nl_groups = RTMGRP_LINK | RTMGRP_IPV4_IFADDR | RTMGRP_IPV6_IFADDR;
到:
addr.nl_groups = RTMGRP_LINK;
但我仍然收到多个事件。任何人都可以建议是否可以抑制这些事件以接收每个状态的唯一事件?如果是怎么办?
最佳答案
经过大量研究,我终于完成了这项工作。有一个名为“ifi_change”的标志,它给出了网络设备状态变化的变化。我无法想到它,因为 rtnetlink man page没有提及任何相关内容。它表示它保留供将来使用,应始终设置为 0xFFFFFFFF。但是,它的值会随着界面当前状态的变化而变化。如果状态发生变化,它会给出一个有限值,否则为零。使用此检查,我能够抑制多个网络链接消息。
关于c - 如何抑制多个 netlink 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27700208/