Apakah mungkin untuk mendapatkan indeks antarmuka jaringan tidak melalui / sys?

11

Jadi yang saya cari adalah indeks antarmuka (atau nama) tetapi yang asli. if_nametoindex(3)dan ioctl(2)sepertinya tidak membantu saya di sini. Sekarang satu-satunya cara saya menemukan cara melakukan ini adalah via /sys. Biarkan saya menunjukkan pada contoh apa yang saya butuhkan:

# 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

Apakah ada cara untuk melakukannya dengan pemanggilan fungsi atau satu-satunya cara adalah sysfs?

UVV
sumber
Lihatlah apa yang ip link showdilakukan (mungkin menggunakan api netlink)
Stéphane Chazelas
Lihat juga /proc/net/vlan/configatau /proc/net/vlan/bond0.1007apakah itu antarmuka vlan.
Stéphane Chazelas
@ StéphaneChazelas Terima kasih. Saya memutuskan untuk terus menggunakan /sys. /procatau /syskurang lebih sama dalam arti itu. Saya hanya ingin mengecek apakah ada syscall untuk mendapatkan info semacam ini, ternyata tidak ada.
UVV
1
syscalls akan menjadi sendmsg / recvmsg menggunakan netlink socket API.
Stéphane Chazelas
1
dokumentasi rtnetlink: man7.org/linux/man-pages/man7/rtnetlink.7.html - terbitkan RTM_GETLINKpesan dan cari IFLA_LINKatribut sebagai balasan.
ecatmur

Jawaban:

1

Perintahnya ip link showmungkin apa yang Anda inginkan. Ini akan menampilkan indeks di depan informasi antarmuka. Contoh di bawah ini dari sistem dengan NIC terikat.

# 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
Boscoe
sumber