summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhasso <hasso>2005-05-27 03:26:57 +0000
committerhasso <hasso>2005-05-27 03:26:57 +0000
commit70601e0691e178ca23f14fdc666a97efce26897f (patch)
tree02e822953d578b96c53a053b97573f6c009c6461
parent54a6ed38ac38777f5c2966f74a85cc12659efc87 (diff)
* bgp_routemap.c: Stop leaking communities.
Fixes bugzilla #89. [backport candidate]
-rw-r--r--bgpd/ChangeLog4
-rw-r--r--bgpd/bgp_routemap.c7
2 files changed, 11 insertions, 0 deletions
diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog
index 7c339221..2969c326 100644
--- a/bgpd/ChangeLog
+++ b/bgpd/ChangeLog
@@ -1,5 +1,9 @@
2005-05-27 Hasso Tepper <hasso at quagga.net>
+ * bgp_routemap.c: Stop leaking communities.
+
+2005-05-27 Hasso Tepper <hasso at quagga.net>
+
* bgpd.c: Deleting bgp->rsclient list needs fix similar to pree-groups
deleting fix. Avoid leaking bgp->group, bgp->peer and bgp->rsclient
lists.
diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c
index fc2c8fd9..6c10987b 100644
--- a/bgpd/bgp_routemap.c
+++ b/bgpd/bgp_routemap.c
@@ -1268,6 +1268,10 @@ route_set_community (void *rule, struct prefix *prefix,
new = community_dup (rcs->com);
attr->community = new;
+
+ if (old)
+ community_free (old);
+
attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_COMMUNITIES);
}
@@ -1448,6 +1452,9 @@ route_set_ecommunity_rt (void *rule, struct prefix *prefix,
bgp_info->attr->ecommunity = new_ecom;
+ if (old_ecom)
+ ecommunity_free (old_ecom);
+
bgp_info->attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_EXT_COMMUNITIES);
}
return RMAP_OKAY;