summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <donaldsharp72@gmail.com>2025-04-11 09:07:27 -0400
committerGitHub <noreply@github.com>2025-04-11 09:07:27 -0400
commitf163168c9521181326845b1d98e83f3325bf8508 (patch)
treef131e07d8406b39f2595b3be73763e4fbd972b8e
parent2c37a217432a7207f2001c9e95006f5be732089a (diff)
parentfe2a07aea4db279eb28459755288364013f690da (diff)
Merge pull request #18642 from louis-6wind/fix-asla-leak
isisd: fix asla memory leak
-rw-r--r--isisd/isis_tlvs.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/isisd/isis_tlvs.c b/isisd/isis_tlvs.c
index aa9d5e683b..41a17dbd1a 100644
--- a/isisd/isis_tlvs.c
+++ b/isisd/isis_tlvs.c
@@ -129,6 +129,7 @@ static int unpack_tlvs(enum isis_tlv_context context, size_t avail_len,
struct stream *stream, struct sbuf *log, void *dest,
int indent, bool *unpacked_known_tlvs);
static void isis_free_subsubtlvs(struct isis_subsubtlvs *subsubtlvs);
+static void isis_tlvs_del_asla_free(void *arg);
/* For tests/isisd, TLV text requires ipv4-unicast instead of standard */
static const char *isis_mtid2str_fake(uint16_t mtid)
@@ -147,6 +148,7 @@ struct isis_ext_subtlvs *isis_alloc_ext_subtlvs(void)
init_item_list(&ext->adj_sid);
init_item_list(&ext->lan_sid);
ext->aslas = list_new();
+ ext->aslas->del = isis_tlvs_del_asla_free;
init_item_list(&ext->srv6_endx_sid);
init_item_list(&ext->srv6_lan_endx_sid);
@@ -8136,12 +8138,19 @@ void isis_tlvs_del_srv6_lan_endx_sid(struct isis_ext_subtlvs *exts,
UNSET_SUBTLV(exts, EXT_SRV6_LAN_ENDX_SID);
}
+static void isis_tlvs_del_asla_free(void *arg)
+{
+ struct isis_asla_subtlvs *asla = arg;
+
+ admin_group_term(&asla->ext_admin_group);
+ XFREE(MTYPE_ISIS_SUBTLV, asla);
+}
+
void isis_tlvs_del_asla_flex_algo(struct isis_ext_subtlvs *ext,
struct isis_asla_subtlvs *asla)
{
- admin_group_term(&asla->ext_admin_group);
listnode_delete(ext->aslas, asla);
- XFREE(MTYPE_ISIS_SUBTLV, asla);
+ isis_tlvs_del_asla_free(asla);
}
struct isis_asla_subtlvs *