diff options
author | Dinesh Dutt <ddutt@cumulusnetworks.com> | 2013-08-24 08:00:44 +0000 |
---|---|---|
committer | David Lamparter <equinox@opensourcerouting.org> | 2013-11-07 18:15:43 -0800 |
commit | 3b220289a4d0da4539d965ca71e9479d68c87b11 (patch) | |
tree | 232f6c56c5c12cf292937f7b21b002ef63b8c7e3 /ospf6d/ospf6_lsdb.c | |
parent | f41b4a021659dd48d62b1a7aac4b28e3663dbdaa (diff) | |
download | quagga-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.c | 13 |
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); |