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
35 //@MT:#include EFI_PROTOCOL_PRODUCER (Tcp4)
37 #define TCP4_DEBUG_ERROR(PrintArg) NET_DEBUG_ERROR ("Tcp", PrintArg)
38 #define TCP4_DEBUG_WARN(PrintArg) NET_DEBUG_WARNING ("Tcp", PrintArg)
39 #define TCP4_DEBUG_TRACE(PrintArg) NET_DEBUG_TRACE ("Tcp", PrintArg)
42 // Function prototype for the Tcp4 socket request handler
47 IN SOCK_REQUEST Request
,
48 IN VOID
*Data OPTIONAL
51 typedef struct _TCP4_MODE_DATA
{
52 EFI_TCP4_CONNECTION_STATE
*Tcp4State
;
53 EFI_TCP4_CONFIG_DATA
*Tcp4ConfigData
;
54 EFI_IP4_MODE_DATA
*Ip4ModeData
;
55 EFI_MANAGED_NETWORK_CONFIG_DATA
*MnpConfigData
;
56 EFI_SIMPLE_NETWORK_MODE
*SnpModeData
;
59 typedef struct _TCP4_ROUTE_INFO
{
61 EFI_IPv4_ADDRESS
*SubnetAddress
;
62 EFI_IPv4_ADDRESS
*SubnetMask
;
63 EFI_IPv4_ADDRESS
*GatewayAddress
;
67 // Get the mode data of a TCP instance
72 IN CONST EFI_TCP4_PROTOCOL
* This
,
73 OUT EFI_TCP4_CONNECTION_STATE
* Tcp4State OPTIONAL
,
74 OUT EFI_TCP4_CONFIG_DATA
* Tcp4ConfigData OPTIONAL
,
75 OUT EFI_IP4_MODE_DATA
* Ip4ModeData OPTIONAL
,
76 OUT EFI_MANAGED_NETWORK_CONFIG_DATA
* MnpConfigData OPTIONAL
,
77 OUT EFI_SIMPLE_NETWORK_MODE
* SnpModeData OPTIONAL
81 // Initialize or reset a TCP instance
86 IN EFI_TCP4_PROTOCOL
* This
,
87 IN EFI_TCP4_CONFIG_DATA
* TcpConfigData OPTIONAL
91 // Add a route entry to the route table
96 IN EFI_TCP4_PROTOCOL
*This
,
97 IN BOOLEAN DeleteRoute
,
98 IN EFI_IPv4_ADDRESS
*SubnetAddress
,
99 IN EFI_IPv4_ADDRESS
*SubnetMask
,
100 IN EFI_IPv4_ADDRESS
*GatewayAddress
104 // Issue an asynchronous connection establishment
105 // request to the peer
110 IN EFI_TCP4_PROTOCOL
*This
,
111 IN EFI_TCP4_CONNECTION_TOKEN
*ConnectionToken
115 // Issue an asynchronous listent token to accept an
116 // incoming connection reques
121 IN EFI_TCP4_PROTOCOL
*This
,
122 IN EFI_TCP4_LISTEN_TOKEN
*ListenToken
126 // Issue an asynchronous IO token to transmit some data
127 // through this TCP instance
132 IN EFI_TCP4_PROTOCOL
*This
,
133 IN EFI_TCP4_IO_TOKEN
*Token
137 // Issue an asynchronous IO token to receive some data
138 // through this TCP instance
142 IN EFI_TCP4_PROTOCOL
*This
,
143 IN EFI_TCP4_IO_TOKEN
*Token
147 // Issue an asynchronous CloseToken to close a TCP
148 // connection represented by instance
153 IN EFI_TCP4_PROTOCOL
*This
,
154 IN EFI_TCP4_CLOSE_TOKEN
*CloseToken
158 // cancle an connect, listent or IO token
163 IN EFI_TCP4_PROTOCOL
* This
,
164 IN EFI_TCP4_COMPLETION_TOKEN
* Token OPTIONAL
168 // poll data from NIC for receive
173 IN EFI_TCP4_PROTOCOL
*This