]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Network/PxeDhcp4Dxe/PxeDhcp4.h
Changed the file or directory name inconsistences
[mirror_edk2.git] / MdeModulePkg / Universal / Network / PxeDhcp4Dxe / PxeDhcp4.h
CommitLineData
83cbd279 1/** @file\r
2\r
3Copyright (c) 2004 - 2007, 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 PxeDhcp4.h\r
14\r
15Abstract:\r
16 Common header for PxeDhcp4 protocol driver\r
17\r
18\r
19**/\r
20#ifndef _PXEDHCP4_H\r
21#define _PXEDHCP4_H\r
22\r
772db4bb 23\r
24#include <PiDxe.h>\r
25\r
26#include <Protocol/PxeBaseCode.h>\r
83cbd279 27#include <Protocol/SimpleNetwork.h>\r
28#include <Protocol/PxeDhcp4.h>\r
772db4bb 29#include <Protocol/PxeDhcp4Callback.h>\r
30\r
31#include <Library/DebugLib.h>\r
83cbd279 32#include <Library/BaseMemoryLib.h>\r
772db4bb 33#include <Library/MemoryAllocationLib.h>\r
34#include <Library/UefiDriverEntryPoint.h>\r
35#include <Library/UefiBootServicesTableLib.h>\r
83cbd279 36#include <Library/UefiLib.h>\r
37\r
38/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
39\r
40//\r
41// PxeDhcp4 protocol instance data\r
42//\r
43typedef struct {\r
44 //\r
45 // Signature field used to locate beginning of containment record.\r
46 //\r
47 UINTN Signature;\r
48\r
49#define PXE_DHCP4_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('p', 'x', 'D', '4')\r
50 //\r
51 // Device handle the protocol is bound to.\r
52 //\r
53 EFI_HANDLE Handle;\r
54\r
55 //\r
56 // Public PxeDhcp4 protocol interface.\r
57 //\r
58 EFI_PXE_DHCP4_PROTOCOL PxeDhcp4;\r
59\r
60 //\r
61 // Consumed PxeBc, Snp and PxeDhcp4Callback protocol interfaces.\r
62 //\r
63 EFI_PXE_BASE_CODE_PROTOCOL *PxeBc;\r
64 EFI_SIMPLE_NETWORK_PROTOCOL *Snp;\r
65 EFI_PXE_DHCP4_CALLBACK_PROTOCOL *callback;\r
66\r
67 //\r
68 // PxeDhcp4 called function for PxeDhcp4Callback.\r
69 //\r
70 EFI_PXE_DHCP4_FUNCTION function;\r
71\r
72 //\r
73 // Timeout event and flag for PxeDhcp4Callback.\r
74 //\r
75 EFI_EVENT TimeoutEvent;\r
76 BOOLEAN TimeoutOccurred;\r
77\r
78 //\r
79 // Periodic event and flag for PxeDhcp4Callback.\r
80 //\r
81 EFI_EVENT PeriodicEvent;\r
82 BOOLEAN PeriodicOccurred;\r
83\r
84 //\r
85 // DHCP server IP address.\r
86 //\r
87 UINT32 ServerIp;\r
88\r
89 //\r
90 // DHCP renewal and rebinding times, in seconds.\r
91 //\r
92 UINT32 RenewTime;\r
93 UINT32 RebindTime;\r
94 UINT32 LeaseTime;\r
95\r
96 //\r
97 // Number of offers received & allocated offer list.\r
98 //\r
99 UINTN offers;\r
100 DHCP4_PACKET *offer_list;\r
101\r
102 //\r
103 //\r
104 //\r
105 BOOLEAN StopPxeBc;\r
106\r
107} PXE_DHCP4_PRIVATE_DATA;\r
108\r
109#define PXE_DHCP4_PRIVATE_DATA_FROM_THIS(a) CR (a, PXE_DHCP4_PRIVATE_DATA, PxeDhcp4, PXE_DHCP4_PRIVATE_DATA_SIGNATURE)\r
110\r
111/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
112\r
113//\r
114// Protocol function prototypes.\r
115//\r
116extern\r
117EFI_STATUS \r
118EFIAPI\r
119PxeDhcp4Run (\r
120 IN EFI_PXE_DHCP4_PROTOCOL *This,\r
121 IN OPTIONAL UINTN OpLen,\r
122 IN OPTIONAL VOID *OpList\r
123 )\r
124;\r
125\r
126extern\r
127EFI_STATUS \r
128EFIAPI\r
129PxeDhcp4Setup (\r
130 IN EFI_PXE_DHCP4_PROTOCOL *This,\r
131 IN EFI_PXE_DHCP4_DATA *Data\r
132 )\r
133;\r
134\r
135extern\r
136EFI_STATUS \r
137EFIAPI\r
138PxeDhcp4Init (\r
139 IN EFI_PXE_DHCP4_PROTOCOL *This,\r
140 IN UINTN seconds_timeout,\r
141 OUT UINTN *offer_list_entries,\r
142 OUT DHCP4_PACKET **offer_list\r
143 )\r
144;\r
145\r
146extern\r
147EFI_STATUS \r
148EFIAPI\r
149PxeDhcp4Select (\r
150 IN EFI_PXE_DHCP4_PROTOCOL *This,\r
151 IN UINTN seconds_timeout,\r
152 IN DHCP4_PACKET *offer_list\r
153 )\r
154;\r
155\r
156extern\r
157EFI_STATUS \r
158EFIAPI\r
159PxeDhcp4Renew (\r
160 IN EFI_PXE_DHCP4_PROTOCOL *This,\r
161 UINTN seconds_timeout\r
162 )\r
163;\r
164\r
165extern\r
166EFI_STATUS \r
167EFIAPI\r
168PxeDhcp4Rebind (\r
169 IN EFI_PXE_DHCP4_PROTOCOL *This,\r
170 UINTN seconds_timeout\r
171 )\r
172;\r
173\r
174extern\r
175EFI_STATUS \r
176EFIAPI\r
177PxeDhcp4Release (\r
178 IN EFI_PXE_DHCP4_PROTOCOL *This\r
179 )\r
180;\r
181\r
182/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
183\r
184//\r
185// Support function prototypes.\r
186//\r
187extern\r
188UINT16 \r
189htons (\r
190 UINTN n\r
191 )\r
192;\r
193\r
194extern\r
195UINT32 \r
196htonl (\r
197 UINTN n\r
198 )\r
199;\r
200\r
201extern\r
202VOID \r
203EFIAPI\r
204timeout_notify (\r
205 IN EFI_EVENT Event,\r
206 IN VOID *Context\r
207 )\r
208;\r
209\r
210extern\r
211VOID \r
212EFIAPI\r
213periodic_notify (\r
214 IN EFI_EVENT Event,\r
215 IN VOID *Context\r
216 )\r
217;\r
218\r
219extern\r
220EFI_STATUS \r
221find_opt (\r
222 IN DHCP4_PACKET *Packet,\r
223 IN UINT8 OpCode,\r
224 IN UINTN Skip,\r
225 OUT DHCP4_OP **OpPtr\r
226 )\r
227;\r
228\r
229extern\r
230EFI_STATUS \r
231add_opt (\r
232 IN DHCP4_PACKET *Packet,\r
233 IN DHCP4_OP *OpPtr\r
234 )\r
235;\r
236\r
237extern\r
238EFI_STATUS \r
239start_udp (\r
240 IN PXE_DHCP4_PRIVATE_DATA *Private,\r
241 IN OPTIONAL EFI_IP_ADDRESS *station_ip,\r
242 IN OPTIONAL EFI_IP_ADDRESS *subnet_mask\r
243 )\r
244;\r
245\r
246extern\r
247VOID \r
248stop_udp (\r
249 IN PXE_DHCP4_PRIVATE_DATA *Private\r
250 )\r
251;\r
252\r
253extern\r
254EFI_STATUS \r
255start_receive_events (\r
256 IN PXE_DHCP4_PRIVATE_DATA *Private,\r
257 IN UINTN seconds_timeout\r
258 )\r
259;\r
260\r
261extern\r
262VOID \r
263stop_receive_events (\r
264 IN PXE_DHCP4_PRIVATE_DATA *Private\r
265 )\r
266;\r
267\r
268extern\r
269EFI_STATUS \r
270tx_udp (\r
271 IN PXE_DHCP4_PRIVATE_DATA *Private,\r
272 IN EFI_IP_ADDRESS *dest_ip,\r
273 IN OPTIONAL EFI_IP_ADDRESS *gateway_ip,\r
274 IN EFI_IP_ADDRESS *src_ip,\r
275 IN VOID *buffer,\r
276 IN UINTN BufferSize\r
277 )\r
278;\r
279\r
280extern\r
281EFI_STATUS \r
282rx_udp (\r
283 IN PXE_DHCP4_PRIVATE_DATA *Private,\r
284 OUT VOID *buffer,\r
285 OUT UINTN *BufferSize,\r
286 IN OUT EFI_IP_ADDRESS *dest_ip,\r
287 IN OUT EFI_IP_ADDRESS *src_ip,\r
288 IN UINT16 op_flags\r
289 )\r
290;\r
291\r
292extern\r
293EFI_STATUS \r
294tx_rx_udp (\r
295 IN PXE_DHCP4_PRIVATE_DATA *Private,\r
296 IN OUT EFI_IP_ADDRESS *ServerIp,\r
297 IN OPTIONAL EFI_IP_ADDRESS *gateway_ip,\r
298 IN OPTIONAL EFI_IP_ADDRESS *client_ip,\r
299 IN OPTIONAL EFI_IP_ADDRESS *subnet_mask,\r
300 IN DHCP4_PACKET *tx_pkt,\r
301 OUT DHCP4_PACKET *rx_pkt,\r
302 IN INTN\r
303 (\r
304 *rx_vfy)\r
305 (\r
306 IN PXE_DHCP4_PRIVATE_DATA *Private,\r
307 IN DHCP4_PACKET *tx_pkt,\r
308 IN DHCP4_PACKET *rx_pkt,\r
309 IN UINTN rx_pkt_size\r
310 ),\r
311 IN UINTN seconds_timeout\r
312 )\r
313;\r
314\r
315/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
316\r
317//\r
318// Global variable definitions.\r
319//\r
320extern EFI_COMPONENT_NAME_PROTOCOL gPxeDhcp4ComponentName;\r
321extern EFI_COMPONENT_NAME2_PROTOCOL gPxeDhcp4ComponentName2;\r
322\r
323EFI_STATUS\r
324EFIAPI\r
325PxeDhcp4DriverEntryPoint (\r
326 IN EFI_HANDLE ImageHandle,\r
327 IN EFI_SYSTEM_TABLE *SystemTable\r
328 )\r
329/*++\r
330\r
331Routine Description:\r
332 Register Driver Binding protocol for this driver.\r
333\r
334Arguments:\r
335 (Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT)\r
336\r
337Returns:\r
338 EFI_SUCCESS - Driver loaded.\r
339 other - Driver not loaded.\r
340\r
341--*/\r
342;\r
343\r
344#endif /* _PXEDHCP4_H */\r
345\r
346/* EOF - PxeDhcp4.h */\r