3 Copyright (c) 2005 - 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
26 #include "Tcp4Proto.h"
27 #include "Tcp4Driver.h"
30 extern UINT16 mTcp4RandomPort
;
33 // Driver Produced Protocol Prototypes
36 #define TCP4_DEBUG_ERROR(PrintArg) NET_DEBUG_ERROR ("Tcp", PrintArg)
37 #define TCP4_DEBUG_WARN(PrintArg) NET_DEBUG_WARNING ("Tcp", PrintArg)
38 #define TCP4_DEBUG_TRACE(PrintArg) NET_DEBUG_TRACE ("Tcp", PrintArg)
41 // Function prototype for the Tcp4 socket request handler
46 IN SOCK_REQUEST Request
,
47 IN VOID
*Data OPTIONAL
50 typedef struct _TCP4_MODE_DATA
{
51 EFI_TCP4_CONNECTION_STATE
*Tcp4State
;
52 EFI_TCP4_CONFIG_DATA
*Tcp4ConfigData
;
53 EFI_IP4_MODE_DATA
*Ip4ModeData
;
54 EFI_MANAGED_NETWORK_CONFIG_DATA
*MnpConfigData
;
55 EFI_SIMPLE_NETWORK_MODE
*SnpModeData
;
58 typedef struct _TCP4_ROUTE_INFO
{
60 EFI_IPv4_ADDRESS
*SubnetAddress
;
61 EFI_IPv4_ADDRESS
*SubnetMask
;
62 EFI_IPv4_ADDRESS
*GatewayAddress
;
66 // Get the mode data of a TCP instance
71 IN CONST EFI_TCP4_PROTOCOL
* This
,
72 OUT EFI_TCP4_CONNECTION_STATE
* Tcp4State OPTIONAL
,
73 OUT EFI_TCP4_CONFIG_DATA
* Tcp4ConfigData OPTIONAL
,
74 OUT EFI_IP4_MODE_DATA
* Ip4ModeData OPTIONAL
,
75 OUT EFI_MANAGED_NETWORK_CONFIG_DATA
* MnpConfigData OPTIONAL
,
76 OUT EFI_SIMPLE_NETWORK_MODE
* SnpModeData OPTIONAL
80 // Initialize or reset a TCP instance
85 IN EFI_TCP4_PROTOCOL
* This
,
86 IN EFI_TCP4_CONFIG_DATA
* TcpConfigData OPTIONAL
90 // Add a route entry to the route table
95 IN EFI_TCP4_PROTOCOL
*This
,
96 IN BOOLEAN DeleteRoute
,
97 IN EFI_IPv4_ADDRESS
*SubnetAddress
,
98 IN EFI_IPv4_ADDRESS
*SubnetMask
,
99 IN EFI_IPv4_ADDRESS
*GatewayAddress
103 // Issue an asynchronous connection establishment
104 // request to the peer
109 IN EFI_TCP4_PROTOCOL
*This
,
110 IN EFI_TCP4_CONNECTION_TOKEN
*ConnectionToken
114 // Issue an asynchronous listent token to accept an
115 // incoming connection reques
120 IN EFI_TCP4_PROTOCOL
*This
,
121 IN EFI_TCP4_LISTEN_TOKEN
*ListenToken
125 // Issue an asynchronous IO token to transmit some data
126 // through this TCP instance
131 IN EFI_TCP4_PROTOCOL
*This
,
132 IN EFI_TCP4_IO_TOKEN
*Token
136 // Issue an asynchronous IO token to receive some data
137 // through this TCP instance
141 IN EFI_TCP4_PROTOCOL
*This
,
142 IN EFI_TCP4_IO_TOKEN
*Token
146 // Issue an asynchronous CloseToken to close a TCP
147 // connection represented by instance
152 IN EFI_TCP4_PROTOCOL
*This
,
153 IN EFI_TCP4_CLOSE_TOKEN
*CloseToken
157 // cancle an connect, listent or IO token
162 IN EFI_TCP4_PROTOCOL
* This
,
163 IN EFI_TCP4_COMPLETION_TOKEN
* Token OPTIONAL
167 // poll data from NIC for receive
172 IN EFI_TCP4_PROTOCOL
*This