]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: add dtor for srv6 locator chunk list
authorMark Stapp <mjs@voltanet.io>
Fri, 4 Jun 2021 18:57:42 +0000 (14:57 -0400)
committerMark Stapp <mjs@voltanet.io>
Mon, 7 Jun 2021 13:52:33 +0000 (09:52 -0400)
Add a delete function for the chunk list in an srv6
locator.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
lib/srv6.c

index ceb769ef7607112b9bc0d459034f9a71fbe5624a..ccb94b2f7604ab88c2913d08bdea9cf62d206f59 100644 (file)
@@ -129,6 +129,8 @@ struct srv6_locator *srv6_locator_alloc(const char *name)
        locator = XCALLOC(MTYPE_SRV6_LOCATOR, sizeof(struct srv6_locator));
        strlcpy(locator->name, name, sizeof(locator->name));
        locator->chunks = list_new();
+       locator->chunks->del = (void (*)(void *))srv6_locator_chunk_free;
+
        QOBJ_REG(locator, srv6_locator);
        return locator;
 }
@@ -144,7 +146,12 @@ struct srv6_locator_chunk *srv6_locator_chunk_alloc(void)
 
 void srv6_locator_free(struct srv6_locator *locator)
 {
-       XFREE(MTYPE_SRV6_LOCATOR, locator);
+       if (locator) {
+               QOBJ_UNREG(locator);
+               list_delete(&locator->chunks);
+
+               XFREE(MTYPE_SRV6_LOCATOR, locator);
+       }
 }
 
 void srv6_locator_chunk_free(struct srv6_locator_chunk *chunk)