]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: backpressure - Fix to withdraw evpn type-5 routes immediately 16034/head
authorRajasekar Raja <rajasekarr@nvidia.com>
Fri, 17 May 2024 19:36:31 +0000 (12:36 -0700)
committerRajasekar Raja <rajasekarr@nvidia.com>
Fri, 17 May 2024 19:42:30 +0000 (12:42 -0700)
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>
bgpd/bgp_route.c
bgpd/bgp_zebra.c

index d24ffc0ac0d32cc81898b023cf93e8a53edf71d2..2309b710ed2cb0491eb848441c8cf6358c9d55fd 100644 (file)
@@ -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);
index aaad7e8a2a5f9aa407e1a51776ca7a846b47d7b2..1c2f08465d70b5ff76c181f1d68474e7b65300df 100644 (file)
@@ -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;