From 65c3a7c4e51e6c5e710687e73cfd675e4da5a480 Mon Sep 17 00:00:00 2001 From: vivek Date: Mon, 4 Dec 2017 13:10:09 -0800 Subject: [PATCH] lib: Handle configured VRFs at termination When shutting down, ensure that all VRFs including "configured" ones are cleaned up properly. Signed-off-by: Vivek Venkatraman Reviewed-by: Donald Sharp Ticket: CM-19069 Reviewed By: CCR-7011 Testing Done: Manual verification of failed scenario --- lib/vrf.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/vrf.c b/lib/vrf.c index bc081796c..23eaa042e 100644 --- a/lib/vrf.c +++ b/lib/vrf.c @@ -419,10 +419,16 @@ void vrf_terminate(void) zlog_debug("%s: Shutting down vrf subsystem", __PRETTY_FUNCTION__); - while ((vrf = RB_ROOT(vrf_id_head, &vrfs_by_id)) != NULL) + while ((vrf = RB_ROOT(vrf_id_head, &vrfs_by_id)) != NULL) { + /* Clear configured flag and invoke delete. */ + UNSET_FLAG(vrf->status, VRF_CONFIGURED); vrf_delete(vrf); - while ((vrf = RB_ROOT(vrf_name_head, &vrfs_by_name)) != NULL) + } + while ((vrf = RB_ROOT(vrf_name_head, &vrfs_by_name)) != NULL) { + /* Clear configured flag and invoke delete. */ + UNSET_FLAG(vrf->status, VRF_CONFIGURED); vrf_delete(vrf); + } } /* Create a socket for the VRF. */ -- 2.39.2