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

Mailing List Archive: Quagga: Dev
[PATCH] ospfd: avoid exhausting memory with OSPF vertices (BZ#476)
 

Index | Next | Previous | View Flat


equinox at opensourcerouting

Jul 25, 2012, 9:11 AM


Views: 660
Permalink
[PATCH] ospfd: avoid exhausting memory with OSPF vertices (BZ#476)

This was found in scale testing at OSR; ospfd is adding the same link
over and over again to the SPF tree. This fix prevents the resulting
memory corruption from happening and adds a debug message to track
occurence of this issue and/or confirm a proper fix.

(This version was improved by Scott Feldman over the earlier RFC.)

* ospfd/ospf_spf.c: (ospf_spf_add_parent) loop over existing vertices
and refuse to add duplicates.

Tested-by: Martin Winter <mwinter [at] opensourcerouting>
Signed-off-by: Scott Feldman <sfeldma [at] cumulusnetworks>
Signed-off-by: David Lamparter <equinox [at] opensourcerouting>
---
ospfd/ospf_spf.c | 17 +++++++++++++++--
1 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/ospfd/ospf_spf.c b/ospfd/ospf_spf.c
index d7f9ba2..974875e 100644
--- a/ospfd/ospf_spf.c
+++ b/ospfd/ospf_spf.c
@@ -422,7 +422,8 @@ ospf_spf_add_parent (struct vertex *v, struct vertex *w,
struct vertex_nexthop *newhop,
unsigned int distance)
{
- struct vertex_parent *vp;
+ struct vertex_parent *vp, *wp;
+ struct listnode *node;

/* we must have a newhop, and a distance */
assert (v && w && newhop);
@@ -456,7 +457,19 @@ ospf_spf_add_parent (struct vertex *v, struct vertex *w,
w->distance = distance;
}

- /* new parent is <= existing parents, add it to parent list */
+ /* new parent is <= existing parents, add it to parent list (if nexthop
+ * not on parent list)
+ */
+ for (ALL_LIST_ELEMENTS_RO(w->parents, node, wp))
+ {
+ if (memcmp(newhop, wp->nexthop, sizeof(*newhop)) == 0)
+ {
+ if (IS_DEBUG_OSPF_EVENT)
+ zlog_debug ("%s: ... nexthop already on parent list, skipping add", __func__);
+ return;
+ }
+ }
+
vp = vertex_parent_new (v, ospf_lsa_has_link (w->lsa, v->lsa), newhop);
listnode_add (w->parents, vp);

--
1.7.8.6

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

Subject User Time
[PATCH] ospfd: avoid exhausting memory with OSPF vertices (BZ#476) equinox at opensourcerouting Jul 25, 2012, 9:11 AM
    Re: [PATCH] ospfd: avoid exhausting memory with OSPF vertices (BZ#476) paul at jakma Jul 25, 2012, 10:44 AM
    Re: [PATCH] ospfd: avoid exhausting memory with OSPF vertices (BZ#476) paul at jakma Jul 25, 2012, 10:56 AM
    Re: [PATCH] ospfd: avoid exhausting memory with OSPF vertices (BZ#476) sfeldma at cumulusnetworks Jul 25, 2012, 11:13 AM
    Re: [PATCH] ospfd: avoid exhausting memory with OSPF vertices (BZ#476) paul at jakma Jul 25, 2012, 12:52 PM
    Re: [PATCH] ospfd: avoid exhausting memory with OSPF vertices (BZ#476) sfeldma at cumulusnetworks Jul 25, 2012, 1:03 PM
    Re: [PATCH] ospfd: avoid exhausting memory with OSPF vertices (BZ#476) paul at jakma Jul 25, 2012, 1:14 PM

  Index | Next | Previous | View Flat
 
 


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