3 Copyright (c) 2004, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 EFI PXE Base Code Protocol definitions.
25 // PXE Base Code protocol
27 #define EFI_PXE_BASE_CODE_PROTOCOL_GUID \
29 0x03c4e603, 0xac28, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d \
32 EFI_FORWARD_DECLARATION (EFI_PXE_BASE_CODE_PROTOCOL
);
35 // Default IP TTL and ToS.
37 #define DEFAULT_TTL 16
57 } EFI_PXE_BASE_CODE_ICMP_ERROR
;
64 CHAR8 ErrorString
[127];
65 } EFI_PXE_BASE_CODE_TFTP_ERROR
;
68 // IP Receive Filter definitions
70 #define EFI_PXE_BASE_CODE_MAX_IPCNT 8
76 EFI_IP_ADDRESS IpList
[EFI_PXE_BASE_CODE_MAX_IPCNT
];
77 } EFI_PXE_BASE_CODE_IP_FILTER
;
79 #define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001
80 #define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002
81 #define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004
82 #define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008
85 // ARP Cache definitions
88 EFI_IP_ADDRESS IpAddr
;
89 EFI_MAC_ADDRESS MacAddr
;
90 } EFI_PXE_BASE_CODE_ARP_ENTRY
;
93 EFI_IP_ADDRESS IpAddr
;
94 EFI_IP_ADDRESS SubnetMask
;
95 EFI_IP_ADDRESS GwAddr
;
96 } EFI_PXE_BASE_CODE_ROUTE_ENTRY
;
101 typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT
;
103 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP 0x0001
104 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT 0x0002
105 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP 0x0004
106 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008
107 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER 0x0010
108 #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT 0x0020
111 // Discover() definitions
113 #define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP 0
114 #define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS 1
115 #define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM 2
116 #define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI 3
117 #define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO 4
118 #define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD 5
119 #define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM 6
120 #define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG 7
121 #define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW 8
122 #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9 9
123 #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10 10
124 #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11 11
125 #define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12 12
126 #define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL 13
127 #define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT 14
128 #define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO 15
129 #define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT 16
131 // 17 through 32767 are reserved
132 // 32768 through 65279 are for vendor use
133 // 65280 through 65534 are reserved
135 #define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST 65535
137 #define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK 0x7FFF
138 #define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL 0x0000
141 // Discover() server list structure.
145 BOOLEAN AcceptAnyResponse
;
147 EFI_IP_ADDRESS IpAddr
;
148 } EFI_PXE_BASE_CODE_SRVLIST
;
151 // Discover() information override structure.
158 EFI_IP_ADDRESS ServerMCastIp
;
160 EFI_PXE_BASE_CODE_SRVLIST SrvList
[1];
161 } EFI_PXE_BASE_CODE_DISCOVER_INFO
;
164 // Mtftp() definitions
167 EFI_PXE_BASE_CODE_TFTP_FIRST
,
168 EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE
,
169 EFI_PXE_BASE_CODE_TFTP_READ_FILE
,
170 EFI_PXE_BASE_CODE_TFTP_WRITE_FILE
,
171 EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY
,
172 EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE
,
173 EFI_PXE_BASE_CODE_MTFTP_READ_FILE
,
174 EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY
,
175 EFI_PXE_BASE_CODE_MTFTP_LAST
176 } EFI_PXE_BASE_CODE_TFTP_OPCODE
;
179 EFI_IP_ADDRESS MCastIp
;
180 EFI_PXE_BASE_CODE_UDP_PORT CPort
;
181 EFI_PXE_BASE_CODE_UDP_PORT SPort
;
182 UINT16 ListenTimeout
;
183 UINT16 TransmitTimeout
;
184 } EFI_PXE_BASE_CODE_MTFTP_INFO
;
187 // PXE Base Code Mode structure
189 #define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8
190 #define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8
194 BOOLEAN Ipv6Available
;
195 BOOLEAN Ipv6Supported
;
197 BOOLEAN BisSupported
;
201 BOOLEAN DhcpDiscoverValid
;
202 BOOLEAN DhcpAckReceived
;
203 BOOLEAN ProxyOfferReceived
;
204 BOOLEAN PxeDiscoverValid
;
205 BOOLEAN PxeReplyReceived
;
206 BOOLEAN PxeBisReplyReceived
;
207 BOOLEAN IcmpErrorReceived
;
208 BOOLEAN TftpErrorReceived
;
209 BOOLEAN MakeCallbacks
;
212 EFI_IP_ADDRESS StationIp
;
213 EFI_IP_ADDRESS SubnetMask
;
214 EFI_PXE_BASE_CODE_PACKET DhcpDiscover
;
215 EFI_PXE_BASE_CODE_PACKET DhcpAck
;
216 EFI_PXE_BASE_CODE_PACKET ProxyOffer
;
217 EFI_PXE_BASE_CODE_PACKET PxeDiscover
;
218 EFI_PXE_BASE_CODE_PACKET PxeReply
;
219 EFI_PXE_BASE_CODE_PACKET PxeBisReply
;
220 EFI_PXE_BASE_CODE_IP_FILTER IpFilter
;
221 UINT32 ArpCacheEntries
;
222 EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache
[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES
];
223 UINT32 RouteTableEntries
;
224 EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable
[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES
];
225 EFI_PXE_BASE_CODE_ICMP_ERROR IcmpError
;
226 EFI_PXE_BASE_CODE_TFTP_ERROR TftpError
;
227 } EFI_PXE_BASE_CODE_MODE
;
230 // PXE Base Code Interface Function definitions
234 (EFIAPI
*EFI_PXE_BASE_CODE_START
) (
235 IN EFI_PXE_BASE_CODE_PROTOCOL
* This
,
241 (EFIAPI
*EFI_PXE_BASE_CODE_STOP
) (
242 IN EFI_PXE_BASE_CODE_PROTOCOL
* This
247 (EFIAPI
*EFI_PXE_BASE_CODE_DHCP
) (
248 IN EFI_PXE_BASE_CODE_PROTOCOL
* This
,
249 IN BOOLEAN SortOffers
254 (EFIAPI
*EFI_PXE_BASE_CODE_DISCOVER
) (
255 IN EFI_PXE_BASE_CODE_PROTOCOL
* This
,
259 IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO
* Info OPTIONAL
264 (EFIAPI
*EFI_PXE_BASE_CODE_MTFTP
) (
265 IN EFI_PXE_BASE_CODE_PROTOCOL
* This
,
266 IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation
,
267 IN OUT VOID
*BufferPtr OPTIONAL
,
268 IN BOOLEAN Overwrite
,
269 IN OUT UINT64
*BufferSize
,
270 IN UINTN
*BlockSize OPTIONAL
,
271 IN EFI_IP_ADDRESS
* ServerIp
,
273 IN EFI_PXE_BASE_CODE_MTFTP_INFO
* Info OPTIONAL
,
274 IN BOOLEAN DontUseBuffer
279 (EFIAPI
*EFI_PXE_BASE_CODE_UDP_WRITE
) (
280 IN EFI_PXE_BASE_CODE_PROTOCOL
* This
,
282 IN EFI_IP_ADDRESS
* DestIp
,
283 IN EFI_PXE_BASE_CODE_UDP_PORT
* DestPort
,
284 IN EFI_IP_ADDRESS
* GatewayIp
, OPTIONAL
285 IN EFI_IP_ADDRESS
* SrcIp
, OPTIONAL
286 IN OUT EFI_PXE_BASE_CODE_UDP_PORT
* SrcPort
, OPTIONAL
287 IN UINTN
*HeaderSize
, OPTIONAL
288 IN VOID
*HeaderPtr
, OPTIONAL
289 IN UINTN
*BufferSize
,
295 (EFIAPI
*EFI_PXE_BASE_CODE_UDP_READ
) (
296 IN EFI_PXE_BASE_CODE_PROTOCOL
* This
,
298 IN OUT EFI_IP_ADDRESS
* DestIp
, OPTIONAL
299 IN OUT EFI_PXE_BASE_CODE_UDP_PORT
* DestPort
, OPTIONAL
300 IN OUT EFI_IP_ADDRESS
* SrcIp
, OPTIONAL
301 IN OUT EFI_PXE_BASE_CODE_UDP_PORT
* SrcPort
, OPTIONAL
302 IN UINTN
*HeaderSize
, OPTIONAL
303 IN VOID
*HeaderPtr
, OPTIONAL
304 IN OUT UINTN
*BufferSize
,
310 (EFIAPI
*EFI_PXE_BASE_CODE_SET_IP_FILTER
) (
311 IN EFI_PXE_BASE_CODE_PROTOCOL
* This
,
312 IN EFI_PXE_BASE_CODE_IP_FILTER
* NewFilter
317 (EFIAPI
*EFI_PXE_BASE_CODE_ARP
) (
318 IN EFI_PXE_BASE_CODE_PROTOCOL
* This
,
319 IN EFI_IP_ADDRESS
* IpAddr
,
320 IN EFI_MAC_ADDRESS
* MacAddr OPTIONAL
325 (EFIAPI
*EFI_PXE_BASE_CODE_SET_PARAMETERS
) (
326 IN EFI_PXE_BASE_CODE_PROTOCOL
* This
,
327 IN BOOLEAN
*NewAutoArp
, OPTIONAL
328 IN BOOLEAN
*NewSendGUID
, OPTIONAL
329 IN UINT8
*NewTTL
, OPTIONAL
330 IN UINT8
*NewToS
, OPTIONAL
331 IN BOOLEAN
*NewMakeCallback OPTIONAL
336 (EFIAPI
*EFI_PXE_BASE_CODE_SET_STATION_IP
) (
337 IN EFI_PXE_BASE_CODE_PROTOCOL
* This
,
338 IN EFI_IP_ADDRESS
* NewStationIp
, OPTIONAL
339 IN EFI_IP_ADDRESS
* NewSubnetMask OPTIONAL
344 (EFIAPI
*EFI_PXE_BASE_CODE_SET_PACKETS
) (
345 IN EFI_PXE_BASE_CODE_PROTOCOL
* This
,
346 BOOLEAN
*NewDhcpDiscoverValid
, OPTIONAL
347 BOOLEAN
*NewDhcpAckReceived
, OPTIONAL
348 BOOLEAN
*NewProxyOfferReceived
, OPTIONAL
349 BOOLEAN
*NewPxeDiscoverValid
, OPTIONAL
350 BOOLEAN
*NewPxeReplyReceived
, OPTIONAL
351 BOOLEAN
*NewPxeBisReplyReceived
, OPTIONAL
352 IN EFI_PXE_BASE_CODE_PACKET
* NewDhcpDiscover
, OPTIONAL
353 IN EFI_PXE_BASE_CODE_PACKET
* NewDhcpAck
, OPTIONAL
354 IN EFI_PXE_BASE_CODE_PACKET
* NewProxyOffer
, OPTIONAL
355 IN EFI_PXE_BASE_CODE_PACKET
* NewPxeDiscover
, OPTIONAL
356 IN EFI_PXE_BASE_CODE_PACKET
* NewPxeReply
, OPTIONAL
357 IN EFI_PXE_BASE_CODE_PACKET
* NewPxeBisReply OPTIONAL
361 // PXE Base Code Protocol structure
363 #define EFI_PXE_BASE_CODE_INTERFACE_REVISION 0x00010000
365 typedef struct _EFI_PXE_BASE_CODE_PROTOCOL
{
367 EFI_PXE_BASE_CODE_START Start
;
368 EFI_PXE_BASE_CODE_STOP Stop
;
369 EFI_PXE_BASE_CODE_DHCP Dhcp
;
370 EFI_PXE_BASE_CODE_DISCOVER Discover
;
371 EFI_PXE_BASE_CODE_MTFTP Mtftp
;
372 EFI_PXE_BASE_CODE_UDP_WRITE UdpWrite
;
373 EFI_PXE_BASE_CODE_UDP_READ UdpRead
;
374 EFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter
;
375 EFI_PXE_BASE_CODE_ARP Arp
;
376 EFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters
;
377 EFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp
;
378 EFI_PXE_BASE_CODE_SET_PACKETS SetPackets
;
379 EFI_PXE_BASE_CODE_MODE
*Mode
;
380 } EFI_PXE_BASE_CODE_PROTOCOL
;
382 extern EFI_GUID gEfiPxeBaseCodeProtocolGuid
;
384 #endif /* _EFIPXEBC_H */
386 /* EOF - PxeBaseCode.h */