struct proto_ospf *po=(struct proto_ospf *)p;
struct top_hash_entry *en,*nxt;
int flush=can_flush_lsa(oa);
- bird_clock_t delta=now-oa->lage;
WALK_SLIST_DELSAFE(en,nxt,oa->lsal)
{
flood_lsa(NULL,NULL,&en->lsa,po,NULL,oa,1);
continue;
}
- if((en->lsa.age+=delta)>=LSA_MAXAGE)
+ if((en->lsa.age=(en->ini_age+(now-en->inst_t)))>=LSA_MAXAGE)
{
if(flush)
{
else en->lsa.age=LSA_MAXAGE;
}
}
- oa->lage=now;
}
void
if(en->lsa_body!=NULL) mb_free(en->lsa_body);
en->lsa_body=body;
memcpy(&en->lsa,lsa,sizeof(struct ospf_lsa_header));
+ en->ini_age=en->lsa.age;
if(change)
{
oa->disp_timer->randomize=0;
oa->disp_timer->hook=area_disp;
oa->disp_timer->recurrent=oa->tick;
- oa->lage=now;
tm_start(oa->disp_timer,oa->tick);
oa->calcrt=0;
oa->origrt=0;
node n;
u32 areaid;
timer *disp_timer; /* Area's dispatcher hear beat */
- bird_clock_t lage; /* Time of last aging */
int calcrt; /* Routing table calculation scheduled? */
int origrt; /* Rt lsa origination scheduled? */
struct top_graph *gr; /* LSA graph */