summaryrefslogtreecommitdiff
path: root/bgpd
diff options
context:
space:
mode:
authorMark Stapp <mjs.ietf@gmail.com>2025-04-10 10:07:32 -0400
committerGitHub <noreply@github.com>2025-04-10 10:07:32 -0400
commit0e8e0c5fb989ea44a392e276b39fe1405d9a0082 (patch)
tree0510131294fdd6699ce527e065df02ab883c69bd /bgpd
parentf28394313fc243bc7ef43672cabda4112d861cb4 (diff)
parent93458dcf7a5917df699ce50e1880f384d3a991f7 (diff)
Merge pull request #18594 from soumyar-roy/soumya/netwithdraw
bgpd: Paths not deleted received from shutdown peer
Diffstat (limited to 'bgpd')
-rw-r--r--bgpd/bgp_route.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index bca4ea4348..684b0a19d8 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -6825,6 +6825,16 @@ static int clear_batch_rib_helper(struct bgp_clearing_info *cinfo)
*/
UNSET_FLAG(cinfo->flags, BGP_CLEARING_INFO_FLAG_RESUME);
}
+
+ /* Return immediately, otherwise the 'ret' state will be overwritten
+ * by next afi/safi. Also resume state stored for current afi/safi
+ * in walk_batch_table_helper, will be overwritten. This may cause to
+ * skip the nets to be walked again, so they won't be marked for deletion
+ * from BGP table
+ */
+ if (ret != 0)
+ return ret;
+
safi = SAFI_UNICAST;
}
return ret;