diff --git a/ripd/rip_main.c b/ripd/rip_main.c index 38c2875949..1a7d03bca1 100644 --- a/ripd/rip_main.c +++ b/ripd/rip_main.c @@ -100,6 +100,8 @@ sigint (void) if (! retain_mode) rip_clean (); + rip_zclient_stop (); + exit (0); } diff --git a/ripd/rip_zebra.c b/ripd/rip_zebra.c index 337555b0b7..31204872ac 100644 --- a/ripd/rip_zebra.c +++ b/ripd/rip_zebra.c @@ -711,3 +711,10 @@ rip_zclient_init (struct thread_master *master) install_element (RIP_NODE, &rip_default_information_originate_cmd); install_element (RIP_NODE, &no_rip_default_information_originate_cmd); } + +void +rip_zclient_stop (void) +{ + zclient_stop (zclient); + zclient_free (zclient); +} diff --git a/ripd/ripd.h b/ripd/ripd.h index d52df0d992..a8e65d1236 100644 --- a/ripd/ripd.h +++ b/ripd/ripd.h @@ -388,6 +388,7 @@ extern void rip_if_down_all (void); extern void rip_route_map_init (void); extern void rip_route_map_reset (void); extern void rip_zclient_init(struct thread_master *); +extern void rip_zclient_stop(void); extern void rip_zclient_reset (void); extern void rip_offset_init (void); extern int if_check_address (struct in_addr addr);