bgpd: use on stack struct attr_extra in bgp_attr_unintern()

Reduce memory heap fragmentation and pressure on the memory allocator.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
Jorge Boncompte [DTI2] 2012-05-07 16:53:01 +00:00 committed by David Lamparter
parent 1a2fd7078f
commit b9f1dca10f

View File

@ -657,6 +657,7 @@ bgp_attr_unintern (struct attr **pattr)
struct attr *attr = *pattr; struct attr *attr = *pattr;
struct attr *ret; struct attr *ret;
struct attr tmp; struct attr tmp;
struct attr_extra tmp_extra;
/* Decrement attribute reference. */ /* Decrement attribute reference. */
attr->refcnt--; attr->refcnt--;
@ -665,7 +666,7 @@ bgp_attr_unintern (struct attr **pattr)
if (attr->extra) if (attr->extra)
{ {
tmp.extra = bgp_attr_extra_new (); tmp.extra = &tmp_extra;
memcpy (tmp.extra, attr->extra, sizeof (struct attr_extra)); memcpy (tmp.extra, attr->extra, sizeof (struct attr_extra));
} }
@ -680,7 +681,6 @@ bgp_attr_unintern (struct attr **pattr)
} }
bgp_attr_unintern_sub (&tmp); bgp_attr_unintern_sub (&tmp);
bgp_attr_extra_free (&tmp);
} }
void void