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