auto-t: support IP match with no IP set

This allows an interface with no IP set to be checked for
by passing None in as the address. This will generate an
exception by ioctl which we catch.
This commit is contained in:
James Prestwood 2020-12-10 09:45:22 -08:00 committed by Denis Kenzior
parent d2cc033d09
commit d40cac403f
1 changed files with 9 additions and 3 deletions

View File

@ -146,9 +146,15 @@ def test_iface_operstate(intf=None):
sock.close()
def test_ip_address_match(intf, ip):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
addr = fcntl.ioctl(s.fileno(), SIOCGIFADDR, struct.pack('256s', intf.encode('utf-8')))
addr = socket.inet_ntoa(addr[20:24])
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
addr = fcntl.ioctl(s.fileno(), SIOCGIFADDR, struct.pack('256s', intf.encode('utf-8')))
addr = socket.inet_ntoa(addr[20:24])
except OSError as e:
if e.errno != 99 or ip != None:
raise Exception('SIOCGIFADDR failed with %d' % e.errno)
return
if ip != addr:
raise Exception('IP for %s did not match %s (was %s)' % (intf, ip, addr))