From 409a2e1239e66cdac0cb244281ee725a16180dcf Mon Sep 17 00:00:00 2001
From: Viacheslav Hletenko <v.gletenko@vyos.io>
Date: Tue, 5 Apr 2022 11:20:54 +0000
Subject: interfaces: T4331: Fix assign link-local static IPv6 addr to vrf

If we have link-local static address and vrf, for example:
set interfaces ethernet eth2 address 'fe80::5200:ff:fe55:222/64'
set interfaces ethernet eth2 vrf 'foo'

This IPv6 address was assigned before vrf, as result after
attaching the intreface to vrf we lose this static linklocal
address

DEBUG/IFCONFIG cmd 'ip addr add fe80::5200:ff:fe55:222/64 dev eth2'
DEBUG/IFCONFIG cmd 'ip link set dev eth2 master foo'
DEBUG/IFCONFIG cmd 'ip addr add fe80::5208:ff:fe13:2/64 dev eth2'

This commit fixes this, the address is assigned after vrf assign

(cherry picked from commit d6e22b28887c7a3f7d2f8b955c2e90bcadaeeeba)
---
 python/vyos/ifconfig/interface.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

(limited to 'python/vyos')

diff --git a/python/vyos/ifconfig/interface.py b/python/vyos/ifconfig/interface.py
index a2fa96d82..73c602cf9 100644
--- a/python/vyos/ifconfig/interface.py
+++ b/python/vyos/ifconfig/interface.py
@@ -1296,9 +1296,6 @@ class Interface(Control):
                 else:
                     self.del_addr(addr)
 
-        for addr in new_addr:
-            self.add_addr(addr)
-
         # start DHCPv6 client when only PD was configured
         if dhcpv6pd:
             self.set_dhcpv6(True)
@@ -1313,6 +1310,10 @@ class Interface(Control):
             # checked before
             self.set_vrf(config.get('vrf', ''))
 
+        # Add this section after vrf T4331
+        for addr in new_addr:
+            self.add_addr(addr)
+
         # Configure ARP cache timeout in milliseconds - has default value
         tmp = dict_search('ip.arp_cache_timeout', config)
         value = tmp if (tmp != None) else '30'
-- 
cgit v1.2.3