bgpd: Ensure addpath does not withdraw selected route in some situations (backport #19210) #19286
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently when configuring bgp to send up to 6 additional routes after the selected, there exists a timing window where it can decide to send a withdrawal for the selected. Thus leaving a non-selected on the sent to router. The code loops over the paths in the start of the function, skipping the best path and finding up to X additional paths to send. When this is done, it looks at the list generated compared to all the paths and sends withdrawals for all those no-longer possibly selected. Since bestpath sending is elsewhere we end up with a situation where it's possible to send a withdrawal for the selected. Modify the code in the second loop to no longer send a withdrawal in this case for the selected.
This is an automatic backport of pull request #19210 done by Mergify.