summaryrefslogtreecommitdiffstats
path: root/ospf6d/ospf6_lsa.c
diff options
context:
space:
mode:
authorChirag Shah <chirag@cumulusnetworks.com>2017-07-13 20:39:22 +0200
committerChirag Shah <chirag@cumulusnetworks.com>2017-07-27 18:49:42 +0200
commitd107621dbcd2d0061bb2159ad0a7bdea6516ce3e (patch)
tree12a7d15a76b3b0ba850da483c9b1704b8373c212 /ospf6d/ospf6_lsa.c
parentMerge pull request #842 from qlyoung/update-style-guide (diff)
downloadfrr-d107621dbcd2d0061bb2159ad0a7bdea6516ce3e.tar.xz
frr-d107621dbcd2d0061bb2159ad0a7bdea6516ce3e.zip
ospf6d: Fix memory leaks
Free route node upon asbr redistribute route cleanup from external_id_table route tale. Free route node when route_remove is called and node->info is set to null. Decrement route node lock in route_lookup api as it is incremented as part of node_lookup api. use local variable for nexthop vs. malloc in zebra parse routine. two of the memory leaks related to nexthops per route were not freed. two of the memory leak detected per frr service restart Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
Diffstat (limited to 'ospf6d/ospf6_lsa.c')
-rw-r--r--ospf6d/ospf6_lsa.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/ospf6d/ospf6_lsa.c b/ospf6d/ospf6_lsa.c
index 329060a16..799391680 100644
--- a/ospf6d/ospf6_lsa.c
+++ b/ospf6d/ospf6_lsa.c
@@ -509,7 +509,8 @@ struct ospf6_lsa *ospf6_lsa_create(struct ospf6_lsa_header *header)
/* allocate memory for this LSA */
new_header =
- (struct ospf6_lsa_header *)XMALLOC(MTYPE_OSPF6_LSA, lsa_size);
+ (struct ospf6_lsa_header *)XMALLOC(MTYPE_OSPF6_LSA_HEADER,
+ lsa_size);
/* copy LSA from original header */
memcpy(new_header, header, lsa_size);
@@ -537,7 +538,7 @@ struct ospf6_lsa *ospf6_lsa_create_headeronly(struct ospf6_lsa_header *header)
/* allocate memory for this LSA */
new_header = (struct ospf6_lsa_header *)XMALLOC(
- MTYPE_OSPF6_LSA, sizeof(struct ospf6_lsa_header));
+ MTYPE_OSPF6_LSA_HEADER, sizeof(struct ospf6_lsa_header));
/* copy LSA from original header */
memcpy(new_header, header, sizeof(struct ospf6_lsa_header));
@@ -568,7 +569,7 @@ void ospf6_lsa_delete(struct ospf6_lsa *lsa)
THREAD_OFF(lsa->refresh);
/* do free */
- XFREE(MTYPE_OSPF6_LSA, lsa->header);
+ XFREE(MTYPE_OSPF6_LSA_HEADER, lsa->header);
XFREE(MTYPE_OSPF6_LSA, lsa);
}