]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/Network/IScsiDxe/IScsiTcp4Io.h
538e6b7ce353ef73b82bf29a4b07ce61e0d73348
[mirror_edk2.git] / MdeModulePkg / Universal / Network / IScsiDxe / IScsiTcp4Io.h
1 /** @file
2 iSCSI Tcp4 IO related definitions.
3
4 Copyright (c) 2004 - 2008, Intel Corporation.<BR>
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _ISCSI_TCP4_IO_H_
16 #define _ISCSI_TCP4_IO_H_
17
18 #include <Library/NetLib.h>
19 #include <Protocol/Tcp4.h>
20
21 typedef struct _TCP4_IO_CONFIG_DATA {
22 EFI_IPv4_ADDRESS LocalIp;
23 EFI_IPv4_ADDRESS SubnetMask;
24 EFI_IPv4_ADDRESS Gateway;
25
26 EFI_IPv4_ADDRESS RemoteIp;
27 UINT16 RemotePort;
28 } TCP4_IO_CONFIG_DATA;
29
30 typedef struct _TCP4_IO {
31 EFI_HANDLE Image;
32 EFI_HANDLE Controller;
33
34 EFI_HANDLE Handle;
35 EFI_TCP4_PROTOCOL *Tcp4;
36
37 EFI_TCP4_CONNECTION_TOKEN ConnToken;
38 EFI_TCP4_IO_TOKEN TxToken;
39 EFI_TCP4_IO_TOKEN RxToken;
40 EFI_TCP4_CLOSE_TOKEN CloseToken;
41
42 BOOLEAN IsConnDone;
43 BOOLEAN IsTxDone;
44 BOOLEAN IsRxDone;
45 BOOLEAN IsCloseDone;
46 } TCP4_IO;
47
48 /**
49 Create a TCP socket with the specified configuration data.
50
51 @param[in] Image The handle of the driver image.
52 @param[in] Controller The handle of the controller.
53 @param[in] ConfigData The Tcp4 configuration data.
54 @param[in] Tcp4Io The Tcp4Io.
55
56 @retval EFI_SUCCESS The TCP socket is created and configured.
57 @retval Others Failed to create the TCP socket or configure it.
58 **/
59 EFI_STATUS
60 Tcp4IoCreateSocket (
61 IN EFI_HANDLE Image,
62 IN EFI_HANDLE Controller,
63 IN TCP4_IO_CONFIG_DATA *ConfigData,
64 IN TCP4_IO *Tcp4Io
65 );
66
67 /**
68 Destroy the socket.
69
70 @param[in] Tcp4Io The Tcp4Io which wraps the socket to be destroyeds.
71 **/
72 VOID
73 Tcp4IoDestroySocket (
74 IN TCP4_IO *Tcp4Io
75 );
76
77 /**
78 Connect to the other endpoint of the TCP socket.
79
80 @param[in, out] Tcp4Io The Tcp4Io wrapping the TCP socket.
81 @param[in] Timeout The time to wait for connection done.
82
83 @retval EFI_SUCCESS Connect to the other endpoint of the TCP socket successfully.
84 @retval EFI_TIMEOUT Failed to connect to the other endpoint of the TCP socket in the specified time period.
85 @retval Others Other errors as indicated.
86 **/
87 EFI_STATUS
88 Tcp4IoConnect (
89 IN OUT TCP4_IO *Tcp4Io,
90 IN EFI_EVENT Timeout
91 );
92
93 /**
94 Reset the socket.
95
96 @param[in, out] Tcp4Io The Tcp4Io wrapping the TCP socket.
97 **/
98 VOID
99 Tcp4IoReset (
100 IN OUT TCP4_IO *Tcp4Io
101 );
102
103 /**
104 Transmit the Packet to the other endpoint of the socket.
105
106 @param[in] Tcp4Io The Tcp4Io wrapping the TCP socket.
107 @param[in] Packet The packet to transmit.
108
109 @retval EFI_SUCCESS The packet is trasmitted.
110 @retval EFI_OUT_OF_RESOURCES Failed to allocate memory.
111 @retval Others Other errors as indicated.
112 **/
113 EFI_STATUS
114 Tcp4IoTransmit (
115 IN TCP4_IO *Tcp4Io,
116 IN NET_BUF *Packet
117 );
118
119 /**
120 Receive data from the socket.
121
122 @param[in] Tcp4Io The Tcp4Io which wraps the socket to be destroyed.
123 @param[in] Packet The buffer to hold the data copy from the soket rx buffer.
124 @param[in] AsyncMode Is this receive asyncronous or not.
125 @param[in] Timeout The time to wait for receiving the amount of data the Packet
126 can hold.
127
128 @retval EFI_SUCCESS The required amount of data is received from the socket.
129 @retval EFI_OUT_OF_RESOURCES Failed to allocate momery.
130 @retval EFI_TIMEOUT Failed to receive the required amount of data in the
131 specified time period.
132 @retval Others Other errors as indicated.
133 **/
134 EFI_STATUS
135 Tcp4IoReceive (
136 IN TCP4_IO *Tcp4Io,
137 IN NET_BUF *Packet,
138 IN BOOLEAN AsyncMode,
139 IN EFI_EVENT Timeout
140 );
141
142 #endif