]> git.puffer.fish Git - mirror/frr.git/commit
ospfd: For an ABR, ensure the right LSID is MaxAge'd
authorPradosh Mohapatra <pmohapat@cumulusnetworks.com>
Mon, 28 Apr 2014 10:58:06 +0000 (10:58 +0000)
committerDavid Lamparter <equinox@opensourcerouting.org>
Wed, 14 May 2014 14:46:41 +0000 (16:46 +0200)
commitb4b359a265f1b6272b4eb17c11e9c6ef9817f34b
treef6721202e8ee9f44ccdc54a61e4b74c6552912c0
parent8afee5c1729e56f74d27ceb1766bea9f943f060c
ospfd: For an ABR, ensure the right LSID is MaxAge'd

PROBLEM:

Accurate garbage collection of maxage LSAs. The global OSPF structure has
a maxage_lsa tree - the key to the tree is <ls-id, adv-router> tuple. Suppose
the ABR has multiple areas and has originated some intra-area LSAs. The
key for all those LSAs is the same. The code then ends up in a state where
all but the first LSA do not get cleaned up from the areas' LSDB. A subsequent
event would readvertise those LSAs.

PATCH:

Since the LSA is going to stick around till it actually gets cleaned up by
the maxage_walker, make the LSA pointer as the key. Each distinct LSA that
gets maxage'd then gets added to the tree and will get cleaned up correctly.

Signed-off-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com>
[CF: Use CHAR_BIT; use uintptr_t; use sizeof(field) instead of sizeof(type)]
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
[DL: this must remain a temporary fix! needs to be redone after 0.99.23]
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
lib/prefix.h
ospfd/ospf_lsa.c