diff options
Diffstat (limited to 'zebra/main.c')
| -rw-r--r-- | zebra/main.c | 14 |
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); } |
