@@ -98,12 +98,20 @@ def _functions_accepting_devnames(self, devname):
9898
9999 scraped = ifconfig .get_device_by_name (devname )
100100
101- self .assertIsString (ethtool .get_broadcast (devname ))
102-
103- # Broadcast is optional in ifconfig output
104- if scraped .broadcast :
105- self .assertEqualIpv4Str (ethtool .get_broadcast (devname ),
106- scraped .broadcast )
101+ try :
102+ broadcast = ethtool .get_broadcast (devname )
103+ except (OSError , IOError ):
104+ # Some devices might end up with
105+ # [Errno 99] Cannot assign requested address
106+ # That's IOError on 2.7, OSError on 3
107+ assignable = False
108+ else :
109+ assignable = True
110+ self .assertIsString (broadcast )
111+
112+ # Broadcast is optional in ifconfig output
113+ if scraped .broadcast :
114+ self .assertEqualIpv4Str (broadcast , scraped .broadcast )
107115
108116 self .assertIsStringExceptForLoopback (ethtool .get_businfo , devname ,
109117 '[Errno 95] Operation not supported' )
@@ -116,15 +124,19 @@ def _functions_accepting_devnames(self, devname):
116124 self .assertIsString (ethtool .get_hwaddr (devname ))
117125 self .assertEqualHwAddr (ethtool .get_hwaddr (devname ),
118126 scraped .hwaddr )
119- self .assertIsString (ethtool .get_ipaddr (devname ))
120- self .assertEqual (ethtool .get_ipaddr (devname ), scraped .inet )
127+
128+ if assignable :
129+ self .assertIsString (ethtool .get_ipaddr (devname ))
130+ self .assertEqual (ethtool .get_ipaddr (devname ), scraped .inet )
121131
122132 self .assertIsStringExceptForLoopback (ethtool .get_module , devname ,
123133 '[Errno 95] Operation not supported' )
124134
125- self .assertIsString (ethtool .get_netmask (devname ))
126- self .assertEqual (ethtool .get_netmask (devname ),
127- scraped .netmask )
135+
136+ if assignable :
137+ self .assertIsString (ethtool .get_netmask (devname ))
138+ self .assertEqual (ethtool .get_netmask (devname ),
139+ scraped .netmask )
128140
129141 # Operation is not supported only on loopback device
130142 if devname == 'lo' :
0 commit comments