From 85bf0f3237d3bf9114dd84bc543b19c683f97a72 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 30 Jun 2017 10:29:14 -0400 Subject: [PATCH 01/10] lib: Fix clang warning Signed-off-by: Donald Sharp --- lib/thread.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/thread.c b/lib/thread.c index a1a9e7c359..1891735fc3 100644 --- a/lib/thread.c +++ b/lib/thread.c @@ -1301,7 +1301,7 @@ thread_fetch (struct thread_master *m, struct thread *fetch) struct timeval now; struct timeval zerotime = { 0, 0 }; struct timeval tv; - struct timeval *tw; + struct timeval *tw = NULL; int num = 0; From 6b02aecba51a9cf91b7495087cdbb02d69696a5a Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 30 Jun 2017 10:29:58 -0400 Subject: [PATCH 02/10] babeld: Fix zclient cleanup on shutdown Signed-off-by: Donald Sharp --- babeld/babel_zebra.c | 1 + 1 file changed, 1 insertion(+) diff --git a/babeld/babel_zebra.c b/babeld/babel_zebra.c index d8b8919e21..3a7a52ccca 100644 --- a/babeld/babel_zebra.c +++ b/babeld/babel_zebra.c @@ -400,4 +400,5 @@ void babel_zebra_close_connexion(void) { zclient_stop(zclient); + zclient_free(zclient); } From edaf6c016f00547970133b026a63ffab620a7ad2 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 30 Jun 2017 10:30:34 -0400 Subject: [PATCH 03/10] eigrpd: Fix zclient cleanup on shutdown Signed-off-by: Donald Sharp --- eigrpd/eigrpd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/eigrpd/eigrpd.c b/eigrpd/eigrpd.c index a0ead05224..2fa8296ce2 100644 --- a/eigrpd/eigrpd.c +++ b/eigrpd/eigrpd.c @@ -267,8 +267,10 @@ eigrp_finish (struct eigrp *eigrp) && (listcount(eigrp_om->eigrp) == 0)) { if (zclient) - zclient_free (zclient); - + { + zclient_stop (zclient); + zclient_free (zclient); + } exit(0); } From 8d429559dfb5e00c3ff79ff4811f2d8f707838e4 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 30 Jun 2017 10:31:09 -0400 Subject: [PATCH 04/10] isisd: Fix zclient cleanup on shutdown Signed-off-by: Donald Sharp --- isisd/isis_main.c | 1 + isisd/isis_zebra.c | 7 +++++++ isisd/isis_zebra.h | 2 ++ 3 files changed, 10 insertions(+) diff --git a/isisd/isis_main.c b/isisd/isis_main.c index 58070c7f2a..674592f46b 100644 --- a/isisd/isis_main.c +++ b/isisd/isis_main.c @@ -101,6 +101,7 @@ void sigusr1(void); static __attribute__((__noreturn__)) void terminate (int i) { + isis_zebra_stop (); exit (i); } diff --git a/isisd/isis_zebra.c b/isisd/isis_zebra.c index 0009dd5e27..af77250a01 100644 --- a/isisd/isis_zebra.c +++ b/isisd/isis_zebra.c @@ -720,3 +720,10 @@ isis_zebra_init (struct thread_master *master) return; } + +void +isis_zebra_stop (void) +{ + zclient_stop (zclient); + zclient_free (zclient); +} diff --git a/isisd/isis_zebra.h b/isisd/isis_zebra.h index 621c32c363..82d5a48d3e 100644 --- a/isisd/isis_zebra.h +++ b/isisd/isis_zebra.h @@ -25,6 +25,8 @@ extern struct zclient *zclient; void isis_zebra_init(struct thread_master *); +void isis_zebra_stop(void); + void isis_zebra_route_update (struct prefix *prefix, struct isis_route_info *route_info); int isis_distribute_list_update (int routetype); From 20a11b254bad524186923cb8332b043eb0d65499 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 30 Jun 2017 10:31:34 -0400 Subject: [PATCH 05/10] nhrpd: Fix zclient cleanup on shutdown Signed-off-by: Donald Sharp --- nhrpd/nhrp_route.c | 1 + 1 file changed, 1 insertion(+) diff --git a/nhrpd/nhrp_route.c b/nhrpd/nhrp_route.c index 7f8cad6e92..89972f8f98 100644 --- a/nhrpd/nhrp_route.c +++ b/nhrpd/nhrp_route.c @@ -379,6 +379,7 @@ void nhrp_zebra_init(void) void nhrp_zebra_terminate(void) { zclient_stop(zclient); + zclient_free(zclient); route_table_finish(zebra_rib[AFI_IP]); route_table_finish(zebra_rib[AFI_IP6]); } From 7feb9237dc6d356bbfbebdc2e98080027fdad85a Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 30 Jun 2017 10:32:01 -0400 Subject: [PATCH 06/10] ripngd: Fix zclient cleanup on shutdown Signed-off-by: Donald Sharp --- ripngd/ripng_main.c | 1 + ripngd/ripng_zebra.c | 7 +++++++ ripngd/ripngd.h | 1 + 3 files changed, 9 insertions(+) diff --git a/ripngd/ripng_main.c b/ripngd/ripng_main.c index e517817147..9d700305ed 100644 --- a/ripngd/ripng_main.c +++ b/ripngd/ripng_main.c @@ -103,6 +103,7 @@ sigint (void) if (! retain_mode) ripng_clean (); + ripng_zebra_stop (); exit (0); } diff --git a/ripngd/ripng_zebra.c b/ripngd/ripng_zebra.c index 2d62823b11..465d33992f 100644 --- a/ripngd/ripng_zebra.c +++ b/ripngd/ripng_zebra.c @@ -557,3 +557,10 @@ zebra_init (struct thread_master *master) install_element (RIPNG_NODE, &ripng_redistribute_type_metric_routemap_cmd); install_element (RIPNG_NODE, &no_ripng_redistribute_type_cmd); } + +void +ripng_zebra_stop (void) +{ + zclient_stop (zclient); + zclient_free (zclient); +} diff --git a/ripngd/ripngd.h b/ripngd/ripngd.h index 62b7b073f8..ce8ea07a41 100644 --- a/ripngd/ripngd.h +++ b/ripngd/ripngd.h @@ -353,6 +353,7 @@ extern void ripng_route_map_reset (void); extern void ripng_terminate (void); /* zclient_init() is done by ripng_zebra.c:zebra_init() */ extern void zebra_init(struct thread_master *); +extern void ripng_zebra_stop (void); extern void ripng_zclient_reset (void); extern void ripng_offset_init (void); From a2f9eb822f6fcec3896e8d9364dff7108240b61e Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 30 Jun 2017 10:32:26 -0400 Subject: [PATCH 07/10] ripd: Fix zclient cleanup on shutdown Signed-off-by: Donald Sharp --- ripd/rip_main.c | 2 ++ ripd/rip_zebra.c | 7 +++++++ ripd/ripd.h | 1 + 3 files changed, 10 insertions(+) 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); From da13682c884d14d0f82580a94e68a69f104ba897 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 30 Jun 2017 10:32:45 -0400 Subject: [PATCH 08/10] pimd: Fix zclient cleanup on shutdown Signed-off-by: Donald Sharp --- pimd/pim_zlookup.c | 1 + pimd/pimd.c | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/pimd/pim_zlookup.c b/pimd/pim_zlookup.c index 779cc14183..e7ffe0f4ad 100644 --- a/pimd/pim_zlookup.c +++ b/pimd/pim_zlookup.c @@ -115,6 +115,7 @@ static void zclient_lookup_failed(struct zclient *zlookup) void zclient_lookup_free (void) { + zclient_stop (zlookup); zclient_free (zlookup); zlookup = NULL; } diff --git a/pimd/pimd.c b/pimd/pimd.c index c31d2a99a1..ec1fe5b6d0 100644 --- a/pimd/pimd.c +++ b/pimd/pimd.c @@ -313,6 +313,8 @@ void pim_init() void pim_terminate() { + struct zclient *zclient; + pim_free(); /* reverse prefix_list_init */ @@ -321,4 +323,11 @@ void pim_terminate() prefix_list_reset (); pim_vrf_terminate (); + + zclient = pim_zebra_zclient_get (); + if (zclient) + { + zclient_stop (zclient); + zclient_free (zclient); + } } From ee514f711602b30eae872a041947590175414140 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 30 Jun 2017 10:33:09 -0400 Subject: [PATCH 09/10] ospfd: Fix zclient cleanup on shutdown Signed-off-by: Donald Sharp --- ospfd/ospfd.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c index 38213aeb6a..9af9f7f314 100644 --- a/ospfd/ospfd.c +++ b/ospfd/ospfd.c @@ -497,6 +497,8 @@ ospf_terminate (void) * One or more ospf_finish()'s may have deferred shutdown to a timer * thread */ + zclient_stop (zclient); + zclient_free (zclient); } void From e49b20cecc8ce7b52aa23294fefb79b887d8271b Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 30 Jun 2017 10:33:30 -0400 Subject: [PATCH 10/10] ospf6d: Fix zclient cleanup on shutdown Signed-off-by: Donald Sharp --- ospf6d/ospf6_main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c index f69c1e1bca..0a4a3a28c3 100644 --- a/ospf6d/ospf6_main.c +++ b/ospf6d/ospf6_main.c @@ -110,7 +110,10 @@ ospf6_exit (int status) cmd_terminate (); if (zclient) - zclient_free (zclient); + { + zclient_stop (zclient); + zclient_free (zclient); + } if (master) thread_master_free (master);