]> git.puffer.fish Git - mirror/frr.git/commit
ospf6d: review LSA sequence number comparison
authorOndrej Zajicek <santiago@crfreenet.org>
Mon, 7 Dec 2009 09:33:20 +0000 (12:33 +0300)
committerDenis Ovsienko <infrastation@yandex.ru>
Mon, 7 Dec 2009 09:33:20 +0000 (12:33 +0300)
commit64bf3ab7291cc5c39c5add0dc1a7de447914248b
treed5ae874814083d89815e6c521b42d0f3eaaec69c
parent2eb445e1c22e36d07e2dbfd302ff438c4190b9fe
ospf6d: review LSA sequence number comparison

It seems that there is a bug in ospf6d in ospf6_lsa_compare(): If LSA A
has sequence number smaller than 0x80000000 and LSA B has sequence
number larger than 0x80000000, ospf6_lsa_compare() returns that B is
more recent than A, although RFC says that sequence numbers should be
compared as signed numbers (0x8000001 smallest and 0x7FFFFFFF largest).

In ospfd, the function ospf_lsa_more_recent() has it right.

The problem appears when Quagga is used together with OSPFv3 in
development version of BIRD daemon ( http://bird.network.cz/ ),
which creates LSAs with maximum sequence number (0x7FFFFFFF)
as a part of flushing/premature aging LSA from OSPF area.

Because both daemons has different idea of which LSA instance
is more recent, it would lead to LSA storm.
ospf6d/ospf6_lsa.c