diff options
Diffstat (limited to 'proto')
-rw-r--r-- | proto/ospf/lsreq.c | 6 | ||||
-rw-r--r-- | proto/ospf/neighbor.c | 2 | ||||
-rw-r--r-- | proto/ospf/ospf.h | 2 |
3 files changed, 7 insertions, 3 deletions
diff --git a/proto/ospf/lsreq.c b/proto/ospf/lsreq.c index 3a682120..580fd1db 100644 --- a/proto/ospf/lsreq.c +++ b/proto/ospf/lsreq.c @@ -69,7 +69,11 @@ lsrr_timer_hook(timer *timer) p=(struct proto *)(ifa->proto); debug("%s: LSRR timer fired on interface %s for neigh: %I.\n", 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 diff --git a/proto/ospf/neighbor.c b/proto/ospf/neighbor.c index 56e8aabe..0d479df3 100644 --- a/proto/ospf/neighbor.c +++ b/proto/ospf/neighbor.c @@ -45,7 +45,6 @@ neigh_chstate(struct ospf_neighbor *n, u8 state) ifa->fadj++; originate_rt_lsa(n->ifa->oa,n->ifa->oa->po); originate_net_lsa(ifa,ifa->oa->po); - tm_stop(n->lsrr_timer); } if(oldstate>=NEIGHBOR_EXSTART && state<NEIGHBOR_EXSTART) { @@ -65,6 +64,7 @@ neigh_chstate(struct ospf_neighbor *n, u8 state) n->myimms.bit.i=1; tm_start(n->rxmt_timer,1); /* Or some other number ? */ } + if(state<NEIGHBOR_EXCHANGE) tm_stop(n->lsrr_timer); } } diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h index b1d14bd4..e761bdf1 100644 --- a/proto/ospf/ospf.h +++ b/proto/ospf/ospf.h @@ -294,7 +294,7 @@ struct ospf_neighbor struct top_graph *lsrth; void *ldbdes; /* Last database description packet */ timer *rxmt_timer; /* RXMT timer */ - timer *lsrr_timer; /* Link state requiest retransmition timer */ + timer *lsrr_timer; /* Link state request retransmition timer */ list ackl; timer *ackd_timer; /* Delayed ack timer */ }; |