Как получить все физические интерфейсы

Я хочу получить все физические интерфейсы в системе, я видел много ссылок на getifaddrss но он получает все интерфейсы, независимо от того, является ли это vlan / macvlan или физическим интерфейсом.
Я могу только предположить netlink сможет сделать это (когда сокет создается из пространства имен сети).

1

Решение

использование sysfs — просто пройтись /sys/class/net, Это также покажет отношения между устройствами, такими как соединение, мосты. Однако VLAN может быть угадан только по имени устройства (есть патчи, которые связывают 8021q к sysfs, но они не были приняты к ядру).

Вот мой код, который делает это: https://github.com/myaut/tsload/blob/master/agent/lib/libhostinfo/plat/linux/netinfo.c

0

Другие решения


По вопросам рекламы [email protected]