}
}
-/* 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);
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)
{
{
/* 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);