]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Driver.h
Sync the bug that list node is free before it is removed from the list. That made...
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Tcp4Dxe / Tcp4Driver.h
CommitLineData
83cbd279 1/** @file\r
2\r
3Copyright (c) 2005 - 2006, Intel Corporation\r
4All rights reserved. This program and the accompanying materials\r
5are licensed and made available under the terms and conditions of the BSD License\r
6which accompanies this distribution. The full text of the license may be found at\r
7http://opensource.org/licenses/bsd-license.php\r
8\r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11\r
12Module Name:\r
13\r
14 Tcp4Driver.h\r
15\r
16Abstract:\r
17\r
18\r
19**/\r
20\r
21#ifndef _TCP4_DRIVER_H_\r
22#define _TCP4_DRIVER_H_\r
23\r
24#include <Protocol/ServiceBinding.h>\r
25#include <Library/IpIoLib.h>\r
26\r
27#define TCP4_DRIVER_SIGNATURE EFI_SIGNATURE_32 ('T', 'C', 'P', '4')\r
28\r
29#define TCP4_PORT_KNOWN 1024\r
30#define TCP4_PORT_USER_RESERVED 65535\r
31\r
32typedef struct _TCP4_HEARTBEAT_TIMER {\r
33 EFI_EVENT TimerEvent;\r
34 INTN RefCnt;\r
35} TCP4_HEARTBEAT_TIMER;\r
36\r
37typedef struct _TCP4_SERVICE_DATA {\r
38 UINT32 Signature;\r
39 EFI_HANDLE ControllerHandle;\r
40 IP_IO *IpIo; // IP Io consumed by TCP4\r
41 EFI_SERVICE_BINDING_PROTOCOL Tcp4ServiceBinding;\r
42 EFI_HANDLE DriverBindingHandle;\r
43 CHAR16 *MacString;\r
c4a62a12 44 NET_LIST_ENTRY SocketList;\r
83cbd279 45} TCP4_SERVICE_DATA;\r
46\r
47//\r
48// Prototype for TCP4 driver Rcv callback function registered to IP_IO\r
49//\r
50VOID\r
51Tcp4RxCallback (\r
52 IN EFI_STATUS Status,\r
53 IN ICMP_ERROR IcmpErr,\r
54 IN EFI_NET_SESSION_DATA *NetSession,\r
55 IN NET_BUF *Pkt,\r
56 IN VOID *Context OPTIONAL\r
57 );\r
58\r
59INTN\r
60TcpSendIpPacket (\r
61 IN TCP_CB *Tcb,\r
62 IN NET_BUF *Nbuf,\r
63 IN UINT32 Src,\r
64 IN UINT32 Dest\r
65 );\r
66\r
67EFI_STATUS\r
68Tcp4Dispatcher (\r
69 IN SOCKET *Sock,\r
70 IN SOCK_REQUEST Request,\r
71 IN VOID *Data OPTIONAL\r
72 );\r
73\r
74typedef struct _TCP4_PROTO_DATA {\r
75 TCP4_SERVICE_DATA *TcpService;\r
76 TCP_CB *TcpPcb;\r
77} TCP4_PROTO_DATA;\r
78\r
79#define TCP4_FROM_THIS(a) \\r
80 CR ( \\r
81 (a), \\r
82 TCP4_SERVICE_DATA, \\r
83 Tcp4ServiceBinding, \\r
84 TCP4_DRIVER_SIGNATURE \\r
85 )\r
86\r
87//\r
88// Function prototype for the driver's entry point\r
89//\r
90EFI_STATUS\r
91EFIAPI\r
92Tcp4DriverEntryPoint (\r
93 IN EFI_HANDLE ImageHandle,\r
94 IN EFI_SYSTEM_TABLE *SystemTable\r
95 );\r
96\r
97//\r
98// Function prototypes for the Drivr Binding Protocol\r
99//\r
100EFI_STATUS\r
101EFIAPI\r
102Tcp4DriverBindingSupported (\r
103 IN EFI_DRIVER_BINDING_PROTOCOL * This,\r
104 IN EFI_HANDLE ControllerHandle,\r
105 IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL\r
106 );\r
107\r
108EFI_STATUS\r
109EFIAPI\r
110Tcp4DriverBindingStart (\r
111 IN EFI_DRIVER_BINDING_PROTOCOL * This,\r
112 IN EFI_HANDLE ControllerHandle,\r
113 IN EFI_DEVICE_PATH_PROTOCOL * RemainingDevicePath OPTIONAL\r
114 );\r
115\r
116EFI_STATUS\r
117EFIAPI\r
118Tcp4DriverBindingStop (\r
119 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
120 IN EFI_HANDLE ControllerHandle,\r
121 IN UINTN NumberOfChildren,\r
122 IN EFI_HANDLE *ChildHandleBuffer\r
123 );\r
124\r
4f6e31e4 125EFI_STATUS\r
126Tcp4CreateSocketCallback (\r
127 IN SOCKET *This,\r
128 IN VOID *Context\r
129 );\r
130\r
131VOID\r
132Tcp4DestroySocketCallback (\r
133 IN SOCKET *This,\r
134 IN VOID *Context\r
135 );\r
136\r
83cbd279 137//\r
138// Function ptototypes for the ServiceBinding Prococol\r
139//\r
140EFI_STATUS\r
141EFIAPI\r
142Tcp4ServiceBindingCreateChild (\r
143 IN EFI_SERVICE_BINDING_PROTOCOL *This,\r
144 IN EFI_HANDLE *ChildHandle\r
145 );\r
146\r
147EFI_STATUS\r
148EFIAPI\r
149Tcp4ServiceBindingDestroyChild (\r
150 IN EFI_SERVICE_BINDING_PROTOCOL *This,\r
151 IN EFI_HANDLE ChildHandle\r
152 );\r
153\r
154#endif\r