From: Donald Sharp Date: Tue, 18 Aug 2015 12:41:58 +0000 (-0700) Subject: bgpd: Remove extra stream duplications X-Git-Tag: frr-2.0-rc1~1281^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=af4b20d2c36e0b6dbce01b789b1593be59555fed;p=matthieu%2Ffrr.git bgpd: Remove extra stream duplications Ticket: CM-7104 Reviewed by: CCR-3347 Tested: See bug Remove the extra stream duplications in packet handling for bgpd --- diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c index 307fb6c0a6..ddc03716e3 100644 --- a/bgpd/bgp_packet.c +++ b/bgpd/bgp_packet.c @@ -146,7 +146,6 @@ static struct stream * bgp_update_packet_eor (struct peer *peer, afi_t afi, safi_t safi) { struct stream *s; - struct stream *packet; if (DISABLE_BGP_ANNOUNCE) return NULL; @@ -179,10 +178,8 @@ bgp_update_packet_eor (struct peer *peer, afi_t afi, safi_t safi) } bgp_packet_set_size (s); - packet = stream_dup (s); - bgp_packet_add (peer, packet); - stream_free (s); - return packet; + bgp_packet_add (peer, s); + return s; } /* Get next packet to be written. */ @@ -676,7 +673,6 @@ bgp_route_refresh_send (struct peer *peer, afi_t afi, safi_t safi, u_char orf_type, u_char when_to_refresh, int remove) { struct stream *s; - struct stream *packet; struct bgp_filter *filter; int orf_refresh = 0; @@ -753,12 +749,8 @@ bgp_route_refresh_send (struct peer *peer, afi_t afi, safi_t safi, peer->host, afi, safi); } - /* Make real packet. */ - packet = stream_dup (s); - stream_free (s); - /* Add packet to the peer. */ - bgp_packet_add (peer, packet); + bgp_packet_add (peer, s); BGP_WRITE_ON (peer->t_write, bgp_write, peer->fd); } @@ -769,7 +761,6 @@ bgp_capability_send (struct peer *peer, afi_t afi, safi_t safi, int capability_code, int action) { struct stream *s; - struct stream *packet; /* Adjust safi code. */ if (safi == SAFI_MPLS_VPN) @@ -799,12 +790,8 @@ bgp_capability_send (struct peer *peer, afi_t afi, safi_t safi, /* Set packet size. */ (void)bgp_packet_set_size (s); - /* Make real packet. */ - packet = stream_dup (s); - stream_free (s); - /* Add packet to the peer. */ - bgp_packet_add (peer, packet); + bgp_packet_add (peer, s); BGP_WRITE_ON (peer->t_write, bgp_write, peer->fd); } diff --git a/bgpd/bgp_updgrp_packet.c b/bgpd/bgp_updgrp_packet.c index 979a823f17..43aea264eb 100644 --- a/bgpd/bgp_updgrp_packet.c +++ b/bgpd/bgp_updgrp_packet.c @@ -944,7 +944,6 @@ subgroup_default_update_packet (struct update_subgroup *subgrp, struct attr *attr, struct peer *from) { struct stream *s; - struct stream *packet; struct peer *peer; struct prefix p; unsigned long pos; @@ -1010,9 +1009,7 @@ subgroup_default_update_packet (struct update_subgroup *subgrp, /* Set size. */ bgp_packet_set_size (s); - packet = stream_dup (s); - stream_free (s); - (void) bpacket_queue_add (SUBGRP_PKTQ (subgrp), packet, &vecarr); + (void) bpacket_queue_add (SUBGRP_PKTQ (subgrp), s, &vecarr); subgroup_trigger_write(subgrp); } @@ -1021,7 +1018,6 @@ subgroup_default_withdraw_packet (struct update_subgroup *subgrp) { struct peer *peer; struct stream *s; - struct stream *packet; struct prefix p; unsigned long attrlen_pos = 0; unsigned long cp; @@ -1102,10 +1098,7 @@ subgroup_default_withdraw_packet (struct update_subgroup *subgrp) bgp_packet_set_size (s); - packet = stream_dup (s); - stream_free (s); - - (void) bpacket_queue_add (SUBGRP_PKTQ (subgrp), packet, NULL); + (void) bpacket_queue_add (SUBGRP_PKTQ (subgrp), s, NULL); subgroup_trigger_write(subgrp); }