]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Remove extra stream duplications
authorDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 18 Aug 2015 12:41:58 +0000 (05:41 -0700)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Tue, 18 Aug 2015 12:41:58 +0000 (05:41 -0700)
Ticket: CM-7104
Reviewed by: CCR-3347
Tested:  See bug

Remove the extra stream duplications in packet handling for bgpd

bgpd/bgp_packet.c
bgpd/bgp_updgrp_packet.c

index 307fb6c0a668af5382c5eca6700809f0e1c9d80a..ddc03716e35938b91d4acb2c781d5063c17cc5f5 100644 (file)
@@ -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);
 }
index 979a823f17744479a182a1bbb60f2dcad28becbb..43aea264eb4cbc5900d09212b297557cf7090ef0 100644 (file)
@@ -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);
 }