[ipv6] Rework option handling and implement IPv6 fragment reassembly
authorMatthew Iselin <matthew@theiselins.net>
Thu, 21 Jul 2011 01:13:37 +0000 (11:13 +1000)
committerMarty Connor <mdc@etherboot.org>
Tue, 26 Jul 2011 01:16:22 +0000 (21:16 -0400)
commit93833cb13069bbee8ef89ac0508d9fe278541eea
tree6555503adf973a8dc981da338db42758acf33b4d
parent652df8a6ec19914ab1e184763cfacccefdcfb3ee
[ipv6] Rework option handling and implement IPv6 fragment reassembly

gPXE will now traverse the list of extension headers in an IPv6
packet, rather than simply using the "Next Header" field of the IPv6
header. There are a lot of options that we can simply ignore for now
in gPXE, but they are ready for implementation.

The definitions of the extension header identifiers has been fixed to
use the correct values as well.

IP6 fragment reassembly is also implemented, with an adjusted
mechanism for checksum calculation to ensure the entire packet is
checksummed properly.  The reassembly of fragments is essentially a
direct port from IPv4, with minor changes.

Signed-off-by: Matthew Iselin <matthew@theiselins.net>
Signed-off-by: Marty Connor <mdc@etherboot.org>
src/include/gpxe/ip6.h
src/net/ipv6.c