Correctly detect bonded slave interface state
Bonded slave interfaces under Linux were incorrectly being detected as always up. We now check sysfs directly to determine their state.
This commit is contained in:
parent
00c230f4f8
commit
18eaeb45be
@ -59,6 +59,15 @@ def get_bonded_slaves():
|
|||||||
return slaves
|
return slaves
|
||||||
|
|
||||||
|
|
||||||
|
def sysfs_interface_up(interface):
|
||||||
|
try:
|
||||||
|
with open("/sys/class/net/{}/operstate".format(interface)) as f:
|
||||||
|
status = f.read().strip()
|
||||||
|
except FileNotFoundError:
|
||||||
|
raise RuntimeError("Unknown interface {iface}!".format(iface=interface))
|
||||||
|
return status == "up"
|
||||||
|
|
||||||
|
|
||||||
class Network(IntervalModule):
|
class Network(IntervalModule):
|
||||||
"""
|
"""
|
||||||
Display network information about a interface.
|
Display network information about a interface.
|
||||||
@ -113,6 +122,7 @@ class Network(IntervalModule):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
|
if sysfs_interface_up(self.interface):
|
||||||
master_info = netifaces.ifaddresses(master)
|
master_info = netifaces.ifaddresses(master)
|
||||||
for af in (netifaces.AF_INET, netifaces.AF_INET6):
|
for af in (netifaces.AF_INET, netifaces.AF_INET6):
|
||||||
try:
|
try:
|
||||||
|
Loading…
Reference in New Issue
Block a user