TianoCore EDK2 master
|
#include "Ip6Impl.h"
Go to the source code of this file.
Functions | |
BOOLEAN | Ip6IsOptionValid (IN IP6_SERVICE *IpSb, IN NET_BUF *Packet, IN UINT8 *Option, IN UINT16 OptionLen, IN UINT32 Pointer) |
BOOLEAN | Ip6IsNDOptionValid (IN UINT8 *Option, IN UINT16 OptionLen) |
BOOLEAN | Ip6IsValidProtocol (IN IP6_SERVICE *IpSb, 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) |
EFI_STATUS | Ip6FillHopByHop (OUT UINT8 *Buffer, IN OUT UINTN *BufferLen, IN UINT8 NextHeader) |
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) |
IP6 option support functions and routines.
Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file Ip6Option.c.
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 | ||
) |
Insert a Fragment Header to the Extension headers and output it in UpdatedExtHdrs.
[in] | IpSb | The IP6 service instance to transmit the packet. |
[in] | NextHeader | The extension header type of first extension header. |
[in] | LastHeader | The extension header type of last extension header. |
[in] | ExtHdrs | The length of the original extension header. |
[in] | ExtHdrsLen | The length of the extension headers. |
[in] | FragmentOffset | The fragment offset of the data following the header. |
[out] | UpdatedExtHdrs | The updated ExtHdrs with Fragment header inserted. It's caller's responsibility to free this buffer. |
EFI_OUT_OF_RESOURCES | Failed to finish the operation due to lake of resource. |
EFI_UNSUPPORTED | The extension header specified in ExtHdrs is not supported currently. |
EFI_SUCCESS | The operation performed successfully. |
Definition at line 711 of file Ip6Option.c.
Generate an IPv6 router alert option in network order and output it through Buffer.
[out] | Buffer | Points to a buffer to record the generated option. |
[in,out] | BufferLen | The length of Buffer, in bytes. |
[in] | NextHeader | The 8-bit selector indicates the type of header immediately following the Hop-by-Hop Options header. |
EFI_BUFFER_TOO_SMALL | The Buffer is too small to contain the generated option. BufferLen is updated for the required size. |
EFI_SUCCESS | The option is generated and filled in to Buffer. |
Definition at line 663 of file Ip6Option.c.
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 | ||
) |
Validate the IP6 extension header format for both the packets we received and that we will transmit. It will compute the ICMPv6 error message fields if the option is mal-formatted.
[in] | IpSb | The IP6 service instance. This is an optional parameter. |
[in] | Packet | The data of the packet. Ignored if NULL. |
[in] | NextHeader | The next header field in IPv6 basic header. |
[in] | ExtHdrs | The first byte of the option. |
[in] | ExtHdrsLen | The length of the whole option. |
[in] | Rcvd | The option is from the packet we received if TRUE, otherwise, the option we want to transmit. |
[out] | FormerHeader | The offset of NextHeader which points to Fragment Header when we received, of the ExtHdrs. Ignored if we transmit. |
[out] | LastHeader | The pointer of NextHeader of the last extension header processed by IP6. |
[out] | RealExtsLen | The length of extension headers processed by IP6 layer. This is an optional parameter that may be NULL. |
[out] | UnFragmentLen | The length of unfragmented length of extension headers. This is an optional parameter that may be NULL. |
[out] | Fragmented | Indicate whether the packet is fragmented. This is an optional parameter that may be NULL. |
TRUE | The option is properly formatted. |
FALSE | The option is malformatted. |
Definition at line 318 of file Ip6Option.c.
Validate the IP6 option format for both the packets we received and that we will transmit. It supports the defined options in Neighbor Discovery messages.
[in] | Option | The first byte of the option. |
[in] | OptionLen | The length of the whole option. |
TRUE | The option is properly formatted. |
FALSE | The option is malformatted. |
Definition at line 150 of file Ip6Option.c.
BOOLEAN Ip6IsOptionValid | ( | IN IP6_SERVICE * | IpSb, |
IN NET_BUF * | Packet, | ||
IN UINT8 * | Option, | ||
IN UINT16 | OptionLen, | ||
IN UINT32 | Pointer | ||
) |
Validate the IP6 option format for both the packets we received and that we will transmit. It will compute the ICMPv6 error message fields if the option is malformatted.
[in] | IpSb | The IP6 service data. |
[in] | Packet | The to be validated packet. |
[in] | Option | The first byte of the option. |
[in] | OptionLen | The length of all options, expressed in byte length of octets. Maximum length is 2046 bytes or ((n + 1) * 8) - 2 where n is 255. |
[in] | Pointer | Identifies the octet offset within the invoking packet where the error was detected. |
TRUE | The option is properly formatted. |
FALSE | The option is malformatted. |
Definition at line 31 of file Ip6Option.c.
BOOLEAN Ip6IsValidProtocol | ( | IN IP6_SERVICE * | IpSb, |
IN UINT8 | NextHeader | ||
) |
Validate whether the NextHeader is a known valid protocol or one of the user configured protocols from the upper layer.
[in] | IpSb | The IP6 service instance. |
[in] | NextHeader | The next header field. |
TRUE | The NextHeader is a known valid protocol or user configured. |
FALSE | The NextHeader is not a known valid protocol. |
Definition at line 252 of file Ip6Option.c.