summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew J. Schorr <ajschorr@alumni.princeton.edu>2006-06-30 03:21:05 +0000
committerAndrew J. Schorr <ajschorr@alumni.princeton.edu>2006-06-30 03:21:05 +0000
commit7694787c190e3737d6fc3e15b7e098ce76ed61a2 (patch)
tree84b1815e7a268b8babd2cac4b37edf6ac98dc221
parentd7e60dd7a9f0213aaa82d256a78ab74887946e53 (diff)
[ospfd] Avoid getting NSM stuck in ExStart by using local view of DR/BDR
2006-06-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * ospf_nsm.c: (nsm_twoway_received) When deciding whether to change from state Init to ExStart, the test for whether the neighboring router is DR or BDR should be against the local router's notion of DR/BDR, not the neighbor's view.
-rw-r--r--ospfd/ChangeLog7
-rw-r--r--ospfd/ospf_nsm.c4
2 files changed, 9 insertions, 2 deletions
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index f045c1d1..3975b07a 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,10 @@
+2006-06-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * ospf_nsm.c: (nsm_twoway_received) When deciding whether to
+ change from state Init to ExStart, the test for whether the
+ neighboring router is DR or BDR should be against the
+ local router's notion of DR/BDR, not the neighbor's view.
+
2006-06-28 Erik Muller <erikm@internap.com>
* ospfd.h: Define 2 new struct ospf config flags:
diff --git a/ospfd/ospf_nsm.c b/ospfd/ospf_nsm.c
index 878ab567..df9a5251 100644
--- a/ospfd/ospf_nsm.c
+++ b/ospfd/ospf_nsm.c
@@ -203,8 +203,8 @@ nsm_twoway_received (struct ospf_neighbor *nbr)
next_state = NSM_ExStart;
/* Neighboring Router is the DRouter or the BDRouter. */
- if (IPV4_ADDR_SAME (&nbr->address.u.prefix4, &nbr->d_router) ||
- IPV4_ADDR_SAME (&nbr->address.u.prefix4, &nbr->bd_router))
+ if (IPV4_ADDR_SAME (&nbr->address.u.prefix4, &DR(oi)) ||
+ IPV4_ADDR_SAME (&nbr->address.u.prefix4, &BDR(oi)))
next_state = NSM_ExStart;
return next_state;