summaryrefslogtreecommitdiffstats
path: root/proto/ospf/rt.c
diff options
context:
space:
mode:
authorOndrej Filip <feela@network.cz>2000-09-04 00:18:40 +0200
committerOndrej Filip <feela@network.cz>2000-09-04 00:18:40 +0200
commitfdb19982020abeddf2d9eb73efae92ae2cc58d93 (patch)
tree4c837c9252bb1d3324c0a4005cd600d3081c7810 /proto/ospf/rt.c
parentf02e4258b9bb7f823ddfbfb88284c868502b1433 (diff)
downloadbird-fdb19982020abeddf2d9eb73efae92ae2cc58d93.tar
bird-fdb19982020abeddf2d9eb73efae92ae2cc58d93.zip
Serious bug in ext lsa origination found. Going for 1.0.4.
Diffstat (limited to 'proto/ospf/rt.c')
-rw-r--r--proto/ospf/rt.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/proto/ospf/rt.c b/proto/ospf/rt.c
index a7b541d..39e84bd 100644
--- a/proto/ospf/rt.c
+++ b/proto/ospf/rt.c
@@ -96,7 +96,7 @@ ospf_rt_spfa(struct ospf_area *oa)
{
case LSA_T_RT:
rt=(struct ospf_lsa_rt *)act->lsa_body;
- if((rt->VEB)&(1>>LSA_RT_V)) oa->trcap=1;
+ if(rt->veb.bit.v) oa->trcap=1;
rr=(struct ospf_lsa_rt_link *)(rt+1);
DBG(" Number of links: %u\n",rt->links);
for(i=0;i<rt->links;i++)
@@ -269,6 +269,7 @@ ospf_ext_spfa(struct proto_ospf *po) /* FIXME looking into inter-area */
struct proto *p=&po->proto;
struct ospf_lsa_ext *le;
struct ospf_lsa_ext_tos *lt;
+ struct ospf_lsa_rt *rt;
int mlen;
ip_addr ip,nnh;
struct iface *nnhi=NULL;
@@ -347,7 +348,8 @@ ospf_ext_spfa(struct proto_ospf *po) /* FIXME looking into inter-area */
}
}
}
- if((absr==NULL)||(absr->dist==LSINFINITY))
+ rt=(struct ospf_lsa_rt *)absr->lsa_body;
+ if((absr==NULL)||(absr->dist==LSINFINITY)||(rt->veb.bit.e==0))
{
DBG("ASBR is null or its dist=INF\n");
continue;