diff options
author | Christian Poessinger <christian@poessinger.com> | 2020-12-06 20:57:11 +0100 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2020-12-06 20:57:15 +0100 |
commit | e0831f39d8ec0c65dfb55e97dd1e8e98463504f0 (patch) | |
tree | 71a602105a587c8969b9f270b23ff8c8172823e9 | |
parent | 95459d4111fd1488dc811de29db29420c06cf52b (diff) | |
download | vyos-1x-e0831f39d8ec0c65dfb55e97dd1e8e98463504f0.tar.gz vyos-1x-e0831f39d8ec0c65dfb55e97dd1e8e98463504f0.zip |
Revert "vyos.ifconfig: T1579: do not remove IPv6 link-local address on reconfiguration"
This reverts commit d247736f67cc056062b75a4215a031bebcfee2ee.
We need to clean link-local IPv6 addresses on link reconfiguration to also drop
no longer existing link-local addresse son MAC address change.
-rw-r--r-- | python/vyos/ifconfig/interface.py | 6 | ||||
-rw-r--r-- | python/vyos/validate.py | 4 | ||||
-rw-r--r-- | src/tests/test_validate.py | 7 |
3 files changed, 5 insertions, 12 deletions
diff --git a/python/vyos/ifconfig/interface.py b/python/vyos/ifconfig/interface.py index d695f05e3..6837e2d6a 100644 --- a/python/vyos/ifconfig/interface.py +++ b/python/vyos/ifconfig/interface.py @@ -40,7 +40,6 @@ from vyos.util import read_file from vyos.template import is_ipv4 from vyos.template import is_ipv6 from vyos.validate import is_intf_addr_assigned -from vyos.validate import is_ipv6_link_local from vyos.validate import assert_boolean from vyos.validate import assert_list from vyos.validate import assert_mac @@ -1043,10 +1042,7 @@ class Interface(Control): # list of addresses which are no longer in the dict so they can be removed cur_addr = self.get_addr() for addr in list_diff(cur_addr, new_addr): - # do not clean out link-local IPv6 addresses - it makes no sense - # as they will be readded so this prevents any flapping links - if not is_ipv6_link_local(addr): - self.del_addr(addr) + self.del_addr(addr) for addr in new_addr: self.add_addr(addr) diff --git a/python/vyos/validate.py b/python/vyos/validate.py index 98bd40f74..84a7bc2de 100644 --- a/python/vyos/validate.py +++ b/python/vyos/validate.py @@ -27,11 +27,11 @@ from vyos.util import cmd def is_ipv6_link_local(addr): """ Check if addrsss is an IPv6 link-local address. Returns True/False """ - from ipaddress import ip_interface + from ipaddress import IPv6Address from vyos.template import is_ipv6 addr = addr.split('%')[0] if is_ipv6(addr): - if ip_interface(addr).is_link_local: + if IPv6Address(addr).is_link_local: return True return False diff --git a/src/tests/test_validate.py b/src/tests/test_validate.py index 4348e2ef8..226e856a3 100644 --- a/src/tests/test_validate.py +++ b/src/tests/test_validate.py @@ -22,16 +22,13 @@ class TestVyOSValidate(TestCase): pass def test_is_ipv6_link_local(self): + self.assertFalse(vyos.validate.is_ipv6_link_local('169.254.0.1')) self.assertTrue(vyos.validate.is_ipv6_link_local('fe80::')) self.assertTrue(vyos.validate.is_ipv6_link_local('fe80::affe:1')) - self.assertTrue(vyos.validate.is_ipv6_link_local('fe80::250:56ff:febf:efaa/64')) - - self.assertFalse(vyos.validate.is_ipv6_link_local('169.254.0.1')) self.assertFalse(vyos.validate.is_ipv6_link_local('2001:db8::')) - self.assertFalse(vyos.validate.is_ipv6_link_local('2001:db8::1/64')) self.assertFalse(vyos.validate.is_ipv6_link_local('VyOS')) - def test_is_loopback(self): + def test_is_ipv6_link_local(self): self.assertTrue(vyos.validate.is_loopback_addr('127.0.0.1')) self.assertTrue(vyos.validate.is_loopback_addr('127.0.1.1')) self.assertTrue(vyos.validate.is_loopback_addr('127.1.1.1')) |