summaryrefslogtreecommitdiffstats
path: root/proto/ospf
diff options
context:
space:
mode:
authorOndrej Filip <feela@network.cz>2004-06-06 19:03:56 +0200
committerOndrej Filip <feela@network.cz>2004-06-06 19:03:56 +0200
commitcd09226078471cf9a2db4e755fbd5f6f137137c9 (patch)
treefd9a702b53b34d0fec97f86fca9bdd275e6ef3b6 /proto/ospf
parent933bfdde2a0bc4e31e74a3f9e03174b0287c03fb (diff)
downloadbird-cd09226078471cf9a2db4e755fbd5f6f137137c9.tar
bird-cd09226078471cf9a2db4e755fbd5f6f137137c9.zip
Be sure, that ospf_area is aged before routing table calculation.
Diffstat (limited to 'proto/ospf')
-rw-r--r--proto/ospf/lsalib.c2
-rw-r--r--proto/ospf/rt.c3
-rw-r--r--proto/ospf/topology.c1
3 files changed, 5 insertions, 1 deletions
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;