mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-06-03 06:17:42 +00:00
Merge pull request #15727 from donaldsharp/evpn_zebra_interactions
Evpn zebra interactions
This commit is contained in:
commit
88c55b8e6f
@ -3862,7 +3862,7 @@ int bgp_evpn_route_entry_install_if_vrf_match(struct bgp *bgp_vrf,
|
||||
* Install or uninstall mac-ip routes are appropriate for this
|
||||
* particular VRF.
|
||||
*/
|
||||
static int install_uninstall_routes_for_vrf(struct bgp *bgp_vrf, int install)
|
||||
static int install_uninstall_routes_for_vrf(struct bgp *bgp_vrf, bool install)
|
||||
{
|
||||
afi_t afi;
|
||||
safi_t safi;
|
||||
@ -3926,9 +3926,7 @@ static int install_uninstall_routes_for_vrf(struct bgp *bgp_vrf, int install)
|
||||
* particular VNI.
|
||||
*/
|
||||
static int install_uninstall_routes_for_vni(struct bgp *bgp,
|
||||
struct bgpevpn *vpn,
|
||||
bgp_evpn_route_type rtype,
|
||||
int install)
|
||||
struct bgpevpn *vpn, bool install)
|
||||
{
|
||||
afi_t afi;
|
||||
safi_t safi;
|
||||
@ -3959,7 +3957,9 @@ static int install_uninstall_routes_for_vni(struct bgp *bgp,
|
||||
(const struct prefix_evpn *)bgp_dest_get_prefix(
|
||||
dest);
|
||||
|
||||
if (evp->prefix.route_type != rtype)
|
||||
if (evp->prefix.route_type != BGP_EVPN_IMET_ROUTE &&
|
||||
evp->prefix.route_type != BGP_EVPN_AD_ROUTE &&
|
||||
evp->prefix.route_type != BGP_EVPN_MAC_IP_ROUTE)
|
||||
continue;
|
||||
|
||||
for (pi = bgp_dest_get_bgp_path_info(dest); pi;
|
||||
@ -3986,16 +3986,16 @@ static int install_uninstall_routes_for_vni(struct bgp *bgp,
|
||||
bgp, vpn, evp, pi);
|
||||
|
||||
if (ret) {
|
||||
flog_err(
|
||||
EC_BGP_EVPN_FAIL,
|
||||
"%u: Failed to %s EVPN %s route in VNI %u",
|
||||
bgp->vrf_id,
|
||||
install ? "install"
|
||||
: "uninstall",
|
||||
rtype == BGP_EVPN_MAC_IP_ROUTE
|
||||
? "MACIP"
|
||||
: "IMET",
|
||||
vpn->vni);
|
||||
flog_err(EC_BGP_EVPN_FAIL,
|
||||
"%u: Failed to %s EVPN %s route in VNI %u",
|
||||
bgp->vrf_id,
|
||||
install ? "install"
|
||||
: "uninstall",
|
||||
evp->prefix.route_type ==
|
||||
BGP_EVPN_MAC_IP_ROUTE
|
||||
? "MACIP"
|
||||
: "IMET",
|
||||
vpn->vni);
|
||||
|
||||
bgp_dest_unlock_node(rd_dest);
|
||||
bgp_dest_unlock_node(dest);
|
||||
@ -4013,7 +4013,7 @@ static int install_uninstall_routes_for_vni(struct bgp *bgp,
|
||||
*/
|
||||
static int install_routes_for_vrf(struct bgp *bgp_vrf)
|
||||
{
|
||||
install_uninstall_routes_for_vrf(bgp_vrf, 1);
|
||||
install_uninstall_routes_for_vrf(bgp_vrf, true);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -4024,29 +4024,17 @@ static int install_routes_for_vrf(struct bgp *bgp_vrf)
|
||||
*/
|
||||
static int install_routes_for_vni(struct bgp *bgp, struct bgpevpn *vpn)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* Install type-3 routes followed by type-2 routes - the ones applicable
|
||||
/*
|
||||
* Install type-3 routes followed by type-2 routes - the ones applicable
|
||||
* for this VNI.
|
||||
*/
|
||||
ret = install_uninstall_routes_for_vni(bgp, vpn, BGP_EVPN_IMET_ROUTE,
|
||||
1);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = install_uninstall_routes_for_vni(bgp, vpn, BGP_EVPN_AD_ROUTE,
|
||||
1);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return install_uninstall_routes_for_vni(bgp, vpn, BGP_EVPN_MAC_IP_ROUTE,
|
||||
1);
|
||||
return install_uninstall_routes_for_vni(bgp, vpn, true);
|
||||
}
|
||||
|
||||
/* uninstall routes from l3vni vrf. */
|
||||
static int uninstall_routes_for_vrf(struct bgp *bgp_vrf)
|
||||
{
|
||||
install_uninstall_routes_for_vrf(bgp_vrf, 0);
|
||||
install_uninstall_routes_for_vrf(bgp_vrf, false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -4056,25 +4044,11 @@ static int uninstall_routes_for_vrf(struct bgp *bgp_vrf)
|
||||
*/
|
||||
static int uninstall_routes_for_vni(struct bgp *bgp, struct bgpevpn *vpn)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* Uninstall type-2 routes followed by type-3 routes - the ones
|
||||
* applicable
|
||||
* for this VNI.
|
||||
/*
|
||||
* Uninstall type-2 routes followed by type-3 routes - the ones
|
||||
* applicable for this VNI.
|
||||
*/
|
||||
ret = install_uninstall_routes_for_vni(bgp, vpn, BGP_EVPN_MAC_IP_ROUTE,
|
||||
0);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = install_uninstall_routes_for_vni(bgp, vpn, BGP_EVPN_AD_ROUTE,
|
||||
0);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
||||
return install_uninstall_routes_for_vni(bgp, vpn, BGP_EVPN_IMET_ROUTE,
|
||||
0);
|
||||
return install_uninstall_routes_for_vni(bgp, vpn, false);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user