From 0b6817c5e7331732877090256492539e0e858fd8 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Sun, 11 Dec 2016 19:02:46 -0500 Subject: [PATCH] pimd: Cleanup shutdown a bit more. Cleanup the shutdown of pim a bit more. Signed-off-by: Donald Sharp --- pimd/pim_mroute.c | 2 -- pimd/pim_msdp_socket.c | 2 -- pimd/pim_rp.c | 3 ++- pimd/pim_sock.c | 1 - pimd/pim_zlookup.c | 11 ++++++++--- pimd/pim_zlookup.h | 1 + pimd/pimd.c | 5 +++++ pimd/pimd.h | 1 + 8 files changed, 17 insertions(+), 9 deletions(-) diff --git a/pimd/pim_mroute.c b/pimd/pim_mroute.c index 05d08b6e91..bd9a1c4605 100644 --- a/pimd/pim_mroute.c +++ b/pimd/pim_mroute.c @@ -41,8 +41,6 @@ #include "pim_zlookup.h" /* GLOBAL VARS */ -extern struct zebra_privs_t pimd_privs; - static struct thread *qpim_mroute_socket_reader = NULL; static void mroute_read_on(void); diff --git a/pimd/pim_msdp_socket.c b/pimd/pim_msdp_socket.c index bc9720f1f3..805e812cae 100644 --- a/pimd/pim_msdp_socket.c +++ b/pimd/pim_msdp_socket.c @@ -31,8 +31,6 @@ #include "pim_msdp.h" #include "pim_msdp_socket.h" -extern struct zebra_privs_t pimd_privs; - /* increase socket send buffer size */ static void pim_msdp_update_sock_send_buffer_size (int fd) diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c index ba464e98c6..dc19002a42 100644 --- a/pimd/pim_rp.c +++ b/pimd/pim_rp.c @@ -126,7 +126,8 @@ void pim_rp_free (void) { if (qpim_rp_list) - list_free (qpim_rp_list); + list_delete (qpim_rp_list); + qpim_rp_list = NULL; } /* diff --git a/pimd/pim_sock.c b/pimd/pim_sock.c index eda81c6571..11cd61b592 100644 --- a/pimd/pim_sock.c +++ b/pimd/pim_sock.c @@ -42,7 +42,6 @@ #include "pim_igmp_join.h" /* GLOBAL VARS */ -extern struct zebra_privs_t pimd_privs; int pim_socket_raw (int protocol) diff --git a/pimd/pim_zlookup.c b/pimd/pim_zlookup.c index 61e3e27261..e1a8e820b7 100644 --- a/pimd/pim_zlookup.c +++ b/pimd/pim_zlookup.c @@ -120,6 +120,13 @@ static void zclient_lookup_failed(struct zclient *zlookup) zclient_lookup_reconnect(zlookup); } +void +zclient_lookup_free (void) +{ + zclient_free (zlookup); + zlookup = NULL; +} + void zclient_lookup_new (void) { @@ -131,9 +138,7 @@ zclient_lookup_new (void) } zlookup->sock = -1; - zlookup->ibuf = stream_new(ZEBRA_MAX_PACKET_SIZ); - zlookup->obuf = stream_new(ZEBRA_MAX_PACKET_SIZ); - zlookup->t_connect = 0; + zlookup->t_connect = NULL; zclient_lookup_sched_now(zlookup); diff --git a/pimd/pim_zlookup.h b/pimd/pim_zlookup.h index d8e7ff9e0d..34b1434c66 100644 --- a/pimd/pim_zlookup.h +++ b/pimd/pim_zlookup.h @@ -35,6 +35,7 @@ struct pim_zlookup_nexthop { }; void zclient_lookup_new (void); +void zclient_lookup_free (void); int zclient_lookup_nexthop(struct pim_zlookup_nexthop nexthop_tab[], const int tab_size, diff --git a/pimd/pimd.c b/pimd/pimd.c index e0788772cb..c9fd4d85f2 100644 --- a/pimd/pimd.c +++ b/pimd/pimd.c @@ -39,6 +39,7 @@ #include "pim_ssmpingd.h" #include "pim_static.h" #include "pim_rp.h" +#include "pim_zlookup.h" const char *const PIM_ALL_SYSTEMS = MCAST_ALL_SYSTEMS; const char *const PIM_ALL_ROUTERS = MCAST_ALL_ROUTERS; @@ -90,6 +91,10 @@ static void pim_free() pim_if_terminate (); pim_rp_free (); pim_route_map_terminate(); + + zclient_lookup_free (); + + zprivs_terminate(&pimd_privs); } void pim_init() diff --git a/pimd/pimd.h b/pimd/pimd.h index 2fca09ab6a..1f8dcdfb29 100644 --- a/pimd/pimd.h +++ b/pimd/pimd.h @@ -96,6 +96,7 @@ const char *const PIM_ALL_PIM_ROUTERS; const char *const PIM_ALL_IGMP_ROUTERS; extern struct thread_master *master; +extern struct zebra_privs_t pimd_privs; uint32_t qpim_debugs; int qpim_mroute_socket_fd; int64_t qpim_mroute_socket_creation; /* timestamp of creation */ -- 2.39.5