TianoCore EDK2 master
|
#include "Ip6Impl.h"
Go to the source code of this file.
Functions | |
VOID EFIAPI | Ip6OnFrameSent (IN EFI_EVENT Event, IN VOID *Context) |
BOOLEAN | Ip6CancelInstanceFrame (IN IP6_LINK_TX_TOKEN *Frame, IN VOID *Context) |
EFI_STATUS | Ip6SetAddress (IN IP6_INTERFACE *Interface, IN EFI_IPv6_ADDRESS *Ip6Addr, IN BOOLEAN IsAnycast, IN UINT8 PrefixLength, IN UINT32 ValidLifetime, IN UINT32 PreferredLifetime, IN IP6_DAD_CALLBACK DadCallback OPTIONAL, IN VOID *Context OPTIONAL) |
IP6_INTERFACE * | Ip6CreateInterface (IN IP6_SERVICE *IpSb, IN BOOLEAN LinkLocal) |
VOID | Ip6CleanInterface (IN IP6_INTERFACE *Interface, IN IP6_PROTOCOL *IpInstance OPTIONAL) |
IP6_LINK_TX_TOKEN * | Ip6CreateLinkTxToken (IN IP6_INTERFACE *Interface, IN IP6_PROTOCOL *IpInstance OPTIONAL, IN NET_BUF *Packet, IN IP6_FRAME_CALLBACK CallBack, IN VOID *Context) |
VOID | Ip6FreeLinkTxToken (IN IP6_LINK_TX_TOKEN *Token) |
VOID EFIAPI | Ip6RecycleFrame (IN VOID *Context) |
VOID EFIAPI | Ip6OnFrameReceivedDpc (IN VOID *Context) |
VOID EFIAPI | Ip6OnFrameReceived (IN EFI_EVENT Event, IN VOID *Context) |
EFI_STATUS | Ip6ReceiveFrame (IN IP6_FRAME_CALLBACK CallBack, IN IP6_SERVICE *IpSb) |
VOID EFIAPI | Ip6OnFrameSentDpc (IN VOID *Context) |
EFI_STATUS | Ip6SendFrame (IN IP6_INTERFACE *Interface, IN IP6_PROTOCOL *IpInstance OPTIONAL, IN NET_BUF *Packet, IN EFI_IPv6_ADDRESS *NextHop, IN IP6_FRAME_CALLBACK CallBack, IN VOID *Context) |
VOID EFIAPI | Ip6TimerTicking (IN EFI_EVENT Event, IN VOID *Context) |
Implement IP6 pseudo interface.
Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.
Copyright (c) Microsoft Corporation SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file Ip6If.c.
BOOLEAN Ip6CancelInstanceFrame | ( | IN IP6_LINK_TX_TOKEN * | Frame, |
IN VOID * | Context | ||
) |
Fileter function to cancel all the frame related to an IP instance.
[in] | Frame | The transmit request to test whether to cancel. |
[in] | Context | The context which is the Ip instance that issued the transmit. |
TRUE | The frame belongs to this instance and is to be removed. |
FALSE | The frame doesn't belong to this instance. |
VOID Ip6CleanInterface | ( | IN IP6_INTERFACE * | Interface, |
IN IP6_PROTOCOL *IpInstance | OPTIONAL | ||
) |
Free the interface used by IpInstance. All the IP instance with the same Ip/prefix pair share the same interface. It is reference counted. All the frames that haven't been sent will be cancelled. Because the IpInstance is optional, the caller must remove IpInstance from the interface's instance list.
[in] | Interface | The interface used by the IpInstance. |
[in] | IpInstance | The IP instance that free the interface. NULL if the IP driver is releasing the default interface. |
IP6_INTERFACE * Ip6CreateInterface | ( | IN IP6_SERVICE * | IpSb, |
IN BOOLEAN | LinkLocal | ||
) |
IP6_LINK_TX_TOKEN * Ip6CreateLinkTxToken | ( | IN IP6_INTERFACE * | Interface, |
IN IP6_PROTOCOL *IpInstance | OPTIONAL, | ||
IN NET_BUF * | Packet, | ||
IN IP6_FRAME_CALLBACK | CallBack, | ||
IN VOID * | Context | ||
) |
Create and wrap a transmit request into a newly allocated IP6_LINK_TX_TOKEN.
[in] | Interface | The interface to send out from. |
[in] | IpInstance | The IpInstance that transmit the packet. NULL if the packet is sent by the IP6 driver itself. |
[in] | Packet | The packet to transmit |
[in] | CallBack | Call back function to execute if transmission finished. |
[in] | Context | Opaque parameter to the callback. |
VOID Ip6FreeLinkTxToken | ( | IN IP6_LINK_TX_TOKEN * | Token | ) |
VOID EFIAPI Ip6OnFrameReceivedDpc | ( | IN VOID * | Context | ) |
Received a frame from MNP. Wrap it in net buffer then deliver it to IP's input function. The ownship of the packet also is transferred to IP. When Ip is finished with this packet, it will call NetbufFree to release the packet, NetbufFree will again call the Ip6RecycleFrame to signal MNP's event and free the token used.
[in] | Context | Context for the callback. |
Request Ip6OnFrameSentDpc as a DPC at TPL_CALLBACK.
[in] | Event | The transmit token's event. |
[in] | Context | The Context which is pointed to the token. |
Request Ip6OnFrameSentDpc as a DPC at TPL_CALLBACK.
[in] | Event | The transmit token's event. |
[in] | Context | Context which points to the token. |
VOID EFIAPI Ip6OnFrameSentDpc | ( | IN VOID * | Context | ) |
EFI_STATUS Ip6ReceiveFrame | ( | IN IP6_FRAME_CALLBACK | CallBack, |
IN IP6_SERVICE * | IpSb | ||
) |
Request to receive the packet from the interface.
[in] | CallBack | Function to call when receive finished. |
[in] | IpSb | Points to IP6 service binding instance. |
EFI_ALREADY_STARTED | There is already a pending receive request. |
EFI_OUT_OF_RESOURCES | Failed to allocate resource to receive. |
EFI_SUCCESS | The receive request has been started. |
VOID EFIAPI Ip6RecycleFrame | ( | IN VOID * | Context | ) |
Callback function when the received packet is freed. Check Ip6OnFrameReceived for information.
[in] | Context | Points to EFI_MANAGED_NETWORK_RECEIVE_DATA. |
EFI_STATUS Ip6SendFrame | ( | IN IP6_INTERFACE * | Interface, |
IN IP6_PROTOCOL *IpInstance | OPTIONAL, | ||
IN NET_BUF * | Packet, | ||
IN EFI_IPv6_ADDRESS * | NextHop, | ||
IN IP6_FRAME_CALLBACK | CallBack, | ||
IN VOID * | Context | ||
) |
Send a frame from the interface. If the next hop is a multicast address, it is transmitted immediately. If the next hop is a unicast, and the NextHop's MAC is not known, it will perform address resolution. If an error occurred, the CallBack won't be called. So, the caller must test the return value, and take action when there is an error.
[in] | Interface | The interface to send the frame from |
[in] | IpInstance | The IP child that request the transmission. NULL if it is the IP6 driver itself. |
[in] | Packet | The packet to transmit. |
[in] | NextHop | The immediate destination to transmit the packet to. |
[in] | CallBack | Function to call back when transmit finished. |
[in] | Context | Opaque parameter to the callback. |
EFI_OUT_OF_RESOURCES | Failed to allocate resource to send the frame. |
EFI_NO_MAPPING | Can't resolve the MAC for the nexthop. |
EFI_SUCCESS | The packet successfully transmitted. |
EFI_STATUS Ip6SetAddress | ( | IN IP6_INTERFACE * | Interface, |
IN EFI_IPv6_ADDRESS * | Ip6Addr, | ||
IN BOOLEAN | IsAnycast, | ||
IN UINT8 | PrefixLength, | ||
IN UINT32 | ValidLifetime, | ||
IN UINT32 | PreferredLifetime, | ||
IN IP6_DAD_CALLBACK DadCallback | OPTIONAL, | ||
IN VOID *Context | OPTIONAL | ||
) |
Set the interface's address. This will trigger the DAD process for the address to set. To set an already set address, the lifetimes wil be updated to the new value passed in.
[in] | Interface | The interface to set the address. |
[in] | Ip6Addr | The interface's to be assigned IPv6 address. |
[in] | IsAnycast | If TRUE, the unicast IPv6 address is anycast. Otherwise, it is not anycast. |
[in] | PrefixLength | The prefix length of the Ip6Addr. |
[in] | ValidLifetime | The valid lifetime for this address. |
[in] | PreferredLifetime | The preferred lifetime for this address. |
[in] | DadCallback | The caller's callback to trigger when DAD finishes. This is an optional parameter that may be NULL. |
[in] | Context | The context that will be passed to DadCallback. This is an optional parameter that may be NULL. |
EFI_SUCCESS | The interface is scheduled to be configured with the specified address. |
EFI_OUT_OF_RESOURCES | Failed to set the interface's address due to lack of resources. |