forked from Mirror/frr
lib: Cleanup memory associated with modules on shutdown
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
parent
bc16c8ce8d
commit
db986aded4
|
@ -1267,6 +1267,8 @@ void frr_fini(void)
|
||||||
/* frrmod_init -> nothing needed / hooks */
|
/* frrmod_init -> nothing needed / hooks */
|
||||||
rcu_shutdown();
|
rcu_shutdown();
|
||||||
|
|
||||||
|
frrmod_terminate();
|
||||||
|
|
||||||
/* also log memstats to stderr when stderr goes to a file*/
|
/* also log memstats to stderr when stderr goes to a file*/
|
||||||
if (debug_memstats_at_exit || !isatty(STDERR_FILENO))
|
if (debug_memstats_at_exit || !isatty(STDERR_FILENO))
|
||||||
have_leftovers = log_memstats(stderr, di->name);
|
have_leftovers = log_memstats(stderr, di->name);
|
||||||
|
|
12
lib/module.c
12
lib/module.c
|
@ -202,3 +202,15 @@ void frrmod_unload(struct frrmod_runtime *module)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
#endif
|
#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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -79,6 +79,7 @@ extern union _frrmod_runtime_u _frrmod_this_module;
|
||||||
extern struct frrmod_runtime *frrmod_list;
|
extern struct frrmod_runtime *frrmod_list;
|
||||||
|
|
||||||
extern void frrmod_init(struct frrmod_runtime *modinfo);
|
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,
|
extern struct frrmod_runtime *frrmod_load(const char *spec, const char *dir,
|
||||||
void (*pFerrlog)(const void *,
|
void (*pFerrlog)(const void *,
|
||||||
const char *),
|
const char *),
|
||||||
|
|
Loading…
Reference in a new issue