2 * $FreeBSD: src/sys/boot/efi/include/efipxebc.h,v 1.2 2002/05/19 03:17:20 marcel Exp $
3 * $DragonFly: src/sys/boot/efi/include/efipxebc.h,v 1.1 2003/11/10 06:08:32 dillon Exp $
10 Copyright (c) 1998 Intel Corporation
18 EFI PXE Base Code Protocol
27 * PXE Base Code protocol
30 #define EFI_PXE_BASE_CODE_PROTOCOL \
31 { 0x03c4e603, 0xac28, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d }
33 INTERFACE_DECL(_EFI_PXE_BASE_CODE);
48 typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;
66 UINT8 BootpHwAddr[16];
67 UINT8 BootpSrvName[64];
68 UINT8 BootpBootFile[128];
70 UINT8 DhcpOptions[56];
71 } EFI_PXE_BASE_CODE_DHCPV4_PACKET;
75 EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4;
76 } EFI_PXE_BASE_CODE_PACKET;
92 } EFI_PXE_BASE_CODE_ICMP_ERROR;
96 CHAR8 ErrorString[127];
97 } EFI_PXE_BASE_CODE_TFTP_ERROR;
100 * IP Receive Filter definitions
102 #define EFI_PXE_BASE_CODE_MAX_IPCNT 8
107 EFI_IP_ADDRESS IpList[EFI_PXE_BASE_CODE_MAX_IPCNT];
108 } EFI_PXE_BASE_CODE_IP_FILTER;
110 #define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001
111 #define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002
112 #define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004
113 #define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008
116 * ARP Cache definitions
120 EFI_IP_ADDRESS IpAddr;
121 EFI_MAC_ADDRESS MacAddr;
122 } EFI_PXE_BASE_CODE_ARP_ENTRY;
125 EFI_IP_ADDRESS IpAddr;
126 EFI_IP_ADDRESS SubnetMask;
127 EFI_IP_ADDRESS GwAddr;
128 } EFI_PXE_BASE_CODE_ROUTE_ENTRY;
134 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP 0x0001
135 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT 0x0002
136 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP 0x0004
137 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008
138 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER 0x0010
139 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT 0x0020
142 * Discover() definitions
145 #define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP 0
146 #define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS 1
147 #define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM 2
148 #define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI 3
149 #define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO 4
150 #define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD 5
151 #define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM 6
152 #define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG 7
153 #define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW 8
154 #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9 9
155 #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10 10
156 #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11 11
157 #define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12 12
158 #define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL 13
159 #define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT 14
160 #define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO 15
161 #define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT 16
163 * 17 through 32767 are reserved
164 * 32768 through 65279 are for vendor use
165 * 65280 through 65534 are reserved
167 #define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST 65535
169 #define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK 0x7FFF
170 #define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL 0x0000
175 BOOLEAN AcceptAnyResponse;
177 EFI_IP_ADDRESS IpAddr;
178 } EFI_PXE_BASE_CODE_SRVLIST;
185 EFI_IP_ADDRESS ServerMCastIp;
187 EFI_PXE_BASE_CODE_SRVLIST SrvList[1];
188 } EFI_PXE_BASE_CODE_DISCOVER_INFO;
191 * Mtftp() definitions
195 EFI_PXE_BASE_CODE_TFTP_FIRST,
196 EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE,
197 EFI_PXE_BASE_CODE_TFTP_READ_FILE,
198 EFI_PXE_BASE_CODE_TFTP_WRITE_FILE,
199 EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY,
200 EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE,
201 EFI_PXE_BASE_CODE_MTFTP_READ_FILE,
202 EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY,
203 EFI_PXE_BASE_CODE_MTFTP_LAST
204 } EFI_PXE_BASE_CODE_TFTP_OPCODE;
207 EFI_IP_ADDRESS MCastIp;
208 EFI_PXE_BASE_CODE_UDP_PORT CPort;
209 EFI_PXE_BASE_CODE_UDP_PORT SPort;
210 UINT16 ListenTimeout;
211 UINT16 TransmitTimeout;
212 } EFI_PXE_BASE_CODE_MTFTP_INFO;
215 * PXE Base Code Mode structure
218 #define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8
219 #define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8
223 BOOLEAN Ipv6Available;
224 BOOLEAN Ipv6Supported;
226 BOOLEAN BisSupported;
230 BOOLEAN DhcpDiscoverValid;
231 BOOLEAN DhcpAckReceived;
232 BOOLEAN ProxyOfferReceived;
233 BOOLEAN PxeDiscoverValid;
234 BOOLEAN PxeReplyReceived;
235 BOOLEAN PxeBisReplyReceived;
236 BOOLEAN IcmpErrorReceived;
237 BOOLEAN TftpErrorReceived;
238 BOOLEAN MakeCallbacks;
241 EFI_IP_ADDRESS StationIp;
242 EFI_IP_ADDRESS SubnetMask;
243 EFI_PXE_BASE_CODE_PACKET DhcpDiscover;
244 EFI_PXE_BASE_CODE_PACKET DhcpAck;
245 EFI_PXE_BASE_CODE_PACKET ProxyOffer;
246 EFI_PXE_BASE_CODE_PACKET PxeDiscover;
247 EFI_PXE_BASE_CODE_PACKET PxeReply;
248 EFI_PXE_BASE_CODE_PACKET PxeBisReply;
249 EFI_PXE_BASE_CODE_IP_FILTER IpFilter;
250 UINT32 ArpCacheEntries;
251 EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES];
252 UINT32 RouteTableEntries;
253 EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES];
254 EFI_PXE_BASE_CODE_ICMP_ERROR IcmpError;
255 EFI_PXE_BASE_CODE_TFTP_ERROR TftpError;
256 } EFI_PXE_BASE_CODE_MODE;
259 * PXE Base Code Interface Function definitions
264 (EFIAPI *EFI_PXE_BASE_CODE_START) (
265 IN struct _EFI_PXE_BASE_CODE *This,
271 (EFIAPI *EFI_PXE_BASE_CODE_STOP) (
272 IN struct _EFI_PXE_BASE_CODE *This
277 (EFIAPI *EFI_PXE_BASE_CODE_DHCP) (
278 IN struct _EFI_PXE_BASE_CODE *This,
279 IN BOOLEAN SortOffers
284 (EFIAPI *EFI_PXE_BASE_CODE_DISCOVER) (
285 IN struct _EFI_PXE_BASE_CODE *This,
289 IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO *Info OPTIONAL
294 (EFIAPI *EFI_PXE_BASE_CODE_MTFTP) (
295 IN struct _EFI_PXE_BASE_CODE *This,
296 IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation,
297 IN OUT VOID *BufferPtr OPTIONAL,
298 IN BOOLEAN Overwrite,
299 IN OUT UINTN *BufferSize,
300 IN UINTN *BlockSize OPTIONAL,
301 IN EFI_IP_ADDRESS *ServerIp,
303 IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL,
304 IN BOOLEAN DontUseBuffer
309 (EFIAPI *EFI_PXE_BASE_CODE_UDP_WRITE) (
310 IN struct _EFI_PXE_BASE_CODE *This,
312 IN EFI_IP_ADDRESS *DestIp,
313 IN EFI_PXE_BASE_CODE_UDP_PORT *DestPort,
314 IN EFI_IP_ADDRESS *GatewayIp, OPTIONAL
315 IN EFI_IP_ADDRESS *SrcIp, OPTIONAL
316 IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL
317 IN UINTN *HeaderSize, OPTIONAL
318 IN VOID *HeaderPtr, OPTIONAL
319 IN UINTN *BufferSize,
325 (EFIAPI *EFI_PXE_BASE_CODE_UDP_READ) (
326 IN struct _EFI_PXE_BASE_CODE *This,
328 IN OUT EFI_IP_ADDRESS *DestIp, OPTIONAL
329 IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort, OPTIONAL
330 IN OUT EFI_IP_ADDRESS *SrcIp, OPTIONAL
331 IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL
332 IN UINTN *HeaderSize, OPTIONAL
333 IN VOID *HeaderPtr, OPTIONAL
334 IN OUT UINTN *BufferSize,
340 (EFIAPI *EFI_PXE_BASE_CODE_SET_IP_FILTER) (
341 IN struct _EFI_PXE_BASE_CODE *This,
342 IN EFI_PXE_BASE_CODE_IP_FILTER *NewFilter
347 (EFIAPI *EFI_PXE_BASE_CODE_ARP) (
348 IN struct _EFI_PXE_BASE_CODE *This,
349 IN EFI_IP_ADDRESS *IpAddr,
350 IN EFI_MAC_ADDRESS *MacAddr OPTIONAL
355 (EFIAPI *EFI_PXE_BASE_CODE_SET_PARAMETERS) (
356 IN struct _EFI_PXE_BASE_CODE *This,
357 IN BOOLEAN *NewAutoArp, OPTIONAL
358 IN BOOLEAN *NewSendGUID, OPTIONAL
359 IN UINT8 *NewTTL, OPTIONAL
360 IN UINT8 *NewToS, OPTIONAL
361 IN BOOLEAN *NewMakeCallback OPTIONAL
366 (EFIAPI *EFI_PXE_BASE_CODE_SET_STATION_IP) (
367 IN struct _EFI_PXE_BASE_CODE *This,
368 IN EFI_IP_ADDRESS *NewStationIp, OPTIONAL
369 IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL
374 (EFIAPI *EFI_PXE_BASE_CODE_SET_PACKETS) (
375 IN struct _EFI_PXE_BASE_CODE *This,
376 BOOLEAN *NewDhcpDiscoverValid, OPTIONAL
377 BOOLEAN *NewDhcpAckReceived, OPTIONAL
378 BOOLEAN *NewProxyOfferReceived, OPTIONAL
379 BOOLEAN *NewPxeDiscoverValid, OPTIONAL
380 BOOLEAN *NewPxeReplyReceived, OPTIONAL
381 BOOLEAN *NewPxeBisReplyReceived,OPTIONAL
382 IN EFI_PXE_BASE_CODE_PACKET *NewDhcpDiscover, OPTIONAL
383 IN EFI_PXE_BASE_CODE_PACKET *NewDhcpAck, OPTIONAL
384 IN EFI_PXE_BASE_CODE_PACKET *NewProxyOffer, OPTIONAL
385 IN EFI_PXE_BASE_CODE_PACKET *NewPxeDiscover, OPTIONAL
386 IN EFI_PXE_BASE_CODE_PACKET *NewPxeReply, OPTIONAL
387 IN EFI_PXE_BASE_CODE_PACKET *NewPxeBisReply OPTIONAL
391 * PXE Base Code Protocol structure
394 #define EFI_PXE_BASE_CODE_INTERFACE_REVISION 0x00010000
396 typedef struct _EFI_PXE_BASE_CODE {
398 EFI_PXE_BASE_CODE_START Start;
399 EFI_PXE_BASE_CODE_STOP Stop;
400 EFI_PXE_BASE_CODE_DHCP Dhcp;
401 EFI_PXE_BASE_CODE_DISCOVER Discover;
402 EFI_PXE_BASE_CODE_MTFTP Mtftp;
403 EFI_PXE_BASE_CODE_UDP_WRITE UdpWrite;
404 EFI_PXE_BASE_CODE_UDP_READ UdpRead;
405 EFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter;
406 EFI_PXE_BASE_CODE_ARP Arp;
407 EFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters;
408 EFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp;
409 EFI_PXE_BASE_CODE_SET_PACKETS SetPackets;
410 EFI_PXE_BASE_CODE_MODE *Mode;
414 * Call Back Definitions
417 #define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL \
418 { 0x245dca21, 0xfb7b, 0x11d3, 0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b }
424 #define EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION 0x00010000
426 INTERFACE_DECL(_EFI_PXE_BASE_CODE_CALLBACK);
429 EFI_PXE_BASE_CODE_FUNCTION_FIRST,
430 EFI_PXE_BASE_CODE_FUNCTION_DHCP,
431 EFI_PXE_BASE_CODE_FUNCTION_DISCOVER,
432 EFI_PXE_BASE_CODE_FUNCTION_MTFTP,
433 EFI_PXE_BASE_CODE_FUNCTION_UDP_WRITE,
434 EFI_PXE_BASE_CODE_FUNCTION_UDP_READ,
435 EFI_PXE_BASE_CODE_FUNCTION_ARP,
436 EFI_PXE_BASE_CODE_FUNCTION_IGMP,
437 EFI_PXE_BASE_CODE_PXE_FUNCTION_LAST
438 } EFI_PXE_BASE_CODE_FUNCTION;
441 EFI_PXE_BASE_CODE_CALLBACK_STATUS_FIRST,
442 EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE,
443 EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT,
444 EFI_PXE_BASE_CODE_CALLBACK_STATUS_LAST
445 } EFI_PXE_BASE_CODE_CALLBACK_STATUS;
448 EFI_PXE_BASE_CODE_CALLBACK_STATUS
449 (EFIAPI *EFI_PXE_CALLBACK) (
450 IN struct _EFI_PXE_BASE_CODE_CALLBACK *This,
451 IN EFI_PXE_BASE_CODE_FUNCTION Function,
454 IN EFI_PXE_BASE_CODE_PACKET *Packet OPTIONAL
457 typedef struct _EFI_PXE_BASE_CODE_CALLBACK {
459 EFI_PXE_CALLBACK Callback;
460 } EFI_PXE_BASE_CODE_CALLBACK;
462 #endif /* _EFIPXEBC_H */