diff options
Diffstat (limited to 'proto/ospf/neighbor.c')
-rw-r--r-- | proto/ospf/neighbor.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/proto/ospf/neighbor.c b/proto/ospf/neighbor.c index 7ce682b0..c143b130 100644 --- a/proto/ospf/neighbor.c +++ b/proto/ospf/neighbor.c @@ -176,8 +176,8 @@ ospf_neigh_chstate(struct ospf_neighbor *n, u8 state) if (state == NEIGHBOR_EXSTART) { - /* First time adjacency */ - if (n->adj == 0) + /* First time adjacency attempt */ + if (old_state < NEIGHBOR_EXSTART) n->dds = random_u32(); n->dds++; @@ -608,6 +608,12 @@ dbdes_timer_hook(timer *t) if ((n->state == NEIGHBOR_EXCHANGE) && (n->myimms & DBDES_MS)) ospf_rxmt_dbdes(p, n); + + if ((n->state > NEIGHBOR_LOADING) && !(n->myimms & DBDES_MS)) + { + ospf_reset_ldd(p, n); + tm_stop(n->dbdes_timer); + } } static void |