summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2024-08-14 22:09:39 +0200
committerGitHub <noreply@github.com>2024-08-14 22:09:39 +0200
commit93032f183ae7f98f68fa97855015ac16c44c0065 (patch)
treefd8b160d8164f93f8bd432c73f4d2f20e4b24632
parent28df4462c3e9ad0464fdde26db993414146a72a3 (diff)
parent68fff4905627b73f92f12b1e6c023e8de561fd99 (diff)
Merge pull request #16578 from donaldsharp/more_memory_leaks_on_shutdown
More memory leaks on shutdown
-rw-r--r--babeld/babel_interface.c5
-rw-r--r--babeld/babel_interface.h1
-rw-r--r--babeld/babel_main.c4
-rw-r--r--babeld/babeld.c3
-rw-r--r--babeld/babeld.h1
-rw-r--r--pbrd/pbr_vrf.c2
6 files changed, 12 insertions, 4 deletions
diff --git a/babeld/babel_interface.c b/babeld/babel_interface.c
index 76ecd4fe4e..943ae9def1 100644
--- a/babeld/babel_interface.c
+++ b/babeld/babel_interface.c
@@ -1171,6 +1171,11 @@ DEFUN (show_babel_parameters,
return CMD_SUCCESS;
}
+void babel_if_terminate(void)
+{
+ vector_free(babel_enable_if);
+}
+
void
babel_if_init(void)
{
diff --git a/babeld/babel_interface.h b/babeld/babel_interface.h
index a585e23afc..ab08ded91a 100644
--- a/babeld/babel_interface.h
+++ b/babeld/babel_interface.h
@@ -94,6 +94,7 @@ struct buffered_update {
/* init function */
void babel_if_init(void);
+void babel_if_terminate(void);
/* Callback functions for zebra client */
int babel_interface_up (int, struct zclient *, zebra_size_t, vrf_id_t);
diff --git a/babeld/babel_main.c b/babeld/babel_main.c
index 10ab1b53c3..ddc75f7182 100644
--- a/babeld/babel_main.c
+++ b/babeld/babel_main.c
@@ -305,9 +305,9 @@ babel_exit_properly(void)
/* Uninstall and flush all routes. */
debugf(BABEL_DEBUG_COMMON, "Uninstall routes.");
- flush_all_routes();
- babel_interface_close_all();
+ babel_clean_routing_process();
babel_zebra_close_connexion();
+ babel_if_terminate();
babel_save_state_file();
debugf(BABEL_DEBUG_COMMON, "Remove pid file.");
debugf(BABEL_DEBUG_COMMON, "Done.");
diff --git a/babeld/babeld.c b/babeld/babeld.c
index 6f0a5a7bb4..73deb1dd92 100644
--- a/babeld/babeld.c
+++ b/babeld/babeld.c
@@ -299,8 +299,7 @@ babel_initial_noise(void)
}
/* Delete all the added babel routes, make babeld only speak to zebra. */
-static void
-babel_clean_routing_process(void)
+void babel_clean_routing_process(void)
{
flush_all_routes();
babel_interface_close_all();
diff --git a/babeld/babeld.h b/babeld/babeld.h
index 5573719ab3..17a0381d2c 100644
--- a/babeld/babeld.h
+++ b/babeld/babeld.h
@@ -98,5 +98,6 @@ extern int redistribute_filter(const unsigned char *prefix, unsigned short plen,
extern int resize_receive_buffer(int size);
extern void schedule_neighbours_check(int msecs, int override);
extern struct babel *babel_lookup(void);
+extern void babel_clean_routing_process(void);
#endif /* BABEL_BABELD_H */
diff --git a/pbrd/pbr_vrf.c b/pbrd/pbr_vrf.c
index ef4a4c2c63..d8adb91fef 100644
--- a/pbrd/pbr_vrf.c
+++ b/pbrd/pbr_vrf.c
@@ -123,4 +123,6 @@ void pbr_vrf_terminate(void)
FOR_ALL_INTERFACES (vrf, ifp)
pbr_if_del(ifp);
}
+
+ vrf_terminate();
}