mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-11-01 12:47:16 +00:00
lib: Free some memory in scripting subsystem at shutdown
Pre: staticd: showing active allocations in memory group libfrr staticd: memstats: Scripting : 16 * (variably sized) staticd: memstats: Hash : 2 * (variably sized) staticd: memstats: Hash Bucket : 8 * 32 staticd: memstats: Hash Index : 1 * (variably sized) staticd: memstats: Link List : 1 * 40 staticd: memstats: Link Node : 1 * 24 staticd: showing active allocations in memory group logging subsystem staticd: memstats: log file target : 1 * 88 staticd: showing active allocations in memory group staticd Post: staticd: showing active allocations in memory group libfrr staticd: showing active allocations in memory group logging subsystem staticd: memstats: log file target : 1 * 88 staticd: showing active allocations in memory group staticd Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
parent
08040409cc
commit
ca28a0f6fa
@ -184,13 +184,14 @@ static void *codec_alloc(void *arg)
|
||||
return e;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void codec_free(struct codec *c)
|
||||
static void codec_free(void *data)
|
||||
{
|
||||
XFREE(MTYPE_TMP, c->typename);
|
||||
XFREE(MTYPE_TMP, c);
|
||||
struct frrscript_codec *c = data;
|
||||
char *constworkaroundandihateit = (char *)c->typename;
|
||||
|
||||
XFREE(MTYPE_SCRIPT, constworkaroundandihateit);
|
||||
XFREE(MTYPE_SCRIPT, c);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Lua function hash utils */
|
||||
|
||||
@ -212,17 +213,18 @@ bool lua_function_hash_cmp(const void *d1, const void *d2)
|
||||
void *lua_function_alloc(void *arg)
|
||||
{
|
||||
struct lua_function_state *tmp = arg;
|
||||
|
||||
struct lua_function_state *lfs =
|
||||
XCALLOC(MTYPE_SCRIPT, sizeof(struct lua_function_state));
|
||||
|
||||
lfs->name = tmp->name;
|
||||
lfs->L = tmp->L;
|
||||
return lfs;
|
||||
}
|
||||
|
||||
static void lua_function_free(struct hash_bucket *b, void *data)
|
||||
static void lua_function_free(void *data)
|
||||
{
|
||||
struct lua_function_state *lfs = (struct lua_function_state *)b->data;
|
||||
struct lua_function_state *lfs = data;
|
||||
|
||||
lua_close(lfs->L);
|
||||
XFREE(MTYPE_SCRIPT, lfs);
|
||||
}
|
||||
@ -409,7 +411,8 @@ fail:
|
||||
|
||||
void frrscript_delete(struct frrscript *fs)
|
||||
{
|
||||
hash_iterate(fs->lua_function_hash, lua_function_free, NULL);
|
||||
hash_clean(fs->lua_function_hash, lua_function_free);
|
||||
hash_free(fs->lua_function_hash);
|
||||
XFREE(MTYPE_SCRIPT, fs->name);
|
||||
XFREE(MTYPE_SCRIPT, fs);
|
||||
}
|
||||
@ -425,4 +428,11 @@ void frrscript_init(const char *sd)
|
||||
frrscript_register_type_codecs(frrscript_codecs_lib);
|
||||
}
|
||||
|
||||
void frrscript_fini(void)
|
||||
{
|
||||
hash_clean(codec_hash, codec_free);
|
||||
hash_free(codec_hash);
|
||||
|
||||
frrscript_names_destroy();
|
||||
}
|
||||
#endif /* HAVE_SCRIPTING */
|
||||
|
||||
@ -161,6 +161,11 @@ void frrscript_register_type_codecs(struct frrscript_codec *codecs);
|
||||
*/
|
||||
void frrscript_init(const char *scriptdir);
|
||||
|
||||
/*
|
||||
* On shutdown clean up memory associated with the scripting subsystem
|
||||
*/
|
||||
void frrscript_fini(void);
|
||||
|
||||
/*
|
||||
* This macro is mapped to every (name, value) in frrscript_call,
|
||||
* so this in turn maps them onto their encoders
|
||||
|
||||
@ -1219,6 +1219,10 @@ void frr_fini(void)
|
||||
db_close();
|
||||
#endif
|
||||
log_ref_fini();
|
||||
|
||||
#ifdef HAVE_SCRIPTING
|
||||
frrscript_fini();
|
||||
#endif
|
||||
frr_pthread_finish();
|
||||
zprivs_terminate(di->privs);
|
||||
/* signal_init -> nothing needed */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user