Don't include local addresses in the all_ipv4/6 list

This commit is contained in:
Michael DeHaan 2012-08-11 12:08:55 -04:00
parent 08ce3692b2
commit 32922e404b

View file

@ -448,8 +448,12 @@ class LinuxNetwork(Network):
def parse_ip_addr(self): def parse_ip_addr(self):
interfaces = {} interfaces = {}
ips = {'all_ipv4_addresses': [], 'all_ipv6_addresses': [], ips = dict(
'ipv4_address': None, 'ipv6_address': None} all_ipv4_addresses = [],
all_ipv6_addresses = [],
ipv4_address = None,
ipv6_address = None
)
output = subprocess.Popen(['ip','addr'], stdout=subprocess.PIPE).communicate()[0] output = subprocess.Popen(['ip','addr'], stdout=subprocess.PIPE).communicate()[0]
for line in output.split('\n'): for line in output.split('\n'):
@ -490,8 +494,9 @@ class LinuxNetwork(Network):
'netmask': netmask, 'netmask': netmask,
'network': network} 'network': network}
if not address.startswith('127.'):
ips['all_ipv4_addresses'].append(address) ips['all_ipv4_addresses'].append(address)
if not ips['ipv4_address'] or ips['ipv4_address'].startswith('127'): if not ips['ipv4_address'] or ips['ipv4_address'].startswith('127.'):
ips['ipv4_address'] = address ips['ipv4_address'] = address
elif words[0] == 'inet6': elif words[0] == 'inet6':
@ -511,6 +516,7 @@ class LinuxNetwork(Network):
'prefix': prefix, 'prefix': prefix,
'scope': scope} ) 'scope': scope} )
if not address == '::1':
ips['all_ipv6_addresses'].append(address) ips['all_ipv6_addresses'].append(address)
if not ips['ipv6_address'] or ips['ipv6_address'] == '::1': if not ips['ipv6_address'] or ips['ipv6_address'] == '::1':
ips['ipv6_address'] = address ips['ipv6_address'] = address