]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/HttpDxe/HttpProto.h
NetworkPkg: Making the HTTP IO timeout value programmable with PCD
[mirror_edk2.git] / NetworkPkg / HttpDxe / HttpProto.h
index ced8acac367c200f2d1e775cd27f2c33fe3d48ad..6b3e49090e6a7d2de2b88c56a299394c0e7965a4 100644 (file)
@@ -1,15 +1,9 @@
 /** @file\r
   The header files of miscellaneous routines for HttpDxe driver.\r
 \r
-Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>\r
 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
-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
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -47,7 +41,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define HTTP_BUFFER_SIZE_DEAULT      65535\r
 #define HTTP_MAX_SYN_BACK_LOG        5\r
 #define HTTP_CONNECTION_TIMEOUT      60\r
-#define HTTP_RESPONSE_TIMEOUT        5\r
 #define HTTP_DATA_RETRIES            12\r
 #define HTTP_FIN_TIMEOUT             2\r
 #define HTTP_KEEP_ALIVE_PROBES       6\r
@@ -59,7 +52,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 typedef struct _HTTP_SERVICE {\r
   UINT32                        Signature;\r
   EFI_SERVICE_BINDING_PROTOCOL  ServiceBinding;\r
-  EFI_HANDLE                    ImageHandle;\r
+  EFI_HANDLE                    Ip4DriverBindingHandle;\r
+  EFI_HANDLE                    Ip6DriverBindingHandle;\r
   EFI_HANDLE                    ControllerHandle;\r
   EFI_HANDLE                    Tcp4ChildHandle;\r
   EFI_HANDLE                    Tcp6ChildHandle;\r
@@ -87,9 +81,19 @@ typedef struct {
   EFI_TLS_VERSION               Version;\r
   EFI_TLS_CONNECTION_END        ConnectionEnd;\r
   EFI_TLS_VERIFY                VerifyMethod;\r
+  EFI_TLS_VERIFY_HOST           VerifyHost;\r
   EFI_TLS_SESSION_STATE         SessionState;\r
 } TLS_CONFIG_DATA;\r
 \r
+//\r
+// Callback data for HTTP_PARSER_CALLBACK()\r
+//\r
+typedef struct {\r
+  UINTN                         ParseDataLength;\r
+  VOID                          *ParseData;\r
+  VOID                          *Wrap;\r
+} HTTP_CALLBACK_DATA;\r
+\r
 typedef struct _HTTP_PROTOCOL {\r
   UINT32                        Signature;\r
   EFI_HTTP_PROTOCOL             Http;\r
@@ -116,18 +120,18 @@ typedef struct _HTTP_PROTOCOL {
   CHAR8                         *RemoteHost;\r
   UINT16                        RemotePort;\r
   EFI_IPv4_ADDRESS              RemoteAddr;\r
-  \r
+\r
   EFI_HANDLE                    Tcp6ChildHandle;\r
   EFI_TCP6_PROTOCOL             *Tcp6;\r
   EFI_TCP6_CONFIG_DATA          Tcp6CfgData;\r
   EFI_TCP6_OPTION               Tcp6Option;\r
-  \r
+\r
   EFI_TCP6_CONNECTION_TOKEN     Tcp6ConnToken;\r
   BOOLEAN                       IsTcp6ConnDone;\r
   EFI_TCP6_CLOSE_TOKEN          Tcp6CloseToken;\r
   BOOLEAN                       IsTcp6CloseDone;\r
   EFI_IPv6_ADDRESS              RemoteIpv6Addr;\r
\r
+\r
   //\r
   // Rx4Token or Rx6Token used for receiving HTTP header.\r
   //\r
@@ -148,7 +152,8 @@ typedef struct _HTTP_PROTOCOL {
   // HTTP message-body parser.\r
   //\r
   VOID                          *MsgParser;\r
-  \r
+  HTTP_CALLBACK_DATA            CallbackData;\r
+\r
   EFI_HTTP_VERSION              HttpVersion;\r
   UINT32                        TimeOutMillisec;\r
   BOOLEAN                       LocalAddressIsIPv6;\r
@@ -165,7 +170,8 @@ typedef struct _HTTP_PROTOCOL {
   // Https Support\r
   //\r
   BOOLEAN                          UseHttps;\r
-  \r
+\r
+  EFI_SERVICE_BINDING_PROTOCOL     *TlsSb;\r
   EFI_HANDLE                       TlsChildHandle; /// Tls ChildHandle\r
   TLS_CONFIG_DATA                  TlsConfigData;\r
   EFI_TLS_PROTOCOL                 *Tls;\r
@@ -209,7 +215,7 @@ typedef struct {
   )\r
 \r
 /**\r
-  The common notify function used in HTTP driver. \r
+  The common notify function used in HTTP driver.\r
 \r
   @param[in]  Event   The event signaled.\r
   @param[in]  Context The context.\r
@@ -286,14 +292,14 @@ HttpCreateTcpRxEventForHeader (
 **/\r
 EFI_STATUS\r
 HttpCreateTcpRxEvent (\r
-  IN  HTTP_TOKEN_WRAP      *Wrap \r
+  IN  HTTP_TOKEN_WRAP      *Wrap\r
   );\r
 \r
 /**\r
   Close Events for Tcp Receive Tokens for HTTP body and HTTP header.\r
 \r
   @param[in]  Wrap               Pointer to HTTP token's wrap data.\r
-  \r
+\r
 **/\r
 VOID\r
 HttpCloseTcpRxEvent (\r
@@ -301,12 +307,12 @@ HttpCloseTcpRxEvent (
   );\r
 \r
 /**\r
-  Intiialize the HTTP_PROTOCOL structure to the unconfigured state.\r
+  Initialize the HTTP_PROTOCOL structure to the unconfigured state.\r
 \r
   @param[in, out]  HttpInstance         Pointer to HTTP_PROTOCOL structure.\r
   @param[in]       IpVersion            Indicate us TCP4 protocol or TCP6 protocol.\r
 \r
-  @retval EFI_SUCCESS       HTTP_PROTOCOL structure is initialized successfully.                                          \r
+  @retval EFI_SUCCESS       HTTP_PROTOCOL structure is initialized successfully.\r
   @retval Others            Other error as indicated.\r
 \r
 **/\r
@@ -388,7 +394,7 @@ HttpConfigureTcp6 (
   );\r
 \r
 /**\r
-  Check existing TCP connection, if in error state, recover TCP4 connection. Then, \r
+  Check existing TCP connection, if in error state, recover TCP4 connection. Then,\r
   connect one TLS session if required.\r
 \r
   @param[in]  HttpInstance       The HTTP instance private data.\r
@@ -404,7 +410,7 @@ HttpConnectTcp4 (
   );\r
 \r
 /**\r
-  Check existing TCP connection, if in error state, recover TCP6 connection. Then, \r
+  Check existing TCP connection, if in error state, recover TCP6 connection. Then,\r
   connect one TLS session if required.\r
 \r
   @param[in]  HttpInstance       The HTTP instance private data.\r
@@ -446,7 +452,7 @@ HttpTransmitTcp (
   @param[in]  Map                The container of either user's transmit or receive\r
                                  token.\r
   @param[in]  Item               Current item to check against.\r
-  @param[in]  Context            The Token to check againist.\r
+  @param[in]  Context            The Token to check against.\r
 \r
   @retval EFI_ACCESS_DENIED      The token or event has already been enqueued in IP\r
   @retval EFI_SUCCESS            The current item isn't the same token/event as the\r
@@ -466,7 +472,7 @@ HttpTokenExist (
 \r
   @param[in]  Map                The container of TxToken.\r
   @param[in]  Item               Current item to check against.\r
-  @param[in]  Context            The Token to check againist.\r
+  @param[in]  Context            The Token to check against.\r
 \r
   @retval EFI_NOT_READY          The HTTP message is still queued in the list.\r
   @retval EFI_SUCCESS            The HTTP message has been sent out.\r
@@ -488,7 +494,7 @@ HttpTcpNotReady (
   @param[in]  Configure          The Flag indicates whether need to initialize session.\r
   @param[in]  TlsConfigure       The Flag indicates whether it's the new Tls session.\r
 \r
-  @retval EFI_SUCCESS            The initialization of session is done. \r
+  @retval EFI_SUCCESS            The initialization of session is done.\r
   @retval Others                 Other error as indicated.\r
 \r
 **/\r
@@ -501,11 +507,11 @@ HttpInitSession (
   );\r
 \r
 /**\r
-  Transmit the HTTP or HTTPS mssage by processing the associated HTTP token.\r
+  Transmit the HTTP or HTTPS message by processing the associated HTTP token.\r
 \r
   @param[in]  Map                The container of TxToken or Tx6Token.\r
   @param[in]  Item               Current item to check against.\r
-  @param[in]  Context            The Token to check againist.\r
+  @param[in]  Context            The Token to check against.\r
 \r
   @retval EFI_OUT_OF_RESOURCES   Failed to allocate resources.\r
   @retval EFI_SUCCESS            The HTTP message is queued into TCP transmit\r
@@ -525,7 +531,7 @@ HttpTcpTransmit (
 \r
   @param[in]  Map                The container of Rx4Token or Rx6Token.\r
   @param[in]  Item               Current item to check against.\r
-  @param[in]  Context            The Token to check againist.\r
+  @param[in]  Context            The Token to check against.\r
 \r
   @retval EFI_SUCCESS            The HTTP response is queued into TCP receive\r
                                  queue.\r
@@ -545,10 +551,10 @@ HttpTcpReceive (
 \r
   @param[in]       HttpInstance    The HTTP instance private data.\r
   @param[in, out]  SizeofHeaders   The HTTP header length.\r
-  @param[in, out]  BufferSize      The size of buffer to cacahe the header message.\r
+  @param[in, out]  BufferSize      The size of buffer to cache the header message.\r
   @param[in]       Timeout         The time to wait for receiving the header packet.\r
 \r
-  @retval EFI_SUCCESS              The HTTP header is received.                          \r
+  @retval EFI_SUCCESS              The HTTP header is received.\r
   @retval Others                   Other errors as indicated.\r
 \r
 **/\r
@@ -566,7 +572,7 @@ HttpTcpReceiveHeader (
   @param[in]  Wrap               The HTTP token's wrap data.\r
   @param[in]  HttpMsg            The HTTP message data.\r
 \r
-  @retval EFI_SUCCESS            The HTTP body is received.                          \r
+  @retval EFI_SUCCESS            The HTTP body is received.\r
   @retval Others                 Other error as indicated.\r
 \r
 **/\r
@@ -580,7 +586,7 @@ HttpTcpReceiveBody (
   Clean up Tcp Tokens while the Tcp transmission error occurs.\r
 \r
   @param[in]  Wrap               Pointer to HTTP token's wrap data.\r
-  \r
+\r
 **/\r
 VOID\r
 HttpTcpTokenCleanup (\r
@@ -593,7 +599,7 @@ HttpTcpTokenCleanup (
   @param[in]  Wrap                Pointer to HTTP token's wrap data.\r
 \r
   @retval EFI_SUCCESS             Allocation succeeded.\r
-  @retval EFI_OUT_OF_RESOURCES    Failed to complete the opration due to lack of resources.\r
+  @retval EFI_OUT_OF_RESOURCES    Failed to complete the operation due to lack of resources.\r
   @retval EFI_NOT_READY           Can't find a corresponding TxToken.\r
 \r
 **/\r