summaryrefslogtreecommitdiff
path: root/zebra/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/main.c')
-rw-r--r--zebra/main.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/zebra/main.c b/zebra/main.c
index fd242e762a..5c169bb839 100644
--- a/zebra/main.c
+++ b/zebra/main.c
@@ -134,7 +134,6 @@ static void sigint(void)
{
struct vrf *vrf;
struct zebra_vrf *zvrf;
- struct listnode *ln, *nn;
struct zserv *client;
static bool sigint_done;
@@ -163,15 +162,13 @@ static void sigint(void)
zebra_dplane_pre_finish();
/* Clean up GR related info. */
- zebra_gr_stale_client_cleanup(zrouter.stale_client_list);
- list_delete_all_node(zrouter.stale_client_list);
+ zebra_gr_stale_client_cleanup();
/* Clean up zapi clients and server module */
- for (ALL_LIST_ELEMENTS(zrouter.client_list, ln, nn, client))
+ frr_each_safe (zserv_client_list, &zrouter.client_list, client)
zserv_close_client(client);
zserv_close();
- list_delete_all_node(zrouter.client_list);
/* Once all the zclients are cleaned up, clean up the opaque module */
zebra_opaque_finish();
@@ -202,9 +199,6 @@ static void sigint(void)
rib_update_finish();
- list_delete(&zrouter.client_list);
- list_delete(&zrouter.stale_client_list);
-
/*
* Besides other clean-ups zebra's vrf_disable() also enqueues installed
* routes for removal from the kernel, unless ZEBRA_VRF_RETAIN is set.
@@ -256,6 +250,10 @@ void zebra_finalize(struct event *dummy)
ns_walk_func(zebra_ns_final_shutdown, NULL, NULL);
ns_terminate();
+
+ zserv_client_list_fini(&zrouter.client_list);
+ zserv_stale_client_list_fini(&zrouter.stale_client_list);
+
frr_fini();
exit(0);
}