]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Efi/Protocol/PxeBaseCode/PxeBaseCode.h
Update Guid Value format.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Protocol / PxeBaseCode / PxeBaseCode.h
CommitLineData
3eb9473e 1/*++\r
2\r
3Copyright (c) 2004, Intel Corporation \r
4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13 PxeBaseCode.h\r
14\r
15Abstract:\r
16 EFI PXE Base Code Protocol definitions.\r
17\r
18--*/\r
19#ifndef _EFIPXEBC_H\r
20#define _EFIPXEBC_H\r
21\r
22#include "Pxe.h"\r
23\r
24//\r
25// PXE Base Code protocol\r
26//\r
27#define EFI_PXE_BASE_CODE_PROTOCOL_GUID \\r
28 { \\r
7ccf38a3 29 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} \\r
3eb9473e 30 }\r
31\r
32EFI_FORWARD_DECLARATION (EFI_PXE_BASE_CODE_PROTOCOL);\r
33\r
34//\r
35// Default IP TTL and ToS.\r
36//\r
37#define DEFAULT_TTL 16\r
38#define DEFAULT_ToS 0\r
39\r
40//\r
41// ICMP error format\r
42//\r
43typedef struct {\r
44 UINT8 Type;\r
45 UINT8 Code;\r
46 UINT16 Checksum;\r
47 union {\r
48 UINT32 reserved;\r
49 UINT32 Mtu;\r
50 UINT32 Pointer;\r
51 struct {\r
52 UINT16 Identifier;\r
53 UINT16 Sequence;\r
54 } Echo;\r
55 } u;\r
56 UINT8 Data[494];\r
57} EFI_PXE_BASE_CODE_ICMP_ERROR;\r
58\r
59//\r
60// TFTP error format\r
61//\r
62typedef struct {\r
63 UINT8 ErrorCode;\r
64 CHAR8 ErrorString[127];\r
65} EFI_PXE_BASE_CODE_TFTP_ERROR;\r
66\r
67//\r
68// IP Receive Filter definitions\r
69//\r
70#define EFI_PXE_BASE_CODE_MAX_IPCNT 8\r
71\r
72typedef struct {\r
73 UINT8 Filters;\r
74 UINT8 IpCnt;\r
75 UINT16 reserved;\r
76 EFI_IP_ADDRESS IpList[EFI_PXE_BASE_CODE_MAX_IPCNT];\r
77} EFI_PXE_BASE_CODE_IP_FILTER;\r
78\r
79#define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001\r
80#define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002\r
81#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004\r
82#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008\r
83\r
84//\r
85// ARP Cache definitions\r
86//\r
87typedef struct {\r
88 EFI_IP_ADDRESS IpAddr;\r
89 EFI_MAC_ADDRESS MacAddr;\r
90} EFI_PXE_BASE_CODE_ARP_ENTRY;\r
91\r
92typedef struct {\r
93 EFI_IP_ADDRESS IpAddr;\r
94 EFI_IP_ADDRESS SubnetMask;\r
95 EFI_IP_ADDRESS GwAddr;\r
96} EFI_PXE_BASE_CODE_ROUTE_ENTRY;\r
97\r
98//\r
99// UDP definitions\r
100//\r
101typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;\r
102\r
103#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP 0x0001\r
104#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT 0x0002\r
105#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP 0x0004\r
106#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008\r
107#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER 0x0010\r
108#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT 0x0020\r
109\r
110//\r
111// Discover() definitions\r
112//\r
113#define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP 0\r
114#define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS 1\r
115#define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM 2\r
116#define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI 3\r
117#define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO 4\r
118#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD 5\r
119#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM 6\r
120#define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG 7\r
121#define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW 8\r
122#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9 9\r
123#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10 10\r
124#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11 11\r
125#define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12 12\r
126#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL 13\r
127#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT 14\r
128#define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO 15\r
129#define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT 16\r
130//\r
131// 17 through 32767 are reserved\r
132// 32768 through 65279 are for vendor use\r
133// 65280 through 65534 are reserved\r
134//\r
135#define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST 65535\r
136\r
137#define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK 0x7FFF\r
138#define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL 0x0000\r
139\r
140//\r
141// Discover() server list structure.\r
142//\r
143typedef struct {\r
144 UINT16 Type;\r
145 BOOLEAN AcceptAnyResponse;\r
146 UINT8 Reserved;\r
147 EFI_IP_ADDRESS IpAddr;\r
148} EFI_PXE_BASE_CODE_SRVLIST;\r
149\r
150//\r
151// Discover() information override structure.\r
152//\r
153typedef struct {\r
154 BOOLEAN UseMCast;\r
155 BOOLEAN UseBCast;\r
156 BOOLEAN UseUCast;\r
157 BOOLEAN MustUseList;\r
158 EFI_IP_ADDRESS ServerMCastIp;\r
159 UINT16 IpCnt;\r
160 EFI_PXE_BASE_CODE_SRVLIST SrvList[1];\r
161} EFI_PXE_BASE_CODE_DISCOVER_INFO;\r
162\r
163//\r
164// Mtftp() definitions\r
165//\r
166typedef enum {\r
167 EFI_PXE_BASE_CODE_TFTP_FIRST,\r
168 EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE,\r
169 EFI_PXE_BASE_CODE_TFTP_READ_FILE,\r
170 EFI_PXE_BASE_CODE_TFTP_WRITE_FILE,\r
171 EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY,\r
172 EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE,\r
173 EFI_PXE_BASE_CODE_MTFTP_READ_FILE,\r
174 EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY,\r
175 EFI_PXE_BASE_CODE_MTFTP_LAST\r
176} EFI_PXE_BASE_CODE_TFTP_OPCODE;\r
177\r
178typedef struct {\r
179 EFI_IP_ADDRESS MCastIp;\r
180 EFI_PXE_BASE_CODE_UDP_PORT CPort;\r
181 EFI_PXE_BASE_CODE_UDP_PORT SPort;\r
182 UINT16 ListenTimeout;\r
183 UINT16 TransmitTimeout;\r
184} EFI_PXE_BASE_CODE_MTFTP_INFO;\r
185\r
186//\r
187// PXE Base Code Mode structure\r
188//\r
189#define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8\r
190#define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8\r
191\r
192typedef struct {\r
193 BOOLEAN Started;\r
194 BOOLEAN Ipv6Available;\r
195 BOOLEAN Ipv6Supported;\r
196 BOOLEAN UsingIpv6;\r
197 BOOLEAN BisSupported;\r
198 BOOLEAN BisDetected;\r
199 BOOLEAN AutoArp;\r
200 BOOLEAN SendGUID;\r
201 BOOLEAN DhcpDiscoverValid;\r
202 BOOLEAN DhcpAckReceived;\r
203 BOOLEAN ProxyOfferReceived;\r
204 BOOLEAN PxeDiscoverValid;\r
205 BOOLEAN PxeReplyReceived;\r
206 BOOLEAN PxeBisReplyReceived;\r
207 BOOLEAN IcmpErrorReceived;\r
208 BOOLEAN TftpErrorReceived;\r
209 BOOLEAN MakeCallbacks;\r
210 UINT8 TTL;\r
211 UINT8 ToS;\r
212 EFI_IP_ADDRESS StationIp;\r
213 EFI_IP_ADDRESS SubnetMask;\r
214 EFI_PXE_BASE_CODE_PACKET DhcpDiscover;\r
215 EFI_PXE_BASE_CODE_PACKET DhcpAck;\r
216 EFI_PXE_BASE_CODE_PACKET ProxyOffer;\r
217 EFI_PXE_BASE_CODE_PACKET PxeDiscover;\r
218 EFI_PXE_BASE_CODE_PACKET PxeReply;\r
219 EFI_PXE_BASE_CODE_PACKET PxeBisReply;\r
220 EFI_PXE_BASE_CODE_IP_FILTER IpFilter;\r
221 UINT32 ArpCacheEntries;\r
222 EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES];\r
223 UINT32 RouteTableEntries;\r
224 EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES];\r
225 EFI_PXE_BASE_CODE_ICMP_ERROR IcmpError;\r
226 EFI_PXE_BASE_CODE_TFTP_ERROR TftpError;\r
227} EFI_PXE_BASE_CODE_MODE;\r
228\r
229//\r
230// PXE Base Code Interface Function definitions\r
231//\r
232typedef\r
233EFI_STATUS\r
234(EFIAPI *EFI_PXE_BASE_CODE_START) (\r
235 IN EFI_PXE_BASE_CODE_PROTOCOL * This,\r
236 IN BOOLEAN UseIpv6\r
237 );\r
238\r
239typedef\r
240EFI_STATUS\r
241(EFIAPI *EFI_PXE_BASE_CODE_STOP) (\r
242 IN EFI_PXE_BASE_CODE_PROTOCOL * This\r
243 );\r
244\r
245typedef\r
246EFI_STATUS\r
247(EFIAPI *EFI_PXE_BASE_CODE_DHCP) (\r
248 IN EFI_PXE_BASE_CODE_PROTOCOL * This,\r
249 IN BOOLEAN SortOffers\r
250 );\r
251\r
252typedef\r
253EFI_STATUS\r
254(EFIAPI *EFI_PXE_BASE_CODE_DISCOVER) (\r
255 IN EFI_PXE_BASE_CODE_PROTOCOL * This,\r
256 IN UINT16 Type,\r
257 IN UINT16 *Layer,\r
258 IN BOOLEAN UseBis,\r
259 IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO * Info OPTIONAL\r
260 );\r
261\r
262typedef\r
263EFI_STATUS\r
264(EFIAPI *EFI_PXE_BASE_CODE_MTFTP) (\r
265 IN EFI_PXE_BASE_CODE_PROTOCOL * This,\r
266 IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation,\r
267 IN OUT VOID *BufferPtr OPTIONAL,\r
268 IN BOOLEAN Overwrite,\r
269 IN OUT UINT64 *BufferSize,\r
270 IN UINTN *BlockSize OPTIONAL,\r
271 IN EFI_IP_ADDRESS * ServerIp,\r
272 IN UINT8 *Filename,\r
273 IN EFI_PXE_BASE_CODE_MTFTP_INFO * Info OPTIONAL,\r
274 IN BOOLEAN DontUseBuffer\r
275 );\r
276\r
277typedef\r
278EFI_STATUS\r
279(EFIAPI *EFI_PXE_BASE_CODE_UDP_WRITE) (\r
280 IN EFI_PXE_BASE_CODE_PROTOCOL * This,\r
281 IN UINT16 OpFlags,\r
282 IN EFI_IP_ADDRESS * DestIp,\r
283 IN EFI_PXE_BASE_CODE_UDP_PORT * DestPort,\r
284 IN EFI_IP_ADDRESS * GatewayIp, OPTIONAL\r
285 IN EFI_IP_ADDRESS * SrcIp, OPTIONAL\r
286 IN OUT EFI_PXE_BASE_CODE_UDP_PORT * SrcPort, OPTIONAL\r
287 IN UINTN *HeaderSize, OPTIONAL\r
288 IN VOID *HeaderPtr, OPTIONAL\r
289 IN UINTN *BufferSize,\r
290 IN VOID *BufferPtr\r
291 );\r
292\r
293typedef\r
294EFI_STATUS\r
295(EFIAPI *EFI_PXE_BASE_CODE_UDP_READ) (\r
296 IN EFI_PXE_BASE_CODE_PROTOCOL * This,\r
297 IN UINT16 OpFlags,\r
298 IN OUT EFI_IP_ADDRESS * DestIp, OPTIONAL\r
299 IN OUT EFI_PXE_BASE_CODE_UDP_PORT * DestPort, OPTIONAL\r
300 IN OUT EFI_IP_ADDRESS * SrcIp, OPTIONAL\r
301 IN OUT EFI_PXE_BASE_CODE_UDP_PORT * SrcPort, OPTIONAL\r
302 IN UINTN *HeaderSize, OPTIONAL\r
303 IN VOID *HeaderPtr, OPTIONAL\r
304 IN OUT UINTN *BufferSize,\r
305 IN VOID *BufferPtr\r
306 );\r
307\r
308typedef\r
309EFI_STATUS\r
310(EFIAPI *EFI_PXE_BASE_CODE_SET_IP_FILTER) (\r
311 IN EFI_PXE_BASE_CODE_PROTOCOL * This,\r
312 IN EFI_PXE_BASE_CODE_IP_FILTER * NewFilter\r
313 );\r
314\r
315typedef\r
316EFI_STATUS\r
317(EFIAPI *EFI_PXE_BASE_CODE_ARP) (\r
318 IN EFI_PXE_BASE_CODE_PROTOCOL * This,\r
319 IN EFI_IP_ADDRESS * IpAddr,\r
320 IN EFI_MAC_ADDRESS * MacAddr OPTIONAL\r
321 );\r
322\r
323typedef\r
324EFI_STATUS\r
325(EFIAPI *EFI_PXE_BASE_CODE_SET_PARAMETERS) (\r
326 IN EFI_PXE_BASE_CODE_PROTOCOL * This,\r
327 IN BOOLEAN *NewAutoArp, OPTIONAL\r
328 IN BOOLEAN *NewSendGUID, OPTIONAL\r
329 IN UINT8 *NewTTL, OPTIONAL\r
330 IN UINT8 *NewToS, OPTIONAL\r
331 IN BOOLEAN *NewMakeCallback OPTIONAL\r
332 );\r
333\r
334typedef\r
335EFI_STATUS\r
336(EFIAPI *EFI_PXE_BASE_CODE_SET_STATION_IP) (\r
337 IN EFI_PXE_BASE_CODE_PROTOCOL * This,\r
338 IN EFI_IP_ADDRESS * NewStationIp, OPTIONAL\r
339 IN EFI_IP_ADDRESS * NewSubnetMask OPTIONAL\r
340 );\r
341\r
342typedef\r
343EFI_STATUS\r
344(EFIAPI *EFI_PXE_BASE_CODE_SET_PACKETS) (\r
345 IN EFI_PXE_BASE_CODE_PROTOCOL * This,\r
346 BOOLEAN *NewDhcpDiscoverValid, OPTIONAL\r
347 BOOLEAN *NewDhcpAckReceived, OPTIONAL\r
348 BOOLEAN *NewProxyOfferReceived, OPTIONAL\r
349 BOOLEAN *NewPxeDiscoverValid, OPTIONAL\r
350 BOOLEAN *NewPxeReplyReceived, OPTIONAL\r
351 BOOLEAN *NewPxeBisReplyReceived, OPTIONAL\r
352 IN EFI_PXE_BASE_CODE_PACKET * NewDhcpDiscover, OPTIONAL\r
353 IN EFI_PXE_BASE_CODE_PACKET * NewDhcpAck, OPTIONAL\r
354 IN EFI_PXE_BASE_CODE_PACKET * NewProxyOffer, OPTIONAL\r
355 IN EFI_PXE_BASE_CODE_PACKET * NewPxeDiscover, OPTIONAL\r
356 IN EFI_PXE_BASE_CODE_PACKET * NewPxeReply, OPTIONAL\r
357 IN EFI_PXE_BASE_CODE_PACKET * NewPxeBisReply OPTIONAL\r
358 );\r
359\r
360//\r
361// PXE Base Code Protocol structure\r
362//\r
363#define EFI_PXE_BASE_CODE_INTERFACE_REVISION 0x00010000\r
364\r
e5bce275 365struct _EFI_PXE_BASE_CODE_PROTOCOL {\r
3eb9473e 366 UINT64 Revision;\r
367 EFI_PXE_BASE_CODE_START Start;\r
368 EFI_PXE_BASE_CODE_STOP Stop;\r
369 EFI_PXE_BASE_CODE_DHCP Dhcp;\r
370 EFI_PXE_BASE_CODE_DISCOVER Discover;\r
371 EFI_PXE_BASE_CODE_MTFTP Mtftp;\r
372 EFI_PXE_BASE_CODE_UDP_WRITE UdpWrite;\r
373 EFI_PXE_BASE_CODE_UDP_READ UdpRead;\r
374 EFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter;\r
375 EFI_PXE_BASE_CODE_ARP Arp;\r
376 EFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters;\r
377 EFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp;\r
378 EFI_PXE_BASE_CODE_SET_PACKETS SetPackets;\r
379 EFI_PXE_BASE_CODE_MODE *Mode;\r
e5bce275 380};\r
3eb9473e 381\r
382extern EFI_GUID gEfiPxeBaseCodeProtocolGuid;\r
383\r
384#endif /* _EFIPXEBC_H */\r
385\r
386/* EOF - PxeBaseCode.h */\r