Fix parse errors with link-local addresses

Link-local addresses received from netifaces contains '%suffix' that
causes parse error in IPNetwork class. We must remove %suffix before
it us used in IPNetwork objects.

https://fedorahosted.org/freeipa/ticket/6296

Reviewed-By: Tomas Krizek <tkrizek@redhat.com>
This commit is contained in:
Martin Basti
2016-09-05 14:33:58 +02:00
parent ec24019174
commit db55bde15d

View File

@@ -173,8 +173,13 @@ class CheckedIPAddress(UnsafeIPAddress):
iface = None
for interface in netifaces.interfaces():
for ifdata in netifaces.ifaddresses(interface).get(family, []):
# link-local addresses contain '%suffix' that causes parse
# errors in IPNetwork
ifaddr = ifdata['addr'].split(u'%', 1)[0]
ifnet = netaddr.IPNetwork('{addr}/{netmask}'.format(
addr=ifdata['addr'],
addr=ifaddr,
netmask=ifdata['netmask']
))
if ifnet == self._net or (