Signed-off-by: Donald Sharp <sharpd@nvidia.com>
/* 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);
{
}
#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;
+ }
+}
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 *),