7 Copyright (c) 1998 Intel Corporation
15 EFI PXE Base Code Protocol
24 * PXE Base Code protocol
27 #define EFI_PXE_BASE_CODE_PROTOCOL \
28 { 0x03c4e603, 0xac28, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d }
30 INTERFACE_DECL(_EFI_PXE_BASE_CODE);
45 typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;
63 UINT8 BootpHwAddr[16];
64 UINT8 BootpSrvName[64];
65 UINT8 BootpBootFile[128];
67 UINT8 DhcpOptions[56];
68 } EFI_PXE_BASE_CODE_DHCPV4_PACKET;
72 EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4;
73 } EFI_PXE_BASE_CODE_PACKET;
89 } EFI_PXE_BASE_CODE_ICMP_ERROR;
93 CHAR8 ErrorString[127];
94 } EFI_PXE_BASE_CODE_TFTP_ERROR;
97 * IP Receive Filter definitions
99 #define EFI_PXE_BASE_CODE_MAX_IPCNT 8
104 EFI_IP_ADDRESS IpList[EFI_PXE_BASE_CODE_MAX_IPCNT];
105 } EFI_PXE_BASE_CODE_IP_FILTER;
107 #define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001
108 #define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002
109 #define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004
110 #define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008
113 * ARP Cache definitions
117 EFI_IP_ADDRESS IpAddr;
118 EFI_MAC_ADDRESS MacAddr;
119 } EFI_PXE_BASE_CODE_ARP_ENTRY;
122 EFI_IP_ADDRESS IpAddr;
123 EFI_IP_ADDRESS SubnetMask;
124 EFI_IP_ADDRESS GwAddr;
125 } EFI_PXE_BASE_CODE_ROUTE_ENTRY;
131 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP 0x0001
132 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT 0x0002
133 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP 0x0004
134 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008
135 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER 0x0010
136 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT 0x0020
139 * Discover() definitions
142 #define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP 0
143 #define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS 1
144 #define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM 2
145 #define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI 3
146 #define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO 4
147 #define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD 5
148 #define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM 6
149 #define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG 7
150 #define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW 8
151 #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9 9
152 #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10 10
153 #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11 11
154 #define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12 12
155 #define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL 13
156 #define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT 14
157 #define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO 15
158 #define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT 16
160 * 17 through 32767 are reserved
161 * 32768 through 65279 are for vendor use
162 * 65280 through 65534 are reserved
164 #define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST 65535
166 #define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK 0x7FFF
167 #define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL 0x0000
172 BOOLEAN AcceptAnyResponse;
174 EFI_IP_ADDRESS IpAddr;
175 } EFI_PXE_BASE_CODE_SRVLIST;
182 EFI_IP_ADDRESS ServerMCastIp;
184 EFI_PXE_BASE_CODE_SRVLIST SrvList[1];
185 } EFI_PXE_BASE_CODE_DISCOVER_INFO;
188 * Mtftp() definitions
192 EFI_PXE_BASE_CODE_TFTP_FIRST,
193 EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE,
194 EFI_PXE_BASE_CODE_TFTP_READ_FILE,
195 EFI_PXE_BASE_CODE_TFTP_WRITE_FILE,
196 EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY,
197 EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE,
198 EFI_PXE_BASE_CODE_MTFTP_READ_FILE,
199 EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY,
200 EFI_PXE_BASE_CODE_MTFTP_LAST
201 } EFI_PXE_BASE_CODE_TFTP_OPCODE;
204 EFI_IP_ADDRESS MCastIp;
205 EFI_PXE_BASE_CODE_UDP_PORT CPort;
206 EFI_PXE_BASE_CODE_UDP_PORT SPort;
207 UINT16 ListenTimeout;
208 UINT16 TransmitTimeout;
209 } EFI_PXE_BASE_CODE_MTFTP_INFO;
212 * PXE Base Code Mode structure
215 #define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8
216 #define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8
220 BOOLEAN Ipv6Available;
221 BOOLEAN Ipv6Supported;
223 BOOLEAN BisSupported;
227 BOOLEAN DhcpDiscoverValid;
228 BOOLEAN DhcpAckReceived;
229 BOOLEAN ProxyOfferReceived;
230 BOOLEAN PxeDiscoverValid;
231 BOOLEAN PxeReplyReceived;
232 BOOLEAN PxeBisReplyReceived;
233 BOOLEAN IcmpErrorReceived;
234 BOOLEAN TftpErrorReceived;
235 BOOLEAN MakeCallbacks;
238 EFI_IP_ADDRESS StationIp;
239 EFI_IP_ADDRESS SubnetMask;
240 EFI_PXE_BASE_CODE_PACKET DhcpDiscover;
241 EFI_PXE_BASE_CODE_PACKET DhcpAck;
242 EFI_PXE_BASE_CODE_PACKET ProxyOffer;
243 EFI_PXE_BASE_CODE_PACKET PxeDiscover;
244 EFI_PXE_BASE_CODE_PACKET PxeReply;
245 EFI_PXE_BASE_CODE_PACKET PxeBisReply;
246 EFI_PXE_BASE_CODE_IP_FILTER IpFilter;
247 UINT32 ArpCacheEntries;
248 EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES];
249 UINT32 RouteTableEntries;
250 EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES];
251 EFI_PXE_BASE_CODE_ICMP_ERROR IcmpError;
252 EFI_PXE_BASE_CODE_TFTP_ERROR TftpError;
253 } EFI_PXE_BASE_CODE_MODE;
256 * PXE Base Code Interface Function definitions
261 (EFIAPI *EFI_PXE_BASE_CODE_START) (
262 IN struct _EFI_PXE_BASE_CODE *This,
268 (EFIAPI *EFI_PXE_BASE_CODE_STOP) (
269 IN struct _EFI_PXE_BASE_CODE *This
274 (EFIAPI *EFI_PXE_BASE_CODE_DHCP) (
275 IN struct _EFI_PXE_BASE_CODE *This,
276 IN BOOLEAN SortOffers
281 (EFIAPI *EFI_PXE_BASE_CODE_DISCOVER) (
282 IN struct _EFI_PXE_BASE_CODE *This,
286 IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO *Info OPTIONAL
291 (EFIAPI *EFI_PXE_BASE_CODE_MTFTP) (
292 IN struct _EFI_PXE_BASE_CODE *This,
293 IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation,
294 IN OUT VOID *BufferPtr OPTIONAL,
295 IN BOOLEAN Overwrite,
296 IN OUT UINTN *BufferSize,
297 IN UINTN *BlockSize OPTIONAL,
298 IN EFI_IP_ADDRESS *ServerIp,
300 IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL,
301 IN BOOLEAN DontUseBuffer
306 (EFIAPI *EFI_PXE_BASE_CODE_UDP_WRITE) (
307 IN struct _EFI_PXE_BASE_CODE *This,
309 IN EFI_IP_ADDRESS *DestIp,
310 IN EFI_PXE_BASE_CODE_UDP_PORT *DestPort,
311 IN EFI_IP_ADDRESS *GatewayIp, OPTIONAL
312 IN EFI_IP_ADDRESS *SrcIp, OPTIONAL
313 IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL
314 IN UINTN *HeaderSize, OPTIONAL
315 IN VOID *HeaderPtr, OPTIONAL
316 IN UINTN *BufferSize,
322 (EFIAPI *EFI_PXE_BASE_CODE_UDP_READ) (
323 IN struct _EFI_PXE_BASE_CODE *This,
325 IN OUT EFI_IP_ADDRESS *DestIp, OPTIONAL
326 IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort, OPTIONAL
327 IN OUT EFI_IP_ADDRESS *SrcIp, OPTIONAL
328 IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL
329 IN UINTN *HeaderSize, OPTIONAL
330 IN VOID *HeaderPtr, OPTIONAL
331 IN OUT UINTN *BufferSize,
337 (EFIAPI *EFI_PXE_BASE_CODE_SET_IP_FILTER) (
338 IN struct _EFI_PXE_BASE_CODE *This,
339 IN EFI_PXE_BASE_CODE_IP_FILTER *NewFilter
344 (EFIAPI *EFI_PXE_BASE_CODE_ARP) (
345 IN struct _EFI_PXE_BASE_CODE *This,
346 IN EFI_IP_ADDRESS *IpAddr,
347 IN EFI_MAC_ADDRESS *MacAddr OPTIONAL
352 (EFIAPI *EFI_PXE_BASE_CODE_SET_PARAMETERS) (
353 IN struct _EFI_PXE_BASE_CODE *This,
354 IN BOOLEAN *NewAutoArp, OPTIONAL
355 IN BOOLEAN *NewSendGUID, OPTIONAL
356 IN UINT8 *NewTTL, OPTIONAL
357 IN UINT8 *NewToS, OPTIONAL
358 IN BOOLEAN *NewMakeCallback OPTIONAL
363 (EFIAPI *EFI_PXE_BASE_CODE_SET_STATION_IP) (
364 IN struct _EFI_PXE_BASE_CODE *This,
365 IN EFI_IP_ADDRESS *NewStationIp, OPTIONAL
366 IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL
371 (EFIAPI *EFI_PXE_BASE_CODE_SET_PACKETS) (
372 IN struct _EFI_PXE_BASE_CODE *This,
373 BOOLEAN *NewDhcpDiscoverValid, OPTIONAL
374 BOOLEAN *NewDhcpAckReceived, OPTIONAL
375 BOOLEAN *NewProxyOfferReceived, OPTIONAL
376 BOOLEAN *NewPxeDiscoverValid, OPTIONAL
377 BOOLEAN *NewPxeReplyReceived, OPTIONAL
378 BOOLEAN *NewPxeBisReplyReceived,OPTIONAL
379 IN EFI_PXE_BASE_CODE_PACKET *NewDhcpDiscover, OPTIONAL
380 IN EFI_PXE_BASE_CODE_PACKET *NewDhcpAck, OPTIONAL
381 IN EFI_PXE_BASE_CODE_PACKET *NewProxyOffer, OPTIONAL
382 IN EFI_PXE_BASE_CODE_PACKET *NewPxeDiscover, OPTIONAL
383 IN EFI_PXE_BASE_CODE_PACKET *NewPxeReply, OPTIONAL
384 IN EFI_PXE_BASE_CODE_PACKET *NewPxeBisReply OPTIONAL
388 * PXE Base Code Protocol structure
391 #define EFI_PXE_BASE_CODE_INTERFACE_REVISION 0x00010000
393 typedef struct _EFI_PXE_BASE_CODE {
395 EFI_PXE_BASE_CODE_START Start;
396 EFI_PXE_BASE_CODE_STOP Stop;
397 EFI_PXE_BASE_CODE_DHCP Dhcp;
398 EFI_PXE_BASE_CODE_DISCOVER Discover;
399 EFI_PXE_BASE_CODE_MTFTP Mtftp;
400 EFI_PXE_BASE_CODE_UDP_WRITE UdpWrite;
401 EFI_PXE_BASE_CODE_UDP_READ UdpRead;
402 EFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter;
403 EFI_PXE_BASE_CODE_ARP Arp;
404 EFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters;
405 EFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp;
406 EFI_PXE_BASE_CODE_SET_PACKETS SetPackets;
407 EFI_PXE_BASE_CODE_MODE *Mode;
411 * Call Back Definitions
414 #define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL \
415 { 0x245dca21, 0xfb7b, 0x11d3, 0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b }
421 #define EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION 0x00010000
423 INTERFACE_DECL(_EFI_PXE_BASE_CODE_CALLBACK);
426 EFI_PXE_BASE_CODE_FUNCTION_FIRST,
427 EFI_PXE_BASE_CODE_FUNCTION_DHCP,
428 EFI_PXE_BASE_CODE_FUNCTION_DISCOVER,
429 EFI_PXE_BASE_CODE_FUNCTION_MTFTP,
430 EFI_PXE_BASE_CODE_FUNCTION_UDP_WRITE,
431 EFI_PXE_BASE_CODE_FUNCTION_UDP_READ,
432 EFI_PXE_BASE_CODE_FUNCTION_ARP,
433 EFI_PXE_BASE_CODE_FUNCTION_IGMP,
434 EFI_PXE_BASE_CODE_PXE_FUNCTION_LAST
435 } EFI_PXE_BASE_CODE_FUNCTION;
438 EFI_PXE_BASE_CODE_CALLBACK_STATUS_FIRST,
439 EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE,
440 EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT,
441 EFI_PXE_BASE_CODE_CALLBACK_STATUS_LAST
442 } EFI_PXE_BASE_CODE_CALLBACK_STATUS;
445 EFI_PXE_BASE_CODE_CALLBACK_STATUS
446 (EFIAPI *EFI_PXE_CALLBACK) (
447 IN struct _EFI_PXE_BASE_CODE_CALLBACK *This,
448 IN EFI_PXE_BASE_CODE_FUNCTION Function,
451 IN EFI_PXE_BASE_CODE_PACKET *Packet OPTIONAL
454 typedef struct _EFI_PXE_BASE_CODE_CALLBACK {
456 EFI_PXE_CALLBACK Callback;
457 } EFI_PXE_BASE_CODE_CALLBACK;
459 #endif /* _EFIPXEBC_H */