bgpd: On shutdown do not create a workqueue for the self peer

When bgp is shutting down, it calls bgp_fsm_change_status
on everything including a self peer, which goes through
and cleans the tables of the self peer data structures
as if it's a real peer.  Add a bit of code to just
not do the work at all.  This allows unlocks to flow
a bit further and for the self peer to be deleted
on shutdown.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
Donald Sharp 2023-11-15 16:23:56 -05:00
parent 0b81a7524d
commit 7bf3c2fb19

View File

@ -1236,7 +1236,7 @@ void bgp_fsm_change_status(struct peer_connection *connection,
/* Transition into Clearing or Deleted must /always/ clear all routes.. /* Transition into Clearing or Deleted must /always/ clear all routes..
* (and must do so before actually changing into Deleted.. * (and must do so before actually changing into Deleted..
*/ */
if (status >= Clearing) { if (status >= Clearing && peer != bgp->peer_self) {
bgp_clear_route_all(peer); bgp_clear_route_all(peer);
/* If no route was queued for the clear-node processing, /* If no route was queued for the clear-node processing,