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;
|
||||
}
|
||||
|
||||
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",
|
||||
|
Loading…
Reference in New Issue
Block a user