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
164 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
167 // Support function prototypes.
204 IN DHCP4_PACKET
*Packet
,
214 IN DHCP4_PACKET
*Packet
,
222 IN PXE_DHCP4_PRIVATE_DATA
*Private
,
223 IN OPTIONAL EFI_IP_ADDRESS
*station_ip
,
224 IN OPTIONAL EFI_IP_ADDRESS
*subnet_mask
231 IN PXE_DHCP4_PRIVATE_DATA
*Private
237 start_receive_events (
238 IN PXE_DHCP4_PRIVATE_DATA
*Private
,
239 IN UINTN seconds_timeout
245 stop_receive_events (
246 IN PXE_DHCP4_PRIVATE_DATA
*Private
253 IN PXE_DHCP4_PRIVATE_DATA
*Private
,
254 IN EFI_IP_ADDRESS
*dest_ip
,
255 IN OPTIONAL EFI_IP_ADDRESS
*gateway_ip
,
256 IN EFI_IP_ADDRESS
*src_ip
,
265 IN PXE_DHCP4_PRIVATE_DATA
*Private
,
267 OUT UINTN
*BufferSize
,
268 IN OUT EFI_IP_ADDRESS
*dest_ip
,
269 IN OUT EFI_IP_ADDRESS
*src_ip
,
277 IN PXE_DHCP4_PRIVATE_DATA
*Private
,
278 IN OUT EFI_IP_ADDRESS
*ServerIp
,
279 IN OPTIONAL EFI_IP_ADDRESS
*gateway_ip
,
280 IN OPTIONAL EFI_IP_ADDRESS
*client_ip
,
281 IN OPTIONAL EFI_IP_ADDRESS
*subnet_mask
,
282 IN DHCP4_PACKET
*tx_pkt
,
283 OUT DHCP4_PACKET
*rx_pkt
,
288 IN PXE_DHCP4_PRIVATE_DATA
*Private
,
289 IN DHCP4_PACKET
*tx_pkt
,
290 IN DHCP4_PACKET
*rx_pkt
,
293 IN UINTN seconds_timeout
297 /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
300 // Global variable definitions.
302 extern EFI_DRIVER_BINDING_PROTOCOL gPxeDhcp4DriverBinding
;
303 extern EFI_COMPONENT_NAME_PROTOCOL gPxeDhcp4ComponentName
;
305 #endif /* _PXEDHCP4_H */
307 /* EOF - PxeDhcp4.h */