TianoCore EDK2 master
|
#include "Ip6Impl.h"
Go to the source code of this file.
Functions | |
EFI_STATUS | Ip6CandidateSource (IN IP6_SERVICE *IpSb, OUT LIST_ENTRY *SourceList, OUT UINT32 *SourceCount) |
UINT8 | Ip6CommonPrefixLen (IN EFI_IPv6_ADDRESS *AddressA, IN EFI_IPv6_ADDRESS *AddressB) |
EFI_STATUS | Ip6SelectSourceAddress (IN IP6_SERVICE *IpSb, IN EFI_IPv6_ADDRESS *Destination, OUT EFI_IPv6_ADDRESS *Source) |
IP6_INTERFACE * | Ip6SelectInterface (IN IP6_SERVICE *IpSb, IN EFI_IPv6_ADDRESS *Destination, IN OUT EFI_IPv6_ADDRESS *Source) |
VOID | Ip6SysPacketSent (NET_BUF *Packet, EFI_STATUS IoStatus, UINT32 LinkFlag, VOID *Context) |
EFI_STATUS | Ip6PrependHead (IN IP6_SERVICE *IpSb, IN NET_BUF *Packet, IN EFI_IP6_HEADER *Head, IN UINT16 FragmentOffset, IN UINT8 *ExtHdrs, IN UINT32 ExtHdrsLen, IN UINT8 LastHeader, IN UINT32 HeadLen) |
EFI_STATUS | Ip6Output (IN IP6_SERVICE *IpSb, IN IP6_INTERFACE *Interface OPTIONAL, IN IP6_PROTOCOL *IpInstance OPTIONAL, IN NET_BUF *Packet, IN EFI_IP6_HEADER *Head, IN UINT8 *ExtHdrs, IN UINT32 ExtHdrsLen, IN IP6_FRAME_CALLBACK Callback, IN VOID *Context) |
BOOLEAN | Ip6CancelPacketFragments (IN IP6_LINK_TX_TOKEN *Frame, IN VOID *Context) |
VOID | Ip6CancelFrames (IN IP6_INTERFACE *Interface, IN EFI_STATUS IoStatus, IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL, IN VOID *Context OPTIONAL) |
VOID | Ip6CancelPacket (IN IP6_INTERFACE *IpIf, IN NET_BUF *Packet, IN EFI_STATUS IoStatus) |
Variables | |
UINT32 | mIp6Id |
The internal functions and routines to transmit the IP6 packet.
Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file Ip6Output.c.
VOID Ip6CancelFrames | ( | IN IP6_INTERFACE * | Interface, |
IN EFI_STATUS | IoStatus, | ||
IN IP6_FRAME_TO_CANCEL FrameToCancel | OPTIONAL, | ||
IN VOID *Context | OPTIONAL | ||
) |
Remove all the frames on the interface that pass the FrameToCancel, either queued on ARP queues or that have already been delivered to MNP and not yet recycled.
[in] | Interface | Interface to remove the frames from. |
[in] | IoStatus | The transmit status returned to the frames' callback. |
[in] | FrameToCancel | Function to select the frame to cancel; NULL to select all. |
[in] | Context | Opaque parameters passed to FrameToCancel. Ignored if FrameToCancel is NULL. |
Definition at line 1024 of file Ip6Output.c.
VOID Ip6CancelPacket | ( | IN IP6_INTERFACE * | IpIf, |
IN NET_BUF * | Packet, | ||
IN EFI_STATUS | IoStatus | ||
) |
Cancel the Packet and all its fragments.
[in] | IpIf | The interface from which the Packet is sent. |
[in] | Packet | The Packet to cancel. |
[in] | IoStatus | The status returns to the sender. |
Definition at line 1081 of file Ip6Output.c.
BOOLEAN Ip6CancelPacketFragments | ( | IN IP6_LINK_TX_TOKEN * | Frame, |
IN VOID * | Context | ||
) |
The filter function to find a packet and all its fragments. The packet's fragments have their Context set to the packet.
[in] | Frame | The frames hold by the low level interface. |
[in] | Context | Context to the function, which is the packet. |
TRUE | This is the packet to cancel or its fragments. |
FALSE | This is an unrelated packet. |
Definition at line 999 of file Ip6Output.c.
EFI_STATUS Ip6CandidateSource | ( | IN IP6_SERVICE * | IpSb, |
OUT LIST_ENTRY * | SourceList, | ||
OUT UINT32 * | SourceCount | ||
) |
Output all the available source addresses to a list entry head SourceList. The number of source addresses are also returned.
[in] | IpSb | Points to an IP6 service binding instance. |
[out] | SourceList | The list entry head of all source addresses. It is the caller's responsibility to free the resources. |
[out] | SourceCount | The number of source addresses. |
EFI_SUCCESS | The source addresses were copied to a list entry head SourceList. |
EFI_OUT_OF_RESOURCES | Failed to allocate resources to complete the operation. |
Definition at line 30 of file Ip6Output.c.
UINT8 Ip6CommonPrefixLen | ( | IN EFI_IPv6_ADDRESS * | AddressA, |
IN EFI_IPv6_ADDRESS * | AddressB | ||
) |
Calculate how many bits are the same between two IPv6 addresses.
[in] | AddressA | Points to an IPv6 address. |
[in] | AddressB | Points to another IPv6 address. |
Definition at line 97 of file Ip6Output.c.
EFI_STATUS Ip6Output | ( | IN IP6_SERVICE * | IpSb, |
IN IP6_INTERFACE *Interface | OPTIONAL, | ||
IN IP6_PROTOCOL *IpInstance | OPTIONAL, | ||
IN NET_BUF * | Packet, | ||
IN EFI_IP6_HEADER * | Head, | ||
IN UINT8 * | ExtHdrs, | ||
IN UINT32 | ExtHdrsLen, | ||
IN IP6_FRAME_CALLBACK | Callback, | ||
IN VOID * | Context | ||
) |
Transmit an IP6 packet. The packet comes either from the IP6 child's consumer (IpInstance != NULL) or the IP6 driver itself (IpInstance == NULL). It will route the packet, fragment it, then transmit all the fragments through an interface.
[in] | IpSb | The IP6 service instance to transmit the packet. |
[in] | Interface | The IP6 interface to transmit the packet. Ignored if NULL. |
[in] | IpInstance | The IP6 child that issues the transmission. It is NULL if the packet is from the system. |
[in] | Packet | The user data to send, excluding the IP header. |
[in] | Head | The caller supplied header. The caller should set the following header fields: NextHeader, HopLimit, Src, Dest, FlowLabel, PayloadLength. This function will fill in the Ver, TrafficClass. |
[in] | ExtHdrs | The extension headers to append to the IPv6 basic header. |
[in] | ExtHdrsLen | The length of the extension headers. |
[in] | Callback | The callback function to issue when transmission completed. |
[in] | Context | The opaque context for the callback. |
EFI_INVALID_PARAMETER | Any input parameter or the packet is invalid. |
EFI_NO_MAPPING | There is no interface to the destination. |
EFI_NOT_FOUND | There is no route to the destination. |
EFI_SUCCESS | The packet successfully transmitted. |
EFI_OUT_OF_RESOURCES | Failed to finish the operation due to lack of resources. |
Others | Failed to transmit the packet. |
Definition at line 476 of file Ip6Output.c.
EFI_STATUS Ip6PrependHead | ( | IN IP6_SERVICE * | IpSb, |
IN NET_BUF * | Packet, | ||
IN EFI_IP6_HEADER * | Head, | ||
IN UINT16 | FragmentOffset, | ||
IN UINT8 * | ExtHdrs, | ||
IN UINT32 | ExtHdrsLen, | ||
IN UINT8 | LastHeader, | ||
IN UINT32 | HeadLen | ||
) |
Prefix an IP6 basic head and unfragmentable extension headers and a fragment header to the Packet. Used for IP6 fragmentation.
[in] | IpSb | The IP6 service instance to transmit the packet. |
[in] | Packet | The packet to prefix the IP6 header to. |
[in] | Head | The caller supplied header. |
[in] | FragmentOffset | The fragment offset of the data following the header. |
[in] | ExtHdrs | The length of the original extension header. |
[in] | ExtHdrsLen | The length of the extension headers. |
[in] | LastHeader | The pointer of next header of last extension header. |
[in] | HeadLen | The length of the unfragmented part of the IP6 header. |
EFI_BAD_BUFFER_SIZE | There is no enough room in the head space of Packet. |
EFI_SUCCESS | The operation performed successfully. |
Definition at line 367 of file Ip6Output.c.
IP6_INTERFACE * Ip6SelectInterface | ( | IN IP6_SERVICE * | IpSb, |
IN EFI_IPv6_ADDRESS * | Destination, | ||
IN OUT EFI_IPv6_ADDRESS * | Source | ||
) |
Select an interface to send the packet generated in the IP6 driver itself: that is, not by the requests of the IP6 child's consumer. Such packets include the ICMPv6 echo replies and other ICMPv6 error packets.
[in] | IpSb | The IP4 service that wants to send the packets. |
[in] | Destination | The destination of the packet. |
[in,out] | Source | The source of the packet. |
Definition at line 286 of file Ip6Output.c.
EFI_STATUS Ip6SelectSourceAddress | ( | IN IP6_SERVICE * | IpSb, |
IN EFI_IPv6_ADDRESS * | Destination, | ||
OUT EFI_IPv6_ADDRESS * | Source | ||
) |
Output all the available source addresses to a list entry head SourceList. The number of source addresses are also returned.
[in] | IpSb | Points to a IP6 service binding instance. |
[in] | Destination | The IPv6 destination address. |
[out] | Source | The selected IPv6 source address according to the Destination. |
EFI_SUCCESS | The source addresses were copied to a list entry head SourceList. |
EFI_NO_MAPPING | The IPv6 stack is not auto configured. |
Definition at line 153 of file Ip6Output.c.
VOID Ip6SysPacketSent | ( | NET_BUF * | Packet, |
EFI_STATUS | IoStatus, | ||
UINT32 | LinkFlag, | ||
VOID * | Context | ||
) |
The default callback function for the system generated packet. It will free the packet.
[in] | Packet | The packet that transmitted. |
[in] | IoStatus | The result of the transmission, succeeded or failed. |
[in] | LinkFlag | Not used when transmitted. Check IP6_FRAME_CALLBACK for reference. |
[in] | Context | The context provided by us. |
Definition at line 337 of file Ip6Output.c.
UINT32 mIp6Id |
Definition at line 12 of file Ip6Output.c.