zebra: Prevent crash because nl is NULL on shutdown

When shutting down the main pthread was first closing
the sockets associated with the dplane pthread and
then telling it to shutdown the pthread at a later point
in time.  This caused the dplane to crash because the nl
data has been freed already.  Change the shutdown order
to stop the dplane pthread *and* then close the sockets.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 977d7e24ff)
This commit is contained in:
Donald Sharp 2023-06-08 12:03:49 -04:00 committed by Mergify
parent 2681de7b19
commit fecd91afbe

View File

@ -206,12 +206,17 @@ void zebra_finalize(struct event *dummy)
vrf_terminate();
/*
* Stop dplane thread and finish any cleanup
* This is before the zebra_ns_early_shutdown call
* because sockets that the dplane depends on are closed
* in those functions
*/
zebra_dplane_shutdown();
ns_walk_func(zebra_ns_early_shutdown, NULL, NULL);
zebra_ns_notify_close();
/* Stop dplane thread and finish any cleanup */
zebra_dplane_shutdown();
/* Final shutdown of ns resources */
ns_walk_func(zebra_ns_final_shutdown, NULL, NULL);