Do not stop lsrr_timer in FULL state. Use it for retransmition.

This commit is contained in:
Ondrej Filip 2000-05-08 23:46:31 +00:00
parent ed4a53c6a5
commit 43e75f38e7
3 changed files with 7 additions and 3 deletions

View file

@ -69,7 +69,11 @@ lsrr_timer_hook(timer *timer)
p=(struct proto *)(ifa->proto); p=(struct proto *)(ifa->proto);
debug("%s: LSRR timer fired on interface %s for neigh: %I.\n", debug("%s: LSRR timer fired on interface %s for neigh: %I.\n",
p->name, ifa->iface->name, n->rid); p->name, ifa->iface->name, n->rid);
ospf_lsreq_tx(n); if(n->state<NEIGHBOR_FULL) ospf_lsreq_tx(n);
else
{
int i; /* FIXME Retransmit lsupd again */
}
} }
void void

View file

@ -45,7 +45,6 @@ neigh_chstate(struct ospf_neighbor *n, u8 state)
ifa->fadj++; ifa->fadj++;
originate_rt_lsa(n->ifa->oa,n->ifa->oa->po); originate_rt_lsa(n->ifa->oa,n->ifa->oa->po);
originate_net_lsa(ifa,ifa->oa->po); originate_net_lsa(ifa,ifa->oa->po);
tm_stop(n->lsrr_timer);
} }
if(oldstate>=NEIGHBOR_EXSTART && state<NEIGHBOR_EXSTART) if(oldstate>=NEIGHBOR_EXSTART && state<NEIGHBOR_EXSTART)
{ {
@ -65,6 +64,7 @@ neigh_chstate(struct ospf_neighbor *n, u8 state)
n->myimms.bit.i=1; n->myimms.bit.i=1;
tm_start(n->rxmt_timer,1); /* Or some other number ? */ tm_start(n->rxmt_timer,1); /* Or some other number ? */
} }
if(state<NEIGHBOR_EXCHANGE) tm_stop(n->lsrr_timer);
} }
} }

View file

@ -294,7 +294,7 @@ struct ospf_neighbor
struct top_graph *lsrth; struct top_graph *lsrth;
void *ldbdes; /* Last database description packet */ void *ldbdes; /* Last database description packet */
timer *rxmt_timer; /* RXMT timer */ timer *rxmt_timer; /* RXMT timer */
timer *lsrr_timer; /* Link state requiest retransmition timer */ timer *lsrr_timer; /* Link state request retransmition timer */
list ackl; list ackl;
timer *ackd_timer; /* Delayed ack timer */ timer *ackd_timer; /* Delayed ack timer */
}; };