TianoCore EDK2 master
|
Go to the source code of this file.
Data Structures | |
struct | UDP_END_POINT |
union | UDP_COMPLETION_TOKEN |
struct | UDP_RX_TOKEN |
union | UDP_SESSION_DATA |
union | UDP_TRANSMIT_DATA |
struct | UDP_TX_TOKEN |
struct | _UDP_IO |
Macros | |
#define | UDP_IO_RX_SIGNATURE SIGNATURE_32 ('U', 'D', 'P', 'R') |
#define | UDP_IO_TX_SIGNATURE SIGNATURE_32 ('U', 'D', 'P', 'T') |
#define | UDP_IO_SIGNATURE SIGNATURE_32 ('U', 'D', 'P', 'I') |
#define | UDP_IO_UDP4_VERSION 4 |
#define | UDP_IO_UDP6_VERSION 6 |
Typedefs | |
typedef struct _UDP_IO | UDP_IO |
typedef VOID(EFIAPI * | UDP_IO_CALLBACK) (IN NET_BUF *Packet, IN UDP_END_POINT *EndPoint, IN EFI_STATUS IoStatus, IN VOID *Context) |
typedef EFI_STATUS(EFIAPI * | UDP_IO_CONFIG) (IN UDP_IO *UdpIo, IN VOID *Context) |
typedef BOOLEAN(EFIAPI * | UDP_IO_TO_CANCEL) (IN UDP_TX_TOKEN *Token, IN VOID *Context) |
Functions | |
VOID EFIAPI | UdpIoCancelDgrams (IN UDP_IO *UdpIo, IN EFI_STATUS IoStatus, IN UDP_IO_TO_CANCEL ToCancel OPTIONAL, IN VOID *Context OPTIONAL) |
UDP_IO *EFIAPI | UdpIoCreateIo (IN EFI_HANDLE Controller, IN EFI_HANDLE ImageHandle, IN UDP_IO_CONFIG Configure, IN UINT8 UdpVersion, IN VOID *Context) |
EFI_STATUS EFIAPI | UdpIoFreeIo (IN UDP_IO *UdpIo) |
VOID EFIAPI | UdpIoCleanIo (IN UDP_IO *UdpIo) |
EFI_STATUS EFIAPI | UdpIoSendDatagram (IN UDP_IO *UdpIo, IN NET_BUF *Packet, IN UDP_END_POINT *EndPoint OPTIONAL, IN EFI_IP_ADDRESS *Gateway OPTIONAL, IN UDP_IO_CALLBACK CallBack, IN VOID *Context) |
VOID EFIAPI | UdpIoCancelSentDatagram (IN UDP_IO *UdpIo, IN NET_BUF *Packet) |
EFI_STATUS EFIAPI | UdpIoRecvDatagram (IN UDP_IO *UdpIo, IN UDP_IO_CALLBACK CallBack, IN VOID *Context, IN UINT32 HeadLen) |
This library is used to share code between UEFI network stack modules. It provides the helper routines to access UDP service. It is used by both DHCP and MTFTP.
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file UdpIoLib.h.
#define UDP_IO_RX_SIGNATURE SIGNATURE_32 ('U', 'D', 'P', 'R') |
Signatures used by UdpIo Library.
Definition at line 24 of file UdpIoLib.h.
#define UDP_IO_SIGNATURE SIGNATURE_32 ('U', 'D', 'P', 'I') |
Definition at line 26 of file UdpIoLib.h.
#define UDP_IO_TX_SIGNATURE SIGNATURE_32 ('U', 'D', 'P', 'T') |
Definition at line 25 of file UdpIoLib.h.
#define UDP_IO_UDP4_VERSION 4 |
Definition at line 28 of file UdpIoLib.h.
#define UDP_IO_UDP6_VERSION 6 |
Definition at line 29 of file UdpIoLib.h.
Definition at line 18 of file UdpIoLib.h.
typedef VOID(EFIAPI * UDP_IO_CALLBACK) (IN NET_BUF *Packet, IN UDP_END_POINT *EndPoint, IN EFI_STATUS IoStatus, IN VOID *Context) |
Prototype called when receiving or sending packets to or from a UDP point.
This prototype is used by both receive and sending when calling UdpIoRecvDatagram() or UdpIoSendDatagram(). When receiving, Netbuf is allocated by the UDP access point and released by the user. When sending, the user allocates the NetBuf, which is then provided to the callback as a reference.
[in] | Packet | The packet received or sent. |
[in] | EndPoint | The UDP address pair corresponds to the UDP IO. |
[in] | IoStatus | The packet receiving or sending status. |
[in] | Context | The user-defined data when calling UdpIoRecvDatagram() or UdpIoSendDatagram(). |
Definition at line 56 of file UdpIoLib.h.
typedef EFI_STATUS(EFIAPI * UDP_IO_CONFIG) (IN UDP_IO *UdpIo, IN VOID *Context) |
The prototype called when UdpIo Library configures a UDP instance.
The prototype is set and called when creating a UDP_IO in UdpIoCreatePort().
[in] | UdpIo | The UDP_IO to configure. |
[in] | Context | The user-defined data when calling UdpIoCreatePort(). |
EFI_SUCCESS | The configuration succeeded. |
Others | The UDP_IO fails to configure indicating UdpIoCreatePort() should fail. |
Definition at line 167 of file UdpIoLib.h.
typedef BOOLEAN(EFIAPI * UDP_IO_TO_CANCEL) (IN UDP_TX_TOKEN *Token, IN VOID *Context) |
The select function to decide whether to cancel the UDP_TX_TOKEN.
[in] | Token | The UDP_TX_TOKEN to decide whether to cancel. |
[in] | Context | User-defined data in UdpIoCancelDgrams(). |
TRUE | Cancel the UDP_TX_TOKEN. |
FALSE | Do not cancel this UDP_TX_TOKEN. |
Definition at line 184 of file UdpIoLib.h.
VOID EFIAPI UdpIoCancelDgrams | ( | IN UDP_IO * | UdpIo, |
IN EFI_STATUS | IoStatus, | ||
IN UDP_IO_TO_CANCEL ToCancel | OPTIONAL, | ||
IN VOID *Context | OPTIONAL | ||
) |
Cancel all the sent datagram that pass the selection criteria of ToCancel.
If ToCancel is NULL, all the datagrams are cancelled. If Udp version is not UDP_IO_UDP4_VERSION or UDP_IO_UDP6_VERSION, then ASSERT().
[in] | UdpIo | The UDP_IO to cancel packet. |
[in] | IoStatus | The IoStatus to return to the packet owners. |
[in] | ToCancel | The select function to test whether to cancel this packet or not. |
[in] | Context | The opaque parameter to the ToCancel. |
Definition at line 765 of file DxeUdpIoLib.c.
Cancel a single sent datagram.
[in] | UdpIo | The UDP_IO from which to cancel the packet |
[in] | Packet | The packet to cancel |
Cancel a single sent datagram.
[in] | UdpIo | The UDP_IO to cancel the packet from |
[in] | Packet | The packet to cancel |
Definition at line 1051 of file DxeUdpIoLib.c.
Cleans up the UDP_IO without freeing it. Call this function if you intend to later re-use the UDP_IO.
If Udp version is not UDP_IO_UDP4_VERSION or UDP_IO_UDP6_VERSION, then ASSERT().
This function releases all transmitted datagrams and receive requests and configures NULL for the UDP instance.
[in] | UdpIo | The UDP_IO to clean up. |
Clean up the UDP_IO without freeing it. The function is called when user wants to re-use the UDP_IO later.
If Udp version is not UDP_IO_UDP4_VERSION or UDP_IO_UDP6_VERSION, then ASSERT().
It will release all the transmitted datagrams and receive request. It will also configure NULL for the UDP instance.
[in] | UdpIo | The UDP_IO to clean up. |
Definition at line 915 of file DxeUdpIoLib.c.
UDP_IO *EFIAPI UdpIoCreateIo | ( | IN EFI_HANDLE | Controller, |
IN EFI_HANDLE | ImageHandle, | ||
IN UDP_IO_CONFIG | Configure, | ||
IN UINT8 | UdpVersion, | ||
IN VOID * | Context | ||
) |
Creates a UDP_IO to access the UDP service. It creates and configures a UDP child.
If Configure is NULL, then ASSERT(). If Udp version is not UDP_IO_UDP4_VERSION or UDP_IO_UDP6_VERSION, then ASSERT().
It locates the UDP service binding prototype on the Controller parameter uses the UDP service binding prototype to create a UDP child (also known as a UDP instance) configures the UDP child by calling Configure function prototype. Any failures in creating or configuring the UDP child return NULL for failure.
[in] | Controller | The controller that has the UDP service binding. protocol installed. |
[in] | ImageHandle | The image handle for the driver. |
[in] | Configure | The function to configure the created UDP child. |
[in] | UdpVersion | The UDP protocol version, UDP4 or UDP6. |
[in] | Context | The opaque parameter for the Configure function. |
Creates a UDP_IO to access the UDP service. It creates and configures a UDP child.
If Configure is NULL, then ASSERT(). If Udp version is not UDP_IO_UDP4_VERSION or UDP_IO_UDP6_VERSION, then ASSERT().
It locates the UDP service binding prototype on the Controller parameter uses the UDP service binding prototype to create a UDP child (also known as a UDP instance) configures the UDP child by calling Configure function prototype. Any failures in creating or configuring the UDP child return NULL for failure.
[in] | Controller | The controller that has the UDP service binding. protocol installed. |
[in] | ImageHandle | The image handle for the driver. |
[in] | Configure | The function to configure the created UDP child. |
[in] | UdpVersion | The UDP protocol version, UDP4 or UDP6. |
[in] | Context | The opaque parameter for the Configure function. |
Definition at line 602 of file DxeUdpIoLib.c.
EFI_STATUS EFIAPI UdpIoFreeIo | ( | IN UDP_IO * | UdpIo | ) |
Free the UDP_IO and all its related resources.
If Udp version is not UDP_IO_UDP4_VERSION or UDP_IO_UDP6_VERSION, then ASSERT().
The function cancels all sent datagrams and receive requests.
[in] | UdpIo | The UDP_IO to free. |
EFI_SUCCESS | The UDP_IO is freed. |
Others | Failed to free UDP_IO. |
Free the UDP_IO and all its related resources.
If Udp version is not UDP_IO_UDP4_VERSION or UDP_IO_UDP6_VERSION, then ASSERT().
The function will cancel all sent datagram and receive request.
[in] | UdpIo | The UDP_IO to free. |
EFI_SUCCESS | The UDP_IO is freed. |
Others | Failed to free UDP_IO. |
Definition at line 809 of file DxeUdpIoLib.c.
EFI_STATUS EFIAPI UdpIoRecvDatagram | ( | IN UDP_IO * | UdpIo, |
IN UDP_IO_CALLBACK | CallBack, | ||
IN VOID * | Context, | ||
IN UINT32 | HeadLen | ||
) |
Issue a receive request to the UDP_IO.
If Udp version is not UDP_IO_UDP4_VERSION or UDP_IO_UDP6_VERSION, then ASSERT().
This function is called when upper-layer needs packet from UDP for processing. Only one receive request is acceptable at a time. Therefore, one common usage model is to invoke this function inside its Callback function when the former packet is processed.
[in] | UdpIo | The UDP_IO to receive the packet from. |
[in] | CallBack | The call back function to execute when the packet is received. |
[in] | Context | The opaque context passed to Callback. |
[in] | HeadLen | The length of the upper-layer's protocol header. |
EFI_ALREADY_STARTED | There is already a pending receive request. Only one receive request is supported at a time. |
EFI_OUT_OF_RESOURCES | Failed to allocate needed resources. |
EFI_SUCCESS | The receive request was issued successfully. |
EFI_UNSUPPORTED | The UDP version in UDP_IO is not supported. |
Issue a receive request to the UDP_IO.
If Udp version is not UDP_IO_UDP4_VERSION or UDP_IO_UDP6_VERSION, then ASSERT().
This function is called when upper-layer needs packet from UDP for processing. Only one receive request is acceptable at a time so a common usage model is to invoke this function inside its Callback function when the former packet is processed.
[in] | UdpIo | The UDP_IO to receive the packet from. |
[in] | CallBack | The call back function to execute when the packet is received. |
[in] | Context | The opaque context passed to Callback. |
[in] | HeadLen | The length of the upper-layer's protocol header. |
EFI_ALREADY_STARTED | There is already a pending receive request. Only one receive request is supported at a time. |
EFI_OUT_OF_RESOURCES | Failed to allocate needed resources. |
EFI_SUCCESS | The receive request is issued successfully. |
EFI_UNSUPPORTED | The UDP version in UDP_IO is not supported. |
Definition at line 1084 of file DxeUdpIoLib.c.
EFI_STATUS EFIAPI UdpIoSendDatagram | ( | IN UDP_IO * | UdpIo, |
IN NET_BUF * | Packet, | ||
IN UDP_END_POINT *EndPoint | OPTIONAL, | ||
IN EFI_IP_ADDRESS *Gateway | OPTIONAL, | ||
IN UDP_IO_CALLBACK | CallBack, | ||
IN VOID * | Context | ||
) |
Send a packet through the UDP_IO.
If Udp version is not UDP_IO_UDP4_VERSION or UDP_IO_UDP6_VERSION, then ASSERT().
The packet will be wrapped in UDP_TX_TOKEN. Function Callback will be called when the packet is sent. The optional parameter EndPoint overrides the default address pair if specified.
[in] | UdpIo | The UDP_IO to send the packet through. |
[in] | Packet | The packet to send. |
[in] | EndPoint | The local and remote access point. Override the default address pair set during configuration. |
[in] | Gateway | The gateway to use. |
[in] | CallBack | The function being called when packet is transmitted or failed. |
[in] | Context | The opaque parameter passed to CallBack. |
EFI_OUT_OF_RESOURCES | Failed to allocate resource for the packet. |
EFI_SUCCESS | The packet is successfully delivered to UDP for transmission. |
Definition at line 971 of file DxeUdpIoLib.c.