10#ifndef __EFI_IP6_OPTION_H__
11#define __EFI_IP6_OPTION_H__
13#define IP6_FRAGMENT_OFFSET_MASK (~0x3)
62 "The combined size of Next Header and Len is two 8 bit fields"
76#define IP6_HDR_EXT_LEN(a) (((UINT16)((UINT8)(a)) + 1) * 8)
80#define IP6_MAX_EXT_DATA_LENGTH (IP6_HDR_EXT_LEN (MAX_UINT8) - sizeof(IP6_EXT_HDR))
82 IP6_MAX_EXT_DATA_LENGTH == 2046,
83 "Maximum data length is ((MAX_UINT8 + 1) * 8) - 2"
89 UINT16 FragmentOffset;
90 UINT32 Identification;
103 Ip6OptionRouterAlert = 5,
105 Ip6OptionDiscard = 0x40,
106 Ip6OptionParameterProblem = 0x80,
107 Ip6OptionMask = 0xc0,
109 Ip6OptionEtherSource = 1,
110 Ip6OptionEtherTarget = 2,
111 Ip6OptionPrefixInfo = 3,
112 Ip6OptionRedirected = 4,
148 IN UINT8 *NextHeader,
150 IN UINT32 ExtHdrsLen,
152 OUT UINT32 *FormerHeader OPTIONAL,
153 OUT UINT8 **LastHeader,
154 OUT UINT32 *RealExtsLen OPTIONAL,
155 OUT UINT32 *UnFragmentLen OPTIONAL,
156 OUT BOOLEAN *Fragmented OPTIONAL
205 IN UINT32 ExtHdrsLen,
206 IN UINT16 FragmentOffset,
207 OUT UINT8 **UpdatedExtHdrs
231 IN UINT8 *LastHeader,
232 IN UINT16 FragmentOffset,
233 IN UINT32 UnFragmentHdrLen,
235 IN OUT UINT32 *BufLen
EFI_STATUS Ip6FillHopByHop(OUT UINT8 *Buffer, IN OUT UINTN *BufferLen, IN UINT8 NextHeader)
BOOLEAN Ip6IsExtsValid(IN IP6_SERVICE *IpSb OPTIONAL, IN NET_BUF *Packet OPTIONAL, IN UINT8 *NextHeader, IN UINT8 *ExtHdrs, IN UINT32 ExtHdrsLen, IN BOOLEAN Rcvd, OUT UINT32 *FormerHeader OPTIONAL, OUT UINT8 **LastHeader, OUT UINT32 *RealExtsLen OPTIONAL, OUT UINT32 *UnFragmentLen OPTIONAL, OUT BOOLEAN *Fragmented OPTIONAL)
BOOLEAN Ip6IsNDOptionValid(IN UINT8 *Option, IN UINT16 OptionLen)
EFI_STATUS Ip6FillFragmentHeader(IN IP6_SERVICE *IpSb, IN UINT8 NextHeader, IN UINT8 LastHeader, IN UINT8 *ExtHdrs, IN UINT32 ExtHdrsLen, IN UINT16 FragmentOffset, OUT UINT8 **UpdatedExtHdrs)
EFI_STATUS Ip6CopyExts(IN UINT8 NextHeader, IN UINT8 *ExtHdrs, IN UINT8 *LastHeader, IN UINT16 FragmentOffset, IN UINT32 UnFragmentHdrLen, IN OUT UINT8 *Buf, IN OUT UINT32 *BufLen)