Do not stop lsrr_timer in FULL state. Use it for retransmition.
This commit is contained in:
parent
ed4a53c6a5
commit
43e75f38e7
3 changed files with 7 additions and 3 deletions
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 */
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue