summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pimd/pim_mroute.c2
-rw-r--r--pimd/pim_msdp_socket.c2
-rw-r--r--pimd/pim_rp.c3
-rw-r--r--pimd/pim_sock.c1
-rw-r--r--pimd/pim_zlookup.c11
-rw-r--r--pimd/pim_zlookup.h1
-rw-r--r--pimd/pimd.c5
-rw-r--r--pimd/pimd.h1
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
@@ -121,6 +121,13 @@ static void zclient_lookup_failed(struct zclient *zlookup)
}
void
+zclient_lookup_free (void)
+{
+ zclient_free (zlookup);
+ zlookup = NULL;
+}
+
+void
zclient_lookup_new (void)
{
zlookup = zclient_new (master);
@@ -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 */