zebra: Cleanup dplane provider owned ctx's on shutdown

On shutdown go through and ensure that any contexts the
dplane provider holds are freed.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
Donald Sharp 2023-11-15 14:41:18 -05:00
parent 88a54b123d
commit 318a8c98b4

View File

@ -6859,6 +6859,31 @@ static int kernel_dplane_process_func(struct zebra_dplane_provider *prov)
return 0;
}
static int kernel_dplane_shutdown_func(struct zebra_dplane_provider *prov,
bool early)
{
struct zebra_dplane_ctx *ctx;
if (early)
return 1;
ctx = dplane_provider_dequeue_in_ctx(prov);
while (ctx) {
dplane_ctx_free(&ctx);
ctx = dplane_provider_dequeue_in_ctx(prov);
}
ctx = dplane_provider_dequeue_out_ctx(prov);
while (ctx) {
dplane_ctx_free(&ctx);
ctx = dplane_provider_dequeue_out_ctx(prov);
}
return 1;
}
#ifdef DPLANE_TEST_PROVIDER
/*
@ -6931,12 +6956,10 @@ static void dplane_provider_init(void)
{
int ret;
ret = dplane_provider_register("Kernel",
DPLANE_PRIO_KERNEL,
ret = dplane_provider_register("Kernel", DPLANE_PRIO_KERNEL,
DPLANE_PROV_FLAGS_DEFAULT, NULL,
kernel_dplane_process_func,
NULL,
NULL, NULL);
kernel_dplane_shutdown_func, NULL, NULL);
if (ret != AOK)
zlog_err("Unable to register kernel dplane provider: %d",