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