[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)
committerMatthew Iselin <matthew@theiselins.net>
Mon, 25 Jul 2011 10:57:22 +0000 (20:57 +1000)
commit0f10d77aff001a033b7437113baa53501ca5fe5e
tree1359cc2a4815434f0911a342d7c12f6184d873c9
parent6ab19ac3519ef1c9f4f735c07451fadddd147aac
[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.
src/include/gpxe/ip6.h
src/net/ipv6.c