From: Donald Sharp Date: Sat, 7 Nov 2020 00:13:59 +0000 (-0500) Subject: bgpd: Fix mistakes in defer working X-Git-Tag: base_7.6~307^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=6338d242189a09733f9ecdb5617622ede4568917;p=matthieu%2Ffrr.git bgpd: Fix mistakes in defer working Commit: 26742171e6ba292a9fd2a72668315d2a699717b5 Mistakenly reversed the logic for the test on the list length when it was removed. Fix this. Additionally limit for loop to stop when we know there are no more items to process that have the BGP_NODE_SELECT_DEFER flag. Signed-off-by: Donald Sharp --- diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 8a237e329e..f8a29821d8 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -2934,7 +2934,8 @@ int bgp_best_path_select_defer(struct bgp *bgp, afi_t afi, safi_t safi) } /* Process the route list */ - for (dest = bgp_table_top(bgp->rib[afi][safi]); dest; + for (dest = bgp_table_top(bgp->rib[afi][safi]); + dest && bgp->gr_info[afi][safi].gr_deferred != 0; dest = bgp_route_next(dest)) { if (!CHECK_FLAG(dest->flags, BGP_NODE_SELECT_DEFER)) continue; @@ -2950,7 +2951,7 @@ int bgp_best_path_select_defer(struct bgp *bgp, afi_t afi, safi_t safi) } /* Send EOR message when all routes are processed */ - if (bgp->gr_info[afi][safi].gr_deferred) { + if (!bgp->gr_info[afi][safi].gr_deferred) { bgp_send_delayed_eor(bgp); /* Send route processing complete message to RIB */ bgp_zebra_update(afi, safi, bgp->vrf_id,