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