bgpd: issues with vrf imports when switchd or networking restarted

Problem reported that when systemctl restart networking or switchd
performed, not all imported prefixes were successfully restored.

Ticket: CM-21684
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
This commit is contained in:
Don Slice 2018-08-03 20:07:50 +00:00
parent 6c70521823
commit e504cf3b9a
3 changed files with 23 additions and 1 deletions

View File

@ -275,6 +275,14 @@ static int bgp_vrf_enable(struct vrf *vrf)
bgp_instance_up(bgp);
vpn_leak_zebra_vrf_label_update(bgp, AFI_IP);
vpn_leak_zebra_vrf_label_update(bgp, AFI_IP6);
vpn_leak_postchange(BGP_VPN_POLICY_DIR_TOVPN, AFI_IP,
bgp_get_default(), bgp);
vpn_leak_postchange(BGP_VPN_POLICY_DIR_FROMVPN, AFI_IP,
bgp_get_default(), bgp);
vpn_leak_postchange(BGP_VPN_POLICY_DIR_TOVPN, AFI_IP6,
bgp_get_default(), bgp);
vpn_leak_postchange(BGP_VPN_POLICY_DIR_FROMVPN, AFI_IP6,
bgp_get_default(), bgp);
}
return 0;
@ -296,6 +304,14 @@ static int bgp_vrf_disable(struct vrf *vrf)
vpn_leak_zebra_vrf_label_withdraw(bgp, AFI_IP);
vpn_leak_zebra_vrf_label_withdraw(bgp, AFI_IP6);
vpn_leak_prechange(BGP_VPN_POLICY_DIR_TOVPN, AFI_IP,
bgp_get_default(), bgp);
vpn_leak_prechange(BGP_VPN_POLICY_DIR_FROMVPN, AFI_IP,
bgp_get_default(), bgp);
vpn_leak_prechange(BGP_VPN_POLICY_DIR_TOVPN, AFI_IP6,
bgp_get_default(), bgp);
vpn_leak_prechange(BGP_VPN_POLICY_DIR_FROMVPN, AFI_IP6,
bgp_get_default(), bgp);
old_vrf_id = bgp->vrf_id;
bgp_handle_socket(bgp, vrf, VRF_UNKNOWN, false);

View File

@ -577,7 +577,7 @@ leak_update(
zlog_debug("%s: ->%s: %s Found route, changed attr",
__func__, bgp->name_pretty, buf_prefix);
return NULL;
return bi;
}
new = info_make(ZEBRA_ROUTE_BGP, BGP_ROUTE_IMPORTED, 0,

View File

@ -151,6 +151,12 @@ static inline int vpn_leak_from_vpn_active(struct bgp *bgp_vrf, afi_t afi,
return 0;
}
if (bgp_vrf->vrf_id == VRF_UNKNOWN) {
if (pmsg)
*pmsg = "destination bgp instance vrf is VRF_UNKNOWN";
return 0;
}
/* Is vrf configured to import from vpn? */
if (!CHECK_FLAG(bgp_vrf->af_flags[afi][SAFI_UNICAST],
BGP_CONFIG_MPLSVPN_TO_VRF_IMPORT)