summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDinesh Dutt <ddutt@cumulusnetworks.com>2013-08-25 03:03:15 +0000
committerDavid Lamparter <equinox@opensourcerouting.org>2013-11-07 18:15:43 -0800
commit931b1b8c9a612665391ed43653c970fcb38bbbf0 (patch)
tree570f2aca4df8ef6a394925c5a1b7c9e772d3d1a1
parent7a10a359e9740710c1e39c8be0f761f506795480 (diff)
downloadquagga-931b1b8c9a612665391ed43653c970fcb38bbbf0.tar.bz2
quagga-931b1b8c9a612665391ed43653c970fcb38bbbf0.tar.xz
ospf6d: increment dbdesc seqnum on SeqNumberMismatch/BadLsReq event
As per RFC 2328, section 10.3, if the neighbor state machine reaches SeqNumberMismatch state when the NSM is in state Exchange or greater, "router increments the DD sequence number in the neighbor data structure, declares itself master (sets the master/slave bit to master), and starts sending Database Description Packets, with the initialize (I), more (M) and master (MS) bits set.". The existing code doesn't increment the DD SeqNum. This patch fixes that. Signed-off-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
-rw-r--r--ospf6d/ospf6_neighbor.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ospf6d/ospf6_neighbor.c b/ospf6d/ospf6_neighbor.c
index 84f0b002..b7d2e40d 100644
--- a/ospf6d/ospf6_neighbor.c
+++ b/ospf6d/ospf6_neighbor.c
@@ -484,6 +484,8 @@ seqnumber_mismatch (struct thread *thread)
}
THREAD_OFF (on->thread_send_dbdesc);
+ on->dbdesc_seqnum++; /* Incr seqnum as per RFC2328, sec 10.3 */
+
on->thread_send_dbdesc =
thread_add_event (master, ospf6_dbdesc_send, on, 0);
@@ -520,6 +522,8 @@ bad_lsreq (struct thread *thread)
}
THREAD_OFF (on->thread_send_dbdesc);
+ on->dbdesc_seqnum++; /* Incr seqnum as per RFC2328, sec 10.3 */
+
on->thread_send_dbdesc =
thread_add_event (master, ospf6_dbdesc_send, on, 0);