From e0831f39d8ec0c65dfb55e97dd1e8e98463504f0 Mon Sep 17 00:00:00 2001
From: Christian Poessinger <christian@poessinger.com>
Date: Sun, 6 Dec 2020 20:57:11 +0100
Subject: 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.
---
 python/vyos/ifconfig/interface.py | 6 +-----
 python/vyos/validate.py           | 4 ++--
 2 files changed, 3 insertions(+), 7 deletions(-)

(limited to 'python')

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
-- 
cgit v1.2.3