summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRenato Westphal <renato@opensourcerouting.org>2017-09-11 23:05:16 -0300
committerRenato Westphal <renato@opensourcerouting.org>2017-09-12 11:25:16 -0300
commit8879bd22672c9d2987dd5d4645a603ca060c0c3f (patch)
tree2af510f49651624a6055c3110bf8be946617a27a
parent953d97fc4aef0c7715e8d42d7d52ebc18d873ac6 (diff)
*: make all daemons call frr_fini() on exit
This allow us to find real leaks more easily with tools like valgrind. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
-rw-r--r--babeld/babel_main.c1
-rw-r--r--eigrpd/eigrpd.c7
-rw-r--r--isisd/isis_zebra.c2
-rw-r--r--ospfd/ospfd.c3
-rw-r--r--pimd/pimd.c2
-rw-r--r--ripd/rip_main.c1
-rw-r--r--ripngd/ripng_main.c1
7 files changed, 13 insertions, 4 deletions
diff --git a/babeld/babel_main.c b/babeld/babel_main.c
index 54626a4aeb..6a8f9bb75f 100644
--- a/babeld/babel_main.c
+++ b/babeld/babel_main.c
@@ -335,6 +335,7 @@ babel_exit_properly(void)
babel_save_state_file();
debugf(BABEL_DEBUG_COMMON, "Remove pid file.");
debugf(BABEL_DEBUG_COMMON, "Done.");
+ frr_fini();
exit(0);
}
diff --git a/eigrpd/eigrpd.c b/eigrpd/eigrpd.c
index 99d88b2d00..ee60898f86 100644
--- a/eigrpd/eigrpd.c
+++ b/eigrpd/eigrpd.c
@@ -42,6 +42,7 @@
#include "plist.h"
#include "sockopt.h"
#include "keychain.h"
+#include "libfrr.h"
#include "eigrpd/eigrp_structs.h"
#include "eigrpd/eigrpd.h"
@@ -241,12 +242,10 @@ void eigrp_terminate(void)
SET_FLAG(eigrp_om->options, EIGRP_MASTER_SHUTDOWN);
- /* exit immediately if EIGRP not actually running */
- if (listcount(eigrp_om->eigrp) == 0)
- exit(0);
-
for (ALL_LIST_ELEMENTS(eigrp_om->eigrp, node, nnode, eigrp))
eigrp_finish(eigrp);
+
+ frr_fini();
}
void eigrp_finish(struct eigrp *eigrp)
diff --git a/isisd/isis_zebra.c b/isisd/isis_zebra.c
index ed96bd31c2..99eb698b75 100644
--- a/isisd/isis_zebra.c
+++ b/isisd/isis_zebra.c
@@ -35,6 +35,7 @@
#include "linklist.h"
#include "nexthop.h"
#include "vrf.h"
+#include "libfrr.h"
#include "isisd/dict.h"
#include "isisd/isis_constants.h"
@@ -427,4 +428,5 @@ void isis_zebra_stop(void)
{
zclient_stop(zclient);
zclient_free(zclient);
+ frr_fini();
}
diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c
index 20cee713bd..ed1d8901fb 100644
--- a/ospfd/ospfd.c
+++ b/ospfd/ospfd.c
@@ -35,6 +35,7 @@
#include "plist.h"
#include "sockopt.h"
#include "bfd.h"
+#include "libfrr.h"
#include "defaults.h"
#include "ospfd/ospfd.h"
@@ -489,6 +490,8 @@ void ospf_terminate(void)
*/
zclient_stop(zclient);
zclient_free(zclient);
+
+ frr_fini();
}
void ospf_finish(struct ospf *ospf)
diff --git a/pimd/pimd.c b/pimd/pimd.c
index 9a8e92cbb2..37c79d4554 100644
--- a/pimd/pimd.c
+++ b/pimd/pimd.c
@@ -139,4 +139,6 @@ void pim_terminate()
zclient_stop(zclient);
zclient_free(zclient);
}
+
+ frr_fini();
}
diff --git a/ripd/rip_main.c b/ripd/rip_main.c
index 91b623beb4..9a448e8958 100644
--- a/ripd/rip_main.c
+++ b/ripd/rip_main.c
@@ -89,6 +89,7 @@ static void sigint(void)
rip_clean();
rip_zclient_stop();
+ frr_fini();
exit(0);
}
diff --git a/ripngd/ripng_main.c b/ripngd/ripng_main.c
index 0cb54d4335..8ef27daaba 100644
--- a/ripngd/ripng_main.c
+++ b/ripngd/ripng_main.c
@@ -92,6 +92,7 @@ static void sigint(void)
ripng_clean();
ripng_zebra_stop();
+ frr_fini();
exit(0);
}