Mam interfejs sieciowy, który ip link showraportuje w ten sposób:
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
link/ether 02:42:43:e6:b1:e7 brd ff:ff:ff:ff:ff:ff
Ale /sys/class/net/docker0/flagsmówi to:
$ cat /sys/class/net/docker0/flags
0x1003
Te trzy bity, które są ustawione są IFF_MULTICAST, IFF_BROADCASTi IFF_UP. Wygląda to na włączony interfejs. Dlaczego ip linkzgłaszasz się state DOWN?
System to Linux 4.15 / Ubuntu 18.04.
ip linkzgłasza, że ma flagi,BROADCAST,MULTICAST,UP,LOWER_UPale który pokazuje, że sysfs ma flagi 0x1003 (to samo co powyżej interfejs docker0). Myślę, że rozbieżność wynika z tego, że narzędzia iproute nie używają sysfs. Czy rozsądnie jest próbować wywnioskować stan łącza operacyjnego z sysfs, czy też konieczne jest użycie innego interfejsu? Robię to w pythonie i staram się unikaćsubprocess.call('ip link show | grep eth0'.split()).split()itp.