是否可以不通过/ sys获得网络接口索引?


11

所以我要寻找的是接口索引(或名称),但真正的索引。 if_nametoindex(3)并且ioctl(2)似乎没有帮助我在这里。现在,我找到方法的唯一方法是通过/sys。让我在示例中演示我需要什么:

# cat /sys/class/net/bond0.1007/ifindex 
26
# cat /sys/class/net/bond0.1007/iflink
23                                  <-- I need either this or a reference to bond0
# cat /sys/class/net/bond0/ifindex 
23

有没有办法通过函数调用做到这一点,或者唯一的方法是sysfs


看什么ip link show呢(可能使用网络链路API)
斯特凡Chazelas

另请参见,/proc/net/vlan/config或者/proc/net/vlan/bond0.1007这是VLAN接口。
斯特凡Chazelas

@StéphaneChazelas谢谢。我决定继续使用/sys/proc或者/sys是在这个意义上或多或少相同。我只是想检查是否有系统调用来获取这种信息,事实证明没有。
2014年

1
使用netlink套接字API的syscalls是sendmsg / recvmsg。
斯特凡Chazelas

1
rtnetlink文档:man7.org/linux/man-pages/man7/rtnetlink.7.html-发出RTM_GETLINK消息并寻找要IFLA_LINK回复的属性。
ecatmur

Answers:


1

该命令ip link show可能是您想要的。它将在界面信息前面显示索引。下面的示例来自具有绑定NIC的系统。

# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9214 qdisc mq master bond0 portid 000f53000000 state UP mode DEFAULT qlen 1000
    link/ether 00:0f:53:00:00:00 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9214 qdisc mq master bond0 portid 000f53000001 state UP mode DEFAULT qlen 1000
    link/ether 00:0f:53:00:00:00 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 9214 qdisc noqueue state UP mode DEFAULT qlen 1000
    link/ether 00:0f:53:00:00:00 brd ff:ff:ff:ff:ff:ff
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.