From: Mitesh Kanjariya Date: Tue, 30 Jan 2018 01:14:52 +0000 (-0800) Subject: zebra: Handle local-ip change in a correct way for l3-vni X-Git-Tag: frr-5.0-dev~191^2~3 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=12eeac84ff34bd153f6d75f80aac1fa42c3f7db3;p=mirror%2Ffrr.git zebra: Handle local-ip change in a correct way for l3-vni Ticket: CM-19603 Review: CCR-7142 Testing: Manual Signed-off-by: Mitesh Kanjariya --- diff --git a/zebra/zebra_vxlan.c b/zebra/zebra_vxlan.c index 01d5e16556..1a56b14466 100644 --- a/zebra/zebra_vxlan.c +++ b/zebra/zebra_vxlan.c @@ -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 {