VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/NetworkPkg/TcpDxe/TcpDriver.h@ 77662

Last change on this file since 77662 was 77662, checked in by vboxsync, 6 years ago

EFI: First step in UDK2018 merge. Does not build yet.

  • Property svn:eol-style set to native
File size: 10.0 KB
Line 
1/** @file
2 The prototype of driver binding and service binding protocol for TCP driver.
3
4 Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
5
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php.
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14**/
15
16#ifndef _TCP_DRIVER_H_
17#define _TCP_DRIVER_H_
18
19#define TCP_DRIVER_SIGNATURE SIGNATURE_32 ('T', 'C', 'P', 'D')
20
21#define TCP_PORT_KNOWN 1024
22#define TCP_PORT_USER_RESERVED 65535
23
24typedef struct _TCP_HEARTBEAT_TIMER {
25 EFI_EVENT TimerEvent;
26 INTN RefCnt;
27} TCP_HEARTBEAT_TIMER;
28
29typedef struct _TCP_SERVICE_DATA {
30 UINT32 Signature;
31 EFI_HANDLE ControllerHandle;
32 EFI_HANDLE DriverBindingHandle;
33 UINT8 IpVersion;
34 IP_IO *IpIo;
35 EFI_SERVICE_BINDING_PROTOCOL ServiceBinding;
36 LIST_ENTRY SocketList;
37} TCP_SERVICE_DATA;
38
39typedef struct _TCP_PROTO_DATA {
40 TCP_SERVICE_DATA *TcpService;
41 TCP_CB *TcpPcb;
42} TCP_PROTO_DATA;
43
44#define TCP_SERVICE_FROM_THIS(a) \
45 CR ( \
46 (a), \
47 TCP_SERVICE_DATA, \
48 ServiceBinding, \
49 TCP_DRIVER_SIGNATURE \
50 )
51
52//
53// Function prototype for the driver's entry point
54//
55
56/**
57 The entry point for Tcp driver, used to install Tcp driver on the ImageHandle.
58
59 @param[in] ImageHandle The firmware allocated handle for this driver image.
60 @param[in] SystemTable Pointer to the EFI system table.
61
62 @retval EFI_SUCCESS The driver loaded.
63 @retval other The driver did not load.
64
65**/
66EFI_STATUS
67EFIAPI
68TcpDriverEntryPoint (
69 IN EFI_HANDLE ImageHandle,
70 IN EFI_SYSTEM_TABLE *SystemTable
71 );
72
73//
74// Function prototypes for the Driver Binding Protocol
75//
76
77/**
78 Test to see if this driver supports ControllerHandle.
79
80 @param[in] This Protocol instance pointer.
81 @param[in] ControllerHandle Handle of the device to test.
82 @param[in] RemainingDevicePath Optional parameter use to pick a specific
83 child device to start.
84
85 @retval EFI_SUCCESS This driver supports this device.
86 @retval EFI_ALREADY_STARTED This driver is already running on this device.
87 @retval other This driver does not support this device.
88
89**/
90EFI_STATUS
91EFIAPI
92Tcp4DriverBindingSupported (
93 IN EFI_DRIVER_BINDING_PROTOCOL *This,
94 IN EFI_HANDLE ControllerHandle,
95 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
96 );
97
98/**
99 Start this driver on ControllerHandle.
100
101 @param[in] This Protocol instance pointer.
102 @param[in] ControllerHandle Handle of device to bind driver to.
103 @param[in] RemainingDevicePath Optional parameter use to pick a specific child
104 device to start.
105
106 @retval EFI_SUCCESS The driver was added to ControllerHandle.
107 @retval EFI_OUT_OF_RESOURCES There are not enough resources to start the
108 driver.
109 @retval other The driver cannot be added to ControllerHandle.
110
111**/
112EFI_STATUS
113EFIAPI
114Tcp4DriverBindingStart (
115 IN EFI_DRIVER_BINDING_PROTOCOL *This,
116 IN EFI_HANDLE ControllerHandle,
117 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
118 );
119
120/**
121 Stop this driver on ControllerHandle.
122
123 @param[in] This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
124 @param[in] ControllerHandle A handle to the device being stopped. The handle must
125 support a bus specific I/O protocol for the driver
126 to use to stop the device.
127 @param[in] NumberOfChildren The number of child device handles in ChildHandleBuffer.
128 @param[in] ChildHandleBuffer An array of child handles to be freed. May be NULL
129 if NumberOfChildren is 0.
130
131 @retval EFI_SUCCESS The device was stopped.
132 @retval EFI_DEVICE_ERROR The device could not be stopped due to a device error.
133
134**/
135EFI_STATUS
136EFIAPI
137Tcp4DriverBindingStop (
138 IN EFI_DRIVER_BINDING_PROTOCOL *This,
139 IN EFI_HANDLE ControllerHandle,
140 IN UINTN NumberOfChildren,
141 IN EFI_HANDLE *ChildHandleBuffer OPTIONAL
142 );
143
144/**
145 Test to see if this driver supports ControllerHandle.
146
147 @param[in] This Protocol instance pointer.
148 @param[in] ControllerHandle Handle of the device to test.
149 @param[in] RemainingDevicePath Optional parameter use to pick a specific
150 child device to start.
151
152 @retval EFI_SUCCESS This driver supports this device.
153 @retval EFI_ALREADY_STARTED This driver is already running on this device.
154 @retval other This driver does not support this device.
155
156**/
157EFI_STATUS
158EFIAPI
159Tcp6DriverBindingSupported (
160 IN EFI_DRIVER_BINDING_PROTOCOL *This,
161 IN EFI_HANDLE ControllerHandle,
162 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
163 );
164
165/**
166 Start this driver on ControllerHandle.
167
168 @param[in] This Protocol instance pointer.
169 @param[in] ControllerHandle Handle of device to bind driver to.
170 @param[in] RemainingDevicePath Optional parameter use to pick a specific child
171 device to start.
172
173 @retval EFI_SUCCESS The driver was added to ControllerHandle.
174 @retval EFI_OUT_OF_RESOURCES There are not enough resources to start the
175 driver.
176 @retval other The driver cannot be added to ControllerHandle.
177
178**/
179EFI_STATUS
180EFIAPI
181Tcp6DriverBindingStart (
182 IN EFI_DRIVER_BINDING_PROTOCOL *This,
183 IN EFI_HANDLE ControllerHandle,
184 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
185 );
186
187/**
188 Stop this driver on ControllerHandle.
189
190 @param[in] This A pointer to the EFI_DRIVER_BINDING_PROTOCOL instance.
191 @param[in] ControllerHandle A handle to the device being stopped. The handle must
192 support a bus specific I/O protocol for the driver
193 to use to stop the device.
194 @param[in] NumberOfChildren The number of child device handles in ChildHandleBuffer.
195 @param[in] ChildHandleBuffer An array of child handles to be freed. May be NULL
196 if NumberOfChildren is 0.
197
198 @retval EFI_SUCCESS The device was stopped.
199 @retval EFI_DEVICE_ERROR The device could not be stopped due to a device error.
200
201**/
202EFI_STATUS
203EFIAPI
204Tcp6DriverBindingStop (
205 IN EFI_DRIVER_BINDING_PROTOCOL *This,
206 IN EFI_HANDLE ControllerHandle,
207 IN UINTN NumberOfChildren,
208 IN EFI_HANDLE *ChildHandleBuffer OPTIONAL
209 );
210
211/**
212 The Callback funtion called after the TCP socket is created.
213
214 @param[in] This Pointer to the socket just created.
215 @param[in] Context The context of the socket.
216
217 @retval EFI_SUCCESS This protocol is installed successfully.
218 @retval other An error occured.
219
220**/
221EFI_STATUS
222TcpCreateSocketCallback (
223 IN SOCKET *This,
224 IN VOID *Context
225 );
226
227/**
228 The callback function called before the TCP socket is to be destroyed.
229
230 @param[in] This The TCP socket to be destroyed.
231 @param[in] Context The context of the socket.
232
233**/
234VOID
235TcpDestroySocketCallback (
236 IN SOCKET *This,
237 IN VOID *Context
238 );
239
240//
241// Function prototypes for the ServiceBinding Protocol
242//
243
244/**
245 Creates a child handle with a set of TCP services.
246
247 The CreateChild() function installs a protocol on ChildHandle.
248 If ChildHandle is a pointer to NULL, then a new handle is created and returned in ChildHandle.
249 If ChildHandle is not a pointer to NULL, then the protocol installs on the existing ChildHandle.
250
251 @param[in] This Pointer to the EFI_SERVICE_BINDING_PROTOCOL instance.
252 @param[in, out] ChildHandle Pointer to the handle of the child to create.
253 If it is NULL, then a new handle is created.
254 If it is a pointer to an existing UEFI handle,
255 then the protocol is added to the existing UEFI handle.
256
257 @retval EFI_SUCCES The protocol was added to ChildHandle.
258 @retval EFI_INVALID_PARAMETER ChildHandle is NULL.
259 @retval EFI_OUT_OF_RESOURCES There are not enough resources available to create
260 the child.
261 @retval other The child handle was not created.
262
263**/
264EFI_STATUS
265EFIAPI
266TcpServiceBindingCreateChild (
267 IN EFI_SERVICE_BINDING_PROTOCOL *This,
268 IN OUT EFI_HANDLE *ChildHandle
269 );
270
271/**
272 Destroys a child handle with a set of TCP services.
273
274 The DestroyChild() function does the opposite of CreateChild(). It removes a protocol
275 that was installed by CreateChild() from ChildHandle. If the removed protocol is the
276 last protocol on ChildHandle, then ChildHandle is destroyed.
277
278 @param This Pointer to the EFI_SERVICE_BINDING_PROTOCOL instance.
279 @param ChildHandle Handle of the child to destroy.
280
281 @retval EFI_SUCCES The protocol was removed from ChildHandle.
282 @retval EFI_UNSUPPORTED ChildHandle does not support the protocol that is being removed.
283 @retval EFI_INVALID_PARAMETER The child handle is NULL.
284 @retval EFI_ACCESS_DENIED The protocol could not be removed from the ChildHandle
285 because its services are being used.
286 @retval other The child handle was not destroyed.
287
288**/
289EFI_STATUS
290EFIAPI
291TcpServiceBindingDestroyChild (
292 IN EFI_SERVICE_BINDING_PROTOCOL *This,
293 IN EFI_HANDLE ChildHandle
294 );
295
296#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette