summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--proto/ospf/lsreq.c6
-rw-r--r--proto/ospf/neighbor.c2
-rw-r--r--proto/ospf/ospf.h2
3 files changed, 7 insertions, 3 deletions
diff --git a/proto/ospf/lsreq.c b/proto/ospf/lsreq.c
index 3a68212..580fd1d 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 56e8aab..0d479df 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 b1d14bd..e761bdf 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 */
};