Next hop calculation improved. (I ignored stub networks advertised by my
neighbors.
This commit is contained in:
parent
158b99c912
commit
b57a45b81a
1 changed files with 19 additions and 1 deletions
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue