From e57e63eb40682a1b1e5c267a9e31982b08b33dbb Mon Sep 17 00:00:00 2001 From: anlan_cs Date: Wed, 16 Mar 2022 21:38:17 +0800 Subject: [PATCH] bgpd: fix wrong check on local es routes Importing local es routes should be skipped. But the check of it is a bit wrong. It is ok that local es routes can't be imported, but importing local es will wrongly enter `uninstall` procedure. Just adjust this check to make it clear. Immediately return in the case of importing local es routes. Signed-off-by: anlan_cs --- bgpd/bgp_evpn.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/bgpd/bgp_evpn.c b/bgpd/bgp_evpn.c index a9c006ca2b..5450b5ca77 100644 --- a/bgpd/bgp_evpn.c +++ b/bgpd/bgp_evpn.c @@ -3036,9 +3036,11 @@ int bgp_evpn_route_entry_install_if_vrf_match(struct bgp *bgp_vrf, return 0; /* don't import hosts that are locally attached */ - if (install - && !bgp_evpn_skip_vrf_import_of_local_es(bgp_vrf, evp, pi, - install)) + if (install && bgp_evpn_skip_vrf_import_of_local_es( + bgp_vrf, evp, pi, install)) + return 0; + + if (install) ret = install_evpn_route_entry_in_vrf(bgp_vrf, evp, pi); else ret = uninstall_evpn_route_entry_in_vrf(bgp_vrf, evp, @@ -3291,9 +3293,11 @@ static int install_uninstall_route_in_vrfs(struct bgp *bgp_def, afi_t afi, int ret; /* don't import hosts that are locally attached */ - if (install - && !bgp_evpn_skip_vrf_import_of_local_es(bgp_vrf, evp, pi, - install)) + if (install && bgp_evpn_skip_vrf_import_of_local_es( + bgp_vrf, evp, pi, install)) + return 0; + + if (install) ret = install_evpn_route_entry_in_vrf(bgp_vrf, evp, pi); else ret = uninstall_evpn_route_entry_in_vrf(bgp_vrf, evp,