相关疑难解决方法(0)

如何通过Netlist和RTMGRP_LINK信号获得有关网络接口更改的通知?

我编写了一个程序,如果网络接口发生了变化,需要得到通知,特别是新的一个出现或者已经存在.我的研究带来了netlink及其RTMGRP_LINK信号.这个手册给出了一个我尚不清楚的例子.

它有这个代码:

memset(&sa, 0, sizeof(sa));
snl.nl_family = AF_NETLINK;
snl.nl_groups = RTMGRP_LINK | RTMGRP_IPV4_IFADDR;

fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
bind(fd, (struct sockaddr*)&sa, sizeof(sa));
Run Code Online (Sandbox Code Playgroud)

我的理解是这是一个初始化部分,用于启用某些信号.我想必须有一个处理事件的处理程序子程序.

我的问题是:

  • 这是启用该事件的正确代码段吗?

  • 如何处理事件:我需要一些处理程序吗?

  • 包含相关信息(关于网络接口及其更改)的数据结构是什么?

谢谢你的帮助.

c linux notifications netlink network-interface

7
推荐指数
1
解决办法
7417
查看次数

如何在不轮询内核的情况下获取C程序中新添加的NIC的pci地址?

根据以下链接,我了解到通过创建netlink套接字并收听RTMGRP_LINK,我们可以检测事件(网络接口创建/删除/上/下事件).

如何在不轮询内核的情况下监视C程序中的NIC状态(向上/向下)?

一旦检测到新添加的接口,是否可以获取pci地址?

c sockets netlink

2
推荐指数
1
解决办法
539
查看次数

标签 统计

c ×2

netlink ×2

linux ×1

network-interface ×1

notifications ×1

sockets ×1