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.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/proto/ospf/rt.c b/proto/ospf/rt.c
index d685961..9e63d2c 100644
--- a/proto/ospf/rt.c
+++ b/proto/ospf/rt.c
@@ -681,6 +681,10 @@ ospf_rt_sum(struct ospf_area *oa)
if (!(abr->n.options & ORTA_ABR))
continue;
+ /* This check is not mentioned in RFC 2328 */
+ if (abr->n.type != RTS_OSPF)
+ continue;
+
/* 16.2. (5) */
orta nf = {
.type = RTS_OSPF_IA,
@@ -966,6 +970,9 @@ ospf_ext_spf(struct proto_ospf *po)
nfa.metric2 = LSINFINITY;
}
+ /* Mark the LSA as reachable */
+ en->color = INSPF;
+
/* Whether the route is preferred in route selection according to 16.4.1 */
nfa.options = epath_preferred(&nf2->n) ? ORTA_PREF : 0;
@@ -1046,8 +1053,6 @@ ospf_rt_spf(struct proto_ospf *po)
if (po->areano == 0) return;
- po->cleanup = 1;
-
OSPF_TRACE(D_EVENTS, "Starting routing table calculation");
/* 16. (1) - Invalidate old routing table */