1.2.4.6 IPv6 Module
IPv6 is the workhorse protocol of the TCP/IP protocol suite. All TCP, UDP, ICMP, and IGMP data gets transmitted as IP datagrams. IP provides an unreliable, connectionless datagram delivery service.
IPv6 provides a best effort service. When something goes wrong, such as a router temporarily running out of buffers, IPv6 has a simple error handling algorithm: throw away the datagram and try to send an ICMP message back to the source. Any required reliability must be provided by the upper layers (e.g., TCP).
The term connectionless means that IPv6 does not maintain any state information about successive datagrams. Each datagram is handled independently from all other datagrams. This also means that IPv6 datagrams can get delivered out of order. If a source sends two consecutive datagrams (first A, and then B) to the same destination, each is routed independently and can take different routes, with B arriving before A.
Abstraction Model
This module provides software abstraction of the IP module existent in any TCP/IP Stack implementation. It provide raw datagram service to other modules in the stack.
Library Interface
Name | Description |
---|---|
Functions | |
TCPIP_IPV6_HandlerRegister | Registers an IPv6 event handler callback function. |
TCPIP_IPV6_HandlerDeregister | Deregisters an IPv6 event handler callback function. |
TCPIP_IPV6_InterfaceIsReady | Determines if an interface is ready for IPv6 transactions. |
TCPIP_IPV6_PacketFree | Frees a TCP/IP Packet structure from dynamic memory. |
TCPIP_IPV6_PayloadSet | Allocates a segment on the end of a packet segment chain and uses it to address prebuffered data. |
TCPIP_IPV6_DASSourceAddressSelect | Determines the appropriate source address for a given destination address. |
TCPIP_IPV6_DestAddressGet | Gets the destination address for a IPv6 packet. |
TCPIP_IPV6_DestAddressSet | Sets the destination address for a IPv6 packet. |
TCPIP_IPV6_SourceAddressGet | Gets the source address for an IPv6 packet. |
TCPIP_IPV6_SourceAddressSet | Sets the source address for a IPv6 packet. |
TCPIP_IPV6_ArrayPutHelper | Helper function to write data to a packet. |
TCPIP_IPV6_Put | Writes a character of data to a packet. |
TCPIP_IPV6_TxIsPutReady | Determines whether a TX packet can be written to. |
TCPIP_IPV6_TxPacketAllocate | Dynamically allocates a packet for transmitting IP protocol data. |
TCPIP_IPV6_ArrayGet | Reads the next byte of data from the specified MAC. |
TCPIP_IPV6_Flush | Flushes a IP TX packet. |
TCPIP_IPV6_Get | Reads the next byte of data from the specified MAC. |
TCPIP_IPV6_UniqueLocalUnicastAddressAdd | Adds a Unique Local Unicast Address (ULA) to a specified interface. |
TCPIP_IPV6_RouterAddressAdd | Adds a new router address to a specified interface. |
TCPIP_IPV6_UnicastAddressAdd | Adds a unicast address to a specified interface |
TCPIP_IPV6_DefaultRouterDelete | Deletes the current router list for a specified interface |
TCPIP_IPV6_DefaultRouterGet | Returns the current router address for a specified interface. |
TCPIP_IPV6_Task | Standard TCP/IP stack module task function. |
TCPIP_IPV6_IsFragmentationEnabled | Helper to get the IPv6 fragmentation support. |
TCPIP_IPV6_MaxDatagramDataSizeGet | Helper to get the maximum datagream data size (MDDS) on a specific interface. |
TCPIP_IPV6_AddressUnicastRemove | Removed a configured unicast address from an interface. |
TCPIP_IPV6_MulticastListenerAdd | Adds a multicast listener to an interface. |
TCPIP_IPV6_MulticastListenerRemove | Removes a multicast listener from a given interface. |
TCPIP_IPV6_PacketHandlerDeregister | Deregisters a previously registered packet handler. |
TCPIP_IPV6_PacketHandlerRegister | Sets a new packet processing handler. |
Data Types and Constants | |
IPV6_DATA_SEGMENT_HEADER | Data structure for IPv6 Data Segment header. |
IPV6_NEXT_HEADER_TYPE | Defines a list of IPv6 next header types. |
IPV6_PACKET | Packet structure/state tracking for IPv6 packets. |
IPV6_PACKET_ACK_FNC | Packet allocation and deallocation acknowledgment callback function. |
IPV6_SEGMENT_TYPE | Provides an enumeration of IPv6 segment types. |
IPV6_ULA_FLAGS | Provides a list of possible ULA action flags. |
IPV6_ULA_RESULT | Provides a list of possible ULA results. |
IPV6_DATA_DYNAMIC_BUFFER | Data to transmit is allocated in dynamically allocated RAM |
IPV6_DATA_NETWORK_FIFO | Data to transmit is stored in the Network Controller's FIFOs |
IPV6_DATA_NONE | The data segment is unused |
IPV6_DATA_PIC_RAM | Data to transmit is stored in PIC RAM |
IPV6_NO_UPPER_LAYER_CHECKSUM | Value flag for no upper layer checksum |
TCPIP_IPV6_PutArray | Writes data to a packet |
_IPV6_DATA_SEGMENT_HEADER | Data structure for IPv6 Data Segment header. |
_IPV6_PACKET | Packet structure/state tracking for IPv6 packets. |
_IPV6_RX_FRAGMENT_BUFFER | Data structure for IPv6 Received fragmented packet. |
TCPIP_IPV6_MODULE_CONFIG | Provides a place holder for IPv6 configuration. |
IPV6_HEADER_OFFSET_DEST_ADDR | Header offset for destination address |
IPV6_HEADER_OFFSET_NEXT_HEADER | Header offset for next header |
IPV6_HEADER_OFFSET_PAYLOAD_LENGTH | Header offset for payload length |
IPV6_HEADER_OFFSET_SOURCE_ADDR | Header offset for source address |
IPV6_TLV_HBHO_PAYLOAD_JUMBOGRAM | IPv6 Type-length-value type code for the Hop-by-hop "Jumbo-gram Payload" option |
IPV6_TLV_HBHO_ROUTER_ALERT | IPv6 Type-length-value type code for the Hop-by-hop "Router Alert" option |
IPV6_TLV_PAD_1 | IPv6 Type-length-value type code for the Pad 1 option |
IPV6_TLV_PAD_N | IPv6 Type-length-value type code for the Pad N option |
IPV6_TLV_UNREC_OPT_DISCARD_PP | IPv6 action code for the unrecognized option reaction to discard the packet and send an ICMP parameter problem message |
IPV6_TLV_UNREC_OPT_DISCARD_PP_NOT_MC | IPv6 action code for the unrecognized option reaction to discard the packet and send an ICMP parameter problem message is the destination address isn't a multicast address |
IPV6_TLV_UNREC_OPT_DISCARD_SILENT | IPv6 action code for the unrecognized option reaction to discard the packet silently |
IPV6_TLV_UNREC_OPT_SKIP_OPTION | IPv6 action code for the unrecognized option reaction to skip the option |
IPV6_RX_FRAGMENT_BUFFER | Data structure for IPv6 Received fragmented packet. |
IPV6_TLV_OPTION_TYPE | Data structure for IPv6 TLV options. |
IPV6_HANDLE | Pointer to IPv6 object |
IPV6_EVENT_TYPE | This enumeration is used to notify IPv6 client applications. |
IPV6_EVENT_HANDLER | Clients can register a handler with the IPv6 service. |
IPV6_ADDRESS_TYPE | Data structure for IPv6 address types. |
IPV6_ADDRESS_PREFERENCE | Provides selection of public versus temporary addresses. |
IPV6_ADDRESS_POLICY | Data structure for IPv6 address policy. |
IPV6_ACTION | Provides a list of possible IPv6 actions. |
TCPIP_IPV6_PACKET_HANDLER | Pointer to a function(handler) that will get called to process an incoming IPv6 packet. |
TCPIP_IPV6_PROCESS_HANDLE | Defines a IPv6 packet processing handle. |