summaryrefslogtreecommitdiffstats
path: root/proto/ospf/rt.c
diff options
context:
space:
mode:
Diffstat (limited to 'proto/ospf/rt.c')
-rw-r--r--proto/ospf/rt.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/proto/ospf/rt.c b/proto/ospf/rt.c
index d9ec0fd..5a6aa37 100644
--- a/proto/ospf/rt.c
+++ b/proto/ospf/rt.c
@@ -26,17 +26,21 @@ ospf_rt_spfa(struct ospf_area *oa, struct proto *p)
struct ospf_lsa_rt_link *rtl,*rr;
struct fib fib;
struct stub_fib *sf;
+ bird_clock_t delta;
+ int age=0,flush=0;
- /*
- * First of all, mark all vertices as they are not in SPF
- * Maybe I can join this work with Aging of structure
- * FIXME look at it
- */
+ /* FIXME if I'm not in LOADING or EXCHANGE set flush=1 */
+ if((delta=now-oa->lage)>=AGINGDELTA)
+ {
+ oa->lage=now;
+ age=1;
+ }
- WALK_SLIST(SNODE en, oa->lsal)
+ WALK_SLIST_DELSAFE(SNODE en, nx, oa->lsal) /* FIXME Make it DELSAFE */
{
en->color=OUTSPF;
en->dist=LSINFINITY;
+ if(age) ospf_age(en,delta,flush,p);
}
init_list(&oa->cand); /* Empty list of candidates */