IPv6: The Next Generation Internet Protocol

The goal is to provide specifications to execute changes to the sockets API to support IPv6. These changes are for TCP and UDP based applications. There is a large degree of portability regarding current applications using IPv4 raw sockets. However, this is primarily due to the fact that IPv4 implementations began from a common Berkeley source code that permits programs such as Ping and Traceroute to compile with little effort on many hosts that support the sockets API. In using IPv6, however, there is no common source code base that implementors can use. Therefore, the prospect for divergence at this level between different implementations is extensive. In order to avert a total lack of portability amongst applications that use raw IPv6 sockets, a degree standardization is required.
Several advanced applications inspect fields in the IPv6 header and set and look at fields in the various ICMPv6 headers. Common structure definitions for these headers are necessary, together with common constant definitions for the structure participants. At the time when an include file is specified, that include file is permitted to incorporate other files that do the actual definition.
IPv6 raw sockets are utilized to bypass the transport layer TCP or UDP. When using IPv4, raw sockets are employed to access ICMPv4, IGMPv4, as well as to read and write IPv4 datagrams which have a protocol field that the kernel does not process. This is best illustrated through a routing daemon for OSPF, due to...