diff options
author | vanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524> | 2007-07-23 09:17:39 +0000 |
---|---|---|
committer | vanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524> | 2007-07-23 09:17:39 +0000 |
commit | cbf316f20726bb31b7c37424601643790dbd02d9 (patch) | |
tree | 8071829b997c64b5b2c904f6008879d97719a10e /MdeModulePkg/Include/Library/UdpIoLib.h | |
parent | da89d703c4d412fe87f07307bcb22dfe8b7b2f4b (diff) | |
download | edk2-platforms-cbf316f20726bb31b7c37424601643790dbd02d9.tar.xz |
1. Import NetLib, IpIoLib and UdpIoLib class definitions
2. Import DxeNetLib, DxeIpIoLib and DxeUdpIoLib libraries instances
2. Port Ip4Config module
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3405 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg/Include/Library/UdpIoLib.h')
-rw-r--r-- | MdeModulePkg/Include/Library/UdpIoLib.h | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/MdeModulePkg/Include/Library/UdpIoLib.h b/MdeModulePkg/Include/Library/UdpIoLib.h new file mode 100644 index 0000000000..3f49cc9209 --- /dev/null +++ b/MdeModulePkg/Include/Library/UdpIoLib.h @@ -0,0 +1,177 @@ +/** @file + +Copyright (c) 2006, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + +Module Name: + + Udp4Io.h + +Abstract: + + The helper routines to access UDP service. It is used by both + DHCP and MTFTP. + + +**/ + +#ifndef _UDP4IO_H_ +#define _UDP4IO_H_ + +#include <PiDxe.h>
+
+#include <Protocol/Udp4.h>
+
+#include <Library/UdpIoLib.h> +#include <Library/NetLib.h> + +typedef struct _UDP_IO_PORT UDP_IO_PORT; + +enum { + UDP_IO_RX_SIGNATURE = EFI_SIGNATURE_32 ('U', 'D', 'P', 'R'), + UDP_IO_TX_SIGNATURE = EFI_SIGNATURE_32 ('U', 'D', 'P', 'T'), + UDP_IO_SIGNATURE = EFI_SIGNATURE_32 ('U', 'D', 'P', 'I'), +}; + +typedef struct { + IP4_ADDR LocalAddr; + UINT16 LocalPort; + IP4_ADDR RemoteAddr; + UINT16 RemotePort; +} UDP_POINTS; + +// +// This prototype is used by both receive and transmission. +// When receiving Netbuf is allocated by UDP access point, and +// released by user. When transmitting, the NetBuf is from user, +// and provided to the callback as a reference. +// +typedef +VOID +(*UDP_IO_CALLBACK) ( + IN NET_BUF *Packet, + IN UDP_POINTS *Points, + IN EFI_STATUS IoStatus, + IN VOID *Context + ); + +// +// Each receive request is wrapped in an UDP_RX_TOKEN. Upon completion, +// the CallBack will be called. Only one receive request is send to UDP. +// HeadLen gives the length of the application's header. UDP_IO will +// make the application's header continous before delivery up. +// +typedef struct { + UINT32 Signature; + UDP_IO_PORT *UdpIo; + + UDP_IO_CALLBACK CallBack; + VOID *Context; + + UINT32 HeadLen; + EFI_UDP4_COMPLETION_TOKEN UdpToken; +} UDP_RX_TOKEN; + +// +// Each transmit request is wrapped in an UDP_TX_TOKEN. Upon completion, +// the CallBack will be called. There can be several transmit requests. +// +typedef struct { + UINT32 Signature; + NET_LIST_ENTRY Link; + UDP_IO_PORT *UdpIo; + + UDP_IO_CALLBACK CallBack; + NET_BUF *Packet; + VOID *Context; + + EFI_UDP4_SESSION_DATA UdpSession; + EFI_IPv4_ADDRESS Gateway; + + EFI_UDP4_COMPLETION_TOKEN UdpToken; + EFI_UDP4_TRANSMIT_DATA UdpTxData; +} UDP_TX_TOKEN; + +typedef struct _UDP_IO_PORT { + UINT32 Signature; + NET_LIST_ENTRY Link; + INTN RefCnt; + + // + // Handle used to create/destory UDP child + // + EFI_HANDLE Controller; + EFI_HANDLE Image; + EFI_HANDLE UdpHandle; + + EFI_UDP4_PROTOCOL *Udp; + EFI_UDP4_CONFIG_DATA UdpConfig; + EFI_SIMPLE_NETWORK_MODE SnpMode; + + NET_LIST_ENTRY SentDatagram; + UDP_RX_TOKEN *RecvRequest; +}; + +typedef +EFI_STATUS +(*UDP_IO_CONFIG) ( + IN UDP_IO_PORT *UdpIo, + IN VOID *Context + ); + +typedef +BOOLEAN +(*UDP_IO_TO_CANCEL) ( + IN UDP_TX_TOKEN *Token, + IN VOID *Context + ); + +UDP_IO_PORT * +UdpIoCreatePort ( + IN EFI_HANDLE Controller, + IN EFI_HANDLE ImageHandle, + IN UDP_IO_CONFIG Configure, + IN VOID *Context + ); + +EFI_STATUS +UdpIoFreePort ( + IN UDP_IO_PORT *UdpIo + ); + +VOID +UdpIoCleanPort ( + IN UDP_IO_PORT *UdpIo + ); + +EFI_STATUS +UdpIoSendDatagram ( + IN UDP_IO_PORT *UdpIo, + IN NET_BUF *Packet, + IN UDP_POINTS *EndPoint, OPTIONAL + IN IP4_ADDR Gateway, + IN UDP_IO_CALLBACK CallBack, + IN VOID *Context + ); + +VOID +UdpIoCancelSentDatagram ( + IN UDP_IO_PORT *UdpIo, + IN NET_BUF *Packet + ); + +EFI_STATUS +UdpIoRecvDatagram ( + IN UDP_IO_PORT *UdpIo, + IN UDP_IO_CALLBACK CallBack, + IN VOID *Context, + IN UINT32 HeadLen + ); +#endif |