]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: Handle local-ip change in a correct way for l3-vni
authorMitesh Kanjariya <mitesh@marvel-07.cumulusnetworks.com>
Tue, 30 Jan 2018 01:14:52 +0000 (17:14 -0800)
committermitesh <mitesh@cumulusnetworks.com>
Fri, 9 Feb 2018 07:06:43 +0000 (23:06 -0800)
Ticket: CM-19603
Review: CCR-7142
Testing: Manual

Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
zebra/zebra_vxlan.c

index 01d5e16556da297f9e3e19c46295ddddf19fbbab..1a56b14466ba3bb5420b34073e3808f21f8b9494 100644 (file)
@@ -6308,15 +6308,26 @@ int zebra_vxlan_if_update(struct interface *ifp, u_int16_t chgflags)
                        }
                }
 
+               /*
+                * local-ip change - process oper down, associate with new
+                * local-ip and then process oper up again
+                */
+               if (chgflags & ZEBRA_VXLIF_LOCAL_IP_CHANGE) {
+                       if (if_is_operative(ifp)) {
+                               zebra_vxlan_process_l3vni_oper_down(zl3vni);
+                               zl3vni->local_vtep_ip = vxl->vtep_ip;
+                               if (is_l3vni_oper_up(zl3vni))
+                                       zebra_vxlan_process_l3vni_oper_up(
+                                                                       zl3vni);
+                       }
+               }
+
                /* Update local tunnel IP. */
                zl3vni->local_vtep_ip = vxl->vtep_ip;
 
-               /* if we have a valid new master or there is a change to the tunnel IP,
-                * process l3-vni oper up
-                */
-               if (chgflags
-                   & (ZEBRA_VXLIF_MASTER_CHANGE | ZEBRA_VXLIF_LOCAL_IP_CHANGE)) {
-                       if (is_l3vni_oper_up(zl3vni))
+               /* if we have a valid new master, process l3-vni oper up */
+               if (chgflags & ZEBRA_VXLIF_MASTER_CHANGE) {
+                       if (if_is_operative(ifp) && is_l3vni_oper_up(zl3vni))
                                zebra_vxlan_process_l3vni_oper_up(zl3vni);
                }
        } else {