diff --git a/.travis.yml b/.travis.yml index bfd489f7..dc46d8b2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,6 @@ python: # command to install dependencies install: "pip install -r requirements.txt . && pip install flake8" # command to run tests -script: - - python -m unittest discover -s . -p '*_test.py' +script: + - pytest - flake8 . --count --select=W291,W293,W391 --statistics diff --git a/capirca/utils/iputils.py b/capirca/utils/iputils.py index 557cc401..201930ba 100644 --- a/capirca/utils/iputils.py +++ b/capirca/utils/iputils.py @@ -5,8 +5,8 @@ import ipaddress def exclude_address( - base_net: ipaddress._BaseNetwork, - exclude_net: ipaddress._BaseNetwork + base_net: ipaddress._BaseNetwork, # pylint disable=protected-access + exclude_net: ipaddress._BaseNetwork # pylint disable=protected-access ): ''' Function to exclude a subnetwork from another, returning a generator that yields @@ -29,14 +29,17 @@ def exclude_address( A sequence of IP networks that do not encompass the exclude_net ''' - if not base_net._version == exclude_net._version: + if not isinstance(base_net, ipaddress._BaseNetwork): # pylint disable=protected-access + raise TypeError('%s is not a network object' % base_net) + + if not isinstance(exclude_net, ipaddress._BaseNetwork): # pylint disable=protected-access + raise TypeError('%s is not a network object' % exclude_net) + + if not base_net._version == exclude_net._version: # pylint disable=protected-access raise TypeError( '%s and %s are not of the same version' % (base_net, exclude_net) ) - if not isinstance(exclude_net, ipaddress._BaseNetwork): - raise TypeError('%s is not a network object' % exclude_net) - if not exclude_net.subnet_of(base_net): raise ValueError() if exclude_net == base_net: diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 00000000..db0b00f7 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,4 @@ +[tool:pytest] +markers = + unit: Marks a unit test +testpath = tests \ No newline at end of file diff --git a/tests/utils/__init__.py b/tests/utils/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/utils/address_exclude_test_cases.txt b/tests/utils/address_exclude_test_cases.txt new file mode 100644 index 00000000..798470e6 --- /dev/null +++ b/tests/utils/address_exclude_test_cases.txt @@ -0,0 +1,5 @@ +fddf:d8b5:d34c:c98c::/64 fddf:d8b5:d34c:c98c:9700::/72,fddf:d8b5:d34c:c98c:850::/76,fddf:d8b5:d34c:c98c:6f20::/76,fddf:d8b5:d34c:c98c:9b90::/76,fddf:d8b5:d34c:c98c:f490::/76,fddf:d8b5:d34c:c98c:8458::/77,fddf:d8b5:d34c:c98c:a810::/77,fddf:d8b5:d34c:c98c:ab00::/77,fddf:d8b5:d34c:c98c:bba8::/77,fddf:d8b5:d34c:c98c:174::/78,fddf:d8b5:d34c:c98c:1c80::/78,fddf:d8b5:d34c:c98c:5c84::/78,fddf:d8b5:d34c:c98c:6688::/78,fddf:d8b5:d34c:c98c:6eac::/78,fddf:d8b5:d34c:c98c:8258::/78,fddf:d8b5:d34c:c98c:c948::/78,fddf:d8b5:d34c:c98c:df68::/78,fddf:d8b5:d34c:c98c:e79c::/78,fddf:d8b5:d34c:c98c:fbf8::/78,fddf:d8b5:d34c:c98c:17b2::/79,fddf:d8b5:d34c:c98c:1a76::/79,fddf:d8b5:d34c:c98c:1b40::/79,fddf:d8b5:d34c:c98c:294a::/79,fddf:d8b5:d34c:c98c:4548::/79,fddf:d8b5:d34c:c98c:6d72::/79,fddf:d8b5:d34c:c98c:9ff8::/79,fddf:d8b5:d34c:c98c:c1f0::/79,fddf:d8b5:d34c:c98c:c70e::/79,fddf:d8b5:d34c:c98c:dd6e::/79,fddf:d8b5:d34c:c98c:dfae::/79 fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/68,fddf:d8b5:d34c:c98c:9000::/70,fddf:d8b5:d34c:c98c:9400::/71,fddf:d8b5:d34c:c98c:9600::/72,fddf:d8b5:d34c:c98c:9800::/69,fddf:d8b5:d34c:c98c:a000::/67,fddf:d8b5:d34c:c98c:c000::/66;fddf:d8b5:d34c:c98c::/69,fddf:d8b5:d34c:c98c:800::/74,fddf:d8b5:d34c:c98c:840::/76,fddf:d8b5:d34c:c98c:860::/75,fddf:d8b5:d34c:c98c:880::/73,fddf:d8b5:d34c:c98c:900::/72,fddf:d8b5:d34c:c98c:a00::/71,fddf:d8b5:d34c:c98c:c00::/70,fddf:d8b5:d34c:c98c:1000::/68,fddf:d8b5:d34c:c98c:2000::/67,fddf:d8b5:d34c:c98c:4000::/66,fddf:d8b5:d34c:c98c:8000::/65;fddf:d8b5:d34c:c98c::/66,fddf:d8b5:d34c:c98c:4000::/67,fddf:d8b5:d34c:c98c:6000::/69,fddf:d8b5:d34c:c98c:6800::/70,fddf:d8b5:d34c:c98c:6c00::/71,fddf:d8b5:d34c:c98c:6e00::/72,fddf:d8b5:d34c:c98c:6f00::/75,fddf:d8b5:d34c:c98c:6f30::/76,fddf:d8b5:d34c:c98c:6f40::/74,fddf:d8b5:d34c:c98c:6f80::/73,fddf:d8b5:d34c:c98c:7000::/68,fddf:d8b5:d34c:c98c:8000::/65;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/68,fddf:d8b5:d34c:c98c:9000::/69,fddf:d8b5:d34c:c98c:9800::/71,fddf:d8b5:d34c:c98c:9a00::/72,fddf:d8b5:d34c:c98c:9b00::/73,fddf:d8b5:d34c:c98c:9b80::/76,fddf:d8b5:d34c:c98c:9ba0::/75,fddf:d8b5:d34c:c98c:9bc0::/74,fddf:d8b5:d34c:c98c:9c00::/70,fddf:d8b5:d34c:c98c:a000::/67,fddf:d8b5:d34c:c98c:c000::/66;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/66,fddf:d8b5:d34c:c98c:c000::/67,fddf:d8b5:d34c:c98c:e000::/68,fddf:d8b5:d34c:c98c:f000::/70,fddf:d8b5:d34c:c98c:f400::/73,fddf:d8b5:d34c:c98c:f480::/76,fddf:d8b5:d34c:c98c:f4a0::/75,fddf:d8b5:d34c:c98c:f4c0::/74,fddf:d8b5:d34c:c98c:f500::/72,fddf:d8b5:d34c:c98c:f600::/71,fddf:d8b5:d34c:c98c:f800::/69;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/70,fddf:d8b5:d34c:c98c:8400::/74,fddf:d8b5:d34c:c98c:8440::/76,fddf:d8b5:d34c:c98c:8450::/77,fddf:d8b5:d34c:c98c:8460::/75,fddf:d8b5:d34c:c98c:8480::/73,fddf:d8b5:d34c:c98c:8500::/72,fddf:d8b5:d34c:c98c:8600::/71,fddf:d8b5:d34c:c98c:8800::/69,fddf:d8b5:d34c:c98c:9000::/68,fddf:d8b5:d34c:c98c:a000::/67,fddf:d8b5:d34c:c98c:c000::/66;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/67,fddf:d8b5:d34c:c98c:a000::/69,fddf:d8b5:d34c:c98c:a800::/76,fddf:d8b5:d34c:c98c:a818::/77,fddf:d8b5:d34c:c98c:a820::/75,fddf:d8b5:d34c:c98c:a840::/74,fddf:d8b5:d34c:c98c:a880::/73,fddf:d8b5:d34c:c98c:a900::/72,fddf:d8b5:d34c:c98c:aa00::/71,fddf:d8b5:d34c:c98c:ac00::/70,fddf:d8b5:d34c:c98c:b000::/68,fddf:d8b5:d34c:c98c:c000::/66;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/67,fddf:d8b5:d34c:c98c:a000::/69,fddf:d8b5:d34c:c98c:a800::/71,fddf:d8b5:d34c:c98c:aa00::/72,fddf:d8b5:d34c:c98c:ab08::/77,fddf:d8b5:d34c:c98c:ab10::/76,fddf:d8b5:d34c:c98c:ab20::/75,fddf:d8b5:d34c:c98c:ab40::/74,fddf:d8b5:d34c:c98c:ab80::/73,fddf:d8b5:d34c:c98c:ac00::/70,fddf:d8b5:d34c:c98c:b000::/68,fddf:d8b5:d34c:c98c:c000::/66;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/67,fddf:d8b5:d34c:c98c:a000::/68,fddf:d8b5:d34c:c98c:b000::/69,fddf:d8b5:d34c:c98c:b800::/71,fddf:d8b5:d34c:c98c:ba00::/72,fddf:d8b5:d34c:c98c:bb00::/73,fddf:d8b5:d34c:c98c:bb80::/75,fddf:d8b5:d34c:c98c:bba0::/77,fddf:d8b5:d34c:c98c:bbb0::/76,fddf:d8b5:d34c:c98c:bbc0::/74,fddf:d8b5:d34c:c98c:bc00::/70,fddf:d8b5:d34c:c98c:c000::/66;fddf:d8b5:d34c:c98c::/72,fddf:d8b5:d34c:c98c:100::/74,fddf:d8b5:d34c:c98c:140::/75,fddf:d8b5:d34c:c98c:160::/76,fddf:d8b5:d34c:c98c:170::/78,fddf:d8b5:d34c:c98c:178::/77,fddf:d8b5:d34c:c98c:180::/73,fddf:d8b5:d34c:c98c:200::/71,fddf:d8b5:d34c:c98c:400::/70,fddf:d8b5:d34c:c98c:800::/69,fddf:d8b5:d34c:c98c:1000::/68,fddf:d8b5:d34c:c98c:2000::/67,fddf:d8b5:d34c:c98c:4000::/66,fddf:d8b5:d34c:c98c:8000::/65;fddf:d8b5:d34c:c98c::/68,fddf:d8b5:d34c:c98c:1000::/69,fddf:d8b5:d34c:c98c:1800::/70,fddf:d8b5:d34c:c98c:1c00::/73,fddf:d8b5:d34c:c98c:1c84::/78,fddf:d8b5:d34c:c98c:1c88::/77,fddf:d8b5:d34c:c98c:1c90::/76,fddf:d8b5:d34c:c98c:1ca0::/75,fddf:d8b5:d34c:c98c:1cc0::/74,fddf:d8b5:d34c:c98c:1d00::/72,fddf:d8b5:d34c:c98c:1e00::/71,fddf:d8b5:d34c:c98c:2000::/67,fddf:d8b5:d34c:c98c:4000::/66,fddf:d8b5:d34c:c98c:8000::/65;fddf:d8b5:d34c:c98c::/66,fddf:d8b5:d34c:c98c:4000::/68,fddf:d8b5:d34c:c98c:5000::/69,fddf:d8b5:d34c:c98c:5800::/70,fddf:d8b5:d34c:c98c:5c00::/73,fddf:d8b5:d34c:c98c:5c80::/78,fddf:d8b5:d34c:c98c:5c88::/77,fddf:d8b5:d34c:c98c:5c90::/76,fddf:d8b5:d34c:c98c:5ca0::/75,fddf:d8b5:d34c:c98c:5cc0::/74,fddf:d8b5:d34c:c98c:5d00::/72,fddf:d8b5:d34c:c98c:5e00::/71,fddf:d8b5:d34c:c98c:6000::/67,fddf:d8b5:d34c:c98c:8000::/65;fddf:d8b5:d34c:c98c::/66,fddf:d8b5:d34c:c98c:4000::/67,fddf:d8b5:d34c:c98c:6000::/70,fddf:d8b5:d34c:c98c:6400::/71,fddf:d8b5:d34c:c98c:6600::/73,fddf:d8b5:d34c:c98c:6680::/77,fddf:d8b5:d34c:c98c:668c::/78,fddf:d8b5:d34c:c98c:6690::/76,fddf:d8b5:d34c:c98c:66a0::/75,fddf:d8b5:d34c:c98c:66c0::/74,fddf:d8b5:d34c:c98c:6700::/72,fddf:d8b5:d34c:c98c:6800::/69,fddf:d8b5:d34c:c98c:7000::/68,fddf:d8b5:d34c:c98c:8000::/65;fddf:d8b5:d34c:c98c::/66,fddf:d8b5:d34c:c98c:4000::/67,fddf:d8b5:d34c:c98c:6000::/69,fddf:d8b5:d34c:c98c:6800::/70,fddf:d8b5:d34c:c98c:6c00::/71,fddf:d8b5:d34c:c98c:6e00::/73,fddf:d8b5:d34c:c98c:6e80::/75,fddf:d8b5:d34c:c98c:6ea0::/77,fddf:d8b5:d34c:c98c:6ea8::/78,fddf:d8b5:d34c:c98c:6eb0::/76,fddf:d8b5:d34c:c98c:6ec0::/74,fddf:d8b5:d34c:c98c:6f00::/72,fddf:d8b5:d34c:c98c:7000::/68,fddf:d8b5:d34c:c98c:8000::/65;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/71,fddf:d8b5:d34c:c98c:8200::/74,fddf:d8b5:d34c:c98c:8240::/76,fddf:d8b5:d34c:c98c:8250::/77,fddf:d8b5:d34c:c98c:825c::/78,fddf:d8b5:d34c:c98c:8260::/75,fddf:d8b5:d34c:c98c:8280::/73,fddf:d8b5:d34c:c98c:8300::/72,fddf:d8b5:d34c:c98c:8400::/70,fddf:d8b5:d34c:c98c:8800::/69,fddf:d8b5:d34c:c98c:9000::/68,fddf:d8b5:d34c:c98c:a000::/67,fddf:d8b5:d34c:c98c:c000::/66;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/66,fddf:d8b5:d34c:c98c:c000::/69,fddf:d8b5:d34c:c98c:c800::/72,fddf:d8b5:d34c:c98c:c900::/74,fddf:d8b5:d34c:c98c:c940::/77,fddf:d8b5:d34c:c98c:c94c::/78,fddf:d8b5:d34c:c98c:c950::/76,fddf:d8b5:d34c:c98c:c960::/75,fddf:d8b5:d34c:c98c:c980::/73,fddf:d8b5:d34c:c98c:ca00::/71,fddf:d8b5:d34c:c98c:cc00::/70,fddf:d8b5:d34c:c98c:d000::/68,fddf:d8b5:d34c:c98c:e000::/67;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/66,fddf:d8b5:d34c:c98c:c000::/68,fddf:d8b5:d34c:c98c:d000::/69,fddf:d8b5:d34c:c98c:d800::/70,fddf:d8b5:d34c:c98c:dc00::/71,fddf:d8b5:d34c:c98c:de00::/72,fddf:d8b5:d34c:c98c:df00::/74,fddf:d8b5:d34c:c98c:df40::/75,fddf:d8b5:d34c:c98c:df60::/77,fddf:d8b5:d34c:c98c:df6c::/78,fddf:d8b5:d34c:c98c:df70::/76,fddf:d8b5:d34c:c98c:df80::/73,fddf:d8b5:d34c:c98c:e000::/67;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/66,fddf:d8b5:d34c:c98c:c000::/67,fddf:d8b5:d34c:c98c:e000::/70,fddf:d8b5:d34c:c98c:e400::/71,fddf:d8b5:d34c:c98c:e600::/72,fddf:d8b5:d34c:c98c:e700::/73,fddf:d8b5:d34c:c98c:e780::/76,fddf:d8b5:d34c:c98c:e790::/77,fddf:d8b5:d34c:c98c:e798::/78,fddf:d8b5:d34c:c98c:e7a0::/75,fddf:d8b5:d34c:c98c:e7c0::/74,fddf:d8b5:d34c:c98c:e800::/69,fddf:d8b5:d34c:c98c:f000::/68;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/66,fddf:d8b5:d34c:c98c:c000::/67,fddf:d8b5:d34c:c98c:e000::/68,fddf:d8b5:d34c:c98c:f000::/69,fddf:d8b5:d34c:c98c:f800::/71,fddf:d8b5:d34c:c98c:fa00::/72,fddf:d8b5:d34c:c98c:fb00::/73,fddf:d8b5:d34c:c98c:fb80::/74,fddf:d8b5:d34c:c98c:fbc0::/75,fddf:d8b5:d34c:c98c:fbe0::/76,fddf:d8b5:d34c:c98c:fbf0::/77,fddf:d8b5:d34c:c98c:fbfc::/78,fddf:d8b5:d34c:c98c:fc00::/70;fddf:d8b5:d34c:c98c::/68,fddf:d8b5:d34c:c98c:1000::/70,fddf:d8b5:d34c:c98c:1400::/71,fddf:d8b5:d34c:c98c:1600::/72,fddf:d8b5:d34c:c98c:1700::/73,fddf:d8b5:d34c:c98c:1780::/75,fddf:d8b5:d34c:c98c:17a0::/76,fddf:d8b5:d34c:c98c:17b0::/79,fddf:d8b5:d34c:c98c:17b4::/78,fddf:d8b5:d34c:c98c:17b8::/77,fddf:d8b5:d34c:c98c:17c0::/74,fddf:d8b5:d34c:c98c:1800::/69,fddf:d8b5:d34c:c98c:2000::/67,fddf:d8b5:d34c:c98c:4000::/66,fddf:d8b5:d34c:c98c:8000::/65;fddf:d8b5:d34c:c98c::/68,fddf:d8b5:d34c:c98c:1000::/69,fddf:d8b5:d34c:c98c:1800::/71,fddf:d8b5:d34c:c98c:1a00::/74,fddf:d8b5:d34c:c98c:1a40::/75,fddf:d8b5:d34c:c98c:1a60::/76,fddf:d8b5:d34c:c98c:1a70::/78,fddf:d8b5:d34c:c98c:1a74::/79,fddf:d8b5:d34c:c98c:1a78::/77,fddf:d8b5:d34c:c98c:1a80::/73,fddf:d8b5:d34c:c98c:1b00::/72,fddf:d8b5:d34c:c98c:1c00::/70,fddf:d8b5:d34c:c98c:2000::/67,fddf:d8b5:d34c:c98c:4000::/66,fddf:d8b5:d34c:c98c:8000::/65;fddf:d8b5:d34c:c98c::/68,fddf:d8b5:d34c:c98c:1000::/69,fddf:d8b5:d34c:c98c:1800::/71,fddf:d8b5:d34c:c98c:1a00::/72,fddf:d8b5:d34c:c98c:1b00::/74,fddf:d8b5:d34c:c98c:1b42::/79,fddf:d8b5:d34c:c98c:1b44::/78,fddf:d8b5:d34c:c98c:1b48::/77,fddf:d8b5:d34c:c98c:1b50::/76,fddf:d8b5:d34c:c98c:1b60::/75,fddf:d8b5:d34c:c98c:1b80::/73,fddf:d8b5:d34c:c98c:1c00::/70,fddf:d8b5:d34c:c98c:2000::/67,fddf:d8b5:d34c:c98c:4000::/66,fddf:d8b5:d34c:c98c:8000::/65;fddf:d8b5:d34c:c98c::/67,fddf:d8b5:d34c:c98c:2000::/69,fddf:d8b5:d34c:c98c:2800::/72,fddf:d8b5:d34c:c98c:2900::/74,fddf:d8b5:d34c:c98c:2940::/77,fddf:d8b5:d34c:c98c:2948::/79,fddf:d8b5:d34c:c98c:294c::/78,fddf:d8b5:d34c:c98c:2950::/76,fddf:d8b5:d34c:c98c:2960::/75,fddf:d8b5:d34c:c98c:2980::/73,fddf:d8b5:d34c:c98c:2a00::/71,fddf:d8b5:d34c:c98c:2c00::/70,fddf:d8b5:d34c:c98c:3000::/68,fddf:d8b5:d34c:c98c:4000::/66,fddf:d8b5:d34c:c98c:8000::/65;fddf:d8b5:d34c:c98c::/66,fddf:d8b5:d34c:c98c:4000::/70,fddf:d8b5:d34c:c98c:4400::/72,fddf:d8b5:d34c:c98c:4500::/74,fddf:d8b5:d34c:c98c:4540::/77,fddf:d8b5:d34c:c98c:454a::/79,fddf:d8b5:d34c:c98c:454c::/78,fddf:d8b5:d34c:c98c:4550::/76,fddf:d8b5:d34c:c98c:4560::/75,fddf:d8b5:d34c:c98c:4580::/73,fddf:d8b5:d34c:c98c:4600::/71,fddf:d8b5:d34c:c98c:4800::/69,fddf:d8b5:d34c:c98c:5000::/68,fddf:d8b5:d34c:c98c:6000::/67,fddf:d8b5:d34c:c98c:8000::/65;fddf:d8b5:d34c:c98c::/66,fddf:d8b5:d34c:c98c:4000::/67,fddf:d8b5:d34c:c98c:6000::/69,fddf:d8b5:d34c:c98c:6800::/70,fddf:d8b5:d34c:c98c:6c00::/72,fddf:d8b5:d34c:c98c:6d00::/74,fddf:d8b5:d34c:c98c:6d40::/75,fddf:d8b5:d34c:c98c:6d60::/76,fddf:d8b5:d34c:c98c:6d70::/79,fddf:d8b5:d34c:c98c:6d74::/78,fddf:d8b5:d34c:c98c:6d78::/77,fddf:d8b5:d34c:c98c:6d80::/73,fddf:d8b5:d34c:c98c:6e00::/71,fddf:d8b5:d34c:c98c:7000::/68,fddf:d8b5:d34c:c98c:8000::/65;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/68,fddf:d8b5:d34c:c98c:9000::/69,fddf:d8b5:d34c:c98c:9800::/70,fddf:d8b5:d34c:c98c:9c00::/71,fddf:d8b5:d34c:c98c:9e00::/72,fddf:d8b5:d34c:c98c:9f00::/73,fddf:d8b5:d34c:c98c:9f80::/74,fddf:d8b5:d34c:c98c:9fc0::/75,fddf:d8b5:d34c:c98c:9fe0::/76,fddf:d8b5:d34c:c98c:9ff0::/77,fddf:d8b5:d34c:c98c:9ffa::/79,fddf:d8b5:d34c:c98c:9ffc::/78,fddf:d8b5:d34c:c98c:a000::/67,fddf:d8b5:d34c:c98c:c000::/66;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/66,fddf:d8b5:d34c:c98c:c000::/72,fddf:d8b5:d34c:c98c:c100::/73,fddf:d8b5:d34c:c98c:c180::/74,fddf:d8b5:d34c:c98c:c1c0::/75,fddf:d8b5:d34c:c98c:c1e0::/76,fddf:d8b5:d34c:c98c:c1f2::/79,fddf:d8b5:d34c:c98c:c1f4::/78,fddf:d8b5:d34c:c98c:c1f8::/77,fddf:d8b5:d34c:c98c:c200::/71,fddf:d8b5:d34c:c98c:c400::/70,fddf:d8b5:d34c:c98c:c800::/69,fddf:d8b5:d34c:c98c:d000::/68,fddf:d8b5:d34c:c98c:e000::/67;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/66,fddf:d8b5:d34c:c98c:c000::/70,fddf:d8b5:d34c:c98c:c400::/71,fddf:d8b5:d34c:c98c:c600::/72,fddf:d8b5:d34c:c98c:c700::/77,fddf:d8b5:d34c:c98c:c708::/78,fddf:d8b5:d34c:c98c:c70c::/79,fddf:d8b5:d34c:c98c:c710::/76,fddf:d8b5:d34c:c98c:c720::/75,fddf:d8b5:d34c:c98c:c740::/74,fddf:d8b5:d34c:c98c:c780::/73,fddf:d8b5:d34c:c98c:c800::/69,fddf:d8b5:d34c:c98c:d000::/68,fddf:d8b5:d34c:c98c:e000::/67;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/66,fddf:d8b5:d34c:c98c:c000::/68,fddf:d8b5:d34c:c98c:d000::/69,fddf:d8b5:d34c:c98c:d800::/70,fddf:d8b5:d34c:c98c:dc00::/72,fddf:d8b5:d34c:c98c:dd00::/74,fddf:d8b5:d34c:c98c:dd40::/75,fddf:d8b5:d34c:c98c:dd60::/77,fddf:d8b5:d34c:c98c:dd68::/78,fddf:d8b5:d34c:c98c:dd6c::/79,fddf:d8b5:d34c:c98c:dd70::/76,fddf:d8b5:d34c:c98c:dd80::/73,fddf:d8b5:d34c:c98c:de00::/71,fddf:d8b5:d34c:c98c:e000::/67;fddf:d8b5:d34c:c98c::/65,fddf:d8b5:d34c:c98c:8000::/66,fddf:d8b5:d34c:c98c:c000::/68,fddf:d8b5:d34c:c98c:d000::/69,fddf:d8b5:d34c:c98c:d800::/70,fddf:d8b5:d34c:c98c:dc00::/71,fddf:d8b5:d34c:c98c:de00::/72,fddf:d8b5:d34c:c98c:df00::/73,fddf:d8b5:d34c:c98c:df80::/75,fddf:d8b5:d34c:c98c:dfa0::/77,fddf:d8b5:d34c:c98c:dfa8::/78,fddf:d8b5:d34c:c98c:dfac::/79,fddf:d8b5:d34c:c98c:dfb0::/76,fddf:d8b5:d34c:c98c:dfc0::/74,fddf:d8b5:d34c:c98c:e000::/67 +fddf:d8b5:f3ba:c98c::/64 fddf:d8b5:f3ba:c98c:7b40::/74,fddf:d8b5:f3ba:c98c:7dc0::/75,fddf:d8b5:f3ba:c98c:5520::/76,fddf:d8b5:f3ba:c98c:3428::/77,fddf:d8b5:f3ba:c98c:69b0::/77,fddf:d8b5:f3ba:c98c:91b0::/77,fddf:d8b5:f3ba:c98c:ae10::/77,fddf:d8b5:f3ba:c98c:f4c8::/77,fddf:d8b5:f3ba:c98c:78::/78,fddf:d8b5:f3ba:c98c:3c0::/78,fddf:d8b5:f3ba:c98c:4098::/78,fddf:d8b5:f3ba:c98c:a318::/78,fddf:d8b5:f3ba:c98c:feb8::/78,fddf:d8b5:f3ba:c98c:2246::/79,fddf:d8b5:f3ba:c98c:2dd8::/79,fddf:d8b5:f3ba:c98c:3966::/79,fddf:d8b5:f3ba:c98c:3f62::/79,fddf:d8b5:f3ba:c98c:425e::/79,fddf:d8b5:f3ba:c98c:73c2::/79,fddf:d8b5:f3ba:c98c:803c::/79,fddf:d8b5:f3ba:c98c:87e4::/79,fddf:d8b5:f3ba:c98c:88e4::/79,fddf:d8b5:f3ba:c98c:931a::/79,fddf:d8b5:f3ba:c98c:ab08::/79,fddf:d8b5:f3ba:c98c:ad52::/79,fddf:d8b5:f3ba:c98c:c9c0::/79,fddf:d8b5:f3ba:c98c:cab8::/79,fddf:d8b5:f3ba:c98c:cf88::/79,fddf:d8b5:f3ba:c98c:de70::/79,fddf:d8b5:f3ba:c98c:f8b6::/79 fddf:d8b5:f3ba:c98c::/66,fddf:d8b5:f3ba:c98c:4000::/67,fddf:d8b5:f3ba:c98c:6000::/68,fddf:d8b5:f3ba:c98c:7000::/69,fddf:d8b5:f3ba:c98c:7800::/71,fddf:d8b5:f3ba:c98c:7a00::/72,fddf:d8b5:f3ba:c98c:7b00::/74,fddf:d8b5:f3ba:c98c:7b80::/73,fddf:d8b5:f3ba:c98c:7c00::/70,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/66,fddf:d8b5:f3ba:c98c:4000::/67,fddf:d8b5:f3ba:c98c:6000::/68,fddf:d8b5:f3ba:c98c:7000::/69,fddf:d8b5:f3ba:c98c:7800::/70,fddf:d8b5:f3ba:c98c:7c00::/72,fddf:d8b5:f3ba:c98c:7d00::/73,fddf:d8b5:f3ba:c98c:7d80::/74,fddf:d8b5:f3ba:c98c:7de0::/75,fddf:d8b5:f3ba:c98c:7e00::/71,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/66,fddf:d8b5:f3ba:c98c:4000::/68,fddf:d8b5:f3ba:c98c:5000::/70,fddf:d8b5:f3ba:c98c:5400::/72,fddf:d8b5:f3ba:c98c:5500::/75,fddf:d8b5:f3ba:c98c:5530::/76,fddf:d8b5:f3ba:c98c:5540::/74,fddf:d8b5:f3ba:c98c:5580::/73,fddf:d8b5:f3ba:c98c:5600::/71,fddf:d8b5:f3ba:c98c:5800::/69,fddf:d8b5:f3ba:c98c:6000::/67,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/67,fddf:d8b5:f3ba:c98c:2000::/68,fddf:d8b5:f3ba:c98c:3000::/70,fddf:d8b5:f3ba:c98c:3400::/75,fddf:d8b5:f3ba:c98c:3420::/77,fddf:d8b5:f3ba:c98c:3430::/76,fddf:d8b5:f3ba:c98c:3440::/74,fddf:d8b5:f3ba:c98c:3480::/73,fddf:d8b5:f3ba:c98c:3500::/72,fddf:d8b5:f3ba:c98c:3600::/71,fddf:d8b5:f3ba:c98c:3800::/69,fddf:d8b5:f3ba:c98c:4000::/66,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/66,fddf:d8b5:f3ba:c98c:4000::/67,fddf:d8b5:f3ba:c98c:6000::/69,fddf:d8b5:f3ba:c98c:6800::/72,fddf:d8b5:f3ba:c98c:6900::/73,fddf:d8b5:f3ba:c98c:6980::/75,fddf:d8b5:f3ba:c98c:69a0::/76,fddf:d8b5:f3ba:c98c:69b8::/77,fddf:d8b5:f3ba:c98c:69c0::/74,fddf:d8b5:f3ba:c98c:6a00::/71,fddf:d8b5:f3ba:c98c:6c00::/70,fddf:d8b5:f3ba:c98c:7000::/68,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/68,fddf:d8b5:f3ba:c98c:9000::/72,fddf:d8b5:f3ba:c98c:9100::/73,fddf:d8b5:f3ba:c98c:9180::/75,fddf:d8b5:f3ba:c98c:91a0::/76,fddf:d8b5:f3ba:c98c:91b8::/77,fddf:d8b5:f3ba:c98c:91c0::/74,fddf:d8b5:f3ba:c98c:9200::/71,fddf:d8b5:f3ba:c98c:9400::/70,fddf:d8b5:f3ba:c98c:9800::/69,fddf:d8b5:f3ba:c98c:a000::/67,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/67,fddf:d8b5:f3ba:c98c:a000::/69,fddf:d8b5:f3ba:c98c:a800::/70,fddf:d8b5:f3ba:c98c:ac00::/71,fddf:d8b5:f3ba:c98c:ae00::/76,fddf:d8b5:f3ba:c98c:ae18::/77,fddf:d8b5:f3ba:c98c:ae20::/75,fddf:d8b5:f3ba:c98c:ae40::/74,fddf:d8b5:f3ba:c98c:ae80::/73,fddf:d8b5:f3ba:c98c:af00::/72,fddf:d8b5:f3ba:c98c:b000::/68,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/67,fddf:d8b5:f3ba:c98c:e000::/68,fddf:d8b5:f3ba:c98c:f000::/70,fddf:d8b5:f3ba:c98c:f400::/73,fddf:d8b5:f3ba:c98c:f480::/74,fddf:d8b5:f3ba:c98c:f4c0::/77,fddf:d8b5:f3ba:c98c:f4d0::/76,fddf:d8b5:f3ba:c98c:f4e0::/75,fddf:d8b5:f3ba:c98c:f500::/72,fddf:d8b5:f3ba:c98c:f600::/71,fddf:d8b5:f3ba:c98c:f800::/69;fddf:d8b5:f3ba:c98c::/74,fddf:d8b5:f3ba:c98c:40::/75,fddf:d8b5:f3ba:c98c:60::/76,fddf:d8b5:f3ba:c98c:70::/77,fddf:d8b5:f3ba:c98c:7c::/78,fddf:d8b5:f3ba:c98c:80::/73,fddf:d8b5:f3ba:c98c:100::/72,fddf:d8b5:f3ba:c98c:200::/71,fddf:d8b5:f3ba:c98c:400::/70,fddf:d8b5:f3ba:c98c:800::/69,fddf:d8b5:f3ba:c98c:1000::/68,fddf:d8b5:f3ba:c98c:2000::/67,fddf:d8b5:f3ba:c98c:4000::/66,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/71,fddf:d8b5:f3ba:c98c:200::/72,fddf:d8b5:f3ba:c98c:300::/73,fddf:d8b5:f3ba:c98c:380::/74,fddf:d8b5:f3ba:c98c:3c4::/78,fddf:d8b5:f3ba:c98c:3c8::/77,fddf:d8b5:f3ba:c98c:3d0::/76,fddf:d8b5:f3ba:c98c:3e0::/75,fddf:d8b5:f3ba:c98c:400::/70,fddf:d8b5:f3ba:c98c:800::/69,fddf:d8b5:f3ba:c98c:1000::/68,fddf:d8b5:f3ba:c98c:2000::/67,fddf:d8b5:f3ba:c98c:4000::/66,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/66,fddf:d8b5:f3ba:c98c:4000::/73,fddf:d8b5:f3ba:c98c:4080::/76,fddf:d8b5:f3ba:c98c:4090::/77,fddf:d8b5:f3ba:c98c:409c::/78,fddf:d8b5:f3ba:c98c:40a0::/75,fddf:d8b5:f3ba:c98c:40c0::/74,fddf:d8b5:f3ba:c98c:4100::/72,fddf:d8b5:f3ba:c98c:4200::/71,fddf:d8b5:f3ba:c98c:4400::/70,fddf:d8b5:f3ba:c98c:4800::/69,fddf:d8b5:f3ba:c98c:5000::/68,fddf:d8b5:f3ba:c98c:6000::/67,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/67,fddf:d8b5:f3ba:c98c:a000::/71,fddf:d8b5:f3ba:c98c:a200::/72,fddf:d8b5:f3ba:c98c:a300::/76,fddf:d8b5:f3ba:c98c:a310::/77,fddf:d8b5:f3ba:c98c:a31c::/78,fddf:d8b5:f3ba:c98c:a320::/75,fddf:d8b5:f3ba:c98c:a340::/74,fddf:d8b5:f3ba:c98c:a380::/73,fddf:d8b5:f3ba:c98c:a400::/70,fddf:d8b5:f3ba:c98c:a800::/69,fddf:d8b5:f3ba:c98c:b000::/68,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/67,fddf:d8b5:f3ba:c98c:e000::/68,fddf:d8b5:f3ba:c98c:f000::/69,fddf:d8b5:f3ba:c98c:f800::/70,fddf:d8b5:f3ba:c98c:fc00::/71,fddf:d8b5:f3ba:c98c:fe00::/73,fddf:d8b5:f3ba:c98c:fe80::/75,fddf:d8b5:f3ba:c98c:fea0::/76,fddf:d8b5:f3ba:c98c:feb0::/77,fddf:d8b5:f3ba:c98c:febc::/78,fddf:d8b5:f3ba:c98c:fec0::/74,fddf:d8b5:f3ba:c98c:ff00::/72;fddf:d8b5:f3ba:c98c::/67,fddf:d8b5:f3ba:c98c:2000::/71,fddf:d8b5:f3ba:c98c:2200::/74,fddf:d8b5:f3ba:c98c:2240::/78,fddf:d8b5:f3ba:c98c:2244::/79,fddf:d8b5:f3ba:c98c:2248::/77,fddf:d8b5:f3ba:c98c:2250::/76,fddf:d8b5:f3ba:c98c:2260::/75,fddf:d8b5:f3ba:c98c:2280::/73,fddf:d8b5:f3ba:c98c:2300::/72,fddf:d8b5:f3ba:c98c:2400::/70,fddf:d8b5:f3ba:c98c:2800::/69,fddf:d8b5:f3ba:c98c:3000::/68,fddf:d8b5:f3ba:c98c:4000::/66,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/67,fddf:d8b5:f3ba:c98c:2000::/69,fddf:d8b5:f3ba:c98c:2800::/70,fddf:d8b5:f3ba:c98c:2c00::/72,fddf:d8b5:f3ba:c98c:2d00::/73,fddf:d8b5:f3ba:c98c:2d80::/74,fddf:d8b5:f3ba:c98c:2dc0::/76,fddf:d8b5:f3ba:c98c:2dd0::/77,fddf:d8b5:f3ba:c98c:2dda::/79,fddf:d8b5:f3ba:c98c:2ddc::/78,fddf:d8b5:f3ba:c98c:2de0::/75,fddf:d8b5:f3ba:c98c:2e00::/71,fddf:d8b5:f3ba:c98c:3000::/68,fddf:d8b5:f3ba:c98c:4000::/66,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/67,fddf:d8b5:f3ba:c98c:2000::/68,fddf:d8b5:f3ba:c98c:3000::/69,fddf:d8b5:f3ba:c98c:3800::/72,fddf:d8b5:f3ba:c98c:3900::/74,fddf:d8b5:f3ba:c98c:3940::/75,fddf:d8b5:f3ba:c98c:3960::/78,fddf:d8b5:f3ba:c98c:3964::/79,fddf:d8b5:f3ba:c98c:3968::/77,fddf:d8b5:f3ba:c98c:3970::/76,fddf:d8b5:f3ba:c98c:3980::/73,fddf:d8b5:f3ba:c98c:3a00::/71,fddf:d8b5:f3ba:c98c:3c00::/70,fddf:d8b5:f3ba:c98c:4000::/66,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/67,fddf:d8b5:f3ba:c98c:2000::/68,fddf:d8b5:f3ba:c98c:3000::/69,fddf:d8b5:f3ba:c98c:3800::/70,fddf:d8b5:f3ba:c98c:3c00::/71,fddf:d8b5:f3ba:c98c:3e00::/72,fddf:d8b5:f3ba:c98c:3f00::/74,fddf:d8b5:f3ba:c98c:3f40::/75,fddf:d8b5:f3ba:c98c:3f60::/79,fddf:d8b5:f3ba:c98c:3f64::/78,fddf:d8b5:f3ba:c98c:3f68::/77,fddf:d8b5:f3ba:c98c:3f70::/76,fddf:d8b5:f3ba:c98c:3f80::/73,fddf:d8b5:f3ba:c98c:4000::/66,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/66,fddf:d8b5:f3ba:c98c:4000::/71,fddf:d8b5:f3ba:c98c:4200::/74,fddf:d8b5:f3ba:c98c:4240::/76,fddf:d8b5:f3ba:c98c:4250::/77,fddf:d8b5:f3ba:c98c:4258::/78,fddf:d8b5:f3ba:c98c:425c::/79,fddf:d8b5:f3ba:c98c:4260::/75,fddf:d8b5:f3ba:c98c:4280::/73,fddf:d8b5:f3ba:c98c:4300::/72,fddf:d8b5:f3ba:c98c:4400::/70,fddf:d8b5:f3ba:c98c:4800::/69,fddf:d8b5:f3ba:c98c:5000::/68,fddf:d8b5:f3ba:c98c:6000::/67,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/66,fddf:d8b5:f3ba:c98c:4000::/67,fddf:d8b5:f3ba:c98c:6000::/68,fddf:d8b5:f3ba:c98c:7000::/71,fddf:d8b5:f3ba:c98c:7200::/72,fddf:d8b5:f3ba:c98c:7300::/73,fddf:d8b5:f3ba:c98c:7380::/74,fddf:d8b5:f3ba:c98c:73c0::/79,fddf:d8b5:f3ba:c98c:73c4::/78,fddf:d8b5:f3ba:c98c:73c8::/77,fddf:d8b5:f3ba:c98c:73d0::/76,fddf:d8b5:f3ba:c98c:73e0::/75,fddf:d8b5:f3ba:c98c:7400::/70,fddf:d8b5:f3ba:c98c:7800::/69,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/75,fddf:d8b5:f3ba:c98c:8020::/76,fddf:d8b5:f3ba:c98c:8030::/77,fddf:d8b5:f3ba:c98c:8038::/78,fddf:d8b5:f3ba:c98c:803e::/79,fddf:d8b5:f3ba:c98c:8040::/74,fddf:d8b5:f3ba:c98c:8080::/73,fddf:d8b5:f3ba:c98c:8100::/72,fddf:d8b5:f3ba:c98c:8200::/71,fddf:d8b5:f3ba:c98c:8400::/70,fddf:d8b5:f3ba:c98c:8800::/69,fddf:d8b5:f3ba:c98c:9000::/68,fddf:d8b5:f3ba:c98c:a000::/67,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/70,fddf:d8b5:f3ba:c98c:8400::/71,fddf:d8b5:f3ba:c98c:8600::/72,fddf:d8b5:f3ba:c98c:8700::/73,fddf:d8b5:f3ba:c98c:8780::/74,fddf:d8b5:f3ba:c98c:87c0::/75,fddf:d8b5:f3ba:c98c:87e0::/78,fddf:d8b5:f3ba:c98c:87e6::/79,fddf:d8b5:f3ba:c98c:87e8::/77,fddf:d8b5:f3ba:c98c:87f0::/76,fddf:d8b5:f3ba:c98c:8800::/69,fddf:d8b5:f3ba:c98c:9000::/68,fddf:d8b5:f3ba:c98c:a000::/67,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/69,fddf:d8b5:f3ba:c98c:8800::/73,fddf:d8b5:f3ba:c98c:8880::/74,fddf:d8b5:f3ba:c98c:88c0::/75,fddf:d8b5:f3ba:c98c:88e0::/78,fddf:d8b5:f3ba:c98c:88e6::/79,fddf:d8b5:f3ba:c98c:88e8::/77,fddf:d8b5:f3ba:c98c:88f0::/76,fddf:d8b5:f3ba:c98c:8900::/72,fddf:d8b5:f3ba:c98c:8a00::/71,fddf:d8b5:f3ba:c98c:8c00::/70,fddf:d8b5:f3ba:c98c:9000::/68,fddf:d8b5:f3ba:c98c:a000::/67,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/68,fddf:d8b5:f3ba:c98c:9000::/71,fddf:d8b5:f3ba:c98c:9200::/72,fddf:d8b5:f3ba:c98c:9300::/76,fddf:d8b5:f3ba:c98c:9310::/77,fddf:d8b5:f3ba:c98c:9318::/79,fddf:d8b5:f3ba:c98c:931c::/78,fddf:d8b5:f3ba:c98c:9320::/75,fddf:d8b5:f3ba:c98c:9340::/74,fddf:d8b5:f3ba:c98c:9380::/73,fddf:d8b5:f3ba:c98c:9400::/70,fddf:d8b5:f3ba:c98c:9800::/69,fddf:d8b5:f3ba:c98c:a000::/67,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/67,fddf:d8b5:f3ba:c98c:a000::/69,fddf:d8b5:f3ba:c98c:a800::/71,fddf:d8b5:f3ba:c98c:aa00::/72,fddf:d8b5:f3ba:c98c:ab00::/77,fddf:d8b5:f3ba:c98c:ab0a::/79,fddf:d8b5:f3ba:c98c:ab0c::/78,fddf:d8b5:f3ba:c98c:ab10::/76,fddf:d8b5:f3ba:c98c:ab20::/75,fddf:d8b5:f3ba:c98c:ab40::/74,fddf:d8b5:f3ba:c98c:ab80::/73,fddf:d8b5:f3ba:c98c:ac00::/70,fddf:d8b5:f3ba:c98c:b000::/68,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/67,fddf:d8b5:f3ba:c98c:a000::/69,fddf:d8b5:f3ba:c98c:a800::/70,fddf:d8b5:f3ba:c98c:ac00::/72,fddf:d8b5:f3ba:c98c:ad00::/74,fddf:d8b5:f3ba:c98c:ad40::/76,fddf:d8b5:f3ba:c98c:ad50::/79,fddf:d8b5:f3ba:c98c:ad54::/78,fddf:d8b5:f3ba:c98c:ad58::/77,fddf:d8b5:f3ba:c98c:ad60::/75,fddf:d8b5:f3ba:c98c:ad80::/73,fddf:d8b5:f3ba:c98c:ae00::/71,fddf:d8b5:f3ba:c98c:b000::/68,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/69,fddf:d8b5:f3ba:c98c:c800::/72,fddf:d8b5:f3ba:c98c:c900::/73,fddf:d8b5:f3ba:c98c:c980::/74,fddf:d8b5:f3ba:c98c:c9c2::/79,fddf:d8b5:f3ba:c98c:c9c4::/78,fddf:d8b5:f3ba:c98c:c9c8::/77,fddf:d8b5:f3ba:c98c:c9d0::/76,fddf:d8b5:f3ba:c98c:c9e0::/75,fddf:d8b5:f3ba:c98c:ca00::/71,fddf:d8b5:f3ba:c98c:cc00::/70,fddf:d8b5:f3ba:c98c:d000::/68,fddf:d8b5:f3ba:c98c:e000::/67;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/69,fddf:d8b5:f3ba:c98c:c800::/71,fddf:d8b5:f3ba:c98c:ca00::/73,fddf:d8b5:f3ba:c98c:ca80::/75,fddf:d8b5:f3ba:c98c:caa0::/76,fddf:d8b5:f3ba:c98c:cab0::/77,fddf:d8b5:f3ba:c98c:caba::/79,fddf:d8b5:f3ba:c98c:cabc::/78,fddf:d8b5:f3ba:c98c:cac0::/74,fddf:d8b5:f3ba:c98c:cb00::/72,fddf:d8b5:f3ba:c98c:cc00::/70,fddf:d8b5:f3ba:c98c:d000::/68,fddf:d8b5:f3ba:c98c:e000::/67;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/69,fddf:d8b5:f3ba:c98c:c800::/70,fddf:d8b5:f3ba:c98c:cc00::/71,fddf:d8b5:f3ba:c98c:ce00::/72,fddf:d8b5:f3ba:c98c:cf00::/73,fddf:d8b5:f3ba:c98c:cf80::/77,fddf:d8b5:f3ba:c98c:cf8a::/79,fddf:d8b5:f3ba:c98c:cf8c::/78,fddf:d8b5:f3ba:c98c:cf90::/76,fddf:d8b5:f3ba:c98c:cfa0::/75,fddf:d8b5:f3ba:c98c:cfc0::/74,fddf:d8b5:f3ba:c98c:d000::/68,fddf:d8b5:f3ba:c98c:e000::/67;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/68,fddf:d8b5:f3ba:c98c:d000::/69,fddf:d8b5:f3ba:c98c:d800::/70,fddf:d8b5:f3ba:c98c:dc00::/71,fddf:d8b5:f3ba:c98c:de00::/74,fddf:d8b5:f3ba:c98c:de40::/75,fddf:d8b5:f3ba:c98c:de60::/76,fddf:d8b5:f3ba:c98c:de72::/79,fddf:d8b5:f3ba:c98c:de74::/78,fddf:d8b5:f3ba:c98c:de78::/77,fddf:d8b5:f3ba:c98c:de80::/73,fddf:d8b5:f3ba:c98c:df00::/72,fddf:d8b5:f3ba:c98c:e000::/67;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/67,fddf:d8b5:f3ba:c98c:e000::/68,fddf:d8b5:f3ba:c98c:f000::/69,fddf:d8b5:f3ba:c98c:f800::/73,fddf:d8b5:f3ba:c98c:f880::/75,fddf:d8b5:f3ba:c98c:f8a0::/76,fddf:d8b5:f3ba:c98c:f8b0::/78,fddf:d8b5:f3ba:c98c:f8b4::/79,fddf:d8b5:f3ba:c98c:f8b8::/77,fddf:d8b5:f3ba:c98c:f8c0::/74,fddf:d8b5:f3ba:c98c:f900::/72,fddf:d8b5:f3ba:c98c:fa00::/71,fddf:d8b5:f3ba:c98c:fc00::/70 +fddf:d8b5:f3ba:c98c::/64 fddf:d8b5:f3ba:c98c:c000::/67,fddf:d8b5:f3ba:c98c:c000::/68,fddf:d8b5:f3ba:c98c:5800::/69,fddf:d8b5:f3ba:c98c:6800::/69,fddf:d8b5:f3ba:c98c:a800::/69,fddf:d8b5:f3ba:c98c:4400::/70,fddf:d8b5:f3ba:c98c:7400::/70,fddf:d8b5:f3ba:c98c:ac00::/70,fddf:d8b5:f3ba:c98c:d800::/70,fddf:d8b5:f3ba:c98c:dc00::/70,fddf:d8b5:f3ba:c98c:e800::/70,fddf:d8b5:f3ba:c98c:1e00::/71,fddf:d8b5:f3ba:c98c:2c00::/71,fddf:d8b5:f3ba:c98c:6200::/71,fddf:d8b5:f3ba:c98c:7a00::/71,fddf:d8b5:f3ba:c98c:8c00::/71,fddf:d8b5:f3ba:c98c:a600::/71,fddf:d8b5:f3ba:c98c:b800::/71,fddf:d8b5:f3ba:c98c:c000::/71,fddf:d8b5:f3ba:c98c:c600::/71,fddf:d8b5:f3ba:c98c:ca00::/71,fddf:d8b5:f3ba:c98c:ce00::/71,fddf:d8b5:f3ba:c98c:d600::/71,fddf:d8b5:f3ba:c98c:e000::/71,fddf:d8b5:f3ba:c98c:e800::/71,fddf:d8b5:f3ba:c98c:ea00::/71 fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:e000::/67;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:d000::/68,fddf:d8b5:f3ba:c98c:e000::/67;fddf:d8b5:f3ba:c98c::/66,fddf:d8b5:f3ba:c98c:4000::/68,fddf:d8b5:f3ba:c98c:5000::/69,fddf:d8b5:f3ba:c98c:6000::/67,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/66,fddf:d8b5:f3ba:c98c:4000::/67,fddf:d8b5:f3ba:c98c:6000::/69,fddf:d8b5:f3ba:c98c:7000::/68,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/67,fddf:d8b5:f3ba:c98c:a000::/69,fddf:d8b5:f3ba:c98c:b000::/68,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/66,fddf:d8b5:f3ba:c98c:4000::/70,fddf:d8b5:f3ba:c98c:4800::/69,fddf:d8b5:f3ba:c98c:5000::/68,fddf:d8b5:f3ba:c98c:6000::/67,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/66,fddf:d8b5:f3ba:c98c:4000::/67,fddf:d8b5:f3ba:c98c:6000::/68,fddf:d8b5:f3ba:c98c:7000::/70,fddf:d8b5:f3ba:c98c:7800::/69,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/67,fddf:d8b5:f3ba:c98c:a000::/69,fddf:d8b5:f3ba:c98c:a800::/70,fddf:d8b5:f3ba:c98c:b000::/68,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/68,fddf:d8b5:f3ba:c98c:d000::/69,fddf:d8b5:f3ba:c98c:dc00::/70,fddf:d8b5:f3ba:c98c:e000::/67;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/68,fddf:d8b5:f3ba:c98c:d000::/69,fddf:d8b5:f3ba:c98c:d800::/70,fddf:d8b5:f3ba:c98c:e000::/67;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/67,fddf:d8b5:f3ba:c98c:e000::/69,fddf:d8b5:f3ba:c98c:ec00::/70,fddf:d8b5:f3ba:c98c:f000::/68;fddf:d8b5:f3ba:c98c::/68,fddf:d8b5:f3ba:c98c:1000::/69,fddf:d8b5:f3ba:c98c:1800::/70,fddf:d8b5:f3ba:c98c:1c00::/71,fddf:d8b5:f3ba:c98c:2000::/67,fddf:d8b5:f3ba:c98c:4000::/66,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/67,fddf:d8b5:f3ba:c98c:2000::/69,fddf:d8b5:f3ba:c98c:2800::/70,fddf:d8b5:f3ba:c98c:2e00::/71,fddf:d8b5:f3ba:c98c:3000::/68,fddf:d8b5:f3ba:c98c:4000::/66,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/66,fddf:d8b5:f3ba:c98c:4000::/67,fddf:d8b5:f3ba:c98c:6000::/71,fddf:d8b5:f3ba:c98c:6400::/70,fddf:d8b5:f3ba:c98c:6800::/69,fddf:d8b5:f3ba:c98c:7000::/68,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/66,fddf:d8b5:f3ba:c98c:4000::/67,fddf:d8b5:f3ba:c98c:6000::/68,fddf:d8b5:f3ba:c98c:7000::/69,fddf:d8b5:f3ba:c98c:7800::/71,fddf:d8b5:f3ba:c98c:7c00::/70,fddf:d8b5:f3ba:c98c:8000::/65;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/69,fddf:d8b5:f3ba:c98c:8800::/70,fddf:d8b5:f3ba:c98c:8e00::/71,fddf:d8b5:f3ba:c98c:9000::/68,fddf:d8b5:f3ba:c98c:a000::/67,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/67,fddf:d8b5:f3ba:c98c:a000::/70,fddf:d8b5:f3ba:c98c:a400::/71,fddf:d8b5:f3ba:c98c:a800::/69,fddf:d8b5:f3ba:c98c:b000::/68,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/67,fddf:d8b5:f3ba:c98c:a000::/68,fddf:d8b5:f3ba:c98c:b000::/69,fddf:d8b5:f3ba:c98c:ba00::/71,fddf:d8b5:f3ba:c98c:bc00::/70,fddf:d8b5:f3ba:c98c:c000::/66;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c200::/71,fddf:d8b5:f3ba:c98c:c400::/70,fddf:d8b5:f3ba:c98c:c800::/69,fddf:d8b5:f3ba:c98c:d000::/68,fddf:d8b5:f3ba:c98c:e000::/67;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/70,fddf:d8b5:f3ba:c98c:c400::/71,fddf:d8b5:f3ba:c98c:c800::/69,fddf:d8b5:f3ba:c98c:d000::/68,fddf:d8b5:f3ba:c98c:e000::/67;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/69,fddf:d8b5:f3ba:c98c:c800::/71,fddf:d8b5:f3ba:c98c:cc00::/70,fddf:d8b5:f3ba:c98c:d000::/68,fddf:d8b5:f3ba:c98c:e000::/67;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/69,fddf:d8b5:f3ba:c98c:c800::/70,fddf:d8b5:f3ba:c98c:cc00::/71,fddf:d8b5:f3ba:c98c:d000::/68,fddf:d8b5:f3ba:c98c:e000::/67;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/68,fddf:d8b5:f3ba:c98c:d000::/70,fddf:d8b5:f3ba:c98c:d400::/71,fddf:d8b5:f3ba:c98c:d800::/69,fddf:d8b5:f3ba:c98c:e000::/67;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/67,fddf:d8b5:f3ba:c98c:e200::/71,fddf:d8b5:f3ba:c98c:e400::/70,fddf:d8b5:f3ba:c98c:e800::/69,fddf:d8b5:f3ba:c98c:f000::/68;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/67,fddf:d8b5:f3ba:c98c:e000::/69,fddf:d8b5:f3ba:c98c:ea00::/71,fddf:d8b5:f3ba:c98c:ec00::/70,fddf:d8b5:f3ba:c98c:f000::/68;fddf:d8b5:f3ba:c98c::/65,fddf:d8b5:f3ba:c98c:8000::/66,fddf:d8b5:f3ba:c98c:c000::/67,fddf:d8b5:f3ba:c98c:e000::/69,fddf:d8b5:f3ba:c98c:e800::/71,fddf:d8b5:f3ba:c98c:ec00::/70,fddf:d8b5:f3ba:c98c:f000::/68 +10.10.2.0/24 10.10.2.128/26,10.10.2.192/26,10.10.2.64/28,10.10.2.224/28,10.10.2.0/29,10.10.2.8/29,10.10.2.24/29,10.10.2.64/29,10.10.2.152/29,10.10.2.200/29,10.10.2.208/29,10.10.2.92/30,10.10.2.228/30,10.10.2.244/30,10.10.2.12/31,10.10.2.38/31,10.10.2.48/31,10.10.2.68/31,10.10.2.90/31,10.10.2.114/31,10.10.2.134/31,10.10.2.140/31,10.10.2.148/31,10.10.2.170/31,10.10.2.172/31,10.10.2.182/31,10.10.2.188/31,10.10.2.196/31,10.10.2.234/31,10.10.2.250/31 10.10.2.0/25,10.10.2.192/26;10.10.2.0/25,10.10.2.128/26;10.10.2.0/26,10.10.2.80/28,10.10.2.96/27,10.10.2.128/25;10.10.2.0/25,10.10.2.128/26,10.10.2.192/27,10.10.2.240/28;10.10.2.8/29,10.10.2.16/28,10.10.2.32/27,10.10.2.64/26,10.10.2.128/25;10.10.2.0/29,10.10.2.16/28,10.10.2.32/27,10.10.2.64/26,10.10.2.128/25;10.10.2.0/28,10.10.2.16/29,10.10.2.32/27,10.10.2.64/26,10.10.2.128/25;10.10.2.0/26,10.10.2.72/29,10.10.2.80/28,10.10.2.96/27,10.10.2.128/25;10.10.2.0/25,10.10.2.128/28,10.10.2.144/29,10.10.2.160/27,10.10.2.192/26;10.10.2.0/25,10.10.2.128/26,10.10.2.192/29,10.10.2.208/28,10.10.2.224/27;10.10.2.0/25,10.10.2.128/26,10.10.2.192/28,10.10.2.216/29,10.10.2.224/27;10.10.2.0/26,10.10.2.64/28,10.10.2.80/29,10.10.2.88/30,10.10.2.96/27,10.10.2.128/25;10.10.2.0/25,10.10.2.128/26,10.10.2.192/27,10.10.2.224/30,10.10.2.232/29,10.10.2.240/28;10.10.2.0/25,10.10.2.128/26,10.10.2.192/27,10.10.2.224/28,10.10.2.240/30,10.10.2.248/29;10.10.2.0/29,10.10.2.8/30,10.10.2.14/31,10.10.2.16/28,10.10.2.32/27,10.10.2.64/26,10.10.2.128/25;10.10.2.0/27,10.10.2.32/30,10.10.2.36/31,10.10.2.40/29,10.10.2.48/28,10.10.2.64/26,10.10.2.128/25;10.10.2.0/27,10.10.2.32/28,10.10.2.50/31,10.10.2.52/30,10.10.2.56/29,10.10.2.64/26,10.10.2.128/25;10.10.2.0/26,10.10.2.64/30,10.10.2.70/31,10.10.2.72/29,10.10.2.80/28,10.10.2.96/27,10.10.2.128/25;10.10.2.0/26,10.10.2.64/28,10.10.2.80/29,10.10.2.88/31,10.10.2.92/30,10.10.2.96/27,10.10.2.128/25;10.10.2.0/26,10.10.2.64/27,10.10.2.96/28,10.10.2.112/31,10.10.2.116/30,10.10.2.120/29,10.10.2.128/25;10.10.2.0/25,10.10.2.128/30,10.10.2.132/31,10.10.2.136/29,10.10.2.144/28,10.10.2.160/27,10.10.2.192/26;10.10.2.0/25,10.10.2.128/29,10.10.2.136/30,10.10.2.142/31,10.10.2.144/28,10.10.2.160/27,10.10.2.192/26;10.10.2.0/25,10.10.2.128/28,10.10.2.144/30,10.10.2.150/31,10.10.2.152/29,10.10.2.160/27,10.10.2.192/26;10.10.2.0/25,10.10.2.128/27,10.10.2.160/29,10.10.2.168/31,10.10.2.172/30,10.10.2.176/28,10.10.2.192/26;10.10.2.0/25,10.10.2.128/27,10.10.2.160/29,10.10.2.168/30,10.10.2.174/31,10.10.2.176/28,10.10.2.192/26;10.10.2.0/25,10.10.2.128/27,10.10.2.160/28,10.10.2.176/30,10.10.2.180/31,10.10.2.184/29,10.10.2.192/26;10.10.2.0/25,10.10.2.128/27,10.10.2.160/28,10.10.2.176/29,10.10.2.184/30,10.10.2.190/31,10.10.2.192/26;10.10.2.0/25,10.10.2.128/26,10.10.2.192/30,10.10.2.198/31,10.10.2.200/29,10.10.2.208/28,10.10.2.224/27;10.10.2.0/25,10.10.2.128/26,10.10.2.192/27,10.10.2.224/29,10.10.2.232/31,10.10.2.236/30,10.10.2.240/28;10.10.2.0/25,10.10.2.128/26,10.10.2.192/27,10.10.2.224/28,10.10.2.240/29,10.10.2.248/31,10.10.2.252/30 +10.0.0.0/8 10.64.0.0/12,10.176.0.0/12,10.40.0.0/13,10.128.0.0/13,10.32.0.0/14,10.36.0.0/14,10.44.0.0/14,10.52.0.0/14,10.112.0.0/14,10.120.0.0/14,10.136.0.0/14,10.152.0.0/14,10.160.0.0/14,10.164.0.0/14,10.208.0.0/14,10.224.0.0/14,10.30.0.0/15,10.32.0.0/15,10.100.0.0/15,10.104.0.0/15,10.128.0.0/15,10.138.0.0/15,10.160.0.0/15,10.164.0.0/15,10.190.0.0/15,10.230.0.0/15,10.232.0.0/15,10.236.0.0/15 10.0.0.0/10,10.80.0.0/12,10.96.0.0/11,10.128.0.0/9;10.0.0.0/9,10.128.0.0/11,10.160.0.0/12,10.192.0.0/10;10.0.0.0/11,10.32.0.0/13,10.48.0.0/12,10.64.0.0/10,10.128.0.0/9;10.0.0.0/9,10.136.0.0/13,10.144.0.0/12,10.160.0.0/11,10.192.0.0/10;10.0.0.0/11,10.36.0.0/14,10.40.0.0/13,10.48.0.0/12,10.64.0.0/10,10.128.0.0/9;10.0.0.0/11,10.32.0.0/14,10.40.0.0/13,10.48.0.0/12,10.64.0.0/10,10.128.0.0/9;10.0.0.0/11,10.32.0.0/13,10.40.0.0/14,10.48.0.0/12,10.64.0.0/10,10.128.0.0/9;10.0.0.0/11,10.32.0.0/12,10.48.0.0/14,10.56.0.0/13,10.64.0.0/10,10.128.0.0/9;10.0.0.0/10,10.64.0.0/11,10.96.0.0/12,10.116.0.0/14,10.120.0.0/13,10.128.0.0/9;10.0.0.0/10,10.64.0.0/11,10.96.0.0/12,10.112.0.0/13,10.124.0.0/14,10.128.0.0/9;10.0.0.0/9,10.128.0.0/13,10.140.0.0/14,10.144.0.0/12,10.160.0.0/11,10.192.0.0/10;10.0.0.0/9,10.128.0.0/12,10.144.0.0/13,10.156.0.0/14,10.160.0.0/11,10.192.0.0/10;10.0.0.0/9,10.128.0.0/11,10.164.0.0/14,10.168.0.0/13,10.176.0.0/12,10.192.0.0/10;10.0.0.0/9,10.128.0.0/11,10.160.0.0/14,10.168.0.0/13,10.176.0.0/12,10.192.0.0/10;10.0.0.0/9,10.128.0.0/10,10.192.0.0/12,10.212.0.0/14,10.216.0.0/13,10.224.0.0/11;10.0.0.0/9,10.128.0.0/10,10.192.0.0/11,10.228.0.0/14,10.232.0.0/13,10.240.0.0/12;10.0.0.0/12,10.16.0.0/13,10.24.0.0/14,10.28.0.0/15,10.32.0.0/11,10.64.0.0/10,10.128.0.0/9;10.0.0.0/11,10.34.0.0/15,10.36.0.0/14,10.40.0.0/13,10.48.0.0/12,10.64.0.0/10,10.128.0.0/9;10.0.0.0/10,10.64.0.0/11,10.96.0.0/14,10.102.0.0/15,10.104.0.0/13,10.112.0.0/12,10.128.0.0/9;10.0.0.0/10,10.64.0.0/11,10.96.0.0/13,10.106.0.0/15,10.108.0.0/14,10.112.0.0/12,10.128.0.0/9;10.0.0.0/9,10.130.0.0/15,10.132.0.0/14,10.136.0.0/13,10.144.0.0/12,10.160.0.0/11,10.192.0.0/10;10.0.0.0/9,10.128.0.0/13,10.136.0.0/15,10.140.0.0/14,10.144.0.0/12,10.160.0.0/11,10.192.0.0/10;10.0.0.0/9,10.128.0.0/11,10.162.0.0/15,10.164.0.0/14,10.168.0.0/13,10.176.0.0/12,10.192.0.0/10;10.0.0.0/9,10.128.0.0/11,10.160.0.0/14,10.166.0.0/15,10.168.0.0/13,10.176.0.0/12,10.192.0.0/10;10.0.0.0/9,10.128.0.0/11,10.160.0.0/12,10.176.0.0/13,10.184.0.0/14,10.188.0.0/15,10.192.0.0/10;10.0.0.0/9,10.128.0.0/10,10.192.0.0/11,10.224.0.0/14,10.228.0.0/15,10.232.0.0/13,10.240.0.0/12;10.0.0.0/9,10.128.0.0/10,10.192.0.0/11,10.224.0.0/13,10.234.0.0/15,10.236.0.0/14,10.240.0.0/12;10.0.0.0/9,10.128.0.0/10,10.192.0.0/11,10.224.0.0/13,10.232.0.0/14,10.238.0.0/15,10.240.0.0/12 diff --git a/tests/utils/iputils_test.py b/tests/utils/iputils_test.py new file mode 100644 index 00000000..aa9d9827 --- /dev/null +++ b/tests/utils/iputils_test.py @@ -0,0 +1,32 @@ +import pytest + +import pathlib + +from capirca.utils import iputils +from capirca.lib import nacaddr + + +file_directory = pathlib.Path(__file__).parent.absolute() +exclude_address_testcases = [] +with open(str(file_directory)+"/address_exclude_test_cases.txt", 'r') as f: + for line in f: + ipstr, exstrs, restrs = line.strip().split(' ') + ip = nacaddr.IP(ipstr) + exclude_ips = list(map(nacaddr.IP, exstrs.split(','))) + expected_results = [] + for i in restrs.split(';'): + result_strings = i.split(',') + ip_map = map(nacaddr.IP, result_strings) + ip_list = list(ip_map) + expected_results.append(ip_list) + for ex, res in zip(exclude_ips, expected_results): + exclude_address_testcases.append((ip, ex, res)) + +class TestIPUtils: + @pytest.mark.unit + @pytest.mark.parametrize("ip,exclude,expected", exclude_address_testcases) + def test_exclude_address(self, ip, exclude, expected): + result = iputils.exclude_address(ip, exclude) + + assert list(result) == expected + diff --git a/tools/iputilstools.py b/tools/iputilstools.py new file mode 100644 index 00000000..45e10a0d --- /dev/null +++ b/tools/iputilstools.py @@ -0,0 +1,50 @@ +import random +import ipaddress +import itertools as it + + +def write_excludes_testcase(ipstr, excludelist='', max_prefix_range=8, max_random_subnets=30): + """ + Writes a testcase to the tests/utils/address_exclude_test_cases.txt file. + Note that the number of prefixes to consider grows exponentially, so unless + you *do* want to consider a large pool to randomly select from, keep it at the default + + Args: + ipstr: the ip network as a string (v4 or v6) to base the test on. + excludelist: optional comma-separated string of ip networks to exclude + max_prefix_range: the largest number of prefixes to consider. + max_random_subnets: the number of subnets to do exclusion tests for, if randomly generating + Returns: + None + """ + ip = ipaddress.ip_network(ipstr) + if len(excludelist) == 0: # empty excludelist, making a random one + prefixrange = min(max_prefix_range, ip.max_prefixlen - ip.prefixlen) + excludelist = it.chain.from_iterable(ip.subnets(i) for i in range(1, prefixrange+1)) + total_ips = 2**prefixrange + ip_positions = set( + random.choices( + range(total_ips), + k=min( + max_random_subnets, + total_ips + ) + ) + ) + compress_map = (1 if i in ip_positions else 0 for i in range(total_ips)) + excludelist = list(it.compress(excludelist, compress_map)) + else: + excludelist = list(map(ipaddress.ip_network, excludelist.split(','))) + + result_list = [] + for address in excludelist: + result_list.append(ip.address_exclude(address)) + + ipst = str(ip) + exst = ",".join(map(str, excludelist)) + rest = ";".join(",".join(map(str, sorted(result))) for result in result_list) + with open('tests/utils/address_exclude_test_cases.txt', 'a') as f: + f.write("%s %s %s\n" % (ipst, exst, rest)) + + +