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
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.
16 Common header for PxeDhcp4 protocol driver
23 // PxeDhcp4 protocol instance data
27 // Signature field used to locate beginning of containment record.
31 #define PXE_DHCP4_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('p', 'x', 'D', '4')
33 // Device handle the protocol is bound to.
38 // Public PxeDhcp4 protocol interface.
40 EFI_PXE_DHCP4_PROTOCOL PxeDhcp4
;
43 // Consumed PxeBc, Snp and PxeDhcp4Callback protocol interfaces.
45 EFI_PXE_BASE_CODE_PROTOCOL
*PxeBc
;
46 EFI_SIMPLE_NETWORK_PROTOCOL
*Snp
;
47 EFI_PXE_DHCP4_CALLBACK_PROTOCOL
*callback
;
50 // PxeDhcp4 called function for PxeDhcp4Callback.
52 EFI_PXE_DHCP4_FUNCTION function
;
55 // Timeout event and flag for PxeDhcp4Callback.
57 EFI_EVENT TimeoutEvent
;
58 BOOLEAN TimeoutOccurred
;
61 // Periodic event and flag for PxeDhcp4Callback.
63 EFI_EVENT PeriodicEvent
;
64 BOOLEAN PeriodicOccurred
;
67 // DHCP server IP address.
72 // DHCP renewal and rebinding times, in seconds.
79 // Number of offers received & allocated offer list.
82 DHCP4_PACKET
*offer_list
;
89 } PXE_DHCP4_PRIVATE_DATA
;
91 #define PXE_DHCP4_PRIVATE_DATA_FROM_THIS(a) CR (a, PXE_DHCP4_PRIVATE_DATA, PxeDhcp4, PXE_DHCP4_PRIVATE_DATA_SIGNATURE)
93 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
96 // Protocol function prototypes.
102 IN EFI_PXE_DHCP4_PROTOCOL
*This
,
103 IN OPTIONAL UINTN OpLen
,
104 IN OPTIONAL VOID
*OpList
112 IN EFI_PXE_DHCP4_PROTOCOL
*This
,
113 IN EFI_PXE_DHCP4_DATA
*Data
121 IN EFI_PXE_DHCP4_PROTOCOL
*This
,
122 IN UINTN seconds_timeout
,
123 OUT UINTN
*offer_list_entries
,
124 OUT DHCP4_PACKET
**offer_list
132 IN EFI_PXE_DHCP4_PROTOCOL
*This
,
133 IN UINTN seconds_timeout
,
134 IN DHCP4_PACKET
*offer_list
142 IN EFI_PXE_DHCP4_PROTOCOL
*This
,
143 UINTN seconds_timeout
151 IN EFI_PXE_DHCP4_PROTOCOL
*This
,
152 UINTN seconds_timeout
160 IN EFI_PXE_DHCP4_PROTOCOL
*This
166 // Driver model protocol interface
170 PxeDhcp4DriverBindingSupported (
171 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
172 IN EFI_HANDLE ControllerHandle
,
173 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
178 PxeDhcp4DriverBindingStart (
179 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
180 IN EFI_HANDLE ControllerHandle
,
181 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
186 PxeDhcp4DriverBindingStop (
187 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
188 IN EFI_HANDLE ControllerHandle
,
189 IN UINTN NumberOfChildren
,
190 IN EFI_HANDLE
*ChildHandleBuffer
194 // EFI Component Name Functions
198 PxeDhcp4ComponentNameGetDriverName (
199 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
201 OUT CHAR16
**DriverName
206 PxeDhcp4ComponentNameGetControllerName (
207 IN EFI_COMPONENT_NAME_PROTOCOL
*This
,
208 IN EFI_HANDLE ControllerHandle
,
209 IN EFI_HANDLE ChildHandle OPTIONAL
,
211 OUT CHAR16
**ControllerName
214 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
217 // Support function prototypes.
254 IN DHCP4_PACKET
*Packet
,
264 IN DHCP4_PACKET
*Packet
,
272 IN PXE_DHCP4_PRIVATE_DATA
*Private
,
273 IN OPTIONAL EFI_IP_ADDRESS
*station_ip
,
274 IN OPTIONAL EFI_IP_ADDRESS
*subnet_mask
281 IN PXE_DHCP4_PRIVATE_DATA
*Private
287 start_receive_events (
288 IN PXE_DHCP4_PRIVATE_DATA
*Private
,
289 IN UINTN seconds_timeout
295 stop_receive_events (
296 IN PXE_DHCP4_PRIVATE_DATA
*Private
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
,
315 IN PXE_DHCP4_PRIVATE_DATA
*Private
,
317 OUT UINTN
*BufferSize
,
318 IN OUT EFI_IP_ADDRESS
*dest_ip
,
319 IN OUT EFI_IP_ADDRESS
*src_ip
,
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
,
338 IN PXE_DHCP4_PRIVATE_DATA
*Private
,
339 IN DHCP4_PACKET
*tx_pkt
,
340 IN DHCP4_PACKET
*rx_pkt
,
343 IN UINTN seconds_timeout
347 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
350 // Global variable definitions.
352 extern EFI_DRIVER_BINDING_PROTOCOL gPxeDhcp4DriverBinding
;
353 extern EFI_COMPONENT_NAME_PROTOCOL gPxeDhcp4ComponentName
;
355 #endif /* _PXEDHCP4_H */
357 /* EOF - PxeDhcp4.h */