diff options
| -rw-r--r-- | zebra/zserv.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/zebra/zserv.c b/zebra/zserv.c index 55d006a035..2c0e1a0200 100644 --- a/zebra/zserv.c +++ b/zebra/zserv.c @@ -2104,8 +2104,8 @@ static void zebra_client_close_cleanup_rnh(struct zserv *client) } } -/* Close zebra client. */ -static void zebra_client_close(struct zserv *client) +/* free zebra client information. */ +static void zebra_client_free(struct zserv *client) { /* Send client de-registration to BFD */ zebra_ptm_bfd_client_deregister(client->proto); @@ -2161,11 +2161,15 @@ static void zebra_client_close(struct zserv *client) vrf_bitmap_free(client->ifinfo); vrf_bitmap_free(client->ridinfo); - /* Free client structure. */ - listnode_delete(zebrad.client_list, client); XFREE(MTYPE_TMP, client); } +static void zebra_client_close(struct zserv *client) +{ + listnode_delete(zebrad.client_list, client); + zebra_client_free(client); +} + /* Make new client. */ static void zebra_client_create(int sock) { @@ -3009,6 +3013,7 @@ void zebra_init(void) { /* Client list init. */ zebrad.client_list = list_new(); + zebrad.client_list->del = (void (*)(void *))zebra_client_free; /* Install configuration write function. */ install_node(&table_node, config_write_table); |
