| /** @file |
| EFI TCPv4(Transmission Control Protocol version 4) Protocol Definition |
| The EFI TCPv4 Service Binding Protocol is used to locate EFI TCPv4 Protocol drivers to create |
| and destroy child of the driver to communicate with other host using TCP protocol. |
| The EFI TCPv4 Protocol provides services to send and receive data stream. |
| |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> |
| SPDX-License-Identifier: BSD-2-Clause-Patent |
| |
| @par Revision Reference: |
| This Protocol is introduced in UEFI Specification 2.0. |
| |
| **/ |
| |
| #ifndef __EFI_TCP4_PROTOCOL_H__ |
| #define __EFI_TCP4_PROTOCOL_H__ |
| |
| #include <Protocol/Ip4.h> |
| |
| #define EFI_TCP4_SERVICE_BINDING_PROTOCOL_GUID \ |
| { \ |
| 0x00720665, 0x67EB, 0x4a99, {0xBA, 0xF7, 0xD3, 0xC3, 0x3A, 0x1C, 0x7C, 0xC9 } \ |
| } |
| |
| #define EFI_TCP4_PROTOCOL_GUID \ |
| { \ |
| 0x65530BC7, 0xA359, 0x410f, {0xB0, 0x10, 0x5A, 0xAD, 0xC7, 0xEC, 0x2B, 0x62 } \ |
| } |
| |
| typedef struct _EFI_TCP4_PROTOCOL EFI_TCP4_PROTOCOL; |
| |
| /// |
| /// EFI_TCP4_SERVICE_POINT is deprecated in the UEFI 2.4B and should not be used any more. |
| /// The definition in here is only present to provide backwards compatability. |
| /// |
| typedef struct { |
| EFI_HANDLE InstanceHandle; |
| EFI_IPv4_ADDRESS LocalAddress; |
| UINT16 LocalPort; |
| EFI_IPv4_ADDRESS RemoteAddress; |
| UINT16 RemotePort; |
| } EFI_TCP4_SERVICE_POINT; |
| |
| /// |
| /// EFI_TCP4_VARIABLE_DATA is deprecated in the UEFI 2.4B and should not be used any more. |
| /// The definition in here is only present to provide backwards compatability. |
| /// |
| typedef struct { |
| EFI_HANDLE DriverHandle; |
| UINT32 ServiceCount; |
| EFI_TCP4_SERVICE_POINT Services[1]; |
| } EFI_TCP4_VARIABLE_DATA; |
| |
| typedef struct { |
| BOOLEAN UseDefaultAddress; |
| EFI_IPv4_ADDRESS StationAddress; |
| EFI_IPv4_ADDRESS SubnetMask; |
| UINT16 StationPort; |
| EFI_IPv4_ADDRESS RemoteAddress; |
| UINT16 RemotePort; |
| BOOLEAN ActiveFlag; |
| } EFI_TCP4_ACCESS_POINT; |
| |
| typedef struct { |
| UINT32 ReceiveBufferSize; |
| UINT32 SendBufferSize; |
| UINT32 MaxSynBackLog; |
| UINT32 ConnectionTimeout; |
| UINT32 DataRetries; |
| UINT32 FinTimeout; |
| UINT32 TimeWaitTimeout; |
| UINT32 KeepAliveProbes; |
| UINT32 KeepAliveTime; |
| UINT32 KeepAliveInterval; |
| BOOLEAN EnableNagle; |
| BOOLEAN EnableTimeStamp; |
| BOOLEAN EnableWindowScaling; |
| BOOLEAN EnableSelectiveAck; |
| BOOLEAN EnablePathMtuDiscovery; |
| } EFI_TCP4_OPTION; |
| |
| typedef struct { |
| // |
| // I/O parameters |
| // |
| UINT8 TypeOfService; |
| UINT8 TimeToLive; |
| |
| // |
| // Access Point |
| // |
| EFI_TCP4_ACCESS_POINT AccessPoint; |
| |
| // |
| // TCP Control Options |
| // |
| EFI_TCP4_OPTION *ControlOption; |
| } EFI_TCP4_CONFIG_DATA; |
| |
| /// |
| /// TCP4 connnection state |
| /// |
| typedef enum { |
| Tcp4StateClosed = 0, |
| Tcp4StateListen = 1, |
| Tcp4StateSynSent = 2, |
| Tcp4StateSynReceived = 3, |
| Tcp4StateEstablished = 4, |
| Tcp4StateFinWait1 = 5, |
| Tcp4StateFinWait2 = 6, |
| Tcp4StateClosing = 7, |
| Tcp4StateTimeWait = 8, |
| Tcp4StateCloseWait = 9, |
| Tcp4StateLastAck = 10 |
| } EFI_TCP4_CONNECTION_STATE; |
| |
| typedef struct { |
| EFI_EVENT Event; |
| EFI_STATUS Status; |
| } EFI_TCP4_COMPLETION_TOKEN; |
| |
| typedef struct { |
| /// |
| /// The Status in the CompletionToken will be set to one of |
| /// the following values if the active open succeeds or an unexpected |
| /// error happens: |
| /// EFI_SUCCESS: The active open succeeds and the instance's |
| /// state is Tcp4StateEstablished. |
| /// EFI_CONNECTION_RESET: The connect fails because the connection is reset |
| /// either by instance itself or the communication peer. |
| /// EFI_CONNECTION_REFUSED: The connect fails because this connection is initiated with |
| /// an active open and the connection is refused. |
| /// EFI_ABORTED: The active open is aborted. |
| /// EFI_TIMEOUT: The connection establishment timer expires and |
| /// no more specific information is available. |
| /// EFI_NETWORK_UNREACHABLE: The active open fails because |
| /// an ICMP network unreachable error is received. |
| /// EFI_HOST_UNREACHABLE: The active open fails because an |
| /// ICMP host unreachable error is received. |
| /// EFI_PROTOCOL_UNREACHABLE: The active open fails |
| /// because an ICMP protocol unreachable error is received. |
| /// EFI_PORT_UNREACHABLE: The connection establishment |
| /// timer times out and an ICMP port unreachable error is received. |
| /// EFI_ICMP_ERROR: The connection establishment timer timeout and some other ICMP |
| /// error is received. |
| /// EFI_DEVICE_ERROR: An unexpected system or network error occurred. |
| /// EFI_NO_MEDIA: There was a media error. |
| /// |
| EFI_TCP4_COMPLETION_TOKEN CompletionToken; |
| } EFI_TCP4_CONNECTION_TOKEN; |
| |
| typedef struct { |
| EFI_TCP4_COMPLETION_TOKEN CompletionToken; |
| EFI_HANDLE NewChildHandle; |
| } EFI_TCP4_LISTEN_TOKEN; |
| |
| typedef struct { |
| UINT32 FragmentLength; |
| VOID *FragmentBuffer; |
| } EFI_TCP4_FRAGMENT_DATA; |
| |
| typedef struct { |
| BOOLEAN UrgentFlag; |
| UINT32 DataLength; |
| UINT32 FragmentCount; |
| EFI_TCP4_FRAGMENT_DATA FragmentTable[1]; |
| } EFI_TCP4_RECEIVE_DATA; |
| |
| typedef struct { |
| BOOLEAN Push; |
| BOOLEAN Urgent; |
| UINT32 DataLength; |
| UINT32 FragmentCount; |
| EFI_TCP4_FRAGMENT_DATA FragmentTable[1]; |
| } EFI_TCP4_TRANSMIT_DATA; |
| |
| typedef struct { |
| /// |
| /// When transmission finishes or meets any unexpected error it will |
| /// be set to one of the following values: |
| /// EFI_SUCCESS: The receiving or transmission operation |
| /// completes successfully. |
| /// EFI_CONNECTION_FIN: The receiving operation fails because the communication peer |
| /// has closed the connection and there is no more data in the |
| /// receive buffer of the instance. |
| /// EFI_CONNECTION_RESET: The receiving or transmission operation fails |
| /// because this connection is reset either by instance |
| /// itself or the communication peer. |
| /// EFI_ABORTED: The receiving or transmission is aborted. |
| /// EFI_TIMEOUT: The transmission timer expires and no more |
| /// specific information is available. |
| /// EFI_NETWORK_UNREACHABLE: The transmission fails |
| /// because an ICMP network unreachable error is received. |
| /// EFI_HOST_UNREACHABLE: The transmission fails because an |
| /// ICMP host unreachable error is received. |
| /// EFI_PROTOCOL_UNREACHABLE: The transmission fails |
| /// because an ICMP protocol unreachable error is received. |
| /// EFI_PORT_UNREACHABLE: The transmission fails and an |
| /// ICMP port unreachable error is received. |
| /// EFI_ICMP_ERROR: The transmission fails and some other |
| /// ICMP error is received. |
| /// EFI_DEVICE_ERROR: An unexpected system or network error occurs. |
| /// EFI_NO_MEDIA: There was a media error. |
| /// |
| EFI_TCP4_COMPLETION_TOKEN CompletionToken; |
| union { |
| /// |
| /// When this token is used for receiving, RxData is a pointer to EFI_TCP4_RECEIVE_DATA. |
| /// |
| EFI_TCP4_RECEIVE_DATA *RxData; |
| /// |
| /// When this token is used for transmitting, TxData is a pointer to EFI_TCP4_TRANSMIT_DATA. |
| /// |
| EFI_TCP4_TRANSMIT_DATA *TxData; |
| } Packet; |
| } EFI_TCP4_IO_TOKEN; |
| |
| typedef struct { |
| EFI_TCP4_COMPLETION_TOKEN CompletionToken; |
| BOOLEAN AbortOnClose; |
| } EFI_TCP4_CLOSE_TOKEN; |
| |
| // |
| // Interface definition for TCP4 protocol |
| // |
| |
| /** |
| Get the current operational status. |
| |
| @param This The pointer to the EFI_TCP4_PROTOCOL instance. |
| @param Tcp4State The pointer to the buffer to receive the current TCP state. |
| @param Tcp4ConfigData The pointer to the buffer to receive the current TCP configuration. |
| @param Ip4ModeData The pointer to the buffer to receive the current IPv4 configuration |
| data used by the TCPv4 instance. |
| @param MnpConfigData The pointer to the buffer to receive the current MNP configuration |
| data used indirectly by the TCPv4 instance. |
| @param SnpModeData The pointer to the buffer to receive the current SNP configuration |
| data used indirectly by the TCPv4 instance. |
| |
| @retval EFI_SUCCESS The mode data was read. |
| @retval EFI_INVALID_PARAMETER This is NULL. |
| @retval EFI_NOT_STARTED No configuration data is available because this instance hasn't |
| been started. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TCP4_GET_MODE_DATA)( |
| IN EFI_TCP4_PROTOCOL *This, |
| OUT EFI_TCP4_CONNECTION_STATE *Tcp4State OPTIONAL, |
| OUT EFI_TCP4_CONFIG_DATA *Tcp4ConfigData OPTIONAL, |
| OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, |
| OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, |
| OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL |
| ); |
| |
| /** |
| Initialize or brutally reset the operational parameters for this EFI TCPv4 instance. |
| |
| @param This The pointer to the EFI_TCP4_PROTOCOL instance. |
| @param Tcp4ConfigData The pointer to the configure data to configure the instance. |
| |
| @retval EFI_SUCCESS The operational settings are set, changed, or reset |
| successfully. |
| @retval EFI_INVALID_PARAMETER Some parameter is invalid. |
| @retval EFI_NO_MAPPING When using a default address, configuration (through |
| DHCP, BOOTP, RARP, etc.) is not finished yet. |
| @retval EFI_ACCESS_DENIED Configuring TCP instance when it is configured without |
| calling Configure() with NULL to reset it. |
| @retval EFI_DEVICE_ERROR An unexpected network or system error occurred. |
| @retval EFI_UNSUPPORTED One or more of the control options are not supported in |
| the implementation. |
| @retval EFI_OUT_OF_RESOURCES Could not allocate enough system resources when |
| executing Configure(). |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TCP4_CONFIGURE)( |
| IN EFI_TCP4_PROTOCOL *This, |
| IN EFI_TCP4_CONFIG_DATA *TcpConfigData OPTIONAL |
| ); |
| |
| |
| /** |
| Add or delete a route entry to the route table |
| |
| @param This The pointer to the EFI_TCP4_PROTOCOL instance. |
| @param DeleteRoute Set it to TRUE to delete this route from the routing table. Set it to |
| FALSE to add this route to the routing table. |
| DestinationAddress and SubnetMask are used as the |
| keywords to search route entry. |
| @param SubnetAddress The destination network. |
| @param SubnetMask The subnet mask of the destination network. |
| @param GatewayAddress The gateway address for this route. It must be on the same |
| subnet with the station address unless a direct route is specified. |
| |
| @retval EFI_SUCCESS The operation completed successfully. |
| @retval EFI_NOT_STARTED The EFI TCPv4 Protocol instance has not been configured. |
| @retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP, |
| RARP, etc.) is not finished yet. |
| @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: |
| - This is NULL. |
| - SubnetAddress is NULL. |
| - SubnetMask is NULL. |
| - GatewayAddress is NULL. |
| - *SubnetAddress is not NULL a valid subnet address. |
| - *SubnetMask is not a valid subnet mask. |
| - *GatewayAddress is not a valid unicast IP address or it |
| is not in the same subnet. |
| @retval EFI_OUT_OF_RESOURCES Could not allocate enough resources to add the entry to the |
| routing table. |
| @retval EFI_NOT_FOUND This route is not in the routing table. |
| @retval EFI_ACCESS_DENIED The route is already defined in the routing table. |
| @retval EFI_UNSUPPORTED The TCP driver does not support this operation. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TCP4_ROUTES)( |
| IN EFI_TCP4_PROTOCOL *This, |
| IN BOOLEAN DeleteRoute, |
| IN EFI_IPv4_ADDRESS *SubnetAddress, |
| IN EFI_IPv4_ADDRESS *SubnetMask, |
| IN EFI_IPv4_ADDRESS *GatewayAddress |
| ); |
| |
| /** |
| Initiate a nonblocking TCP connection request for an active TCP instance. |
| |
| @param This The pointer to the EFI_TCP4_PROTOCOL instance. |
| @param ConnectionToken The pointer to the connection token to return when the TCP three |
| way handshake finishes. |
| |
| @retval EFI_SUCCESS The connection request is successfully initiated and the state |
| of this TCPv4 instance has been changed to Tcp4StateSynSent. |
| @retval EFI_NOT_STARTED This EFI TCPv4 Protocol instance has not been configured. |
| @retval EFI_ACCESS_DENIED One or more of the following conditions are TRUE: |
| - This instance is not configured as an active one. |
| - This instance is not in Tcp4StateClosed state. |
| @retval EFI_INVALID_PARAMETER One or more of the following are TRUE: |
| - This is NULL. |
| - ConnectionToken is NULL. |
| - ConnectionToken->CompletionToken.Event is NULL. |
| @retval EFI_OUT_OF_RESOURCES The driver can't allocate enough resource to initiate the activ eopen. |
| @retval EFI_DEVICE_ERROR An unexpected system or network error occurred. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TCP4_CONNECT)( |
| IN EFI_TCP4_PROTOCOL *This, |
| IN EFI_TCP4_CONNECTION_TOKEN *ConnectionToken |
| ); |
| |
| |
| /** |
| Listen on the passive instance to accept an incoming connection request. This is a nonblocking operation. |
| |
| @param This The pointer to the EFI_TCP4_PROTOCOL instance. |
| @param ListenToken The pointer to the listen token to return when operation finishes. |
| |
| @retval EFI_SUCCESS The listen token has been queued successfully. |
| @retval EFI_NOT_STARTED This EFI TCPv4 Protocol instance has not been configured. |
| @retval EFI_ACCESS_DENIED One or more of the following are TRUE: |
| - This instance is not a passive instance. |
| - This instance is not in Tcp4StateListen state. |
| - The same listen token has already existed in the listen |
| token queue of this TCP instance. |
| @retval EFI_INVALID_PARAMETER One or more of the following are TRUE: |
| - This is NULL. |
| - ListenToken is NULL. |
| - ListentToken->CompletionToken.Event is NULL. |
| @retval EFI_OUT_OF_RESOURCES Could not allocate enough resource to finish the operation. |
| @retval EFI_DEVICE_ERROR Any unexpected and not belonged to above category error. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TCP4_ACCEPT)( |
| IN EFI_TCP4_PROTOCOL *This, |
| IN EFI_TCP4_LISTEN_TOKEN *ListenToken |
| ); |
| |
| /** |
| Queues outgoing data into the transmit queue. |
| |
| @param This The pointer to the EFI_TCP4_PROTOCOL instance. |
| @param Token The pointer to the completion token to queue to the transmit queue. |
| |
| @retval EFI_SUCCESS The data has been queued for transmission. |
| @retval EFI_NOT_STARTED This EFI TCPv4 Protocol instance has not been configured. |
| @retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP, |
| RARP, etc.) is not finished yet. |
| @retval EFI_INVALID_PARAMETER One or more of the following are TRUE: |
| - This is NULL. |
| - Token is NULL. |
| - Token->CompletionToken.Event is NULL. |
| - Token->Packet.TxData is NULL L. |
| - Token->Packet.FragmentCount is zero. |
| - Token->Packet.DataLength is not equal to the sum of fragment lengths. |
| @retval EFI_ACCESS_DENIED One or more of the following conditions is TRUE: |
| - A transmit completion token with the same Token->CompletionToken.Event |
| was already in the transmission queue. |
| - The current instance is in Tcp4StateClosed state. |
| - The current instance is a passive one and it is in |
| Tcp4StateListen state. |
| - User has called Close() to disconnect this connection. |
| @retval EFI_NOT_READY The completion token could not be queued because the |
| transmit queue is full. |
| @retval EFI_OUT_OF_RESOURCES Could not queue the transmit data because of resource |
| shortage. |
| @retval EFI_NETWORK_UNREACHABLE There is no route to the destination network or address. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TCP4_TRANSMIT)( |
| IN EFI_TCP4_PROTOCOL *This, |
| IN EFI_TCP4_IO_TOKEN *Token |
| ); |
| |
| |
| /** |
| Places an asynchronous receive request into the receiving queue. |
| |
| @param This The pointer to the EFI_TCP4_PROTOCOL instance. |
| @param Token The pointer to a token that is associated with the receive data |
| descriptor. |
| |
| @retval EFI_SUCCESS The receive completion token was cached. |
| @retval EFI_NOT_STARTED This EFI TCPv4 Protocol instance has not been configured. |
| @retval EFI_NO_MAPPING When using a default address, configuration (DHCP, BOOTP, RARP, |
| etc.) is not finished yet. |
| @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: |
| - This is NULL. |
| - Token is NULL. |
| - Token->CompletionToken.Event is NULL. |
| - Token->Packet.RxData is NULL. |
| - Token->Packet.RxData->DataLength is 0. |
| - The Token->Packet.RxData->DataLength is not |
| the sum of all FragmentBuffer length in FragmentTable. |
| @retval EFI_OUT_OF_RESOURCES The receive completion token could not be queued due to a lack of |
| system resources (usually memory). |
| @retval EFI_DEVICE_ERROR An unexpected system or network error occurred. |
| @retval EFI_ACCESS_DENIED One or more of the following conditions is TRUE: |
| - A receive completion token with the same Token- |
| >CompletionToken.Event was already in the receive |
| queue. |
| - The current instance is in Tcp4StateClosed state. |
| - The current instance is a passive one and it is in |
| Tcp4StateListen state. |
| - User has called Close() to disconnect this connection. |
| @retval EFI_CONNECTION_FIN The communication peer has closed the connection and there is |
| no any buffered data in the receive buffer of this instance. |
| @retval EFI_NOT_READY The receive request could not be queued because the receive queue is full. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TCP4_RECEIVE)( |
| IN EFI_TCP4_PROTOCOL *This, |
| IN EFI_TCP4_IO_TOKEN *Token |
| ); |
| |
| /** |
| Disconnecting a TCP connection gracefully or reset a TCP connection. This function is a |
| nonblocking operation. |
| |
| @param This The pointer to the EFI_TCP4_PROTOCOL instance. |
| @param CloseToken The pointer to the close token to return when operation finishes. |
| |
| @retval EFI_SUCCESS The Close() is called successfully. |
| @retval EFI_NOT_STARTED This EFI TCPv4 Protocol instance has not been configured. |
| @retval EFI_ACCESS_DENIED One or more of the following are TRUE: |
| - Configure() has been called with |
| TcpConfigData set to NULL and this function has |
| not returned. |
| - Previous Close() call on this instance has not |
| finished. |
| @retval EFI_INVALID_PARAMETER One or more of the following are TRUE: |
| - This is NULL. |
| - CloseToken is NULL. |
| - CloseToken->CompletionToken.Event is NULL. |
| @retval EFI_OUT_OF_RESOURCES Could not allocate enough resource to finish the operation. |
| @retval EFI_DEVICE_ERROR Any unexpected and not belonged to above category error. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TCP4_CLOSE)( |
| IN EFI_TCP4_PROTOCOL *This, |
| IN EFI_TCP4_CLOSE_TOKEN *CloseToken |
| ); |
| |
| /** |
| Abort an asynchronous connection, listen, transmission or receive request. |
| |
| @param This The pointer to the EFI_TCP4_PROTOCOL instance. |
| @param Token The pointer to a token that has been issued by |
| EFI_TCP4_PROTOCOL.Connect(), |
| EFI_TCP4_PROTOCOL.Accept(), |
| EFI_TCP4_PROTOCOL.Transmit() or |
| EFI_TCP4_PROTOCOL.Receive(). If NULL, all pending |
| tokens issued by above four functions will be aborted. Type |
| EFI_TCP4_COMPLETION_TOKEN is defined in |
| EFI_TCP4_PROTOCOL.Connect(). |
| |
| @retval EFI_SUCCESS The asynchronous I/O request is aborted and Token->Event |
| is signaled. |
| @retval EFI_INVALID_PARAMETER This is NULL. |
| @retval EFI_NOT_STARTED This instance hasn't been configured. |
| @retval EFI_NO_MAPPING When using the default address, configuration |
| (DHCP, BOOTP,RARP, etc.) hasn't finished yet. |
| @retval EFI_NOT_FOUND The asynchronous I/O request isn't found in the |
| transmission or receive queue. It has either |
| completed or wasn't issued by Transmit() and Receive(). |
| @retval EFI_UNSUPPORTED The implementation does not support this function. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TCP4_CANCEL)( |
| IN EFI_TCP4_PROTOCOL *This, |
| IN EFI_TCP4_COMPLETION_TOKEN *Token OPTIONAL |
| ); |
| |
| |
| /** |
| Poll to receive incoming data and transmit outgoing segments. |
| |
| @param This The pointer to the EFI_TCP4_PROTOCOL instance. |
| |
| @retval EFI_SUCCESS Incoming or outgoing data was processed. |
| @retval EFI_INVALID_PARAMETER This is NULL. |
| @retval EFI_DEVICE_ERROR An unexpected system or network error occurred. |
| @retval EFI_NOT_READY No incoming or outgoing data is processed. |
| @retval EFI_TIMEOUT Data was dropped out of the transmission or receive queue. |
| Consider increasing the polling rate. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TCP4_POLL)( |
| IN EFI_TCP4_PROTOCOL *This |
| ); |
| |
| /// |
| /// The EFI_TCP4_PROTOCOL defines the EFI TCPv4 Protocol child to be used by |
| /// any network drivers or applications to send or receive data stream. |
| /// It can either listen on a specified port as a service or actively connected |
| /// to remote peer as a client. Each instance has its own independent settings, |
| /// such as the routing table. |
| /// |
| struct _EFI_TCP4_PROTOCOL { |
| EFI_TCP4_GET_MODE_DATA GetModeData; |
| EFI_TCP4_CONFIGURE Configure; |
| EFI_TCP4_ROUTES Routes; |
| EFI_TCP4_CONNECT Connect; |
| EFI_TCP4_ACCEPT Accept; |
| EFI_TCP4_TRANSMIT Transmit; |
| EFI_TCP4_RECEIVE Receive; |
| EFI_TCP4_CLOSE Close; |
| EFI_TCP4_CANCEL Cancel; |
| EFI_TCP4_POLL Poll; |
| }; |
| |
| extern EFI_GUID gEfiTcp4ServiceBindingProtocolGuid; |
| extern EFI_GUID gEfiTcp4ProtocolGuid; |
| |
| #endif |