TianoCore EDK2 master
Loading...
Searching...
No Matches
DxeUdpIoLib.c File Reference

Go to the source code of this file.

Functions

VOID UdpIoFreeTxToken (IN UDP_TX_TOKEN *TxToken)
 
VOID UdpIoFreeRxToken (IN UDP_RX_TOKEN *RxToken)
 
VOID EFIAPI UdpIoOnDgramSentDpc (IN VOID *Context)
 
VOID EFIAPI UdpIoOnDgramSent (IN EFI_EVENT Event, IN VOID *Context)
 
VOID EFIAPI UdpIoRecycleDgram (IN VOID *Context)
 
VOID EFIAPI UdpIoOnDgramRcvdDpc (IN VOID *Context)
 
VOID EFIAPI UdpIoOnDgramRcvd (IN EFI_EVENT Event, IN VOID *Context)
 
UDP_RX_TOKENUdpIoCreateRxToken (IN UDP_IO *UdpIo, IN UDP_IO_CALLBACK CallBack, IN VOID *Context, IN UINT32 HeadLen)
 
UDP_TX_TOKENUdpIoCreateTxToken (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)
 
UDP_IO *EFIAPI UdpIoCreateIo (IN EFI_HANDLE Controller, IN EFI_HANDLE ImageHandle, IN UDP_IO_CONFIG Configure, IN UINT8 UdpVersion, IN VOID *Context)
 
VOID EFIAPI UdpIoCancelDgrams (IN UDP_IO *UdpIo, IN EFI_STATUS IoStatus, IN UDP_IO_TO_CANCEL ToCancel OPTIONAL, IN VOID *Context OPTIONAL)
 
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)
 
BOOLEAN EFIAPI UdpIoCancelSingleDgram (IN UDP_TX_TOKEN *Token, 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)
 

Detailed Description

Help functions to access UDP service, it is used by both the DHCP and MTFTP.

Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file DxeUdpIoLib.c.

Function Documentation

◆ UdpIoCancelDgrams()

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().

Parameters
[in]UdpIoThe UDP_IO to cancel packet.
[in]IoStatusThe IoStatus to return to the packet owners.
[in]ToCancelThe select function to test whether to cancel this packet or not.
[in]ContextThe opaque parameter to the ToCancel.

Definition at line 765 of file DxeUdpIoLib.c.

◆ UdpIoCancelSentDatagram()

VOID EFIAPI UdpIoCancelSentDatagram ( IN UDP_IO UdpIo,
IN NET_BUF Packet 
)

Cancel a single sent datagram.

Parameters
[in]UdpIoThe UDP_IO to cancel the packet from
[in]PacketThe packet to cancel

Definition at line 1051 of file DxeUdpIoLib.c.

◆ UdpIoCancelSingleDgram()

BOOLEAN EFIAPI UdpIoCancelSingleDgram ( IN UDP_TX_TOKEN Token,
IN VOID *  Context 
)

The select function to cancel a single sent datagram.

Parameters
[in]TokenThe UDP_TX_TOKEN to test against
[in]ContextThe NET_BUF of the sent datagram
Return values
TRUEThe packet is to be cancelled.
FALSEThe packet is not to be cancelled.

Definition at line 1026 of file DxeUdpIoLib.c.

◆ UdpIoCleanIo()

VOID EFIAPI UdpIoCleanIo ( IN UDP_IO UdpIo)

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.

Parameters
[in]UdpIoThe UDP_IO to clean up.

Definition at line 915 of file DxeUdpIoLib.c.

◆ UdpIoCreateIo()

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.

Parameters
[in]ControllerThe controller that has the UDP service binding. protocol installed.
[in]ImageHandleThe image handle for the driver.
[in]ConfigureThe function to configure the created UDP child.
[in]UdpVersionThe UDP protocol version, UDP4 or UDP6.
[in]ContextThe opaque parameter for the Configure function.
Returns
Newly-created UDP_IO or NULL if failed.

Definition at line 602 of file DxeUdpIoLib.c.

◆ UdpIoCreateRxToken()

UDP_RX_TOKEN * UdpIoCreateRxToken ( IN UDP_IO UdpIo,
IN UDP_IO_CALLBACK  CallBack,
IN VOID *  Context,
IN UINT32  HeadLen 
)

Create a UDP_RX_TOKEN to wrap the request.

Parameters
[in]UdpIoThe UdpIo to receive packets from.
[in]CallBackThe function to call when receive finished.
[in]ContextThe opaque parameter to the CallBack.
[in]HeadLenThe head length to reserve for the packet.
Returns
The Wrapped request or NULL if failed to allocate resources or some errors happened.

Definition at line 348 of file DxeUdpIoLib.c.

◆ UdpIoCreateTxToken()

UDP_TX_TOKEN * UdpIoCreateTxToken ( 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 
)

Wrap a transmit request into a new created UDP_TX_TOKEN.

If Packet is NULL, then ASSERT(). If Udp version is not UDP_IO_UDP4_VERSION or UDP_IO_UDP6_VERSION, then ASSERT().

Parameters
[in]UdpIoThe UdpIo to send packet to.
[in]PacketThe user's packet.
[in]EndPointThe local and remote access point.
[in]GatewayThe overridden next hop.
[in]CallBackThe function to call when transmission completed.
[in]ContextThe opaque parameter to the call back.
Returns
The wrapped transmission request or NULL if failed to allocate resources or for some errors.

Definition at line 425 of file DxeUdpIoLib.c.

◆ UdpIoFreeIo()

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 will cancel all sent datagram and receive request.

Parameters
[in]UdpIoThe UDP_IO to free.
Return values
EFI_SUCCESSThe UDP_IO is freed.
OthersFailed to free UDP_IO.

Definition at line 809 of file DxeUdpIoLib.c.

◆ UdpIoFreeRxToken()

VOID UdpIoFreeRxToken ( IN UDP_RX_TOKEN RxToken)

Free a UDP_RX_TOKEN. The RX event is closed.

Parameters
[in]RxTokenThe UDP_RX_TOKEN to release.

Definition at line 50 of file DxeUdpIoLib.c.

◆ UdpIoFreeTxToken()

VOID UdpIoFreeTxToken ( IN UDP_TX_TOKEN TxToken)

Free a UDP_TX_TOKEN. The TX event is closed.

Parameters
[in]TxTokenThe UDP_TX_TOKEN to release.

Definition at line 28 of file DxeUdpIoLib.c.

◆ UdpIoOnDgramRcvd()

VOID EFIAPI UdpIoOnDgramRcvd ( IN EFI_EVENT  Event,
IN VOID *  Context 
)

Request UdpIoOnDgramRcvdDpc() as a DPC at TPL_CALLBACK.

Parameters
[in]EventThe UDP receive request event.
[in]ContextThe UDP RX token.

Definition at line 325 of file DxeUdpIoLib.c.

◆ UdpIoOnDgramRcvdDpc()

VOID EFIAPI UdpIoOnDgramRcvdDpc ( IN VOID *  Context)

The event handle for UDP receive request.

It will build a NET_BUF from the received UDP data, then deliver it to the receiver.

Parameters
[in]ContextThe UDP RX token.

Definition at line 158 of file DxeUdpIoLib.c.

◆ UdpIoOnDgramSent()

VOID EFIAPI UdpIoOnDgramSent ( IN EFI_EVENT  Event,
IN VOID *  Context 
)

Request UdpIoOnDgramSentDpc as a DPC at TPL_CALLBACK.

Parameters
[in]EventThe event signaled.
[in]ContextThe UDP TX Token.

Definition at line 109 of file DxeUdpIoLib.c.

◆ UdpIoOnDgramSentDpc()

VOID EFIAPI UdpIoOnDgramSentDpc ( IN VOID *  Context)

The callback function when the packet is sent by UDP.

It will remove the packet from the local list then call the packet owner's callback function set by UdpIoSendDatagram.

Parameters
[in]ContextThe UDP TX Token.

Definition at line 76 of file DxeUdpIoLib.c.

◆ UdpIoRecvDatagram()

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 so a common usage model is to invoke this function inside its Callback function when the former packet is processed.

Parameters
[in]UdpIoThe UDP_IO to receive the packet from.
[in]CallBackThe call back function to execute when the packet is received.
[in]ContextThe opaque context passed to Callback.
[in]HeadLenThe length of the upper-layer's protocol header.
Return values
EFI_ALREADY_STARTEDThere is already a pending receive request. Only one receive request is supported at a time.
EFI_OUT_OF_RESOURCESFailed to allocate needed resources.
EFI_SUCCESSThe receive request is issued successfully.
EFI_UNSUPPORTEDThe UDP version in UDP_IO is not supported.

Definition at line 1084 of file DxeUdpIoLib.c.

◆ UdpIoRecycleDgram()

VOID EFIAPI UdpIoRecycleDgram ( IN VOID *  Context)

Recycle the received UDP data.

Parameters
[in]ContextThe UDP_RX_TOKEN.

Definition at line 128 of file DxeUdpIoLib.c.

◆ UdpIoSendDatagram()

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.

Parameters
[in]UdpIoThe UDP_IO to send the packet through.
[in]PacketThe packet to send.
[in]EndPointThe local and remote access point. Override the default address pair set during configuration.
[in]GatewayThe gateway to use.
[in]CallBackThe function being called when packet is transmitted or failed.
[in]ContextThe opaque parameter passed to CallBack.
Return values
EFI_OUT_OF_RESOURCESFailed to allocate resource for the packet.
EFI_SUCCESSThe packet is successfully delivered to UDP for transmission.

Definition at line 971 of file DxeUdpIoLib.c.