summaryrefslogtreecommitdiff
path: root/babeld
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2024-08-13 14:12:05 -0400
committerDonald Sharp <sharpd@nvidia.com>2024-08-13 14:12:05 -0400
commit68fff4905627b73f92f12b1e6c023e8de561fd99 (patch)
tree783425881a9448047bf086c79a2eba98f7b96764 /babeld
parentf01205bb9617d3474edf5b3b617db51935c18aca (diff)
babeld: Free up memory on shutdown
a) call vector_delete on created vector on shutdown. b) Call babel_clean_routing_process on shutdown Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'babeld')
-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
5 files changed, 10 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 */