Optionally skip MAC address check in network

Network interfaces don't necessarily have a MAC address. For example,
the tunnel devices created by OpenVPN do not. Previously, passing a
network interface that did not have a MAC address caused the network
module to fail, since it assumed that there would be one.

This commit just adds a flag to the network module "mac", which defaults
to True. If True, the module behaves like before. If False, the check
for the MAC address is skipped and the {mac} format variable is replaced
with "NONE".

I tested this with my OpenVPN interface as well as my regular interface
and it works fine.
This commit is contained in:
Jason Hite 2014-03-08 19:46:06 -05:00
parent 4ed3f93678
commit 3bbd8d4765

View File

@ -74,6 +74,7 @@ class Network(IntervalModule):
"format_down", "color_down",
("detached_down", "If the interface doesn't exist, display it as if it were down"),
"name",
("mac", "Try and fetch the interface MAC address, default True")
)
name = interface = "eth0"
@ -82,6 +83,8 @@ class Network(IntervalModule):
color_up = "#00FF00"
color_down = "#FF0000"
detached_down = False
mac = True
def init(self):
if self.interface not in netifaces.interfaces() and not self.detached_down:
@ -101,8 +104,11 @@ class Network(IntervalModule):
fdict.update({
"interface": self.interface,
"name": self.name,
"mac": info[netifaces.AF_PACKET][0]["addr"],
})
if self.mac:
fdict["mac"] = info[netifaces.AF_PACKET][0]["addr"]
else:
fdict["mac"] = "NONE"
if up:
format = self.format_up