diff --git a/zebra/kernel_netlink.c b/zebra/kernel_netlink.c index 8b59ecd87fe3..5c31362eba50 100644 --- a/zebra/kernel_netlink.c +++ b/zebra/kernel_netlink.c @@ -1924,8 +1924,11 @@ void kernel_terminate(struct zebra_ns *zns, bool complete) /* During zebra shutdown, we need to leave the dataplane socket * around until all work is done. */ - if (complete) + if (complete) { kernel_nlsock_fini(&zns->netlink_dplane_out); + + XFREE(MTYPE_NL_BUF, nl_batch_tx_buf); + } } /* diff --git a/zebra/zebra_mlag.c b/zebra/zebra_mlag.c index 7715eab0a8d6..2eb4fb668cc0 100644 --- a/zebra/zebra_mlag.c +++ b/zebra/zebra_mlag.c @@ -627,6 +627,8 @@ void zebra_mlag_init(void) void zebra_mlag_terminate(void) { + stream_fifo_free(zrouter.mlag_info.mlag_fifo); + zrouter.mlag_info.mlag_fifo = NULL; } diff --git a/zebra/zebra_vrf.c b/zebra/zebra_vrf.c index 25e65139894f..2adae61f54f7 100644 --- a/zebra/zebra_vrf.c +++ b/zebra/zebra_vrf.c @@ -265,6 +265,12 @@ static int zebra_vrf_delete(struct vrf *vrf) otable_fini(&zvrf->other_tables); XFREE(MTYPE_ZEBRA_VRF, zvrf); + + if (vrf->ns_ctxt) { + ns_delete(vrf->ns_ctxt); + vrf->ns_ctxt = NULL; + } + vrf->info = NULL; return 0;