mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 09:06:46 +00:00
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:
parent
6c70521823
commit
e504cf3b9a
@ -275,6 +275,14 @@ static int bgp_vrf_enable(struct vrf *vrf)
|
|||||||
bgp_instance_up(bgp);
|
bgp_instance_up(bgp);
|
||||||
vpn_leak_zebra_vrf_label_update(bgp, AFI_IP);
|
vpn_leak_zebra_vrf_label_update(bgp, AFI_IP);
|
||||||
vpn_leak_zebra_vrf_label_update(bgp, AFI_IP6);
|
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;
|
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_IP);
|
||||||
vpn_leak_zebra_vrf_label_withdraw(bgp, AFI_IP6);
|
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;
|
old_vrf_id = bgp->vrf_id;
|
||||||
bgp_handle_socket(bgp, vrf, VRF_UNKNOWN, false);
|
bgp_handle_socket(bgp, vrf, VRF_UNKNOWN, false);
|
||||||
|
@ -577,7 +577,7 @@ leak_update(
|
|||||||
zlog_debug("%s: ->%s: %s Found route, changed attr",
|
zlog_debug("%s: ->%s: %s Found route, changed attr",
|
||||||
__func__, bgp->name_pretty, buf_prefix);
|
__func__, bgp->name_pretty, buf_prefix);
|
||||||
|
|
||||||
return NULL;
|
return bi;
|
||||||
}
|
}
|
||||||
|
|
||||||
new = info_make(ZEBRA_ROUTE_BGP, BGP_ROUTE_IMPORTED, 0,
|
new = info_make(ZEBRA_ROUTE_BGP, BGP_ROUTE_IMPORTED, 0,
|
||||||
|
@ -151,6 +151,12 @@ static inline int vpn_leak_from_vpn_active(struct bgp *bgp_vrf, afi_t afi,
|
|||||||
return 0;
|
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? */
|
/* Is vrf configured to import from vpn? */
|
||||||
if (!CHECK_FLAG(bgp_vrf->af_flags[afi][SAFI_UNICAST],
|
if (!CHECK_FLAG(bgp_vrf->af_flags[afi][SAFI_UNICAST],
|
||||||
BGP_CONFIG_MPLSVPN_TO_VRF_IMPORT)
|
BGP_CONFIG_MPLSVPN_TO_VRF_IMPORT)
|
||||||
|
Loading…
Reference in New Issue
Block a user