summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-12-06 20:57:11 +0100
committerChristian Poessinger <christian@poessinger.com>2020-12-06 20:57:15 +0100
commite0831f39d8ec0c65dfb55e97dd1e8e98463504f0 (patch)
tree71a602105a587c8969b9f270b23ff8c8172823e9
parent95459d4111fd1488dc811de29db29420c06cf52b (diff)
downloadvyos-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.py6
-rw-r--r--python/vyos/validate.py4
-rw-r--r--src/tests/test_validate.py7
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'))