Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Quagga: Dev
[PATCH 13/25] bgpd: use on stack struct attr_extra in bgp_update_receive()
 

Index | Next | Previous | View Flat


jorge at dti2

May 7, 2012, 10:53 AM


Views: 200
Permalink
[PATCH 13/25] bgpd: use on stack struct attr_extra in bgp_update_receive()

From: "Jorge Boncompte [DTI2]" <jorge [at] dti2>

Reduce memory heap fragmentation and pressure on the memory allocator.

Signed-off-by: Jorge Boncompte [DTI2] <jorge [at] dti2>
---
bgpd/bgp_packet.c | 11 ++++-------
1 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
index 95ed804..cfa0b57 100644
--- a/bgpd/bgp_packet.c
+++ b/bgpd/bgp_packet.c
@@ -1519,6 +1519,7 @@ bgp_update_receive (struct peer *peer, bgp_size_t size)
u_char *end;
struct stream *s;
struct attr attr;
+ struct attr_extra extra;
bgp_size_t attribute_len;
bgp_size_t update_len;
bgp_size_t withdraw_len;
@@ -1538,10 +1539,12 @@ bgp_update_receive (struct peer *peer, bgp_size_t size)

/* Set initial values. */
memset (&attr, 0, sizeof (struct attr));
+ memset (&extra, 0, sizeof (struct attr_extra));
memset (&update, 0, sizeof (struct bgp_nlri));
memset (&withdraw, 0, sizeof (struct bgp_nlri));
memset (&mp_update, 0, sizeof (struct bgp_nlri));
memset (&mp_withdraw, 0, sizeof (struct bgp_nlri));
+ attr.extra = &extra;

s = peer->ibuf;
end = stream_pnt (s) + size;
@@ -1669,8 +1672,6 @@ bgp_update_receive (struct peer *peer, bgp_size_t size)
if (ret < 0)
{
bgp_attr_unintern_sub (&attr);
- if (attr.extra)
- bgp_attr_extra_free (&attr);
return -1;
}

@@ -1697,8 +1698,6 @@ bgp_update_receive (struct peer *peer, bgp_size_t size)
if (ret < 0)
{
bgp_attr_unintern_sub (&attr);
- if (attr.extra)
- bgp_attr_extra_free (&attr);
return -1;
}

@@ -1845,9 +1844,7 @@ bgp_update_receive (struct peer *peer, bgp_size_t size)
/* Everything is done. We unintern temporary structures which
interned in bgp_attr_parse(). */
bgp_attr_unintern_sub (&attr);
- if (attr.extra)
- bgp_attr_extra_free (&attr);
-
+
/* If peering is stopped due to some reason, do not generate BGP
event. */
if (peer->status != Established)
--
1.7.8.3


_______________________________________________
Quagga-dev mailing list
Quagga-dev [at] lists
http://lists.quagga.net/mailman/listinfo/quagga-dev

Subject User Time
[PATCH 13/25] bgpd: use on stack struct attr_extra in bgp_update_receive() jorge at dti2 May 7, 2012, 10:53 AM

  Index | Next | Previous | View Flat
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.