summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2020-11-14 18:35:21 -0500
committerDonald Sharp <sharpd@nvidia.com>2020-11-14 18:35:21 -0500
commit3d1c148b07c7c81e98fd3059100bd84ba92c4546 (patch)
tree4122bbfa8209e43c516a0cf2be9c796bbdc1ad29
parentd53e72e5942291eb8c1b81ae6dcb320ef6194ec6 (diff)
bgpd: If using filters free up name on peer deletion
FRR was not properly deleting the aname and cnmae memory that was allocated if bgp is using filters. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
-rw-r--r--bgpd/bgpd.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 26c4579013..b773c16b57 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -1094,6 +1094,15 @@ static void peer_free(struct peer *peer)
bgp_delete_connected_nexthop(family2afi(peer->su.sa.sa_family),
peer);
+ FOREACH_AFI_SAFI (afi, safi) {
+ if (peer->filter[afi][safi].advmap.aname)
+ XFREE(MTYPE_BGP_FILTER_NAME,
+ peer->filter[afi][safi].advmap.aname);
+ if (peer->filter[afi][safi].advmap.cname)
+ XFREE(MTYPE_BGP_FILTER_NAME,
+ peer->filter[afi][safi].advmap.cname);
+ }
+
XFREE(MTYPE_PEER_TX_SHUTDOWN_MSG, peer->tx_shutdown_message);
XFREE(MTYPE_PEER_DESC, peer->desc);
@@ -1121,12 +1130,8 @@ static void peer_free(struct peer *peer)
bfd_info_free(&(peer->bfd_info));
- for (afi = AFI_IP; afi < AFI_MAX; afi++) {
- for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++) {
- bgp_addpath_set_peer_type(peer, afi, safi,
- BGP_ADDPATH_NONE);
- }
- }
+ FOREACH_AFI_SAFI (afi, safi)
+ bgp_addpath_set_peer_type(peer, afi, safi, BGP_ADDPATH_NONE);
bgp_unlock(peer->bgp);