bgpd: uninstall type-5 routes from vrf

When we receive an MP_UNREACH,
we try to uninstall routes from the VRF and the VNI.
The route-node in the VRF corresponds
to the ip prefix formed from EVPN prefix.
We should correctly form the prefix based on the EVPN route-type.

Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
This commit is contained in:
Mitesh Kanjariya 2017-11-12 22:48:36 -08:00
parent bf48830b01
commit 42cb44f282

View File

@ -1854,7 +1854,10 @@ static int uninstall_evpn_route_entry_in_vrf(struct bgp *bgp_vrf,
char buf1[PREFIX_STRLEN]; char buf1[PREFIX_STRLEN];
memset(pp, 0, sizeof(struct prefix)); memset(pp, 0, sizeof(struct prefix));
ip_prefix_from_type2_prefix(evp, pp); if (evp->prefix.route_type == BGP_EVPN_MAC_IP_ROUTE)
ip_prefix_from_type2_prefix(evp, pp);
else if(evp->prefix.route_type == BGP_EVPN_IP_PREFIX_ROUTE)
ip_prefix_from_type5_prefix(evp, pp);
if (bgp_debug_zebra(NULL)) { if (bgp_debug_zebra(NULL)) {
zlog_debug("uninstalling evpn prefix %s as ip prefix %s in vrf %s", zlog_debug("uninstalling evpn prefix %s as ip prefix %s in vrf %s",
@ -2108,7 +2111,8 @@ static int install_uninstall_routes_for_vrf(struct bgp *bgp_vrf,
struct prefix_evpn *evp = (struct prefix_evpn *)&rn->p; struct prefix_evpn *evp = (struct prefix_evpn *)&rn->p;
/* if not mac-ip route skip this route */ /* if not mac-ip route skip this route */
if (evp->prefix.route_type != BGP_EVPN_MAC_IP_ROUTE) if (!(evp->prefix.route_type == BGP_EVPN_MAC_IP_ROUTE ||
evp->prefix.route_type == BGP_EVPN_IP_PREFIX_ROUTE))
continue; continue;
/* if not a mac+ip route skip this route */ /* if not a mac+ip route skip this route */