
jorge at dti2
Apr 10, 2012, 7:57 AM
Post #1 of 1
(106 views)
Permalink
|
|
[PATCH 1/6] bgpd: Fix memory leak with 'set ip next-hop peer-address'
|
|
From: "Jorge Boncompte [DTI2]" <jorge [at] dti2> A route-map with the mentioned statement causes a memory leak for every prefix that matches. Signed-off-by: Jorge Boncompte [DTI2] <jorge [at] dti2> --- bgpd/bgp_routemap.c | 7 ++----- lib/sockunion.h | 2 ++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/bgpd/bgp_routemap.c b/bgpd/bgp_routemap.c index abb85fd..d81d3db 100644 --- a/bgpd/bgp_routemap.c +++ b/bgpd/bgp_routemap.c @@ -878,7 +878,6 @@ route_set_ip_nexthop (void *rule, struct prefix *prefix, route_map_object_t type, void *object) { struct rmap_ip_nexthop_set *rins = rule; - struct in_addr peer_address; struct bgp_info *bgp_info; struct peer *peer; @@ -894,16 +893,14 @@ route_set_ip_nexthop (void *rule, struct prefix *prefix, && peer->su_remote && sockunion_family (peer->su_remote) == AF_INET) { - inet_aton (sockunion_su2str (peer->su_remote), &peer_address); - bgp_info->attr->nexthop = peer_address; + bgp_info->attr->nexthop.s_addr = sockunion2ip (peer->su_remote); bgp_info->attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_NEXT_HOP); } else if (CHECK_FLAG (peer->rmap_type, PEER_RMAP_TYPE_OUT) && peer->su_local && sockunion_family (peer->su_local) == AF_INET) { - inet_aton (sockunion_su2str (peer->su_local), &peer_address); - bgp_info->attr->nexthop = peer_address; + bgp_info->attr->nexthop.s_addr = sockunion2ip (peer->su_local); bgp_info->attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_NEXT_HOP); } } diff --git a/lib/sockunion.h b/lib/sockunion.h index 4531f62..15b97fc 100644 --- a/lib/sockunion.h +++ b/lib/sockunion.h @@ -86,6 +86,8 @@ enum connect_result #define sockunion_family(X) (X)->sa.sa_family +#define sockunion2ip(X) (X)->sin.sin_addr.s_addr + /* Prototypes. */ extern int str2sockunion (const char *, union sockunion *); extern const char *sockunion2str (union sockunion *, char *, size_t); -- 1.7.8.3 _______________________________________________ Quagga-dev mailing list Quagga-dev [at] lists http://lists.quagga.net/mailman/listinfo/quagga-dev
|