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