]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: If using filters free up name on peer deletion
authorDonald Sharp <sharpd@nvidia.com>
Sat, 14 Nov 2020 23:35:21 +0000 (18:35 -0500)
committerDonald Sharp <sharpd@nvidia.com>
Sat, 14 Nov 2020 23:35:21 +0000 (18:35 -0500)
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>
bgpd/bgpd.c

index 26c45790134d335ca20bd0858ffa28c105d42361..b773c16b572871f2aae69e66c945b9e4885c174e 100644 (file)
@@ -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);