1 | #ifndef _EFI_TCP_H |
---|
2 | #define _EFI_TCP_H |
---|
3 | |
---|
4 | /*++ |
---|
5 | Copyright (c) 2013 Intel Corporation |
---|
6 | |
---|
7 | --*/ |
---|
8 | |
---|
9 | #define EFI_TCP4_SERVICE_BINDING_PROTOCOL \ |
---|
10 | { 0x00720665, 0x67eb, 0x4a99, {0xba, 0xf7, 0xd3, 0xc3, 0x3a, 0x1c,0x7c, 0xc9}} |
---|
11 | |
---|
12 | #define EFI_TCP4_PROTOCOL \ |
---|
13 | { 0x65530bc7, 0xa359, 0x410f, {0xb0, 0x10, 0x5a, 0xad, 0xc7, 0xec, 0x2b, 0x62}} |
---|
14 | |
---|
15 | #define EFI_TCP6_SERVICE_BINDING_PROTOCOL \ |
---|
16 | { 0xec20eb79, 0x6c1a, 0x4664, {0x9a, 0xd, 0xd2, 0xe4, 0xcc, 0x16, 0xd6, 0x64}} |
---|
17 | |
---|
18 | #define EFI_TCP6_PROTOCOL \ |
---|
19 | { 0x46e44855, 0xbd60, 0x4ab7, {0xab, 0xd, 0xa6, 0x79, 0xb9, 0x44, 0x7d, 0x77}} |
---|
20 | |
---|
21 | INTERFACE_DECL(_EFI_TCP4); |
---|
22 | INTERFACE_DECL(_EFI_TCP6); |
---|
23 | |
---|
24 | typedef struct { |
---|
25 | BOOLEAN UseDefaultAddress; |
---|
26 | EFI_IPv4_ADDRESS StationAddress; |
---|
27 | EFI_IPv4_ADDRESS SubnetMask; |
---|
28 | UINT16 StationPort; |
---|
29 | EFI_IPv4_ADDRESS RemoteAddress; |
---|
30 | UINT16 RemotePort; |
---|
31 | BOOLEAN ActiveFlag; |
---|
32 | } EFI_TCP4_ACCESS_POINT; |
---|
33 | |
---|
34 | typedef struct { |
---|
35 | UINT32 ReceiveBufferSize; |
---|
36 | UINT32 SendBufferSize; |
---|
37 | UINT32 MaxSynBackLog; |
---|
38 | UINT32 ConnectionTimeout; |
---|
39 | UINT32 DataRetries; |
---|
40 | UINT32 FinTimeout; |
---|
41 | UINT32 TimeWaitTimeout; |
---|
42 | UINT32 KeepAliveProbes; |
---|
43 | UINT32 KeepAliveTime; |
---|
44 | UINT32 KeepAliveInterval; |
---|
45 | BOOLEAN EnableNagle; |
---|
46 | BOOLEAN EnableTimeStamp; |
---|
47 | BOOLEAN EnableWindowScaling; |
---|
48 | BOOLEAN EnableSelectiveAck; |
---|
49 | BOOLEAN EnablePAthMtuDiscovery; |
---|
50 | } EFI_TCP4_OPTION; |
---|
51 | |
---|
52 | typedef struct { |
---|
53 | // Receiving Filters |
---|
54 | // I/O parameters |
---|
55 | UINT8 TypeOfService; |
---|
56 | UINT8 TimeToLive; |
---|
57 | |
---|
58 | // Access Point |
---|
59 | EFI_TCP4_ACCESS_POINT AccessPoint; |
---|
60 | |
---|
61 | // TCP Control Options |
---|
62 | EFI_TCP4_OPTION *ControlOption; |
---|
63 | } EFI_TCP4_CONFIG_DATA; |
---|
64 | |
---|
65 | typedef enum { |
---|
66 | Tcp4StateClosed = 0, |
---|
67 | Tcp4StateListen = 1, |
---|
68 | Tcp4StateSynSent = 2, |
---|
69 | Tcp4StateSynReceived = 3, |
---|
70 | Tcp4StateEstablished = 4, |
---|
71 | Tcp4StateFinWait1 = 5, |
---|
72 | Tcp4StateFinWait2 = 6, |
---|
73 | Tcp4StateClosing = 7, |
---|
74 | Tcp4StateTimeWait = 8, |
---|
75 | Tcp4StateCloseWait = 9, |
---|
76 | Tcp4StateLastAck = 10 |
---|
77 | } EFI_TCP4_CONNECTION_STATE; |
---|
78 | |
---|
79 | typedef |
---|
80 | EFI_STATUS |
---|
81 | (EFIAPI *EFI_TCP4_GET_MODE_DATA) ( |
---|
82 | IN struct _EFI_TCP4 *This, |
---|
83 | OUT EFI_TCP4_CONNECTION_STATE *Tcp4State OPTIONAL, |
---|
84 | OUT EFI_TCP4_CONFIG_DATA *Tcp4ConfigData OPTIONAL, |
---|
85 | OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, |
---|
86 | OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, |
---|
87 | OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL |
---|
88 | ); |
---|
89 | |
---|
90 | typedef |
---|
91 | EFI_STATUS |
---|
92 | (EFIAPI *EFI_TCP4_CONFIGURE) ( |
---|
93 | IN struct _EFI_TCP4 *This, |
---|
94 | IN EFI_TCP4_CONFIG_DATA *TcpConfigData OPTIONAL |
---|
95 | ); |
---|
96 | |
---|
97 | typedef |
---|
98 | EFI_STATUS |
---|
99 | (EFIAPI *EFI_TCP4_ROUTES) ( |
---|
100 | IN struct _EFI_TCP4 *This, |
---|
101 | IN BOOLEAN DeleteRoute, |
---|
102 | IN EFI_IPv4_ADDRESS *SubnetAddress, |
---|
103 | IN EFI_IPv4_ADDRESS *SubnetMask, |
---|
104 | IN EFI_IPv4_ADDRESS *GatewayAddress |
---|
105 | ); |
---|
106 | |
---|
107 | typedef struct { |
---|
108 | EFI_EVENT Event; |
---|
109 | EFI_STATUS Status; |
---|
110 | } EFI_TCP4_COMPLETION_TOKEN; |
---|
111 | |
---|
112 | typedef struct { |
---|
113 | EFI_TCP4_COMPLETION_TOKEN CompletionToken; |
---|
114 | } EFI_TCP4_CONNECTION_TOKEN; |
---|
115 | |
---|
116 | typedef |
---|
117 | EFI_STATUS |
---|
118 | (EFIAPI *EFI_TCP4_CONNECT) ( |
---|
119 | IN struct _EFI_TCP4 *This, |
---|
120 | IN EFI_TCP4_CONNECTION_TOKEN *ConnectionToken |
---|
121 | ); |
---|
122 | |
---|
123 | typedef struct { |
---|
124 | EFI_TCP4_COMPLETION_TOKEN CompletionToken; |
---|
125 | EFI_HANDLE NewChildHandle; |
---|
126 | } EFI_TCP4_LISTEN_TOKEN; |
---|
127 | |
---|
128 | typedef |
---|
129 | EFI_STATUS |
---|
130 | (EFIAPI *EFI_TCP4_ACCEPT) ( |
---|
131 | IN struct _EFI_TCP4 *This, |
---|
132 | IN EFI_TCP4_LISTEN_TOKEN *ListenToken |
---|
133 | ); |
---|
134 | |
---|
135 | #define EFI_CONNECTION_FIN EFIERR(104) |
---|
136 | #define EFI_CONNECTION_RESET EFIERR(105) |
---|
137 | #define EFI_CONNECTION_REFUSED EFIERR(106) |
---|
138 | |
---|
139 | typedef struct { |
---|
140 | UINT32 FragmentLength; |
---|
141 | VOID *FragmentBuffer; |
---|
142 | } EFI_TCP4_FRAGMENT_DATA; |
---|
143 | |
---|
144 | typedef struct { |
---|
145 | BOOLEAN UrgentFlag; |
---|
146 | UINT32 DataLength; |
---|
147 | UINT32 FragmentCount; |
---|
148 | EFI_TCP4_FRAGMENT_DATA FragmentTable[1]; |
---|
149 | } EFI_TCP4_RECEIVE_DATA; |
---|
150 | |
---|
151 | typedef struct { |
---|
152 | BOOLEAN Push; |
---|
153 | BOOLEAN Urgent; |
---|
154 | UINT32 DataLength; |
---|
155 | UINT32 FragmentCount; |
---|
156 | EFI_TCP4_FRAGMENT_DATA FragmentTable[1]; |
---|
157 | } EFI_TCP4_TRANSMIT_DATA; |
---|
158 | |
---|
159 | typedef struct { |
---|
160 | EFI_TCP4_COMPLETION_TOKEN CompletionToken; |
---|
161 | union { |
---|
162 | EFI_TCP4_RECEIVE_DATA *RxData; |
---|
163 | EFI_TCP4_TRANSMIT_DATA *TxData; |
---|
164 | } Packet; |
---|
165 | } EFI_TCP4_IO_TOKEN; |
---|
166 | |
---|
167 | typedef |
---|
168 | EFI_STATUS |
---|
169 | (EFIAPI *EFI_TCP4_TRANSMIT) ( |
---|
170 | IN struct _EFI_TCP4 *This, |
---|
171 | IN EFI_TCP4_IO_TOKEN *Token |
---|
172 | ); |
---|
173 | |
---|
174 | typedef |
---|
175 | EFI_STATUS |
---|
176 | (EFIAPI *EFI_TCP4_RECEIVE) ( |
---|
177 | IN struct _EFI_TCP4 *This, |
---|
178 | IN EFI_TCP4_IO_TOKEN *Token |
---|
179 | ); |
---|
180 | |
---|
181 | typedef struct { |
---|
182 | EFI_TCP4_COMPLETION_TOKEN CompletionToken; |
---|
183 | BOOLEAN AbortOnClose; |
---|
184 | } EFI_TCP4_CLOSE_TOKEN; |
---|
185 | |
---|
186 | typedef |
---|
187 | EFI_STATUS |
---|
188 | (EFIAPI *EFI_TCP4_CLOSE)( |
---|
189 | IN struct _EFI_TCP4 *This, |
---|
190 | IN EFI_TCP4_CLOSE_TOKEN *CloseToken |
---|
191 | ); |
---|
192 | |
---|
193 | typedef |
---|
194 | EFI_STATUS |
---|
195 | (EFIAPI *EFI_TCP4_CANCEL)( |
---|
196 | IN struct _EFI_TCP4 *This, |
---|
197 | IN EFI_TCP4_COMPLETION_TOKEN *Token OPTIONAL |
---|
198 | ); |
---|
199 | |
---|
200 | typedef |
---|
201 | EFI_STATUS |
---|
202 | (EFIAPI *EFI_TCP4_POLL) ( |
---|
203 | IN struct _EFI_TCP4 *This |
---|
204 | ); |
---|
205 | |
---|
206 | typedef struct _EFI_TCP4 { |
---|
207 | EFI_TCP4_GET_MODE_DATA GetModeData; |
---|
208 | EFI_TCP4_CONFIGURE Configure; |
---|
209 | EFI_TCP4_ROUTES Routes; |
---|
210 | EFI_TCP4_CONNECT Connect; |
---|
211 | EFI_TCP4_ACCEPT Accept; |
---|
212 | EFI_TCP4_TRANSMIT Transmit; |
---|
213 | EFI_TCP4_RECEIVE Receive; |
---|
214 | EFI_TCP4_CLOSE Close; |
---|
215 | EFI_TCP4_CANCEL Cancel; |
---|
216 | EFI_TCP4_POLL Poll; |
---|
217 | } EFI_TCP4; |
---|
218 | |
---|
219 | typedef enum { |
---|
220 | Tcp6StateClosed = 0, |
---|
221 | Tcp6StateListen = 1, |
---|
222 | Tcp6StateSynSent = 2, |
---|
223 | Tcp6StateSynReceived = 3, |
---|
224 | Tcp6StateEstablished = 4, |
---|
225 | Tcp6StateFinWait1 = 5, |
---|
226 | Tcp6StateFinWait2 = 6, |
---|
227 | Tcp6StateClosing = 7, |
---|
228 | Tcp6StateTimeWait = 8, |
---|
229 | Tcp6StateCloseWait = 9, |
---|
230 | Tcp6StateLastAck = 10 |
---|
231 | } EFI_TCP6_CONNECTION_STATE; |
---|
232 | |
---|
233 | typedef struct { |
---|
234 | EFI_IPv6_ADDRESS StationAddress; |
---|
235 | UINT16 StationPort; |
---|
236 | EFI_IPv6_ADDRESS RemoteAddress; |
---|
237 | UINT16 RemotePort; |
---|
238 | BOOLEAN ActiveFlag; |
---|
239 | } EFI_TCP6_ACCESS_POINT; |
---|
240 | |
---|
241 | typedef struct { |
---|
242 | UINT32 ReceiveBufferSize; |
---|
243 | UINT32 SendBufferSize; |
---|
244 | UINT32 MaxSynBackLog; |
---|
245 | UINT32 ConnectionTimeout; |
---|
246 | UINT32 DataRetries; |
---|
247 | UINT32 FinTimeout; |
---|
248 | UINT32 TimeWaitTimeout; |
---|
249 | UINT32 KeepAliveProbes; |
---|
250 | UINT32 KeepAliveTime; |
---|
251 | UINT32 KeepAliveInterval; |
---|
252 | BOOLEAN EnableNagle; |
---|
253 | BOOLEAN EnableTimeStamp; |
---|
254 | BOOLEAN EnableWindbowScaling; |
---|
255 | BOOLEAN EnableSelectiveAck; |
---|
256 | BOOLEAN EnablePathMtuDiscovery; |
---|
257 | } EFI_TCP6_OPTION; |
---|
258 | |
---|
259 | typedef struct { |
---|
260 | UINT8 TrafficClass; |
---|
261 | UINT8 HopLimit; |
---|
262 | EFI_TCP6_ACCESS_POINT AccessPoint; |
---|
263 | EFI_TCP6_OPTION *ControlOption; |
---|
264 | } EFI_TCP6_CONFIG_DATA; |
---|
265 | |
---|
266 | typedef |
---|
267 | EFI_STATUS |
---|
268 | (EFIAPI *EFI_TCP6_GET_MODE_DATA) ( |
---|
269 | IN struct _EFI_TCP6 *This, |
---|
270 | OUT EFI_TCP6_CONNECTION_STATE *Tcp6State OPTIONAL, |
---|
271 | OUT EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL, |
---|
272 | OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL, |
---|
273 | OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, |
---|
274 | OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL |
---|
275 | ); |
---|
276 | |
---|
277 | typedef |
---|
278 | EFI_STATUS |
---|
279 | (EFIAPI *EFI_TCP6_CONFIGURE) ( |
---|
280 | IN struct _EFI_TCP6 *This, |
---|
281 | IN EFI_TCP6_CONFIG_DATA *Tcp6ConfigData OPTIONAL |
---|
282 | ); |
---|
283 | |
---|
284 | typedef struct { |
---|
285 | EFI_EVENT Event; |
---|
286 | EFI_STATUS Status; |
---|
287 | } EFI_TCP6_COMPLETION_TOKEN; |
---|
288 | |
---|
289 | typedef struct { |
---|
290 | EFI_TCP6_COMPLETION_TOKEN CompletionToken; |
---|
291 | } EFI_TCP6_CONNECTION_TOKEN; |
---|
292 | |
---|
293 | typedef |
---|
294 | EFI_STATUS |
---|
295 | (EFIAPI *EFI_TCP6_CONNECT) ( |
---|
296 | IN struct _EFI_TCP6 *This, |
---|
297 | IN EFI_TCP6_CONNECTION_TOKEN *ConnectionToken |
---|
298 | ); |
---|
299 | |
---|
300 | typedef struct { |
---|
301 | EFI_TCP6_COMPLETION_TOKEN CompletionToken; |
---|
302 | EFI_HANDLE NewChildHandle; |
---|
303 | } EFI_TCP6_LISTEN_TOKEN; |
---|
304 | |
---|
305 | typedef |
---|
306 | EFI_STATUS |
---|
307 | (EFIAPI *EFI_TCP6_ACCEPT) ( |
---|
308 | IN struct _EFI_TCP6 *This, |
---|
309 | IN EFI_TCP6_LISTEN_TOKEN *ListenToken |
---|
310 | ); |
---|
311 | |
---|
312 | typedef struct { |
---|
313 | UINT32 FragmentLength; |
---|
314 | VOID *FragmentBuffer; |
---|
315 | } EFI_TCP6_FRAGMENT_DATA; |
---|
316 | |
---|
317 | typedef struct { |
---|
318 | BOOLEAN UrgentFlag; |
---|
319 | UINT32 DataLength; |
---|
320 | UINT32 FragmentCount; |
---|
321 | EFI_TCP6_FRAGMENT_DATA FragmentTable[1]; |
---|
322 | } EFI_TCP6_RECEIVE_DATA; |
---|
323 | |
---|
324 | typedef struct { |
---|
325 | BOOLEAN Push; |
---|
326 | BOOLEAN Urgent; |
---|
327 | UINT32 DataLength; |
---|
328 | UINT32 FragmentCount; |
---|
329 | EFI_TCP6_FRAGMENT_DATA FragmentTable[1]; |
---|
330 | } EFI_TCP6_TRANSMIT_DATA; |
---|
331 | |
---|
332 | typedef struct { |
---|
333 | EFI_TCP6_COMPLETION_TOKEN CompletionToken; |
---|
334 | union { |
---|
335 | EFI_TCP6_RECEIVE_DATA *RxData; |
---|
336 | EFI_TCP6_TRANSMIT_DATA *TxData; |
---|
337 | } Packet; |
---|
338 | } EFI_TCP6_IO_TOKEN; |
---|
339 | |
---|
340 | typedef |
---|
341 | EFI_STATUS |
---|
342 | (EFIAPI *EFI_TCP6_TRANSMIT) ( |
---|
343 | IN struct _EFI_TCP6 *This, |
---|
344 | IN EFI_TCP6_IO_TOKEN *Token |
---|
345 | ); |
---|
346 | |
---|
347 | typedef |
---|
348 | EFI_STATUS |
---|
349 | (EFIAPI *EFI_TCP6_RECEIVE) ( |
---|
350 | IN struct _EFI_TCP6 *This, |
---|
351 | IN EFI_TCP6_IO_TOKEN *Token |
---|
352 | ); |
---|
353 | |
---|
354 | typedef struct { |
---|
355 | EFI_TCP6_COMPLETION_TOKEN CompletionToken; |
---|
356 | BOOLEAN AbortOnClose; |
---|
357 | } EFI_TCP6_CLOSE_TOKEN; |
---|
358 | |
---|
359 | typedef |
---|
360 | EFI_STATUS |
---|
361 | (EFIAPI *EFI_TCP6_CLOSE)( |
---|
362 | IN struct _EFI_TCP6 *This, |
---|
363 | IN EFI_TCP6_CLOSE_TOKEN *CloseToken |
---|
364 | ); |
---|
365 | |
---|
366 | typedef |
---|
367 | EFI_STATUS |
---|
368 | (EFIAPI *EFI_TCP6_CANCEL)( |
---|
369 | IN struct _EFI_TCP6 *This, |
---|
370 | IN EFI_TCP6_COMPLETION_TOKEN *Token OPTIONAL |
---|
371 | ); |
---|
372 | |
---|
373 | typedef |
---|
374 | EFI_STATUS |
---|
375 | (EFIAPI *EFI_TCP6_POLL) ( |
---|
376 | IN struct _EFI_TCP6 *This |
---|
377 | ); |
---|
378 | |
---|
379 | typedef struct _EFI_TCP6 { |
---|
380 | EFI_TCP6_GET_MODE_DATA GetModeData; |
---|
381 | EFI_TCP6_CONFIGURE Configure; |
---|
382 | EFI_TCP6_CONNECT Connect; |
---|
383 | EFI_TCP6_ACCEPT Accept; |
---|
384 | EFI_TCP6_TRANSMIT Transmit; |
---|
385 | EFI_TCP6_RECEIVE Receive; |
---|
386 | EFI_TCP6_CLOSE Close; |
---|
387 | EFI_TCP6_CANCEL Cancel; |
---|
388 | EFI_TCP6_POLL Poll; |
---|
389 | } EFI_TCP6; |
---|
390 | |
---|
391 | #endif /* _EFI_TCP_H */ |
---|