diff options
| -rw-r--r-- | bgpd/bgp_main.c | 14 |
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 |
