]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Protocol/Tcp4.h
Clarify the UEFI/EFI specification version in file header comments.
[mirror_edk2.git] / MdePkg / Include / Protocol / Tcp4.h
index 87dea25e32004b0bc4380aeda68707cb3e111e40..b233fd9b7127b73ae72eba2bd7f9105cb28c4e03 100644 (file)
@@ -1,25 +1,28 @@
 /** @file\r
-  EFI TCPv4 Protocol Definition\r
+  EFI TCPv4(Transmission Control Protocol version 4) Protocol Definition\r
   The EFI TCPv4 Service Binding Protocol is used to locate EFI TCPv4 Protocol drivers to create\r
-  and destroy child of the driver to communicate with other host using TCP protocol.      \r
-  The EFI TCPv4 Protocol provides services to send and receive data stream.     \r
+  and destroy child of the driver to communicate with other host using TCP protocol.\r
+  The EFI TCPv4 Protocol provides services to send and receive data stream.\r
 \r
-  Copyright (c) 2006, 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
+  Copyright (c) 2006 - 2009, 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
+  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
-  Module Name:  Tcp4.h\r
+  @par Revision Reference:          \r
+  This Protocol is introduced in UEFI Specification 2.0\r
 \r
 **/\r
 \r
 #ifndef __EFI_TCP4_PROTOCOL_H__\r
 #define __EFI_TCP4_PROTOCOL_H__\r
 \r
+#include <Protocol/Ip4.h>\r
+\r
 #define EFI_TCP4_SERVICE_BINDING_PROTOCOL_GUID \\r
   { \\r
     0x00720665, 0x67EB, 0x4a99, {0xBA, 0xF7, 0xD3, 0xC3, 0x3A, 0x1C, 0x7C, 0xC9 } \\r
@@ -33,6 +36,7 @@
 typedef struct _EFI_TCP4_PROTOCOL EFI_TCP4_PROTOCOL;\r
 \r
 typedef struct {\r
+  EFI_HANDLE              InstanceHandle;\r
   EFI_IPv4_ADDRESS        LocalAddress;\r
   UINT16                  LocalPort;\r
   EFI_IPv4_ADDRESS        RemoteAddress;\r
@@ -41,7 +45,7 @@ typedef struct {
 \r
 typedef struct {\r
   EFI_HANDLE              DriverHandle;\r
-  UINT                  ServiceCount;\r
+  UINT32                  ServiceCount;\r
   EFI_TCP4_SERVICE_POINT  Services[1];\r
 } EFI_TCP4_VARIABLE_DATA;\r
 \r
@@ -56,16 +60,16 @@ typedef struct {
 } EFI_TCP4_ACCESS_POINT;\r
 \r
 typedef struct {\r
-  UINT                  ReceiveBufferSize;\r
-  UINT                  SendBufferSize;\r
-  UINT                  MaxSynBackLog;\r
-  UINT                  ConnectionTimeout;\r
-  UINT                  DataRetries;\r
-  UINT                  FinTimeout;\r
-  UINT                  TimeWaitTimeout;\r
-  UINT                  KeepAliveProbes;\r
-  UINT                  KeepAliveTime;\r
-  UINT                  KeepAliveInterval;\r
+  UINT32                  ReceiveBufferSize;\r
+  UINT32                  SendBufferSize;\r
+  UINT32                  MaxSynBackLog;\r
+  UINT32                  ConnectionTimeout;\r
+  UINT32                  DataRetries;\r
+  UINT32                  FinTimeout;\r
+  UINT32                  TimeWaitTimeout;\r
+  UINT32                  KeepAliveProbes;\r
+  UINT32                  KeepAliveTime;\r
+  UINT32                  KeepAliveInterval;\r
   BOOLEAN                 EnableNagle;\r
   BOOLEAN                 EnableTimeStamp;\r
   BOOLEAN                 EnableWindowScaling;\r
@@ -84,13 +88,16 @@ typedef struct {
   // Access Point\r
   //\r
   EFI_TCP4_ACCESS_POINT   AccessPoint;\r
-                          \r
-  //                      \r
-  // TCP Control Options  \r
-  //                      \r
+\r
+  //\r
+  // TCP Control Options\r
+  //\r
   EFI_TCP4_OPTION         *ControlOption;\r
 } EFI_TCP4_CONFIG_DATA;\r
 \r
+///\r
+/// TCP4 connnection state\r
+///\r
 typedef enum {\r
   Tcp4StateClosed         = 0,\r
   Tcp4StateListen         = 1,\r
@@ -120,22 +127,22 @@ typedef struct {
 } EFI_TCP4_LISTEN_TOKEN;\r
 \r
 typedef struct {\r
-  UINTN FragmentLength;\r
-  VOID  *FragmentBuffer;\r
+  UINT32 FragmentLength;\r
+  VOID   *FragmentBuffer;\r
 } EFI_TCP4_FRAGMENT_DATA;\r
 \r
 typedef struct {\r
   BOOLEAN                   UrgentFlag;\r
-  IN OUT UINTN              DataLength;\r
-  UINT                    FragmentCount;\r
+  UINT32                    DataLength;\r
+  UINT32                    FragmentCount;\r
   EFI_TCP4_FRAGMENT_DATA    FragmentTable[1];\r
-} EFI_TCP4_RECEIVE_DATA;    \r
+} EFI_TCP4_RECEIVE_DATA;\r
 \r
-typedef struct {            \r
+typedef struct {\r
   BOOLEAN                   Push;\r
   BOOLEAN                   Urgent;\r
-  UINT                    DataLength;\r
-  UINT                    FragmentCount;\r
+  UINT32                    DataLength;\r
+  UINT32                    FragmentCount;\r
   EFI_TCP4_FRAGMENT_DATA    FragmentTable[1];\r
 } EFI_TCP4_TRANSMIT_DATA;\r
 \r
@@ -171,22 +178,21 @@ typedef struct {
 \r
   @retval EFI_SUCCESS           The mode data was read.\r
   @retval EFI_INVALID_PARAMETER This is NULL.\r
-  @retval EFI_NOT_STARTED       No configuration data is available because this instance hasn¡¯t\r
+  @retval EFI_NOT_STARTED       No configuration data is available because this instance hasn't\r
                                  been started.\r
 \r
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_TCP4_GET_MODE_DATA) (\r
-  IN  EFI_TCP4_PROTOCOL                  *This,\r
-  OUT EFI_TCP4_CONNECTION_STATE          *Tcp4State      OPTIONAL,\r
-  OUT EFI_TCP4_CONFIG_DATA               *Tcp4ConfigData OPTIONAL,\r
-  OUT EFI_IP4_MODE_DATA                  *Ip4ModeData    OPTIONAL,\r
-  OUT EFI_MANAGED_NETWORK_CONFIG_DATA    *MnpConfigData  OPTIONAL,\r
-  OUT EFI_SIMPLE_NETWORK_MODE            *SnpModeData    OPTIONAL\r
-  )\r
-;\r
-  \r
+(EFIAPI *EFI_TCP4_GET_MODE_DATA)(\r
+  IN CONST  EFI_TCP4_PROTOCOL                  *This,\r
+  OUT       EFI_TCP4_CONNECTION_STATE          *Tcp4State      OPTIONAL,\r
+  OUT       EFI_TCP4_CONFIG_DATA               *Tcp4ConfigData OPTIONAL,\r
+  OUT       EFI_IP4_MODE_DATA                  *Ip4ModeData    OPTIONAL,\r
+  OUT       EFI_MANAGED_NETWORK_CONFIG_DATA    *MnpConfigData  OPTIONAL,\r
+  OUT       EFI_SIMPLE_NETWORK_MODE            *SnpModeData    OPTIONAL\r
+  );\r
+\r
 /**\r
   Initialize or brutally reset the operational parameters for this EFI TCPv4 instance.\r
 \r
@@ -209,12 +215,11 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_TCP4_CONFIGURE) (\r
+(EFIAPI *EFI_TCP4_CONFIGURE)(\r
   IN EFI_TCP4_PROTOCOL                   *This,\r
   IN EFI_TCP4_CONFIG_DATA                *TcpConfigData OPTIONAL\r
-  )\r
-;\r
-    \r
+  );\r
+\r
 \r
 /**\r
   Add or delete a route entry to the route table\r
@@ -251,14 +256,13 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_TCP4_ROUTES) (\r
+(EFIAPI *EFI_TCP4_ROUTES)(\r
   IN EFI_TCP4_PROTOCOL                   *This,\r
   IN BOOLEAN                             DeleteRoute,\r
   IN EFI_IPv4_ADDRESS                    *SubnetAddress,\r
   IN EFI_IPv4_ADDRESS                    *SubnetMask,\r
   IN EFI_IPv4_ADDRESS                    *GatewayAddress\r
-  )\r
-;  \r
+  );\r
 \r
 /**\r
   Initiate a nonblocking TCP connection request for an active TCP instance.\r
@@ -266,10 +270,9 @@ EFI_STATUS
   @param  This                  Pointer to the EFI_TCP4_PROTOCOL instance.\r
   @param  ConnectionToken       Pointer to the connection token to return when the TCP three\r
                                 way handshake finishes.\r
-                                 \r
+\r
   @retval EFI_SUCCESS           The connection request is successfully initiated and the state\r
-                                - of this TCPv4 instance has been changed to\r
-                                - Tcp4StateSynSent.\r
+                                of this TCPv4 instance has been changed to Tcp4StateSynSent.\r
   @retval EFI_NOT_STARTED       This EFI TCPv4 Protocol instance has not been configured.\r
   @retval EFI_ACCESS_DENIED     One or more of the following conditions are TRUE:\r
                                 - This instance is not configured as an active one.\r
@@ -278,18 +281,17 @@ EFI_STATUS
                                 - This is NULL.\r
                                 - ConnectionToken is NULL.\r
                                 - ConnectionToken->CompletionToken.Event is NULL.\r
-  @retval EFI_OUT_OF_RESOURCES  The driver can¡¯t allocate enough resource to initiate the activeopen.\r
+  @retval EFI_OUT_OF_RESOURCES  The driver can't allocate enough resource to initiate the activ eopen.\r
   @retval EFI_DEVICE_ERROR      An unexpected system or network error occurred.\r
 \r
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_TCP4_CONNECT) (\r
+(EFIAPI *EFI_TCP4_CONNECT)(\r
   IN EFI_TCP4_PROTOCOL                   *This,\r
   IN EFI_TCP4_CONNECTION_TOKEN           *ConnectionToken\r
-  )\r
-;  \r
-  \r
+  );\r
+\r
 \r
 /**\r
   Listen on the passive instance to accept an incoming connection request. This is a nonblocking operation.\r
@@ -314,11 +316,10 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_TCP4_ACCEPT) (\r
+(EFIAPI *EFI_TCP4_ACCEPT)(\r
   IN EFI_TCP4_PROTOCOL                   *This,\r
   IN EFI_TCP4_LISTEN_TOKEN               *ListenToken\r
-  )\r
-;    \r
+  );\r
 \r
 /**\r
   Queues outgoing data into the transmit queue.\r
@@ -353,11 +354,10 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_TCP4_TRANSMIT) (\r
+(EFIAPI *EFI_TCP4_TRANSMIT)(\r
   IN EFI_TCP4_PROTOCOL                   *This,\r
   IN EFI_TCP4_IO_TOKEN                   *Token\r
-  )\r
-;      \r
+  );\r
 \r
 \r
 /**\r
@@ -397,15 +397,14 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_TCP4_RECEIVE) (\r
+(EFIAPI *EFI_TCP4_RECEIVE)(\r
   IN EFI_TCP4_PROTOCOL                   *This,\r
   IN EFI_TCP4_IO_TOKEN                   *Token\r
-  )\r
-;       \r
-   \r
+  );\r
+\r
 /**\r
   Disconnecting a TCP connection gracefully or reset a TCP connection. This function is a\r
-  nonblocking operation.                                                                                                                                                                        \r
+  nonblocking operation.\r
 \r
   @param  This       Pointer to the EFI_TCP4_PROTOCOL instance.\r
   @param  CloseToken Pointer to the close token to return when operation finishes.\r
@@ -428,11 +427,10 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_TCP4_CLOSE) (\r
+(EFIAPI *EFI_TCP4_CLOSE)(\r
   IN EFI_TCP4_PROTOCOL                   *This,\r
   IN EFI_TCP4_CLOSE_TOKEN                *CloseToken\r
-  )\r
-;      \r
+  );\r
 \r
 /**\r
   Abort an asynchronous connection, listen, transmission or receive request.\r
@@ -447,21 +445,23 @@ EFI_STATUS
                 EFI_TCP4_COMPLETION_TOKEN is defined in\r
                 EFI_TCP4_PROTOCOL.Connect().\r
 \r
-  @retval  EFI_SUCCESS           Incoming or outgoing data was processed.\r
-  @retval  EFI_INVALID_PARAMETER This is NULL.\r
-  @retval  EFI_DEVICE_ERROR      An unexpected system or network error occurred.\r
-  @retval  EFI_NOT_READY         No incoming or outgoing data is processed.\r
-  @retval  EFI_TIMEOUT           Data was dropped out of the transmission or receive queue.\r
-                                 Consider increasing the polling rate.\r
+  @retval  EFI_SUCCESS             The asynchronous I/O request is aborted and Token->Event\r
+                                   is signaled.\r
+  @retval  EFI_INVALID_PARAMETER   This is NULL.\r
+  @retval  EFI_NOT_STARTED         This instance hasn't been configured.\r
+  @retval  EFI_NO_MAPPING          When using the default address, configuration\r
+                                   (DHCP, BOOTP,RARP, etc.) hasn't finished yet.\r
+  @retval  EFI_NOT_FOUND           The asynchronous I/O request isn't found in the \r
+                                   transmission or receive queue. It has either \r
+                                   completed or wasn't issued by Transmit() and Receive().\r
 \r
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_TCP4_CANCEL) (\r
+(EFIAPI *EFI_TCP4_CANCEL)(\r
   IN EFI_TCP4_PROTOCOL                   *This,\r
   IN EFI_TCP4_COMPLETION_TOKEN           *Token OPTIONAL\r
-  )\r
-;      \r
+  );\r
 \r
 \r
 /**\r
@@ -479,11 +479,17 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_TCP4_POLL) (\r
+(EFIAPI *EFI_TCP4_POLL)(\r
   IN EFI_TCP4_PROTOCOL                   *This\r
-  )\r
-;      \r
-\r
+  );\r
+\r
+///\r
+/// The EFI_TCP4_PROTOCOL defines the EFI TCPv4 Protocol child to be used by \r
+/// any network drivers or applications to send or receive data stream. \r
+/// It can either listen on a specified port as a service or actively connected \r
+/// to remote peer as a client. Each instance has its own independent settings, \r
+/// such as the routing table.\r
+///\r
 struct _EFI_TCP4_PROTOCOL {\r
   EFI_TCP4_GET_MODE_DATA                 GetModeData;\r
   EFI_TCP4_CONFIGURE                     Configure;\r
@@ -497,10 +503,6 @@ struct _EFI_TCP4_PROTOCOL {
   EFI_TCP4_POLL                          Poll;\r
 };\r
 \r
-#define EFI_CONNECTION_FIN               EFIERR (104)\r
-#define EFI_CONNECTION_RESET             EFIERR (105)\r
-#define EFI_CONNECTION_REFUSED           EFIERR (106)\r
-\r
 extern EFI_GUID gEfiTcp4ServiceBindingProtocolGuid;\r
 extern EFI_GUID gEfiTcp4ProtocolGuid;\r
 \r