REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the NetworkPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Maciej Rabeda <maciej.rabeda@linux.intel.com>
		
			
				
	
	
		
			623 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			623 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  The header files of miscellaneous routines for HttpDxe driver.
 | 
						|
 | 
						|
Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>
 | 
						|
(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
 | 
						|
SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef __EFI_HTTP_PROTO_H__
 | 
						|
#define __EFI_HTTP_PROTO_H__
 | 
						|
 | 
						|
#define DEF_BUF_LEN  2048
 | 
						|
 | 
						|
#define HTTP_SERVICE_SIGNATURE  SIGNATURE_32('H', 't', 't', 'S')
 | 
						|
 | 
						|
#define HTTP_SERVICE_FROM_PROTOCOL(a) \
 | 
						|
  CR ( \
 | 
						|
  (a), \
 | 
						|
  HTTP_SERVICE, \
 | 
						|
  ServiceBinding, \
 | 
						|
  HTTP_SERVICE_SIGNATURE \
 | 
						|
  )
 | 
						|
 | 
						|
//
 | 
						|
// The state of HTTP protocol. It starts from UNCONFIGED.
 | 
						|
//
 | 
						|
#define HTTP_STATE_UNCONFIGED      0
 | 
						|
#define HTTP_STATE_HTTP_CONFIGED   1
 | 
						|
#define HTTP_STATE_TCP_CONFIGED    2
 | 
						|
#define HTTP_STATE_TCP_UNCONFIGED  3
 | 
						|
#define HTTP_STATE_TCP_CONNECTED   4
 | 
						|
#define HTTP_STATE_TCP_CLOSED      5
 | 
						|
 | 
						|
//
 | 
						|
// TCP configured data.
 | 
						|
//
 | 
						|
#define HTTP_TOS_DEAULT           8
 | 
						|
#define HTTP_TTL_DEAULT           255
 | 
						|
#define HTTP_BUFFER_SIZE_DEAULT   65535
 | 
						|
#define HTTP_MAX_SYN_BACK_LOG     5
 | 
						|
#define HTTP_CONNECTION_TIMEOUT   60
 | 
						|
#define HTTP_DATA_RETRIES         12
 | 
						|
#define HTTP_FIN_TIMEOUT          2
 | 
						|
#define HTTP_KEEP_ALIVE_PROBES    6
 | 
						|
#define HTTP_KEEP_ALIVE_TIME      7200
 | 
						|
#define HTTP_KEEP_ALIVE_INTERVAL  30
 | 
						|
 | 
						|
#define HTTP_URL_BUFFER_LEN  4096
 | 
						|
 | 
						|
typedef struct _HTTP_SERVICE {
 | 
						|
  UINT32                          Signature;
 | 
						|
  EFI_SERVICE_BINDING_PROTOCOL    ServiceBinding;
 | 
						|
  EFI_HANDLE                      Ip4DriverBindingHandle;
 | 
						|
  EFI_HANDLE                      Ip6DriverBindingHandle;
 | 
						|
  EFI_HANDLE                      ControllerHandle;
 | 
						|
  EFI_HANDLE                      Tcp4ChildHandle;
 | 
						|
  EFI_HANDLE                      Tcp6ChildHandle;
 | 
						|
  LIST_ENTRY                      ChildrenList;
 | 
						|
  UINTN                           ChildrenNumber;
 | 
						|
  INTN                            State;
 | 
						|
} HTTP_SERVICE;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  EFI_TCP4_IO_TOKEN         Tx4Token;
 | 
						|
  EFI_TCP4_TRANSMIT_DATA    Tx4Data;
 | 
						|
  EFI_TCP6_IO_TOKEN         Tx6Token;
 | 
						|
  EFI_TCP6_TRANSMIT_DATA    Tx6Data;
 | 
						|
  EFI_TCP4_IO_TOKEN         Rx4Token;
 | 
						|
  EFI_TCP4_RECEIVE_DATA     Rx4Data;
 | 
						|
  EFI_TCP6_IO_TOKEN         Rx6Token;
 | 
						|
  EFI_TCP6_RECEIVE_DATA     Rx6Data;
 | 
						|
  BOOLEAN                   IsTxDone;
 | 
						|
  BOOLEAN                   IsRxDone;
 | 
						|
  UINTN                     BodyLen;
 | 
						|
  EFI_HTTP_METHOD           Method;
 | 
						|
} HTTP_TCP_TOKEN_WRAP;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  EFI_TLS_VERSION           Version;
 | 
						|
  EFI_TLS_CONNECTION_END    ConnectionEnd;
 | 
						|
  EFI_TLS_VERIFY            VerifyMethod;
 | 
						|
  EFI_TLS_VERIFY_HOST       VerifyHost;
 | 
						|
  EFI_TLS_SESSION_STATE     SessionState;
 | 
						|
} TLS_CONFIG_DATA;
 | 
						|
 | 
						|
//
 | 
						|
// Callback data for HTTP_PARSER_CALLBACK()
 | 
						|
//
 | 
						|
typedef struct {
 | 
						|
  UINTN    ParseDataLength;
 | 
						|
  VOID     *ParseData;
 | 
						|
  VOID     *Wrap;
 | 
						|
} HTTP_CALLBACK_DATA;
 | 
						|
 | 
						|
typedef struct _HTTP_PROTOCOL {
 | 
						|
  UINT32                            Signature;
 | 
						|
  EFI_HTTP_PROTOCOL                 Http;
 | 
						|
  EFI_HANDLE                        Handle;
 | 
						|
  HTTP_SERVICE                      *Service;
 | 
						|
  LIST_ENTRY                        Link; // Link to all HTTP instance from the service.
 | 
						|
  BOOLEAN                           InDestroy;
 | 
						|
  INTN                              State;
 | 
						|
  EFI_HTTP_METHOD                   Method;
 | 
						|
 | 
						|
  UINTN                             StatusCode;
 | 
						|
 | 
						|
  EFI_EVENT                         TimeoutEvent;
 | 
						|
 | 
						|
  EFI_HANDLE                        Tcp4ChildHandle;
 | 
						|
  EFI_TCP4_PROTOCOL                 *Tcp4;
 | 
						|
  EFI_TCP4_CONFIG_DATA              Tcp4CfgData;
 | 
						|
  EFI_TCP4_OPTION                   Tcp4Option;
 | 
						|
 | 
						|
  EFI_TCP4_CONNECTION_TOKEN         Tcp4ConnToken;
 | 
						|
  BOOLEAN                           IsTcp4ConnDone;
 | 
						|
  EFI_TCP4_CLOSE_TOKEN              Tcp4CloseToken;
 | 
						|
  BOOLEAN                           IsTcp4CloseDone;
 | 
						|
  CHAR8                             *RemoteHost;
 | 
						|
  UINT16                            RemotePort;
 | 
						|
  EFI_IPv4_ADDRESS                  RemoteAddr;
 | 
						|
 | 
						|
  EFI_HANDLE                        Tcp6ChildHandle;
 | 
						|
  EFI_TCP6_PROTOCOL                 *Tcp6;
 | 
						|
  EFI_TCP6_CONFIG_DATA              Tcp6CfgData;
 | 
						|
  EFI_TCP6_OPTION                   Tcp6Option;
 | 
						|
 | 
						|
  EFI_TCP6_CONNECTION_TOKEN         Tcp6ConnToken;
 | 
						|
  BOOLEAN                           IsTcp6ConnDone;
 | 
						|
  EFI_TCP6_CLOSE_TOKEN              Tcp6CloseToken;
 | 
						|
  BOOLEAN                           IsTcp6CloseDone;
 | 
						|
  EFI_IPv6_ADDRESS                  RemoteIpv6Addr;
 | 
						|
 | 
						|
  //
 | 
						|
  // Rx4Token or Rx6Token used for receiving HTTP header.
 | 
						|
  //
 | 
						|
  EFI_TCP4_IO_TOKEN                 Rx4Token;
 | 
						|
  EFI_TCP4_RECEIVE_DATA             Rx4Data;
 | 
						|
  EFI_TCP6_IO_TOKEN                 Rx6Token;
 | 
						|
  EFI_TCP6_RECEIVE_DATA             Rx6Data;
 | 
						|
  BOOLEAN                           IsRxDone;
 | 
						|
 | 
						|
  CHAR8                             **EndofHeader;
 | 
						|
  CHAR8                             **HttpHeaders;
 | 
						|
  CHAR8                             *CacheBody;
 | 
						|
  CHAR8                             *NextMsg;
 | 
						|
  UINTN                             CacheLen;
 | 
						|
  UINTN                             CacheOffset;
 | 
						|
 | 
						|
  //
 | 
						|
  // HTTP message-body parser.
 | 
						|
  //
 | 
						|
  VOID                              *MsgParser;
 | 
						|
  HTTP_CALLBACK_DATA                CallbackData;
 | 
						|
 | 
						|
  EFI_HTTP_VERSION                  HttpVersion;
 | 
						|
  UINT32                            TimeOutMillisec;
 | 
						|
  BOOLEAN                           LocalAddressIsIPv6;
 | 
						|
 | 
						|
  EFI_HTTPv4_ACCESS_POINT           IPv4Node;
 | 
						|
  EFI_HTTPv6_ACCESS_POINT           Ipv6Node;
 | 
						|
 | 
						|
  NET_MAP                           TxTokens;
 | 
						|
  NET_MAP                           RxTokens;
 | 
						|
 | 
						|
  CHAR8                             *Url;
 | 
						|
 | 
						|
  //
 | 
						|
  // Https Support
 | 
						|
  //
 | 
						|
  BOOLEAN                           UseHttps;
 | 
						|
 | 
						|
  EFI_SERVICE_BINDING_PROTOCOL      *TlsSb;
 | 
						|
  EFI_HANDLE                        TlsChildHandle; /// Tls ChildHandle
 | 
						|
  TLS_CONFIG_DATA                   TlsConfigData;
 | 
						|
  EFI_TLS_PROTOCOL                  *Tls;
 | 
						|
  EFI_TLS_CONFIGURATION_PROTOCOL    *TlsConfiguration;
 | 
						|
  EFI_TLS_SESSION_STATE             TlsSessionState;
 | 
						|
 | 
						|
  //
 | 
						|
  // TlsTxData used for transmitting TLS related messages.
 | 
						|
  //
 | 
						|
  EFI_TCP4_IO_TOKEN                 Tcp4TlsTxToken;
 | 
						|
  EFI_TCP4_TRANSMIT_DATA            Tcp4TlsTxData;
 | 
						|
  EFI_TCP6_IO_TOKEN                 Tcp6TlsTxToken;
 | 
						|
  EFI_TCP6_TRANSMIT_DATA            Tcp6TlsTxData;
 | 
						|
  BOOLEAN                           TlsIsTxDone;
 | 
						|
 | 
						|
  //
 | 
						|
  // TlsRxData used for receiving TLS related messages.
 | 
						|
  //
 | 
						|
  EFI_TCP4_IO_TOKEN                 Tcp4TlsRxToken;
 | 
						|
  EFI_TCP4_RECEIVE_DATA             Tcp4TlsRxData;
 | 
						|
  EFI_TCP6_IO_TOKEN                 Tcp6TlsRxToken;
 | 
						|
  EFI_TCP6_RECEIVE_DATA             Tcp6TlsRxData;
 | 
						|
  BOOLEAN                           TlsIsRxDone;
 | 
						|
} HTTP_PROTOCOL;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  EFI_HTTP_TOKEN         *HttpToken;
 | 
						|
  HTTP_PROTOCOL          *HttpInstance;
 | 
						|
  HTTP_TCP_TOKEN_WRAP    TcpWrap;
 | 
						|
} HTTP_TOKEN_WRAP;
 | 
						|
 | 
						|
#define HTTP_PROTOCOL_SIGNATURE  SIGNATURE_32('H', 't', 't', 'P')
 | 
						|
 | 
						|
#define HTTP_INSTANCE_FROM_PROTOCOL(a) \
 | 
						|
  CR ( \
 | 
						|
  (a), \
 | 
						|
  HTTP_PROTOCOL, \
 | 
						|
  Http, \
 | 
						|
  HTTP_PROTOCOL_SIGNATURE \
 | 
						|
  )
 | 
						|
 | 
						|
/**
 | 
						|
  The common notify function used in HTTP driver.
 | 
						|
 | 
						|
  @param[in]  Event   The event signaled.
 | 
						|
  @param[in]  Context The context.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
EFIAPI
 | 
						|
HttpCommonNotify (
 | 
						|
  IN EFI_EVENT  Event,
 | 
						|
  IN VOID       *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Create events for the TCP connection token and TCP close token.
 | 
						|
 | 
						|
  @param[in]  HttpInstance       Pointer to HTTP_PROTOCOL structure.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The events are created successfully.
 | 
						|
  @retval others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpCreateTcpConnCloseEvent (
 | 
						|
  IN  HTTP_PROTOCOL  *HttpInstance
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Close events in the TCP connection token and TCP close token.
 | 
						|
 | 
						|
  @param[in]  HttpInstance   Pointer to HTTP_PROTOCOL structure.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
HttpCloseTcpConnCloseEvent (
 | 
						|
  IN  HTTP_PROTOCOL  *HttpInstance
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Create event for the TCP transmit token.
 | 
						|
 | 
						|
  @param[in]  Wrap               Point to HTTP token's wrap data.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The events is created successfully.
 | 
						|
  @retval others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpCreateTcpTxEvent (
 | 
						|
  IN  HTTP_TOKEN_WRAP  *Wrap
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Create event for the TCP receive token which is used to receive HTTP header.
 | 
						|
 | 
						|
  @param[in]  HttpInstance       Pointer to HTTP_PROTOCOL structure.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The events is created successfully.
 | 
						|
  @retval others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpCreateTcpRxEventForHeader (
 | 
						|
  IN  HTTP_PROTOCOL  *HttpInstance
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Create event for the TCP receive token which is used to receive HTTP body.
 | 
						|
 | 
						|
  @param[in]  Wrap               Point to HTTP token's wrap data.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The events is created successfully.
 | 
						|
  @retval others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpCreateTcpRxEvent (
 | 
						|
  IN  HTTP_TOKEN_WRAP  *Wrap
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Close Events for Tcp Receive Tokens for HTTP body and HTTP header.
 | 
						|
 | 
						|
  @param[in]  Wrap               Pointer to HTTP token's wrap data.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
HttpCloseTcpRxEvent (
 | 
						|
  IN  HTTP_TOKEN_WRAP  *Wrap
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Initialize the HTTP_PROTOCOL structure to the unconfigured state.
 | 
						|
 | 
						|
  @param[in, out]  HttpInstance         Pointer to HTTP_PROTOCOL structure.
 | 
						|
  @param[in]       IpVersion            Indicate us TCP4 protocol or TCP6 protocol.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS       HTTP_PROTOCOL structure is initialized successfully.
 | 
						|
  @retval Others            Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpInitProtocol (
 | 
						|
  IN OUT HTTP_PROTOCOL  *HttpInstance,
 | 
						|
  IN     BOOLEAN        IpVersion
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Clean up the HTTP child, release all the resources used by it.
 | 
						|
 | 
						|
  @param[in]  HttpInstance       The HTTP child to clean up.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
HttpCleanProtocol (
 | 
						|
  IN  HTTP_PROTOCOL  *HttpInstance
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Establish TCP connection with HTTP server.
 | 
						|
 | 
						|
  @param[in]  HttpInstance       The HTTP instance private data.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The TCP connection is established.
 | 
						|
  @retval Others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpCreateConnection (
 | 
						|
  IN  HTTP_PROTOCOL  *HttpInstance
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Close existing TCP connection.
 | 
						|
 | 
						|
  @param[in]  HttpInstance       The HTTP instance private data.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The TCP connection is closed.
 | 
						|
  @retval Others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpCloseConnection (
 | 
						|
  IN  HTTP_PROTOCOL  *HttpInstance
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Configure TCP4 protocol child.
 | 
						|
 | 
						|
  @param[in]  HttpInstance       The HTTP instance private data.
 | 
						|
  @param[in]  Wrap               The HTTP token's wrap data.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The TCP4 protocol child is configured.
 | 
						|
  @retval Others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpConfigureTcp4 (
 | 
						|
  IN  HTTP_PROTOCOL    *HttpInstance,
 | 
						|
  IN  HTTP_TOKEN_WRAP  *Wrap
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Configure TCP6 protocol child.
 | 
						|
 | 
						|
  @param[in]  HttpInstance       The HTTP instance private data.
 | 
						|
  @param[in]  Wrap               The HTTP token's wrap data.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The TCP6 protocol child is configured.
 | 
						|
  @retval Others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpConfigureTcp6 (
 | 
						|
  IN  HTTP_PROTOCOL    *HttpInstance,
 | 
						|
  IN  HTTP_TOKEN_WRAP  *Wrap
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Check existing TCP connection, if in error state, recover TCP4 connection. Then,
 | 
						|
  connect one TLS session if required.
 | 
						|
 | 
						|
  @param[in]  HttpInstance       The HTTP instance private data.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The TCP connection is established.
 | 
						|
  @retval EFI_NOT_READY          TCP4 protocol child is not created or configured.
 | 
						|
  @retval Others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpConnectTcp4 (
 | 
						|
  IN  HTTP_PROTOCOL  *HttpInstance
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Check existing TCP connection, if in error state, recover TCP6 connection. Then,
 | 
						|
  connect one TLS session if required.
 | 
						|
 | 
						|
  @param[in]  HttpInstance       The HTTP instance private data.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The TCP connection is established.
 | 
						|
  @retval EFI_NOT_READY          TCP6 protocol child is not created or configured.
 | 
						|
  @retval Others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpConnectTcp6 (
 | 
						|
  IN  HTTP_PROTOCOL  *HttpInstance
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Send the HTTP or HTTPS message through TCP4 or TCP6.
 | 
						|
 | 
						|
  @param[in]  HttpInstance       The HTTP instance private data.
 | 
						|
  @param[in]  Wrap               The HTTP token's wrap data.
 | 
						|
  @param[in]  TxString           Buffer containing the HTTP message string.
 | 
						|
  @param[in]  TxStringLen        Length of the HTTP message string in bytes.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The HTTP message is queued into TCP transmit queue.
 | 
						|
  @retval Others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpTransmitTcp (
 | 
						|
  IN  HTTP_PROTOCOL    *HttpInstance,
 | 
						|
  IN  HTTP_TOKEN_WRAP  *Wrap,
 | 
						|
  IN  UINT8            *TxString,
 | 
						|
  IN  UINTN            TxStringLen
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Check whether the user's token or event has already
 | 
						|
  been enqueue on HTTP Tx or Rx Token list.
 | 
						|
 | 
						|
  @param[in]  Map                The container of either user's transmit or receive
 | 
						|
                                 token.
 | 
						|
  @param[in]  Item               Current item to check against.
 | 
						|
  @param[in]  Context            The Token to check against.
 | 
						|
 | 
						|
  @retval EFI_ACCESS_DENIED      The token or event has already been enqueued in IP
 | 
						|
  @retval EFI_SUCCESS            The current item isn't the same token/event as the
 | 
						|
                                 context.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
HttpTokenExist (
 | 
						|
  IN NET_MAP       *Map,
 | 
						|
  IN NET_MAP_ITEM  *Item,
 | 
						|
  IN VOID          *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Check whether the HTTP message associated with TxToken or Tx6Token is already sent out.
 | 
						|
 | 
						|
  @param[in]  Map                The container of TxToken.
 | 
						|
  @param[in]  Item               Current item to check against.
 | 
						|
  @param[in]  Context            The Token to check against.
 | 
						|
 | 
						|
  @retval EFI_NOT_READY          The HTTP message is still queued in the list.
 | 
						|
  @retval EFI_SUCCESS            The HTTP message has been sent out.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
HttpTcpNotReady (
 | 
						|
  IN NET_MAP       *Map,
 | 
						|
  IN NET_MAP_ITEM  *Item,
 | 
						|
  IN VOID          *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Initialize Http session.
 | 
						|
 | 
						|
  @param[in]  HttpInstance       The HTTP instance private data.
 | 
						|
  @param[in]  Wrap               The HTTP token's wrap data.
 | 
						|
  @param[in]  Configure          The Flag indicates whether need to initialize session.
 | 
						|
  @param[in]  TlsConfigure       The Flag indicates whether it's the new Tls session.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The initialization of session is done.
 | 
						|
  @retval Others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpInitSession (
 | 
						|
  IN  HTTP_PROTOCOL    *HttpInstance,
 | 
						|
  IN  HTTP_TOKEN_WRAP  *Wrap,
 | 
						|
  IN  BOOLEAN          Configure,
 | 
						|
  IN  BOOLEAN          TlsConfigure
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Transmit the HTTP or HTTPS message by processing the associated HTTP token.
 | 
						|
 | 
						|
  @param[in]  Map                The container of TxToken or Tx6Token.
 | 
						|
  @param[in]  Item               Current item to check against.
 | 
						|
  @param[in]  Context            The Token to check against.
 | 
						|
 | 
						|
  @retval EFI_OUT_OF_RESOURCES   Failed to allocate resources.
 | 
						|
  @retval EFI_SUCCESS            The HTTP message is queued into TCP transmit
 | 
						|
                                 queue.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
HttpTcpTransmit (
 | 
						|
  IN NET_MAP       *Map,
 | 
						|
  IN NET_MAP_ITEM  *Item,
 | 
						|
  IN VOID          *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Receive the HTTP response by processing the associated HTTP token.
 | 
						|
 | 
						|
  @param[in]  Map                The container of Rx4Token or Rx6Token.
 | 
						|
  @param[in]  Item               Current item to check against.
 | 
						|
  @param[in]  Context            The Token to check against.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The HTTP response is queued into TCP receive
 | 
						|
                                 queue.
 | 
						|
  @retval Others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
HttpTcpReceive (
 | 
						|
  IN NET_MAP       *Map,
 | 
						|
  IN NET_MAP_ITEM  *Item,
 | 
						|
  IN VOID          *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Receive the HTTP header by processing the associated HTTP token.
 | 
						|
 | 
						|
  @param[in]       HttpInstance    The HTTP instance private data.
 | 
						|
  @param[in, out]  SizeofHeaders   The HTTP header length.
 | 
						|
  @param[in, out]  BufferSize      The size of buffer to cache the header message.
 | 
						|
  @param[in]       Timeout         The time to wait for receiving the header packet.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS              The HTTP header is received.
 | 
						|
  @retval Others                   Other errors as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpTcpReceiveHeader (
 | 
						|
  IN  HTTP_PROTOCOL  *HttpInstance,
 | 
						|
  IN  OUT UINTN      *SizeofHeaders,
 | 
						|
  IN  OUT UINTN      *BufferSize,
 | 
						|
  IN  EFI_EVENT      Timeout
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Receive the HTTP body by processing the associated HTTP token.
 | 
						|
 | 
						|
  @param[in]  Wrap               The HTTP token's wrap data.
 | 
						|
  @param[in]  HttpMsg            The HTTP message data.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            The HTTP body is received.
 | 
						|
  @retval Others                 Other error as indicated.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpTcpReceiveBody (
 | 
						|
  IN  HTTP_TOKEN_WRAP   *Wrap,
 | 
						|
  IN  EFI_HTTP_MESSAGE  *HttpMsg
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Clean up Tcp Tokens while the Tcp transmission error occurs.
 | 
						|
 | 
						|
  @param[in]  Wrap               Pointer to HTTP token's wrap data.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
HttpTcpTokenCleanup (
 | 
						|
  IN  HTTP_TOKEN_WRAP  *Wrap
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  The work function of EfiHttpResponse().
 | 
						|
 | 
						|
  @param[in]  Wrap                Pointer to HTTP token's wrap data.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             Allocation succeeded.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES    Failed to complete the operation due to lack of resources.
 | 
						|
  @retval EFI_NOT_READY           Can't find a corresponding TxToken.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
HttpResponseWorker (
 | 
						|
  IN  HTTP_TOKEN_WRAP  *Wrap
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Send Events via EDKII_HTTP_CALLBACK_PROTOCOL.
 | 
						|
 | 
						|
  @param[in]  Event               The event that occurs in the current state.
 | 
						|
  @param[in]  EventStatus         The Status of Event, EFI_SUCCESS or other errors.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
HttpNotify (
 | 
						|
  IN  EDKII_HTTP_CALLBACK_EVENT  Event,
 | 
						|
  IN  EFI_STATUS                 EventStatus
 | 
						|
  );
 | 
						|
 | 
						|
#endif
 |