]> git.proxmox.com Git - mirror_ifupdown2.git/commitdiff
addons: vxlan: localtunnelip check before netlink call, prevent from overwriting...
authorJulien Fortin <julien@cumulusnetworks.com>
Thu, 21 Jul 2016 00:56:27 +0000 (01:56 +0100)
committerJulien Fortin <julien@cumulusnetworks.com>
Thu, 21 Jul 2016 00:58:09 +0000 (01:58 +0100)
Ticket: CM-11867
Reviewed By: Roopa, Balki, Nikhil G
Testing Done: tests/l2/clag_vxlan_aa_test.py

Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
addons/vxlan.py

index b2df44d81c7afce192cdb4edbef3c4dc59fda9c0..4bc1dfc6e460040f3cddca06563d11775e872e25 100644 (file)
@@ -69,12 +69,26 @@ class vxlan(moduleBase):
     def _vxlan_create(self, ifaceobj):
         vxlanid = ifaceobj.get_attr_value_first('vxlan-id')
         if vxlanid:
+            anycastip = self._clagd_vxlan_anycast_ip
             group = ifaceobj.get_attr_value_first('vxlan-svcnodeip')
+            local = ifaceobj.get_attr_value_first('vxlan-local-tunnelip')
+            ageing = ifaceobj.get_attr_value_first('vxlan-ageing')
+            learning = utils.get_onoff_bool(ifaceobj.get_attr_value_first('vxlan-learning'))
+
+            if self.ipcmd.link_exists(ifaceobj.name):
+                vxlanattrs = self.ipcmd.get_vxlandev_attrs(ifaceobj.name)
+                # on ifreload do not overwrite anycast_ip to individual ip
+                # if clagd has modified
+                if vxlanattrs:
+                    running_localtunnelip = vxlanattrs.get('local')
+                    if (anycastip and running_localtunnelip and
+                                anycastip == running_localtunnelip):
+                        local = running_localtunnelip
 
             netlink.link_add_vxlan(ifaceobj.name, vxlanid,
-                                   local=ifaceobj.get_attr_value_first('vxlan-local-tunnelip'),
-                                   learning=utils.get_onoff_bool(ifaceobj.get_attr_value_first('vxlan-learning')),
-                                   ageing=ifaceobj.get_attr_value_first('vxlan-ageing'),
+                                   local=local,
+                                   learning=learning,
+                                   ageing=ageing,
                                    group=group)
 
             remoteips = ifaceobj.get_attr_value('vxlan-remoteip')