]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/Network/PxeDhcp4Dxe/PxeDhcp4.h
Clean up to update the reference of the these macros:
[mirror_edk2.git] / MdeModulePkg / Universal / Network / PxeDhcp4Dxe / PxeDhcp4.h
1 /** @file
2
3 Copyright (c) 2004 - 2007, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13 PxeDhcp4.h
14
15 Abstract:
16 Common header for PxeDhcp4 protocol driver
17
18
19 **/
20 #ifndef _PXEDHCP4_H
21 #define _PXEDHCP4_H
22
23
24 #include <PiDxe.h>
25
26 #include <Protocol/PxeBaseCode.h>
27 #include <Protocol/SimpleNetwork.h>
28 #include <Protocol/PxeDhcp4.h>
29 #include <Protocol/PxeDhcp4CallBack.h>
30
31 #include <Library/DebugLib.h>
32 #include <Library/BaseMemoryLib.h>
33 #include <Library/MemoryAllocationLib.h>
34 #include <Library/UefiDriverEntryPoint.h>
35 #include <Library/UefiBootServicesTableLib.h>
36 #include <Library/UefiLib.h>
37
38 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
39
40 //
41 // PxeDhcp4 protocol instance data
42 //
43 typedef struct {
44 //
45 // Signature field used to locate beginning of containment record.
46 //
47 UINTN Signature;
48
49 #define PXE_DHCP4_PRIVATE_DATA_SIGNATURE 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 //
116 extern
117 EFI_STATUS
118 EFIAPI
119 PxeDhcp4Run (
120 IN EFI_PXE_DHCP4_PROTOCOL *This,
121 IN OPTIONAL UINTN OpLen,
122 IN OPTIONAL VOID *OpList
123 );
124
125 extern
126 EFI_STATUS
127 EFIAPI
128 PxeDhcp4Setup (
129 IN EFI_PXE_DHCP4_PROTOCOL *This,
130 IN EFI_PXE_DHCP4_DATA *Data
131 );
132
133 extern
134 EFI_STATUS
135 EFIAPI
136 PxeDhcp4Init (
137 IN EFI_PXE_DHCP4_PROTOCOL *This,
138 IN UINTN seconds_timeout,
139 OUT UINTN *offer_list_entries,
140 OUT DHCP4_PACKET **offer_list
141 );
142
143 extern
144 EFI_STATUS
145 EFIAPI
146 PxeDhcp4Select (
147 IN EFI_PXE_DHCP4_PROTOCOL *This,
148 IN UINTN seconds_timeout,
149 IN DHCP4_PACKET *offer_list
150 );
151
152 extern
153 EFI_STATUS
154 EFIAPI
155 PxeDhcp4Renew (
156 IN EFI_PXE_DHCP4_PROTOCOL *This,
157 UINTN seconds_timeout
158 );
159
160 extern
161 EFI_STATUS
162 EFIAPI
163 PxeDhcp4Rebind (
164 IN EFI_PXE_DHCP4_PROTOCOL *This,
165 UINTN seconds_timeout
166 );
167
168 extern
169 EFI_STATUS
170 EFIAPI
171 PxeDhcp4Release (
172 IN EFI_PXE_DHCP4_PROTOCOL *This
173 );
174
175 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
176
177 //
178 // Support function prototypes.
179 //
180 extern
181 UINT16
182 htons (
183 UINTN n
184 );
185
186 extern
187 UINT32
188 htonl (
189 UINTN n
190 );
191
192 extern
193 VOID
194 EFIAPI
195 timeout_notify (
196 IN EFI_EVENT Event,
197 IN VOID *Context
198 );
199
200 extern
201 VOID
202 EFIAPI
203 periodic_notify (
204 IN EFI_EVENT Event,
205 IN VOID *Context
206 );
207
208 extern
209 EFI_STATUS
210 find_opt (
211 IN DHCP4_PACKET *Packet,
212 IN UINT8 OpCode,
213 IN UINTN Skip,
214 OUT DHCP4_OP **OpPtr
215 );
216
217 extern
218 EFI_STATUS
219 add_opt (
220 IN DHCP4_PACKET *Packet,
221 IN DHCP4_OP *OpPtr
222 );
223
224 extern
225 EFI_STATUS
226 start_udp (
227 IN PXE_DHCP4_PRIVATE_DATA *Private,
228 IN OPTIONAL EFI_IP_ADDRESS *station_ip,
229 IN OPTIONAL EFI_IP_ADDRESS *subnet_mask
230 );
231
232 extern
233 VOID
234 stop_udp (
235 IN PXE_DHCP4_PRIVATE_DATA *Private
236 );
237
238 extern
239 EFI_STATUS
240 start_receive_events (
241 IN PXE_DHCP4_PRIVATE_DATA *Private,
242 IN UINTN seconds_timeout
243 );
244
245 extern
246 VOID
247 stop_receive_events (
248 IN PXE_DHCP4_PRIVATE_DATA *Private
249 );
250
251 extern
252 EFI_STATUS
253 tx_udp (
254 IN PXE_DHCP4_PRIVATE_DATA *Private,
255 IN EFI_IP_ADDRESS *dest_ip,
256 IN OPTIONAL EFI_IP_ADDRESS *gateway_ip,
257 IN EFI_IP_ADDRESS *src_ip,
258 IN VOID *buffer,
259 IN UINTN BufferSize
260 );
261
262 extern
263 EFI_STATUS
264 rx_udp (
265 IN PXE_DHCP4_PRIVATE_DATA *Private,
266 OUT VOID *buffer,
267 OUT UINTN *BufferSize,
268 IN OUT EFI_IP_ADDRESS *dest_ip,
269 IN OUT EFI_IP_ADDRESS *src_ip,
270 IN UINT16 op_flags
271 );
272
273 extern
274 EFI_STATUS
275 tx_rx_udp (
276 IN PXE_DHCP4_PRIVATE_DATA *Private,
277 IN OUT EFI_IP_ADDRESS *ServerIp,
278 IN OPTIONAL EFI_IP_ADDRESS *gateway_ip,
279 IN OPTIONAL EFI_IP_ADDRESS *client_ip,
280 IN OPTIONAL EFI_IP_ADDRESS *subnet_mask,
281 IN DHCP4_PACKET *tx_pkt,
282 OUT DHCP4_PACKET *rx_pkt,
283 IN INTN
284 (
285 *rx_vfy)
286 (
287 IN PXE_DHCP4_PRIVATE_DATA *Private,
288 IN DHCP4_PACKET *tx_pkt,
289 IN DHCP4_PACKET *rx_pkt,
290 IN UINTN rx_pkt_size
291 ),
292 IN UINTN seconds_timeout
293 );
294
295 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
296
297 //
298 // Global variable definitions.
299 //
300 extern EFI_COMPONENT_NAME_PROTOCOL gPxeDhcp4ComponentName;
301 extern EFI_COMPONENT_NAME2_PROTOCOL gPxeDhcp4ComponentName2;
302
303 EFI_STATUS
304 EFIAPI
305 PxeDhcp4DriverEntryPoint (
306 IN EFI_HANDLE ImageHandle,
307 IN EFI_SYSTEM_TABLE *SystemTable
308 )
309 /*++
310
311 Routine Description:
312 Register Driver Binding protocol for this driver.
313
314 Arguments:
315 (Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT)
316
317 Returns:
318 EFI_SUCCESS - Driver loaded.
319 other - Driver not loaded.
320
321 --*/
322 ;
323
324 #endif /* _PXEDHCP4_H */
325
326 /* EOF - PxeDhcp4.h */