]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Include/Protocol/PxeDhcp4.h
Code scrube for MdeModule Definitions.
[mirror_edk2.git] / MdeModulePkg / Include / Protocol / PxeDhcp4.h
CommitLineData
5f597758
LG
1/** @file\r
2 EFI PXE DHCPv4 protocol definition\r
772db4bb 3\r
5f597758 4Copyright (c) 2006 - 2008, Intel Corporation\r
772db4bb 5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
5f597758 13**/\r
772db4bb 14\r
15#ifndef _PXEDHCP4_H_\r
16#define _PXEDHCP4_H_\r
17\r
18\r
19/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
20//\r
21// PXE DHCPv4 GUID definition\r
22//\r
23\r
24#define EFI_PXE_DHCP4_PROTOCOL_GUID \\r
25 { 0x03c4e624, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x29, 0x3f, 0xc1, 0x4d } }\r
26\r
27/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
28//\r
29// Interface definition\r
30//\r
31\r
32typedef struct _EFI_PXE_DHCP4_PROTOCOL EFI_PXE_DHCP4_PROTOCOL;\r
33\r
34/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
35//\r
36// Descriptions of the DHCP version 4 header and options can be found\r
37// in RFC-2131 and RFC-2132 at www.ietf.org\r
38//\r
39\r
40#pragma pack(1)\r
41typedef struct {\r
42\r
43 UINT8 op;\r
44#define BOOTP_REQUEST 1\r
45#define BOOTP_REPLY 2\r
46\r
47 UINT8 htype;\r
48\r
49 UINT8 hlen;\r
50\r
51 UINT8 hops;\r
52\r
53 UINT32 xid;\r
54\r
55 UINT16 secs;\r
56#define DHCP4_INITIAL_SECONDS 4\r
57\r
58 UINT16 flags;\r
59#define DHCP4_BROADCAST_FLAG 0x8000\r
60\r
61 UINT32 ciaddr;\r
62\r
63 UINT32 yiaddr;\r
64\r
65 UINT32 siaddr;\r
66\r
67 UINT32 giaddr;\r
68\r
69 UINT8 chaddr[16];\r
70\r
71 UINT8 sname[64];\r
72\r
73 UINT8 fname[128];\r
74\r
75//\r
76// This is the minimum option length as specified in RFC-2131.\r
77// The packet must be padded out this far with DHCP4_PAD.\r
78// DHCPv4 packets are usually 576 bytes in length. This length\r
79// includes the IPv4 and UDPv4 headers but not the media header.\r
80// Note: Not all DHCP relay agents will forward DHCPv4 packets\r
81// if they are less than 384 bytes or exceed 576 bytes. Even if\r
82// the underlying hardware can handle smaller and larger packets,\r
83// many older relay agents will not accept them.\r
84//\r
85 UINT32 magik;\r
86#define DHCP4_MAGIK_NUMBER 0x63825363\r
87\r
88 UINT8 options[308];\r
89\r
90} DHCP4_HEADER;\r
91#pragma pack()\r
92\r
93/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
94//\r
95// DHCPv4 packet definition. Room for 576 bytes including IP and\r
96// UDP header.\r
97//\r
98\r
99#define DHCP4_MAX_PACKET_SIZE 576\r
100#define DHCP4_UDP_HEADER_SIZE 8\r
101#define DHCP4_IP_HEADER_SIZE 20\r
102\r
103#pragma pack(1)\r
104typedef union _DHCP4_PACKET {\r
105 UINT32 _force_data_alignment;\r
106\r
107 UINT8 raw[1500];\r
108\r
109 DHCP4_HEADER dhcp4;\r
110} DHCP4_PACKET;\r
111#pragma pack()\r
112\r
113#define DHCP4_SERVER_PORT 67\r
114#define DHCP4_CLIENT_PORT 68\r
115\r
116/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
117//\r
118// DHCPv4 and PXE option numbers.\r
119//\r
120\r
121#define DHCP4_PAD 0\r
122#define DHCP4_END 255\r
123#define DHCP4_SUBNET_MASK 1\r
124#define DHCP4_TIME_OFFSET 2\r
125#define DHCP4_ROUTER_LIST 3\r
126#define DHCP4_TIME_SERVERS 4\r
127#define DHCP4_NAME_SERVERS 5\r
128#define DHCP4_DNS_SERVERS 6\r
129#define DHCP4_LOG_SERVERS 7\r
130#define DHCP4_COOKIE_SERVERS 8\r
131#define DHCP4_LPR_SREVERS 9\r
132#define DHCP4_IMPRESS_SERVERS 10\r
133#define DHCP4_RESOURCE_LOCATION_SERVERS 11\r
134#define DHCP4_HOST_NAME 12\r
135#define DHCP4_BOOT_FILE_SIZE 13\r
136#define DHCP4_DUMP_FILE 14\r
137#define DHCP4_DOMAIN_NAME 15\r
138#define DHCP4_SWAP_SERVER 16\r
139#define DHCP4_ROOT_PATH 17\r
140#define DHCP4_EXTENSION_PATH 18\r
141#define DHCP4_IP_FORWARDING 19\r
142#define DHCP4_NON_LOCAL_SOURCE_ROUTE 20\r
143#define DHCP4_POLICY_FILTER 21\r
144#define DHCP4_MAX_DATAGRAM_SIZE 22\r
145#define DHCP4_DEFAULT_TTL 23\r
146#define DHCP4_MTU_AGING_TIMEOUT 24\r
147#define DHCP4_MTU_SIZES 25\r
148#define DHCP4_MTU_TO_USE 26\r
149#define DHCP4_ALL_SUBNETS_LOCAL 27\r
150#define DHCP4_BROADCAST_ADDRESS 28\r
151#define DHCP4_PERFORM_MASK_DISCOVERY 29\r
152#define DHCP4_RESPOND_TO_MASK_REQ 30\r
153#define DHCP4_PERFORM_ROUTER_DISCOVERY 31\r
154#define DHCP4_ROUTER_SOLICIT_ADDRESS 32\r
155#define DHCP4_STATIC_ROUTER_LIST 33\r
156#define DHCP4_USE_ARP_TRAILERS 34\r
157#define DHCP4_ARP_CACHE_TIMEOUT 35\r
158#define DHCP4_ETHERNET_ENCAPSULATION 36\r
159#define DHCP4_TCP_DEFAULT_TTL 37\r
160#define DHCP4_TCP_KEEP_ALIVE_INT 38\r
161#define DHCP4_KEEP_ALIVE_GARBAGE 39\r
162#define DHCP4_NIS_DOMAIN_NAME 40\r
163#define DHCP4_NIS_SERVERS 41\r
164#define DHCP4_NTP_SERVERS 42\r
165#define DHCP4_VENDOR_SPECIFIC 43\r
5f597758
LG
166#define PXE_MTFTP_IP 1\r
167#define PXE_MTFTP_CPORT 2\r
168#define PXE_MTFTP_SPORT 3\r
169#define PXE_MTFTP_TMOUT 4\r
170#define PXE_MTFTP_DELAY 5\r
171#define PXE_DISCOVERY_CONTROL 6\r
172#define PXE_DISABLE_BROADCAST_DISCOVERY 0x01\r
173#define PXE_DISABLE_MULTICAST_DISCOVERY 0x02\r
174#define PXE_ACCEPT_ONLY_PXE_BOOT_SERVERS 0x04\r
175#define PXE_DO_NOT_PROMPT 0x08\r
176#define PXE_DISCOVERY_MCAST_ADDR 7\r
177#define PXE_BOOT_SERVERS 8\r
178#define PXE_BOOT_MENU 9\r
179#define PXE_BOOT_PROMPT 10\r
180#define PXE_MCAST_ADDRS_ALLOC 11\r
181#define PXE_CREDENTIAL_TYPES 12\r
182#define PXE_BOOT_ITEM 71\r
772db4bb 183#define DHCP4_NBNS_SERVERS 44\r
184#define DHCP4_NBDD_SERVERS 45\r
185#define DHCP4_NETBIOS_NODE_TYPE 46\r
186#define DHCP4_NETBIOS_SCOPE 47\r
187#define DHCP4_XWINDOW_SYSTEM_FONT_SERVERS 48\r
188#define DHCP4_XWINDOW_SYSTEM_DISPLAY_MANAGERS 49\r
189#define DHCP4_REQUESTED_IP_ADDRESS 50\r
190#define DHCP4_LEASE_TIME 51\r
191#define DHCP4_OPTION_OVERLOAD 52\r
5f597758
LG
192#define DHCP4_OVERLOAD_FNAME 1\r
193#define DHCP4_OVERLOAD_SNAME 2\r
194#define DHCP4_OVERLOAD_FNAME_AND_SNAME 3\r
772db4bb 195#define DHCP4_MESSAGE_TYPE 53\r
5f597758
LG
196#define DHCP4_MESSAGE_TYPE_DISCOVER 1\r
197#define DHCP4_MESSAGE_TYPE_OFFER 2\r
198#define DHCP4_MESSAGE_TYPE_REQUEST 3\r
199#define DHCP4_MESSAGE_TYPE_DECLINE 4\r
200#define DHCP4_MESSAGE_TYPE_ACK 5\r
201#define DHCP4_MESSAGE_TYPE_NAK 6\r
202#define DHCP4_MESSAGE_TYPE_RELEASE 7\r
203#define DHCP4_MESSAGE_TYPE_INFORM 8\r
772db4bb 204#define DHCP4_SERVER_IDENTIFIER 54\r
205#define DHCP4_PARAMETER_REQUEST_LIST 55\r
206#define DHCP4_ERROR_MESSAGE 56\r
207#define DHCP4_MAX_MESSAGE_SIZE 57\r
5f597758 208#define DHCP4_DEFAULT_MAX_MESSAGE_SIZE 576\r
772db4bb 209#define DHCP4_RENEWAL_TIME 58\r
210#define DHCP4_REBINDING_TIME 59\r
211#define DHCP4_CLASS_IDENTIFIER 60\r
212#define DHCP4_CLIENT_IDENTIFIER 61\r
213#define DHCP4_NISPLUS_DOMAIN_NAME 64\r
214#define DHCP4_NISPLUS_SERVERS 65\r
215#define DHCP4_TFTP_SERVER_NAME 66\r
216#define DHCP4_BOOTFILE 67\r
217#define DHCP4_MOBILE_IP_HOME_AGENTS 68\r
218#define DHCP4_SMPT_SERVERS 69\r
219#define DHCP4_POP3_SERVERS 70\r
220#define DHCP4_NNTP_SERVERS 71\r
221#define DHCP4_WWW_SERVERS 72\r
222#define DHCP4_FINGER_SERVERS 73\r
223#define DHCP4_IRC_SERVERS 74\r
224#define DHCP4_STREET_TALK_SERVERS 75\r
225#define DHCP4_STREET_TALK_DIR_ASSIST_SERVERS 76\r
226#define DHCP4_NDS_SERVERS 85\r
227#define DHCP4_NDS_TREE_NAME 86\r
228#define DHCP4_NDS_CONTEXT 87\r
229#define DHCP4_SYSTEM_ARCHITECTURE 93\r
230#define DHCP4_NETWORK_ARCHITECTURE 94\r
231#define DHCP4_PLATFORM_ID 97\r
232\r
233/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
234//\r
235// DHCP4 option format.\r
236//\r
237\r
238#pragma pack(1)\r
239typedef struct {\r
240 UINT8 op;\r
241 UINT8 len;\r
242 UINT8 data[1];\r
243} DHCP4_OP;\r
244#pragma pack()\r
245\r
246/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
247\r
248typedef struct {\r
249 DHCP4_PACKET Discover;\r
250 DHCP4_PACKET Offer;\r
251 DHCP4_PACKET Request;\r
252 DHCP4_PACKET AckNak;\r
253 BOOLEAN SetupCompleted;\r
254 BOOLEAN InitCompleted;\r
255 BOOLEAN SelectCompleted;\r
256 BOOLEAN IsBootp;\r
257 BOOLEAN IsAck;\r
258} EFI_PXE_DHCP4_DATA;\r
259\r
260/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
261typedef\r
262EFI_STATUS\r
263(EFIAPI *EFI_PXE_DHCP4_RUN) (\r
264 IN EFI_PXE_DHCP4_PROTOCOL *This,\r
265 IN OPTIONAL UINTN OpLen,\r
266 IN OPTIONAL VOID *OpList\r
267 );\r
268\r
269/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
270typedef\r
271EFI_STATUS\r
272(EFIAPI *EFI_PXE_DHCP4_SETUP) (\r
273 IN EFI_PXE_DHCP4_PROTOCOL *This,\r
274 IN OPTIONAL EFI_PXE_DHCP4_DATA * NewData\r
275 );\r
276\r
277/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
278typedef\r
279EFI_STATUS\r
280(EFIAPI *EFI_PXE_DHCP4_INIT) (\r
281 IN EFI_PXE_DHCP4_PROTOCOL *This,\r
282 IN UINTN SecondsTimeout,\r
283 OUT UINTN *Offers,\r
284 OUT DHCP4_PACKET **OfferList\r
285 );\r
286\r
287#define DHCP4_MIN_SECONDS 1\r
288#define DHCP4_MAX_SECONDS 60\r
289\r
290/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
291typedef\r
292EFI_STATUS\r
293(EFIAPI *EFI_PXE_DHCP4_SELECT) (\r
294 IN EFI_PXE_DHCP4_PROTOCOL *This,\r
295 IN UINTN SecondsTimeout,\r
296 IN DHCP4_PACKET * offer\r
297 );\r
298\r
299/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
300typedef\r
301EFI_STATUS\r
302(EFIAPI *EFI_PXE_DHCP4_RENEW) (\r
303 IN EFI_PXE_DHCP4_PROTOCOL *This,\r
304 UINTN seconds_timeout\r
305 );\r
306\r
307/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
308typedef\r
309EFI_STATUS\r
310(EFIAPI *EFI_PXE_DHCP4_REBIND) (\r
311 IN EFI_PXE_DHCP4_PROTOCOL *This,\r
312 UINTN seconds_timeout\r
313 );\r
314\r
315/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
316typedef\r
317EFI_STATUS\r
318(EFIAPI *EFI_PXE_DHCP4_RELEASE) (\r
319 IN EFI_PXE_DHCP4_PROTOCOL * This\r
320 );\r
321\r
322/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\r
323\r
324#define EFI_PXE_DHCP4_PROTOCOL_REVISION 0x00010000\r
325\r
326struct _EFI_PXE_DHCP4_PROTOCOL {\r
327 UINT64 Revision;\r
328 EFI_PXE_DHCP4_RUN Run;\r
329 EFI_PXE_DHCP4_SETUP Setup;\r
330 EFI_PXE_DHCP4_INIT Init;\r
331 EFI_PXE_DHCP4_SELECT Select;\r
332 EFI_PXE_DHCP4_RENEW Renew;\r
333 EFI_PXE_DHCP4_REBIND Rebind;\r
334 EFI_PXE_DHCP4_RELEASE Release;\r
335 EFI_PXE_DHCP4_DATA *Data;\r
336};\r
337\r
338//\r
339//\r
340//\r
341\r
342extern EFI_GUID gEfiPxeDhcp4ProtocolGuid;\r
343\r
344#endif /* _PXEDHCP4_H_ */\r
345/* EOF - PxeDhcp4.h */\r