]> git.puffer.fish Git - matthieu/frr.git/commitdiff
lib: Cleanup memory associated with modules on shutdown
authorDonald Sharp <sharpd@nvidia.com>
Thu, 8 Aug 2024 17:54:12 +0000 (13:54 -0400)
committerDonald Sharp <sharpd@nvidia.com>
Thu, 8 Aug 2024 18:24:59 +0000 (14:24 -0400)
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
lib/libfrr.c
lib/module.c
lib/module.h

index 328c6ec8b21bf838a5a8e667780c717a00cbee57..8ea38368b7471b6a89fd3e7dada63149d02d12a1 100644 (file)
@@ -1267,6 +1267,8 @@ void frr_fini(void)
        /* frrmod_init -> nothing needed / hooks */
        rcu_shutdown();
 
+       frrmod_terminate();
+
        /* also log memstats to stderr when stderr goes to a file*/
        if (debug_memstats_at_exit || !isatty(STDERR_FILENO))
                have_leftovers = log_memstats(stderr, di->name);
index af7d20c3da392cbd85413ce66a0448fbb8669096..9d178bb0e4a6f627b02d2f35c81bddf76cf8f2f8 100644 (file)
@@ -202,3 +202,15 @@ void frrmod_unload(struct frrmod_runtime *module)
 {
 }
 #endif
+
+void frrmod_terminate(void)
+{
+       struct frrmod_runtime *rtinfo = frrmod_list;
+
+       while (rtinfo) {
+               XFREE(MTYPE_MODULE_LOADNAME, rtinfo->load_name);
+               XFREE(MTYPE_MODULE_LOADARGS, rtinfo->load_args);
+
+               rtinfo = rtinfo->next;
+       }
+}
index cd2be474e7f437ca7ca5def05095efda187a4503..1810b335f6f64feef5590a47270975a7968f276a 100644 (file)
@@ -79,6 +79,7 @@ extern union _frrmod_runtime_u _frrmod_this_module;
 extern struct frrmod_runtime *frrmod_list;
 
 extern void frrmod_init(struct frrmod_runtime *modinfo);
+extern void frrmod_terminate(void);
 extern struct frrmod_runtime *frrmod_load(const char *spec, const char *dir,
                                          void (*pFerrlog)(const void *,
                                                           const char *),