diff options
Diffstat (limited to 'proto/ospf/rt.c')
-rw-r--r-- | proto/ospf/rt.c | 6 |
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; |