summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bgpd/bgp_main.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/bgpd/bgp_main.c b/bgpd/bgp_main.c
index 1f7d0ea492..656f49d183 100644
--- a/bgpd/bgp_main.c
+++ b/bgpd/bgp_main.c
@@ -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