sharpd: Clean up memory leaks on shutdown

a) The cleanup of zclient on shutdown was not being
done
b) Cleanup vrf shutdown
c) Cleanup some lists

Signed-off-by: Donald Sharp <sharpd@nvidia.com>

sharpd: Cleanup shutdown of vrf and some lists

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
Donald Sharp 2023-11-11 20:31:55 -05:00
parent 0e44d248a0
commit b01738f4d3
3 changed files with 36 additions and 10 deletions

View file

@ -54,6 +54,22 @@ struct zebra_privs_t sharp_privs = {
struct option longopts[] = {{0}};
struct sharp_global sg;
static void sharp_global_init(void)
{
memset(&sg, 0, sizeof(sg));
sg.nhs = list_new();
sg.ted = NULL;
sg.srv6_locators = list_new();
}
static void sharp_global_destroy(void)
{
list_delete(&sg.nhs);
list_delete(&sg.srv6_locators);
}
/* Master of threads. */
struct event_loop *master;
@ -68,6 +84,11 @@ static void sigint(void)
{
zlog_notice("Terminating on signal");
vrf_terminate();
sharp_zebra_terminate();
sharp_global_destroy();
frr_fini();
exit(0);
@ -118,16 +139,6 @@ FRR_DAEMON_INFO(sharpd, SHARP, .vty_port = SHARP_VTY_PORT,
.n_yang_modules = array_size(sharpd_yang_modules),
);
struct sharp_global sg;
static void sharp_global_init(void)
{
memset(&sg, 0, sizeof(sg));
sg.nhs = list_new();
sg.ted = NULL;
sg.srv6_locators = list_new();
}
static void sharp_start_configuration(void)
{
zlog_debug("Configuration has started to be read");

View file

@ -1089,3 +1089,17 @@ void sharp_zebra_init(void)
zclient->zebra_connected = zebra_connected;
zclient->zebra_buffer_write_ready = sharp_zclient_buffer_ready;
}
void sharp_zebra_terminate(void)
{
struct sharp_zclient *node = sharp_clients_head;
while (node) {
sharp_zclient_delete(node->client->session_id);
node = sharp_clients_head;
}
zclient_stop(zclient);
zclient_free(zclient);
}

View file

@ -8,6 +8,7 @@
#define __SHARP_ZEBRA_H__
extern void sharp_zebra_init(void);
extern void sharp_zebra_terminate(void);
/* Add and delete extra zapi client sessions, for testing */
int sharp_zclient_create(uint32_t session_id);