use*_*571 13 c linux kernel netlink vlan
如何使用C中的NETLINK套接字从内核到用户空间添加和删除VLAN子接口等VLAN信息?
我在评论中提到的NETLINK man中没有做过什么研究.我添加并删除了一个VLAN子接口,并使用netlink socket程序进行监控.添加和删除每个接收3条消息.添加发送3个NEWLINK消息,删除发送2个NEWLINK和1个DELLINK消息.为什么会这样?
添加新的VLAN接口eth1.75:
RTM_NEWLINK Link eth2.75 Down
RTM_NEWLINK Link eth2 Up
RTM_NEWLINK Link eth2.75 Up
Run Code Online (Sandbox Code Playgroud)
删除VLAN接口eth2.75:
RTM_NEWLINK Link eth2 Up
RTM_NEWLINK Link eth2.75 Down
RTM_DELLINK eth2.75
Run Code Online (Sandbox Code Playgroud)
在创建 netlink 套接字时,它会创建 3 个设备。这就是您收到 3 个事件的原因。这是它在事件发生时创建的 3 个设备add
。
net
子系统是上层控制设备。另外两个queues
用于处理数据。您可以如下验证。
当我执行udevadm monitor --env
并创建 VLAN 时,我从内核收到以下事件:
UDEV [305215.045416] add /devices/virtual/net/vpn0 (net)
ACTION=add
DEVPATH=/devices/virtual/net/vpn0
ID_MM_CANDIDATE=1
IFINDEX=10
INTERFACE=vpn0
SEQNUM=3665
SUBSYSTEM=net
USEC_INITIALIZED=5215023319
UDEV [305215.046658] add /devices/virtual/net/vpn0/queues/rx-0 (queues)
ACTION=add
DEVPATH=/devices/virtual/net/vpn0/queues/rx-0
SEQNUM=3666
SUBSYSTEM=queues
USEC_INITIALIZED=15044665
UDEV [305215.047628] add /devices/virtual/net/vpn0/queues/tx-0 (queues)
ACTION=add
DEVPATH=/devices/virtual/net/vpn0/queues/tx-0
SEQNUM=3667
SUBSYSTEM=queues
USEC_INITIALIZED=5215044729
Run Code Online (Sandbox Code Playgroud)