使用NETLINK的VLAN信息

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)

Cha*_*ara 4

在创建 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)