6
Copyright (c) 1998 Intel Corporation
14
EFI PXE Base Code Protocol
23
// PXE Base Code protocol
26
#define EFI_PXE_BASE_CODE_PROTOCOL \
27
{ 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
29
INTERFACE_DECL(_EFI_PXE_BASE_CODE);
34
// Address definitions
43
typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;
61
UINT8 BootpHwAddr[16];
62
UINT8 BootpSrvName[64];
63
UINT8 BootpBootFile[128];
65
UINT8 DhcpOptions[56];
66
} EFI_PXE_BASE_CODE_DHCPV4_PACKET;
71
//} EFI_PXE_BASE_CODE_DHCPV6_PACKET;
75
EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4;
76
// EFI_PXE_BASE_CODE_DHCPV6_PACKET Dhcpv6;
77
} EFI_PXE_BASE_CODE_PACKET;
93
} EFI_PXE_BASE_CODE_ICMP_ERROR;
97
CHAR8 ErrorString[127];
98
} EFI_PXE_BASE_CODE_TFTP_ERROR;
101
// IP Receive Filter definitions
103
#define EFI_PXE_BASE_CODE_MAX_IPCNT 8
108
EFI_IP_ADDRESS IpList[EFI_PXE_BASE_CODE_MAX_IPCNT];
109
} EFI_PXE_BASE_CODE_IP_FILTER;
111
#define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001
112
#define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002
113
#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004
114
#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008
117
// ARP Cache definitions
121
EFI_IP_ADDRESS IpAddr;
122
EFI_MAC_ADDRESS MacAddr;
123
} EFI_PXE_BASE_CODE_ARP_ENTRY;
126
EFI_IP_ADDRESS IpAddr;
127
EFI_IP_ADDRESS SubnetMask;
128
EFI_IP_ADDRESS GwAddr;
129
} EFI_PXE_BASE_CODE_ROUTE_ENTRY;
135
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP 0x0001
136
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT 0x0002
137
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP 0x0004
138
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008
139
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER 0x0010
140
#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT 0x0020
143
// Discover() definitions
146
#define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP 0
147
#define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS 1
148
#define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM 2
149
#define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI 3
150
#define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO 4
151
#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD 5
152
#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM 6
153
#define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG 7
154
#define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW 8
155
#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9 9
156
#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10 10
157
#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11 11
158
#define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12 12
159
#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL 13
160
#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT 14
161
#define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO 15
162
#define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT 16
164
// 17 through 32767 are reserved
165
// 32768 through 65279 are for vendor use
166
// 65280 through 65534 are reserved
168
#define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST 65535
170
#define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK 0x7FFF
171
#define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL 0x0000
176
BOOLEAN AcceptAnyResponse;
178
EFI_IP_ADDRESS IpAddr;
179
} EFI_PXE_BASE_CODE_SRVLIST;
186
EFI_IP_ADDRESS ServerMCastIp;
188
EFI_PXE_BASE_CODE_SRVLIST SrvList[1];
189
} EFI_PXE_BASE_CODE_DISCOVER_INFO;
192
// Mtftp() definitions
196
EFI_PXE_BASE_CODE_TFTP_FIRST,
197
EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE,
198
EFI_PXE_BASE_CODE_TFTP_READ_FILE,
199
EFI_PXE_BASE_CODE_TFTP_WRITE_FILE,
200
EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY,
201
EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE,
202
EFI_PXE_BASE_CODE_MTFTP_READ_FILE,
203
EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY,
204
EFI_PXE_BASE_CODE_MTFTP_LAST
205
} EFI_PXE_BASE_CODE_TFTP_OPCODE;
208
EFI_IP_ADDRESS MCastIp;
209
EFI_PXE_BASE_CODE_UDP_PORT CPort;
210
EFI_PXE_BASE_CODE_UDP_PORT SPort;
211
UINT16 ListenTimeout;
212
UINT16 TransmitTimeout;
213
} EFI_PXE_BASE_CODE_MTFTP_INFO;
216
// PXE Base Code Mode structure
219
#define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8
220
#define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8
224
BOOLEAN Ipv6Available;
225
BOOLEAN Ipv6Supported;
227
BOOLEAN BisSupported;
231
BOOLEAN DhcpDiscoverValid;
232
BOOLEAN DhcpAckReceived;
233
BOOLEAN ProxyOfferReceived;
234
BOOLEAN PxeDiscoverValid;
235
BOOLEAN PxeReplyReceived;
236
BOOLEAN PxeBisReplyReceived;
237
BOOLEAN IcmpErrorReceived;
238
BOOLEAN TftpErrorReceived;
239
BOOLEAN MakeCallbacks;
242
EFI_IP_ADDRESS StationIp;
243
EFI_IP_ADDRESS SubnetMask;
244
EFI_PXE_BASE_CODE_PACKET DhcpDiscover;
245
EFI_PXE_BASE_CODE_PACKET DhcpAck;
246
EFI_PXE_BASE_CODE_PACKET ProxyOffer;
247
EFI_PXE_BASE_CODE_PACKET PxeDiscover;
248
EFI_PXE_BASE_CODE_PACKET PxeReply;
249
EFI_PXE_BASE_CODE_PACKET PxeBisReply;
250
EFI_PXE_BASE_CODE_IP_FILTER IpFilter;
251
UINT32 ArpCacheEntries;
252
EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES];
253
UINT32 RouteTableEntries;
254
EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES];
255
EFI_PXE_BASE_CODE_ICMP_ERROR IcmpError;
256
EFI_PXE_BASE_CODE_TFTP_ERROR TftpError;
257
} EFI_PXE_BASE_CODE_MODE;
260
// PXE Base Code Interface Function definitions
265
(EFIAPI *EFI_PXE_BASE_CODE_START) (
266
IN struct _EFI_PXE_BASE_CODE *This,
272
(EFIAPI *EFI_PXE_BASE_CODE_STOP) (
273
IN struct _EFI_PXE_BASE_CODE *This
278
(EFIAPI *EFI_PXE_BASE_CODE_DHCP) (
279
IN struct _EFI_PXE_BASE_CODE *This,
280
IN BOOLEAN SortOffers
285
(EFIAPI *EFI_PXE_BASE_CODE_DISCOVER) (
286
IN struct _EFI_PXE_BASE_CODE *This,
290
IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO *Info OPTIONAL
295
(EFIAPI *EFI_PXE_BASE_CODE_MTFTP) (
296
IN struct _EFI_PXE_BASE_CODE *This,
297
IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation,
298
IN OUT VOID *BufferPtr OPTIONAL,
299
IN BOOLEAN Overwrite,
300
IN OUT UINTN *BufferSize,
301
IN UINTN *BlockSize OPTIONAL,
302
IN EFI_IP_ADDRESS *ServerIp,
304
IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL,
305
IN BOOLEAN DontUseBuffer
310
(EFIAPI *EFI_PXE_BASE_CODE_UDP_WRITE) (
311
IN struct _EFI_PXE_BASE_CODE *This,
313
IN EFI_IP_ADDRESS *DestIp,
314
IN EFI_PXE_BASE_CODE_UDP_PORT *DestPort,
315
IN EFI_IP_ADDRESS *GatewayIp, OPTIONAL
316
IN EFI_IP_ADDRESS *SrcIp, OPTIONAL
317
IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL
318
IN UINTN *HeaderSize, OPTIONAL
319
IN VOID *HeaderPtr, OPTIONAL
320
IN UINTN *BufferSize,
326
(EFIAPI *EFI_PXE_BASE_CODE_UDP_READ) (
327
IN struct _EFI_PXE_BASE_CODE *This,
329
IN OUT EFI_IP_ADDRESS *DestIp, OPTIONAL
330
IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort, OPTIONAL
331
IN OUT EFI_IP_ADDRESS *SrcIp, OPTIONAL
332
IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL
333
IN UINTN *HeaderSize, OPTIONAL
334
IN VOID *HeaderPtr, OPTIONAL
335
IN OUT UINTN *BufferSize,
341
(EFIAPI *EFI_PXE_BASE_CODE_SET_IP_FILTER) (
342
IN struct _EFI_PXE_BASE_CODE *This,
343
IN EFI_PXE_BASE_CODE_IP_FILTER *NewFilter
348
(EFIAPI *EFI_PXE_BASE_CODE_ARP) (
349
IN struct _EFI_PXE_BASE_CODE *This,
350
IN EFI_IP_ADDRESS *IpAddr,
351
IN EFI_MAC_ADDRESS *MacAddr OPTIONAL
356
(EFIAPI *EFI_PXE_BASE_CODE_SET_PARAMETERS) (
357
IN struct _EFI_PXE_BASE_CODE *This,
358
IN BOOLEAN *NewAutoArp, OPTIONAL
359
IN BOOLEAN *NewSendGUID, OPTIONAL
360
IN UINT8 *NewTTL, OPTIONAL
361
IN UINT8 *NewToS, OPTIONAL
362
IN BOOLEAN *NewMakeCallback OPTIONAL
367
(EFIAPI *EFI_PXE_BASE_CODE_SET_STATION_IP) (
368
IN struct _EFI_PXE_BASE_CODE *This,
369
IN EFI_IP_ADDRESS *NewStationIp, OPTIONAL
370
IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL
375
(EFIAPI *EFI_PXE_BASE_CODE_SET_PACKETS) (
376
IN struct _EFI_PXE_BASE_CODE *This,
377
BOOLEAN *NewDhcpDiscoverValid, OPTIONAL
378
BOOLEAN *NewDhcpAckReceived, OPTIONAL
379
BOOLEAN *NewProxyOfferReceived, OPTIONAL
380
BOOLEAN *NewPxeDiscoverValid, OPTIONAL
381
BOOLEAN *NewPxeReplyReceived, OPTIONAL
382
BOOLEAN *NewPxeBisReplyReceived,OPTIONAL
383
IN EFI_PXE_BASE_CODE_PACKET *NewDhcpDiscover, OPTIONAL
384
IN EFI_PXE_BASE_CODE_PACKET *NewDhcpAck, OPTIONAL
385
IN EFI_PXE_BASE_CODE_PACKET *NewProxyOffer, OPTIONAL
386
IN EFI_PXE_BASE_CODE_PACKET *NewPxeDiscover, OPTIONAL
387
IN EFI_PXE_BASE_CODE_PACKET *NewPxeReply, OPTIONAL
388
IN EFI_PXE_BASE_CODE_PACKET *NewPxeBisReply OPTIONAL
392
// PXE Base Code Protocol structure
395
#define EFI_PXE_BASE_CODE_INTERFACE_REVISION 0x00010000
397
typedef struct _EFI_PXE_BASE_CODE {
399
EFI_PXE_BASE_CODE_START Start;
400
EFI_PXE_BASE_CODE_STOP Stop;
401
EFI_PXE_BASE_CODE_DHCP Dhcp;
402
EFI_PXE_BASE_CODE_DISCOVER Discover;
403
EFI_PXE_BASE_CODE_MTFTP Mtftp;
404
EFI_PXE_BASE_CODE_UDP_WRITE UdpWrite;
405
EFI_PXE_BASE_CODE_UDP_READ UdpRead;
406
EFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter;
407
EFI_PXE_BASE_CODE_ARP Arp;
408
EFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters;
409
EFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp;
410
EFI_PXE_BASE_CODE_SET_PACKETS SetPackets;
411
EFI_PXE_BASE_CODE_MODE *Mode;
415
// Call Back Definitions
418
#define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL \
419
{ 0x245dca21, 0xfb7b, 0x11d3, {0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
425
#define EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION 0x00010000
427
INTERFACE_DECL(_EFI_PXE_BASE_CODE_CALLBACK);
430
EFI_PXE_BASE_CODE_FUNCTION_FIRST,
431
EFI_PXE_BASE_CODE_FUNCTION_DHCP,
432
EFI_PXE_BASE_CODE_FUNCTION_DISCOVER,
433
EFI_PXE_BASE_CODE_FUNCTION_MTFTP,
434
EFI_PXE_BASE_CODE_FUNCTION_UDP_WRITE,
435
EFI_PXE_BASE_CODE_FUNCTION_UDP_READ,
436
EFI_PXE_BASE_CODE_FUNCTION_ARP,
437
EFI_PXE_BASE_CODE_FUNCTION_IGMP,
438
EFI_PXE_BASE_CODE_PXE_FUNCTION_LAST
439
} EFI_PXE_BASE_CODE_FUNCTION;
442
EFI_PXE_BASE_CODE_CALLBACK_STATUS_FIRST,
443
EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE,
444
EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT,
445
EFI_PXE_BASE_CODE_CALLBACK_STATUS_LAST
446
} EFI_PXE_BASE_CODE_CALLBACK_STATUS;
449
EFI_PXE_BASE_CODE_CALLBACK_STATUS
450
(EFIAPI *EFI_PXE_CALLBACK) (
451
IN struct _EFI_PXE_BASE_CODE_CALLBACK *This,
452
IN EFI_PXE_BASE_CODE_FUNCTION Function,
455
IN EFI_PXE_BASE_CODE_PACKET *Packet OPTIONAL
458
typedef struct _EFI_PXE_BASE_CODE_CALLBACK {
460
EFI_PXE_CALLBACK Callback;
461
} EFI_PXE_BASE_CODE_CALLBACK;
463
#endif /* _EFIPXEBC_H */