summaryrefslogtreecommitdiffstats
path: root/bgpd
diff options
context:
space:
mode:
authorRajasekar Raja <rajasekarr@nvidia.com>2024-05-17 21:36:31 +0200
committerRajasekar Raja <rajasekarr@nvidia.com>2024-05-17 21:42:30 +0200
commitf4ba47238e9d0c5b9efa5e42d7689cc7bb9c0334 (patch)
tree40a175fa0300463a588351c1d70bc44abf004fce /bgpd
parentMerge pull request #16012 from LabNConsulting/chopps/improve-grpc-test (diff)
downloadfrr-f4ba47238e9d0c5b9efa5e42d7689cc7bb9c0334.tar.xz
frr-f4ba47238e9d0c5b9efa5e42d7689cc7bb9c0334.zip
bgpd: backpressure - Fix to withdraw evpn type-5 routes immediately
As part of backpressure changes, there is a bug where immediate withdraw is to be sent for evpn imported type-5 prefix to clear the nh neigh and RMAC entry. Fixing this by sending withdraw immediately to keep it inline with the code today Ticket: #3905571 Signed-off-by: Donald Sharp <sharpd@nvidia.com> Signed-off-by: Rajasekar Raja <rajasekarr@nvidia.com>
Diffstat (limited to 'bgpd')
-rw-r--r--bgpd/bgp_route.c3
-rw-r--r--bgpd/bgp_zebra.c9
2 files changed, 3 insertions, 9 deletions
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index d24ffc0ac..2309b710e 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -3810,8 +3810,7 @@ static void bgp_process_main_one(struct bgp *bgp, struct bgp_dest *dest,
*/
if (old_select &&
is_route_parent_evpn(old_select))
- bgp_zebra_route_install(dest, old_select, bgp,
- false, NULL, false);
+ bgp_zebra_withdraw_actual(dest, old_select, bgp);
bgp_zebra_route_install(dest, new_select, bgp, true,
NULL, false);
diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c
index aaad7e8a2..1c2f08465 100644
--- a/bgpd/bgp_zebra.c
+++ b/bgpd/bgp_zebra.c
@@ -1891,11 +1891,9 @@ static void bgp_zebra_buffer_write_ready(void)
* save new pi, mark as going to be
* withdrawan, remove install flag
*
- * Withdrawal Install Special case, send withdrawal immediately
- * Leave dest on list, release old pi,
+ * Withdrawal Install Leave dest on list, release old pi,
* save new pi, mark as going to be
- * installed. <see note about evpn
- * in bgp_route.c in bgp_process_main_one>
+ * installed.
* Withdrawal Withdrawal Leave dest on list, release old pi,
* save new pi, mark as going to be
* withdrawn.
@@ -1950,9 +1948,6 @@ void bgp_zebra_route_install(struct bgp_dest *dest, struct bgp_path_info *info,
dest->za_bgp_pi = info;
} else if (CHECK_FLAG(dest->flags, BGP_NODE_SCHEDULE_FOR_DELETE)) {
assert(dest->za_bgp_pi);
- if (install & !is_evpn)
- bgp_zebra_withdraw_actual(dest, dest->za_bgp_pi, bgp);
-
bgp_path_info_unlock(dest->za_bgp_pi);
bgp_path_info_lock(info);
dest->za_bgp_pi = info;