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>
diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c
index 9749782..b63ac4c 100644
--- a/bgpd/bgp_attr.c
+++ b/bgpd/bgp_attr.c
@@ -657,6 +657,7 @@
struct attr *attr = *pattr;
struct attr *ret;
struct attr tmp;
+ struct attr_extra tmp_extra;
/* Decrement attribute reference. */
attr->refcnt--;
@@ -665,7 +666,7 @@
if (attr->extra)
{
- tmp.extra = bgp_attr_extra_new ();
+ tmp.extra = &tmp_extra;
memcpy (tmp.extra, attr->extra, sizeof (struct attr_extra));
}
@@ -680,7 +681,6 @@
}
bgp_attr_unintern_sub (&tmp);
- bgp_attr_extra_free (&tmp);
}
void