diff --git a/src/hostinfo/networkmanager.py b/src/hostinfo/networkmanager.py index 8b11501c6d379189885265823d239fd30a251b6f..8596423e15d858d488f218dd681b3a83dae004d2 100644 --- a/src/hostinfo/networkmanager.py +++ b/src/hostinfo/networkmanager.py @@ -113,8 +113,8 @@ class Network(object): def address_data(self, ip): a = util.address(ip) if a: - if ip.prefixlen[0]: - return dict(address=a.compressed, prefix=int(ip.prefixlen[0])) + if ip.prefix[0]: + return dict(address=a.compressed, prefix=int(ip.prefix[0])) else: for n in self._networks: if a in n: @@ -124,6 +124,10 @@ class Network(object): pass return None + def route_data(self, route): + return dict(dest=util.address(route.dest[0]).compressed, + prefix=int(route.prefix[0])) + def dns(self, ip): result = [] for i in filter(None, [ util.address(i) for i in ip ]): @@ -222,14 +226,20 @@ def configure_networking(connection, interface, settings=None): pass pass else: - ipv4a = list(filter(None, [network.address_data(i) - for i in interface._ip_])) - ipv6a = list(filter(None, [network.address_data(i) - for i in interface._ipv6_])) + ipv4a = list(filter(None, [ network.address_data(i) + for i in interface._ip_ ])) + ipv6a = list(filter(None, [ network.address_data(i) + for i in interface._ipv6_ ])) + ipv4r = list(filter(None, [ network.route_data(i) + for i in interface._route4_])) + ipv6r = list(filter(None, [ network.route_data(i) + for i in interface._route6_])) update['ipv4', 'address-data'] = ipv4a + update['ipv4', 'route-data'] = ipv4r update['ipv4', 'dns'] = network.dns(interface._ip_) update['ipv4', 'method'] = ('disabled','manual')[len(ipv4a) > 0] update['ipv6', 'address-data'] = ipv6a + update['ipv6', 'route-data'] = ipv6r update['ipv6', 'dns'] = network.dns(interface._ipv6_) update['ipv6', 'method'] = ('disabled','manual')[len(ipv6a) > 0] update['ipv6', 'dhcp-duid'] = None @@ -263,10 +273,13 @@ def configure_networking(connection, interface, settings=None): pass def cleanup_deprecated(settings): for family in [ 'ipv4', 'ipv6' ]: - if (family in settings and - 'address-data' in settings[family] and - 'addresses' in settings[family]): - del settings[family]['addresses'] + for modern,legacy in ( ('address-data', 'addresses'), + ('route-data', 'routes') ): + if (family in settings and + modern in settings[family] and + legacy in settings[family]): + del settings[family][legacy] + pass pass pass return settings