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.

IPv6 Abstraction Model

Library Interface

NameDescription
Functions
TCPIP_IPV6_HandlerRegisterRegisters an IPv6 event handler callback function.
TCPIP_IPV6_HandlerDeregisterDeregisters an IPv6 event handler callback function.
TCPIP_IPV6_InterfaceIsReadyDetermines if an interface is ready for IPv6 transactions.
TCPIP_IPV6_PacketFreeFrees a TCP/IP Packet structure from dynamic memory.
TCPIP_IPV6_PayloadSetAllocates a segment on the end of a packet segment chain and uses it to address prebuffered data.
TCPIP_IPV6_DASSourceAddressSelectDetermines the appropriate source address for a given destination address.
TCPIP_IPV6_DestAddressGetGets the destination address for a IPv6 packet.
TCPIP_IPV6_DestAddressSetSets the destination address for a IPv6 packet.
TCPIP_IPV6_SourceAddressGetGets the source address for an IPv6 packet.
TCPIP_IPV6_SourceAddressSetSets the source address for a IPv6 packet.
TCPIP_IPV6_ArrayPutHelperHelper function to write data to a packet.
TCPIP_IPV6_PutWrites a character of data to a packet.
TCPIP_IPV6_TxIsPutReadyDetermines whether a TX packet can be written to.
TCPIP_IPV6_TxPacketAllocateDynamically allocates a packet for transmitting IP protocol data.
TCPIP_IPV6_ArrayGetReads the next byte of data from the specified MAC.
TCPIP_IPV6_FlushFlushes a IP TX packet.
TCPIP_IPV6_GetReads the next byte of data from the specified MAC.
TCPIP_IPV6_UniqueLocalUnicastAddressAddAdds a Unique Local Unicast Address (ULA) to a specified interface.
TCPIP_IPV6_RouterAddressAddAdds a new router address to a specified interface.
TCPIP_IPV6_UnicastAddressAddAdds a unicast address to a specified interface
TCPIP_IPV6_DefaultRouterDeleteDeletes the current router list for a specified interface
TCPIP_IPV6_DefaultRouterGetReturns the current router address for a specified interface.
TCPIP_IPV6_TaskStandard TCP/IP stack module task function.
TCPIP_IPV6_IsFragmentationEnabledHelper to get the IPv6 fragmentation support.
TCPIP_IPV6_MaxDatagramDataSizeGetHelper to get the maximum datagream data size (MDDS) on a specific interface.
TCPIP_IPV6_AddressUnicastRemoveRemoved a configured unicast address from an interface.
TCPIP_IPV6_MulticastListenerAddAdds a multicast listener to an interface.
TCPIP_IPV6_MulticastListenerRemoveRemoves a multicast listener from a given interface.
TCPIP_IPV6_PacketHandlerDeregisterDeregisters a previously registered packet handler.
TCPIP_IPV6_PacketHandlerRegisterSets a new packet processing handler.
Data Types and Constants
IPV6_DATA_SEGMENT_HEADERData structure for IPv6 Data Segment header.
IPV6_NEXT_HEADER_TYPEDefines a list of IPv6 next header types.
IPV6_PACKETPacket structure/state tracking for IPv6 packets.
IPV6_PACKET_ACK_FNCPacket allocation and deallocation acknowledgment callback function.
IPV6_SEGMENT_TYPEProvides an enumeration of IPv6 segment types.
IPV6_ULA_FLAGSProvides a list of possible ULA action flags.
IPV6_ULA_RESULTProvides a list of possible ULA results.
IPV6_DATA_DYNAMIC_BUFFERData to transmit is allocated in dynamically allocated RAM
IPV6_DATA_NETWORK_FIFOData to transmit is stored in the Network Controller's FIFOs
IPV6_DATA_NONEThe data segment is unused
IPV6_DATA_PIC_RAMData to transmit is stored in PIC RAM
IPV6_NO_UPPER_LAYER_CHECKSUMValue flag for no upper layer checksum
TCPIP_IPV6_PutArrayWrites data to a packet
_IPV6_DATA_SEGMENT_HEADERData structure for IPv6 Data Segment header.
_IPV6_PACKETPacket structure/state tracking for IPv6 packets.
_IPV6_RX_FRAGMENT_BUFFERData structure for IPv6 Received fragmented packet.
TCPIP_IPV6_MODULE_CONFIGProvides a place holder for IPv6 configuration.
IPV6_HEADER_OFFSET_DEST_ADDRHeader offset for destination address
IPV6_HEADER_OFFSET_NEXT_HEADERHeader offset for next header
IPV6_HEADER_OFFSET_PAYLOAD_LENGTHHeader offset for payload length
IPV6_HEADER_OFFSET_SOURCE_ADDRHeader offset for source address
IPV6_TLV_HBHO_PAYLOAD_JUMBOGRAMIPv6 Type-length-value type code for the Hop-by-hop "Jumbo-gram Payload" option
IPV6_TLV_HBHO_ROUTER_ALERTIPv6 Type-length-value type code for the Hop-by-hop "Router Alert" option
IPV6_TLV_PAD_1IPv6 Type-length-value type code for the Pad 1 option
IPV6_TLV_PAD_NIPv6 Type-length-value type code for the Pad N option
IPV6_TLV_UNREC_OPT_DISCARD_PPIPv6 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_MCIPv6 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_SILENTIPv6 action code for the unrecognized option reaction to discard the packet silently
IPV6_TLV_UNREC_OPT_SKIP_OPTIONIPv6 action code for the unrecognized option reaction to skip the option
IPV6_RX_FRAGMENT_BUFFERData structure for IPv6 Received fragmented packet.
IPV6_TLV_OPTION_TYPEData structure for IPv6 TLV options.
IPV6_HANDLEPointer to IPv6 object
IPV6_EVENT_TYPEThis enumeration is used to notify IPv6 client applications.
IPV6_EVENT_HANDLERClients can register a handler with the IPv6 service.
IPV6_ADDRESS_TYPEData structure for IPv6 address types.
IPV6_ADDRESS_PREFERENCEProvides selection of public versus temporary addresses.
IPV6_ADDRESS_POLICYData structure for IPv6 address policy.
IPV6_ACTIONProvides a list of possible IPv6 actions.
TCPIP_IPV6_PACKET_HANDLERPointer to a function(handler) that will get called to process an incoming IPv6 packet.
TCPIP_IPV6_PROCESS_HANDLEDefines a IPv6 packet processing handle.