mirror of
https://github.com/CumulusNetworks/ifupdown2.git
synced 2024-05-06 15:54:50 +00:00
python3: replacing ipaddr with custom ipnetwork.IPNetwork object
As mentioned in a previous commit: python3 ipaddress behave differently from python2-ipaddr, this is a serious problem for us since it breaks most of the ip addresses code. >>> import ipaddress >>> ipaddress.ip_network("10.10.10.242/10", False) IPv4Network('10.0.0.0/10') This is a problem for us, so we need to use a custom IPNetwork object. Our custom IPNetwork object uses ipaddress.IPAddress under the hood Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
This commit is contained in:
@@ -25,14 +25,16 @@
|
||||
import re
|
||||
import shlex
|
||||
import signal
|
||||
import ipaddress
|
||||
import subprocess
|
||||
|
||||
from ipaddr import IPNetwork
|
||||
|
||||
try:
|
||||
from ifupdown2.lib.sysfs import Sysfs
|
||||
from ifupdown2.lib.base_objects import Cache, Requirements
|
||||
|
||||
import ifupdown2.nlmanager.ipnetwork as ipnetwork
|
||||
|
||||
from ifupdown2.ifupdown.utils import utils
|
||||
from ifupdown2.ifupdown.iface import ifaceLinkPrivFlags
|
||||
from ifupdown2.nlmanager.nlpacket import Link
|
||||
@@ -40,6 +42,8 @@ except (ImportError, ModuleNotFoundError):
|
||||
from lib.sysfs import Sysfs
|
||||
from lib.base_objects import Cache, Requirements
|
||||
|
||||
import nlmanager.ipnetwork as ipnetwork
|
||||
|
||||
from ifupdown.utils import utils
|
||||
from ifupdown.iface import ifaceLinkPrivFlags
|
||||
from nlmanager.nlpacket import Link
|
||||
@@ -282,7 +286,7 @@ class IPRoute2(Cache, Requirements):
|
||||
]
|
||||
|
||||
if svcnodeip:
|
||||
if svcnodeip.is_multicast:
|
||||
if svcnodeip.ip.is_multicast:
|
||||
cmd.append("group %s" % svcnodeip)
|
||||
else:
|
||||
cmd.append("remote %s" % svcnodeip)
|
||||
@@ -325,7 +329,6 @@ class IPRoute2(Cache, Requirements):
|
||||
self.logger.error(str(e))
|
||||
finally:
|
||||
utils.disable_subprocess_signal_forwarding(signal.SIGINT)
|
||||
|
||||
return cur_peers
|
||||
|
||||
###
|
||||
@@ -447,27 +450,24 @@ class IPRoute2(Cache, Requirements):
|
||||
ip6 = []
|
||||
|
||||
for ip in user_addrs or []:
|
||||
obj = IPNetwork(ip)
|
||||
|
||||
if obj.version == 6:
|
||||
ip6.append(str(obj))
|
||||
if ip.version == 6:
|
||||
ip6.append(ip)
|
||||
else:
|
||||
ip4.append(str(obj))
|
||||
ip4.append(ip)
|
||||
|
||||
running_ipobj = []
|
||||
for ip in running_addrs or []:
|
||||
running_ipobj.append(str(ip))
|
||||
running_ipobj.append(ip)
|
||||
|
||||
return running_ipobj == (ip4 + ip6)
|
||||
|
||||
def add_addresses(self, ifacobj, ifname, address_list, purge_existing=False, metric=None, with_address_virtual=False):
|
||||
if purge_existing:
|
||||
running_address_list = self.cache.get_ifupdown2_addresses_list(
|
||||
[ifacobj],
|
||||
running_address_list = self.cache.get_managed_ip_addresses(
|
||||
ifname,
|
||||
[ifacobj],
|
||||
with_address_virtual=with_address_virtual
|
||||
)
|
||||
address_list = utils.get_normalized_ip_addr(ifname, address_list)
|
||||
|
||||
if self.__compare_user_config_vs_running_state(running_address_list, address_list):
|
||||
return
|
||||
@@ -695,7 +695,7 @@ class IPRoute2(Cache, Requirements):
|
||||
|
||||
ip_route_del = []
|
||||
for ip in ips:
|
||||
ip_network_obj = IPNetwork(ip)
|
||||
ip_network_obj = ipaddress.ip_network(ip)
|
||||
|
||||
if ip_network_obj.version == 6:
|
||||
route_prefix = '%s/%d' % (ip_network_obj.network, ip_network_obj.prefixlen)
|
||||
|
Reference in New Issue
Block a user