summaryrefslogtreecommitdiffstats
path: root/ospf6d/ospf6_lsdb.c
diff options
context:
space:
mode:
authorDinesh Dutt <ddutt@cumulusnetworks.com>2013-08-24 08:00:44 +0000
committerDavid Lamparter <equinox@opensourcerouting.org>2013-11-07 18:15:43 -0800
commit3b220289a4d0da4539d965ca71e9479d68c87b11 (patch)
tree232f6c56c5c12cf292937f7b21b002ef63b8c7e3 /ospf6d/ospf6_lsdb.c
parentf41b4a021659dd48d62b1a7aac4b28e3663dbdaa (diff)
downloadquagga-3b220289a4d0da4539d965ca71e9479d68c87b11.tar.bz2
quagga-3b220289a4d0da4539d965ca71e9479d68c87b11.tar.xz
ospf6d: handle seqnum wrapping
Signed-off-by: Shrijeet Mukherjee <shm at cumulusnetworks.com> Reviewed-by: Dinesh G Dutt <ddutt at cumulusnetworks.com> [DL: mechanical adjust to rebase] [DL: adjust to removal of timerwheel code] Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'ospf6d/ospf6_lsdb.c')
-rw-r--r--ospf6d/ospf6_lsdb.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/ospf6d/ospf6_lsdb.c b/ospf6d/ospf6_lsdb.c
index b13ae9b1..5138d1c1 100644
--- a/ospf6d/ospf6_lsdb.c
+++ b/ospf6d/ospf6_lsdb.c
@@ -465,7 +465,18 @@ ospf6_lsdb_maxage_remover (struct ospf6_lsdb *lsdb)
}
if (IS_OSPF6_DEBUG_LSA_TYPE (lsa->header->type))
zlog_debug ("Remove MaxAge %s", lsa->name);
- ospf6_lsdb_remove (lsa, lsdb);
+ if (CHECK_FLAG(lsa->flag, OSPF6_LSA_SEQWRAPPED))
+ {
+ UNSET_FLAG(lsa->flag, OSPF6_LSA_SEQWRAPPED);
+ /*
+ * lsa->header->age = 0;
+ */
+ lsa->header->seqnum = htonl(OSPF_MAX_SEQUENCE_NUMBER + 1);
+ ospf6_lsa_checksum (lsa->header);
+ thread_execute (master, ospf6_lsa_refresh, lsa, 0);
+ } else {
+ ospf6_lsdb_remove (lsa, lsdb);
+ }
}
return (reschedule);