-/** @file
- The helper routines to access UDP service. It is used by both
- DHCP and MTFTP.
-
-Copyright (c) 2006 - 2008, 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.
-
-**/
-
-#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;
-
-typedef 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')
-} UDP_IO_SIGNATURE_TYPE;
-
-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;
- 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;
-
-struct _UDP_IO_PORT {
- UINT32 Signature;
- 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;
-
- 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
- );
-
-/**
- Create a UDP IO port to access the UDP service. It will
- create and configure a UDP child.
-
- @param Controller The controller that has the UDP service binding
- protocol installed.
- @param ImageHandle The image handle for the driver.
- @param Configure The function to configure the created UDP child
- @param Context The opaque parameter for the Configure funtion.
-
- @return A point to just created UDP IO port or NULL if failed.
-
-**/
-UDP_IO_PORT *
-EFIAPI
-UdpIoCreatePort (
- IN EFI_HANDLE Controller,
- IN EFI_HANDLE ImageHandle,
- IN UDP_IO_CONFIG Configure,
- IN VOID *Context
- );
-
-/**
- Free the UDP IO port and all its related resources including
- all the transmitted packet.
-
- @param UdpIo The UDP IO port to free.
-
- @retval EFI_SUCCESS The UDP IO port is freed.
-
-**/
-EFI_STATUS
-EFIAPI
-UdpIoFreePort (
- IN UDP_IO_PORT *UdpIo
- );
-
-/**
- Clean up the UDP IO port. It will release all the transmitted
- datagrams and receive request. It will also configure NULL the
- UDP child.
-
- @param UdpIo UDP IO port to clean up.
-
- @return None
-
-**/
-VOID
-EFIAPI
-UdpIoCleanPort (
- IN UDP_IO_PORT *UdpIo
- );
-
-/**
- Send a packet through the UDP IO port.
-
- @param UdpIo The UDP IO Port to send the packet through
- @param Packet The packet to send
- @param EndPoint The local and remote access point
- @param Gateway The gateway to use
- @param CallBack The call back function to call when packet is
- transmitted or failed.
- @param Context The opque parameter to the CallBack
-
- @retval EFI_OUT_OF_RESOURCES Failed to allocate resource for the packet
- @retval EFI_SUCCESS The packet is successfully delivered to UDP for
- transmission.
-
-**/
-EFI_STATUS
-EFIAPI
-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
- );
-
+/** @file\r
+ The helper routines to access UDP service. It is used by both\r
+ DHCP and MTFTP.\r
+\r
+Copyright (c) 2006 - 2008, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution. The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#ifndef _UDP4IO_H_\r
+#define _UDP4IO_H_\r
+\r
+#include <Protocol/Udp4.h>\r
+\r
+#include <Library/UdpIoLib.h>\r
+#include <Library/NetLib.h>\r
+\r
+typedef struct _UDP_IO_PORT UDP_IO_PORT;\r
+\r
+typedef enum {\r
+ UDP_IO_RX_SIGNATURE = EFI_SIGNATURE_32 ('U', 'D', 'P', 'R'),\r
+ UDP_IO_TX_SIGNATURE = EFI_SIGNATURE_32 ('U', 'D', 'P', 'T'),\r
+ UDP_IO_SIGNATURE = EFI_SIGNATURE_32 ('U', 'D', 'P', 'I')\r
+} UDP_IO_SIGNATURE_TYPE;\r
+\r
+typedef struct {\r
+ IP4_ADDR LocalAddr;\r
+ UINT16 LocalPort;\r
+ IP4_ADDR RemoteAddr;\r
+ UINT16 RemotePort;\r
+} UDP_POINTS;\r
+\r
+//\r
+// This prototype is used by both receive and transmission.\r
+// When receiving Netbuf is allocated by UDP access point, and\r
+// released by user. When transmitting, the NetBuf is from user,\r
+// and provided to the callback as a reference.\r
+//\r
+typedef\r
+VOID\r
+(*UDP_IO_CALLBACK) (\r
+ IN NET_BUF *Packet,\r
+ IN UDP_POINTS *Points,\r
+ IN EFI_STATUS IoStatus,\r
+ IN VOID *Context\r
+ );\r
+\r
+//\r
+// Each receive request is wrapped in an UDP_RX_TOKEN. Upon completion,\r
+// the CallBack will be called. Only one receive request is send to UDP.\r
+// HeadLen gives the length of the application's header. UDP_IO will\r
+// make the application's header continous before delivery up.\r
+//\r
+typedef struct {\r
+ UINT32 Signature;\r
+ UDP_IO_PORT *UdpIo;\r
+\r
+ UDP_IO_CALLBACK CallBack;\r
+ VOID *Context;\r
+\r
+ UINT32 HeadLen;\r
+ EFI_UDP4_COMPLETION_TOKEN UdpToken;\r
+} UDP_RX_TOKEN;\r
+\r
+//\r
+// Each transmit request is wrapped in an UDP_TX_TOKEN. Upon completion,\r
+// the CallBack will be called. There can be several transmit requests.\r
+//\r
+typedef struct {\r
+ UINT32 Signature;\r
+ LIST_ENTRY Link;\r
+ UDP_IO_PORT *UdpIo;\r
+\r
+ UDP_IO_CALLBACK CallBack;\r
+ NET_BUF *Packet;\r
+ VOID *Context;\r
+\r
+ EFI_UDP4_SESSION_DATA UdpSession;\r
+ EFI_IPv4_ADDRESS Gateway;\r
+\r
+ EFI_UDP4_COMPLETION_TOKEN UdpToken;\r
+ EFI_UDP4_TRANSMIT_DATA UdpTxData;\r
+} UDP_TX_TOKEN;\r
+\r
+struct _UDP_IO_PORT {\r
+ UINT32 Signature;\r
+ LIST_ENTRY Link;\r
+ INTN RefCnt;\r
+\r
+ //\r
+ // Handle used to create/destory UDP child\r
+ //\r
+ EFI_HANDLE Controller;\r
+ EFI_HANDLE Image;\r
+ EFI_HANDLE UdpHandle;\r
+\r
+ EFI_UDP4_PROTOCOL *Udp;\r
+ EFI_UDP4_CONFIG_DATA UdpConfig;\r
+ EFI_SIMPLE_NETWORK_MODE SnpMode;\r
+\r
+ LIST_ENTRY SentDatagram;\r
+ UDP_RX_TOKEN *RecvRequest;\r
+};\r
+\r
+typedef\r
+EFI_STATUS\r
+(*UDP_IO_CONFIG) (\r
+ IN UDP_IO_PORT *UdpIo,\r
+ IN VOID *Context\r
+ );\r
+\r
+typedef\r
+BOOLEAN\r
+(*UDP_IO_TO_CANCEL) (\r
+ IN UDP_TX_TOKEN *Token,\r
+ IN VOID *Context\r
+ );\r
+\r
+/**\r
+ Create a UDP IO port to access the UDP service. It will\r
+ create and configure a UDP child.\r
+\r
+ @param Controller The controller that has the UDP service binding\r
+ protocol installed.\r
+ @param ImageHandle The image handle for the driver.\r
+ @param Configure The function to configure the created UDP child\r
+ @param Context The opaque parameter for the Configure funtion.\r
+\r
+ @return A point to just created UDP IO port or NULL if failed.\r
+\r
+**/\r
+UDP_IO_PORT *\r
+EFIAPI\r
+UdpIoCreatePort (\r
+ IN EFI_HANDLE Controller,\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN UDP_IO_CONFIG Configure,\r
+ IN VOID *Context\r
+ );\r
+\r
+/**\r
+ Free the UDP IO port and all its related resources including\r
+ all the transmitted packet.\r
+\r
+ @param UdpIo The UDP IO port to free.\r
+\r
+ @retval EFI_SUCCESS The UDP IO port is freed.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+UdpIoFreePort (\r
+ IN UDP_IO_PORT *UdpIo\r
+ );\r
+\r
+/**\r
+ Clean up the UDP IO port. It will release all the transmitted\r
+ datagrams and receive request. It will also configure NULL the\r
+ UDP child.\r
+\r
+ @param UdpIo UDP IO port to clean up.\r
+\r
+ @return None\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+UdpIoCleanPort (\r
+ IN UDP_IO_PORT *UdpIo\r
+ );\r
+\r
+/**\r
+ Send a packet through the UDP IO port.\r
+\r
+ @param UdpIo The UDP IO Port to send the packet through\r
+ @param Packet The packet to send\r
+ @param EndPoint The local and remote access point\r
+ @param Gateway The gateway to use\r
+ @param CallBack The call back function to call when packet is\r
+ transmitted or failed.\r
+ @param Context The opque parameter to the CallBack\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Failed to allocate resource for the packet\r
+ @retval EFI_SUCCESS The packet is successfully delivered to UDP for\r
+ transmission.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+UdpIoSendDatagram (\r
+ IN UDP_IO_PORT *UdpIo,\r
+ IN NET_BUF *Packet,\r
+ IN UDP_POINTS *EndPoint, OPTIONAL\r
+ IN IP4_ADDR Gateway,\r
+ IN UDP_IO_CALLBACK CallBack,\r
+ IN VOID *Context\r
+ );\r
+\r
/**\r
Cancel a single sent datagram.\r
\r
\r
@return None\r
\r
-**/
-VOID
-EFIAPI
-UdpIoCancelSentDatagram (
- IN UDP_IO_PORT *UdpIo,
- IN NET_BUF *Packet
- );
-
-/**
- Issue a receive request to the UDP IO port.
-
- @param UdpIo The UDP IO port to recieve the packet from.
- @param CallBack The call back function to execute when receive
- finished.
- @param Context The opque context to the call back
- @param HeadLen The lenght of the application's header
-
- @retval EFI_ALREADY_STARTED There is already a pending receive request. Only
- one receive request is supported.
- @retval EFI_OUT_OF_RESOURCES Failed to allocate some resource.
- @retval EFI_SUCCESS The receive request is issued successfully.
-
-**/
-EFI_STATUS
-EFIAPI
-UdpIoRecvDatagram (
- IN UDP_IO_PORT *UdpIo,
- IN UDP_IO_CALLBACK CallBack,
- IN VOID *Context,
- IN UINT32 HeadLen
- );
-#endif
+**/\r
+VOID\r
+EFIAPI\r
+UdpIoCancelSentDatagram (\r
+ IN UDP_IO_PORT *UdpIo,\r
+ IN NET_BUF *Packet\r
+ );\r
+\r
+/**\r
+ Issue a receive request to the UDP IO port.\r
+\r
+ @param UdpIo The UDP IO port to recieve the packet from.\r
+ @param CallBack The call back function to execute when receive\r
+ finished.\r
+ @param Context The opque context to the call back\r
+ @param HeadLen The lenght of the application's header\r
+\r
+ @retval EFI_ALREADY_STARTED There is already a pending receive request. Only\r
+ one receive request is supported.\r
+ @retval EFI_OUT_OF_RESOURCES Failed to allocate some resource.\r
+ @retval EFI_SUCCESS The receive request is issued successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+UdpIoRecvDatagram (\r
+ IN UDP_IO_PORT *UdpIo,\r
+ IN UDP_IO_CALLBACK CallBack,\r
+ IN VOID *Context,\r
+ IN UINT32 HeadLen\r
+ );\r
+#endif\r