mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-29 09:39:21 +00:00
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:
parent
88a54b123d
commit
318a8c98b4
@ -6859,6 +6859,31 @@ static int kernel_dplane_process_func(struct zebra_dplane_provider *prov)
|
|||||||
return 0;
|
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
|
#ifdef DPLANE_TEST_PROVIDER
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -6931,12 +6956,10 @@ static void dplane_provider_init(void)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = dplane_provider_register("Kernel",
|
ret = dplane_provider_register("Kernel", DPLANE_PRIO_KERNEL,
|
||||||
DPLANE_PRIO_KERNEL,
|
|
||||||
DPLANE_PROV_FLAGS_DEFAULT, NULL,
|
DPLANE_PROV_FLAGS_DEFAULT, NULL,
|
||||||
kernel_dplane_process_func,
|
kernel_dplane_process_func,
|
||||||
NULL,
|
kernel_dplane_shutdown_func, NULL, NULL);
|
||||||
NULL, NULL);
|
|
||||||
|
|
||||||
if (ret != AOK)
|
if (ret != AOK)
|
||||||
zlog_err("Unable to register kernel dplane provider: %d",
|
zlog_err("Unable to register kernel dplane provider: %d",
|
||||||
|
Loading…
Reference in New Issue
Block a user