From cd09226078471cf9a2db4e755fbd5f6f137137c9 Mon Sep 17 00:00:00 2001 From: Ondrej Filip Date: Sun, 6 Jun 2004 17:03:56 +0000 Subject: Be sure, that ospf_area is aged before routing table calculation. --- proto/ospf/lsalib.c | 2 +- proto/ospf/rt.c | 3 +++ proto/ospf/topology.c | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/proto/ospf/lsalib.c b/proto/ospf/lsalib.c index 80649f5..fcf23fc 100644 --- a/proto/ospf/lsalib.c +++ b/proto/ospf/lsalib.c @@ -49,7 +49,7 @@ ospf_age(struct ospf_area *oa) WALK_SLIST_DELSAFE(en, nxt, oa->lsal) { - if (po->calcrt) + if (oa->rt && (oa->rt->dist != LSINFINITY)) { en->color = OUTSPF; en->dist = LSINFINITY; diff --git a/proto/ospf/rt.c b/proto/ospf/rt.c index cbd53f6..78eb802 100644 --- a/proto/ospf/rt.c +++ b/proto/ospf/rt.c @@ -69,6 +69,9 @@ ospf_rt_spfa(struct ospf_area *oa) if (oa->rt == NULL) return; + if (oa->rt->dist != LSINFINITY) + ospf_age(oa); + FIB_WALK(in, nftmp) { nf = (struct infib *) nftmp; diff --git a/proto/ospf/topology.c b/proto/ospf/topology.c index 6a6eb01..75e074a 100644 --- a/proto/ospf/topology.c +++ b/proto/ospf/topology.c @@ -201,6 +201,7 @@ originate_rt_lsa(struct ospf_area *oa) lsasum_calculate(&lsa, body, po); en = lsa_install_new(&lsa, body, oa); oa->rt = en; + en->dist = 0; /* Force area aging */ ospf_lsupd_flood(NULL, NULL, &oa->rt->lsa, NULL, oa, 1); schedule_rtcalc(po); oa->origrt = 0; -- cgit v1.2.3