]> git.puffer.fish Git - matthieu/frr.git/commitdiff
BGP: At exit, remove callbacks before invoking vrf_terminate()
authorvivek <vivek@cumulusnetworks.com>
Sat, 7 May 2016 05:07:58 +0000 (22:07 -0700)
committervivek <vivek@cumulusnetworks.com>
Sat, 7 May 2016 05:07:58 +0000 (22:07 -0700)
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Ticket: CM-10831
Reviewed By: CCR-4657
Testing Done: Manual

bgpd/bgp_main.c

index 1f7d0ea49297175192dccba097afc1d48d9cae46..656f49d183523ca4faff69362b44b0da955b8456 100644 (file)
@@ -79,6 +79,7 @@ void sigint (void);
 void sigusr1 (void);
 
 static void bgp_exit (int);
+static void bgp_vrf_terminate (void);
 
 static struct quagga_signal_t bgp_signals[] = 
 {
@@ -268,7 +269,7 @@ bgp_exit (int status)
   /* reverse community_list_init */
   community_list_terminate (bgp_clist);
 
-  vrf_terminate ();
+  bgp_vrf_terminate ();
   cmd_terminate ();
   vty_terminate ();
   if (zclient)
@@ -369,6 +370,17 @@ bgp_vrf_init (void)
   vrf_init ();
 }
 
+static void
+bgp_vrf_terminate (void)
+{
+  vrf_add_hook (VRF_NEW_HOOK, NULL);
+  vrf_add_hook (VRF_ENABLE_HOOK, NULL);
+  vrf_add_hook (VRF_DISABLE_HOOK, NULL);
+  vrf_add_hook (VRF_DELETE_HOOK, NULL);
+
+  vrf_terminate ();
+}
+
 /* Main routine of bgpd. Treatment of argument and start bgp finite
    state machine is handled at here. */
 int