IPV6_PACKET Structure

C

typedef struct _IPV6_PACKET {
struct _IPV6_PACKET * next;
unsigned short payloadLen;
unsigned short headerLen;
unsigned short upperLayerHeaderLen;
unsigned short upperLayerChecksumOffset;
unsigned char upperLayerHeaderType;
union {
    struct {
    unsigned char reserved : 3;
    unsigned char useUnspecAddr : 1;
    unsigned char sourceSpecified : 1;
    unsigned char queued : 1;
    unsigned char addressType : 2;
    }
    unsigned char val;
} flags;
TCPIP_MAC_ADDR remoteMACAddr;
IPV6_PACKET_ACK_FNC ackFnc;
TCPIP_MAC_PACKET_ACK_FUNC macAckFnc;
void* ackParam;
void* clientData;
void * neighbor;
unsigned short offsetInSegment;
uint32_t queuedPacketTimeout;
TCPIP_NET_HANDLE netIfH;
IPV6_HEADER ipv6Header;
IPV6_DATA_SEGMENT_HEADER payload;
} IPV6_PACKET;

Description

Structure: IPV6_PACKET.

IPv6 packets are queued for future transmission.queuedPacketTimeout is used to time-out IPv6 queued packets.

Members

MembersDescription
nextNext packet in a queue.
payloadLenAmount of data in payload buffer.
headerLenTotal header length (IP header + IPv6 extension headers).
upperLayerHeaderLenTotal length of the upper layer header.
upperLayerChecksumOffsetOffset of the upper layer checksum.
upperLayerHeaderTypeType definition for the upper-layer header type.
useUnspecAddr: 1;This packet should use the unspecified address.
sourceSpecified: 1;The upper layer or application layer specified a source address.
queued : 1;Packet has been queued.
addressType : 2;IP_ADDRESS_TYPE_IPV6 or IP_ADDRESS_TYPE_IPV4.
remoteMACAddrThe packet's remote MAC address.
ackFncFunction to be called when IPv6 is done with the packet.
macAckFncFunction to be called when MAC is done with a TX packet.
ackParamParameter to be used.
clientDataOptional packet client data.
neighborThe neighbor that the message was received from.
offsetInSegmentOffset used for storing fragment transmission information.
queuedPacketTimeoutTime out for IPv6 packets which are queued.
netIfHPacket network interface.
ipv6HeaderIPv6 header definition.
payloadIPv6 data segment payload.

Remarks

For IPv6 queuing the time out has to be 0. The queue is processed separately by the NDP.IPV6_PACKET_ACK_FNC() is called after the successful removal and inclusion of the packet.