summaryrefslogtreecommitdiffstats
path: root/proto/ospf/neighbor.c
diff options
context:
space:
mode:
authorOndrej Filip <feela@network.cz>2004-06-11 11:34:48 +0200
committerOndrej Filip <feela@network.cz>2004-06-11 11:34:48 +0200
commitb1f7229ad7d0b10fcc1fde6645c8b8ebbb3644a6 (patch)
tree0d10f221ce6aa40c1ed10752cb55e793e21b28a6 /proto/ospf/neighbor.c
parent9a4b87905d727a518af04c16b8d7b603404098b7 (diff)
downloadbird-b1f7229ad7d0b10fcc1fde6645c8b8ebbb3644a6.tar
bird-b1f7229ad7d0b10fcc1fde6645c8b8ebbb3644a6.zip
Better adjacency building, some minor bugfixes.
Diffstat (limited to 'proto/ospf/neighbor.c')
-rw-r--r--proto/ospf/neighbor.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/proto/ospf/neighbor.c b/proto/ospf/neighbor.c
index 4f69638..5abaf48 100644
--- a/proto/ospf/neighbor.c
+++ b/proto/ospf/neighbor.c
@@ -605,14 +605,24 @@ rxmt_timer_hook(timer * timer)
DBG("%s: RXMT timer fired on interface %s for neigh: %I.\n",
p->name, ifa->iface->name, n->ip);
- if (n->state < NEIGHBOR_LOADING)
+
+ if(n->state < NEIGHBOR_EXSTART) return;
+
+ if (n->state == NEIGHBOR_EXSTART)
+ {
ospf_dbdes_send(n);
+ return;
+ }
+
+ if ((n->state == NEIGHBOR_EXCHANGE) && n->myimms.bit.ms) /* I'm master */
+ ospf_dbdes_send(n);
+
- if (n->state < NEIGHBOR_FULL)
- ospf_lsreq_send(n);
+ if (n->state < NEIGHBOR_FULL)
+ ospf_lsreq_send(n); /* EXCHANGE or LOADING */
else
{
- if (!EMPTY_SLIST(n->lsrtl))
+ if (!EMPTY_SLIST(n->lsrtl)) /* FULL */
{
list uplist;
slab *upslab;