Next hop calculation improved. (I ignored stub networks advertised by my

neighbors.
This commit is contained in:
Ondrej Filip 2000-05-08 22:03:29 +00:00
parent 158b99c912
commit b57a45b81a

View file

@ -29,6 +29,7 @@ ospf_rt_spfa(struct ospf_area *oa)
bird_clock_t delta; bird_clock_t delta;
int age=0,flush=0; int age=0,flush=0;
struct proto *p=&oa->po->proto; struct proto *p=&oa->po->proto;
struct proto_ospf *po=oa->po;
ip_addr ip; ip_addr ip;
struct fib_iterator fit; struct fib_iterator fit;
struct ospf_lsa_net *ln; struct ospf_lsa_net *ln;
@ -45,6 +46,7 @@ ospf_rt_spfa(struct ospf_area *oa)
{ {
en->color=OUTSPF; en->color=OUTSPF;
en->dist=LSINFINITY; en->dist=LSINFINITY;
en->nhi=NULL;
if(age) ospf_age(en,delta,flush,oa); if(age) ospf_age(en,delta,flush,oa);
} }
@ -184,7 +186,22 @@ again:
else else
{ {
/* Update routing table */ /* Update routing table */
if(nf->en->nhi!=NULL) if(nf->en->nhi==NULL)
{
struct top_hash_entry *en=nf->en;
struct ospf_neighbor *neigh;
neighbor *nn;
if((neigh=find_neigh_noifa(po,en->lsa.rt))==NULL)
{
goto skip;
}
nn=neigh_find(p,&neigh->ip,0);
DBG(" Next hop calculated: %I\n", nn->addr);
en->nh=nn->addr;
en->nhi=nn->iface;
}
{ {
net *ne; net *ne;
rta a0; rta a0;
@ -219,6 +236,7 @@ again:
} }
} }
skip:
FIB_ITERATE_END(nftmp); FIB_ITERATE_END(nftmp);
} }