efipxebc.h revision 1.1.1.2 1 1.1 jakllsch /* $NetBSD: efipxebc.h,v 1.1.1.2 2018/08/16 18:17:47 jmcneill Exp $ */
2 1.1 jakllsch
3 1.1 jakllsch #ifndef _EFIPXEBC_H
4 1.1 jakllsch #define _EFIPXEBC_H
5 1.1 jakllsch
6 1.1 jakllsch /*++
7 1.1 jakllsch
8 1.1 jakllsch Copyright (c) 1998 Intel Corporation
9 1.1 jakllsch
10 1.1 jakllsch Module Name:
11 1.1 jakllsch
12 1.1 jakllsch efipxebc.h
13 1.1 jakllsch
14 1.1 jakllsch Abstract:
15 1.1 jakllsch
16 1.1 jakllsch EFI PXE Base Code Protocol
17 1.1 jakllsch
18 1.1 jakllsch
19 1.1 jakllsch
20 1.1 jakllsch Revision History
21 1.1 jakllsch
22 1.1 jakllsch --*/
23 1.1 jakllsch
24 1.1 jakllsch //
25 1.1 jakllsch // PXE Base Code protocol
26 1.1 jakllsch //
27 1.1 jakllsch
28 1.1.1.2 jmcneill #define EFI_PXE_BASE_CODE_PROTOCOL_GUID \
29 1.1 jakllsch { 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
30 1.1 jakllsch
31 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_PXE_BASE_CODE_PROTOCOL);
32 1.1 jakllsch
33 1.1 jakllsch #define DEFAULT_TTL 4
34 1.1 jakllsch #define DEFAULT_ToS 0
35 1.1 jakllsch //
36 1.1 jakllsch // Address definitions
37 1.1 jakllsch //
38 1.1 jakllsch
39 1.1 jakllsch typedef union {
40 1.1 jakllsch UINT32 Addr[4];
41 1.1 jakllsch EFI_IPv4_ADDRESS v4;
42 1.1 jakllsch EFI_IPv6_ADDRESS v6;
43 1.1 jakllsch } EFI_IP_ADDRESS;
44 1.1 jakllsch
45 1.1 jakllsch typedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;
46 1.1 jakllsch
47 1.1 jakllsch //
48 1.1 jakllsch // Packet definitions
49 1.1 jakllsch //
50 1.1 jakllsch
51 1.1 jakllsch typedef struct {
52 1.1 jakllsch UINT8 BootpOpcode;
53 1.1 jakllsch UINT8 BootpHwType;
54 1.1 jakllsch UINT8 BootpHwAddrLen;
55 1.1 jakllsch UINT8 BootpGateHops;
56 1.1 jakllsch UINT32 BootpIdent;
57 1.1 jakllsch UINT16 BootpSeconds;
58 1.1 jakllsch UINT16 BootpFlags;
59 1.1 jakllsch UINT8 BootpCiAddr[4];
60 1.1 jakllsch UINT8 BootpYiAddr[4];
61 1.1 jakllsch UINT8 BootpSiAddr[4];
62 1.1 jakllsch UINT8 BootpGiAddr[4];
63 1.1 jakllsch UINT8 BootpHwAddr[16];
64 1.1 jakllsch UINT8 BootpSrvName[64];
65 1.1 jakllsch UINT8 BootpBootFile[128];
66 1.1 jakllsch UINT32 DhcpMagik;
67 1.1 jakllsch UINT8 DhcpOptions[56];
68 1.1 jakllsch } EFI_PXE_BASE_CODE_DHCPV4_PACKET;
69 1.1 jakllsch
70 1.1 jakllsch typedef struct {
71 1.1 jakllsch UINT32 MessageType:8;
72 1.1 jakllsch UINT32 TransactionId:24;
73 1.1 jakllsch UINT8 DhcpOptions[1024];
74 1.1 jakllsch } EFI_PXE_BASE_CODE_DHCPV6_PACKET;
75 1.1 jakllsch
76 1.1 jakllsch typedef union {
77 1.1 jakllsch UINT8 Raw[1472];
78 1.1 jakllsch EFI_PXE_BASE_CODE_DHCPV4_PACKET Dhcpv4;
79 1.1 jakllsch EFI_PXE_BASE_CODE_DHCPV6_PACKET Dhcpv6;
80 1.1 jakllsch } EFI_PXE_BASE_CODE_PACKET;
81 1.1 jakllsch
82 1.1 jakllsch typedef struct {
83 1.1 jakllsch UINT8 Type;
84 1.1 jakllsch UINT8 Code;
85 1.1 jakllsch UINT16 Checksum;
86 1.1 jakllsch union {
87 1.1 jakllsch UINT32 reserved;
88 1.1 jakllsch UINT32 Mtu;
89 1.1 jakllsch UINT32 Pointer;
90 1.1 jakllsch struct {
91 1.1 jakllsch UINT16 Identifier;
92 1.1 jakllsch UINT16 Sequence;
93 1.1 jakllsch } Echo;
94 1.1 jakllsch } u;
95 1.1 jakllsch UINT8 Data[494];
96 1.1 jakllsch } EFI_PXE_BASE_CODE_ICMP_ERROR;
97 1.1 jakllsch
98 1.1 jakllsch typedef struct {
99 1.1 jakllsch UINT8 ErrorCode;
100 1.1 jakllsch CHAR8 ErrorString[127];
101 1.1 jakllsch } EFI_PXE_BASE_CODE_TFTP_ERROR;
102 1.1 jakllsch
103 1.1 jakllsch //
104 1.1 jakllsch // IP Receive Filter definitions
105 1.1 jakllsch //
106 1.1 jakllsch #define EFI_PXE_BASE_CODE_MAX_IPCNT 8
107 1.1 jakllsch typedef struct {
108 1.1 jakllsch UINT8 Filters;
109 1.1 jakllsch UINT8 IpCnt;
110 1.1 jakllsch UINT16 reserved;
111 1.1 jakllsch EFI_IP_ADDRESS IpList[EFI_PXE_BASE_CODE_MAX_IPCNT];
112 1.1 jakllsch } EFI_PXE_BASE_CODE_IP_FILTER;
113 1.1 jakllsch
114 1.1 jakllsch #define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP 0x0001
115 1.1 jakllsch #define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST 0x0002
116 1.1 jakllsch #define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS 0x0004
117 1.1 jakllsch #define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST 0x0008
118 1.1 jakllsch
119 1.1 jakllsch //
120 1.1 jakllsch // ARP Cache definitions
121 1.1 jakllsch //
122 1.1 jakllsch
123 1.1 jakllsch typedef struct {
124 1.1 jakllsch EFI_IP_ADDRESS IpAddr;
125 1.1 jakllsch EFI_MAC_ADDRESS MacAddr;
126 1.1 jakllsch } EFI_PXE_BASE_CODE_ARP_ENTRY;
127 1.1 jakllsch
128 1.1 jakllsch typedef struct {
129 1.1 jakllsch EFI_IP_ADDRESS IpAddr;
130 1.1 jakllsch EFI_IP_ADDRESS SubnetMask;
131 1.1 jakllsch EFI_IP_ADDRESS GwAddr;
132 1.1 jakllsch } EFI_PXE_BASE_CODE_ROUTE_ENTRY;
133 1.1 jakllsch
134 1.1 jakllsch //
135 1.1 jakllsch // UDP definitions
136 1.1 jakllsch //
137 1.1 jakllsch
138 1.1 jakllsch #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP 0x0001
139 1.1 jakllsch #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT 0x0002
140 1.1 jakllsch #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP 0x0004
141 1.1 jakllsch #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008
142 1.1 jakllsch #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER 0x0010
143 1.1 jakllsch #define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT 0x0020
144 1.1 jakllsch
145 1.1 jakllsch //
146 1.1 jakllsch // Discover() definitions
147 1.1 jakllsch //
148 1.1 jakllsch
149 1.1.1.2 jmcneill #define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP 0
150 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS 1
151 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM 2
152 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI 3
153 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO 4
154 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD 5
155 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM 6
156 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG 7
157 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW 8
158 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9 9
159 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10 10
160 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11 11
161 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12 12
162 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL 13
163 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT 14
164 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO 15
165 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT 16
166 1.1 jakllsch //
167 1.1 jakllsch // 17 through 32767 are reserved
168 1.1 jakllsch // 32768 through 65279 are for vendor use
169 1.1 jakllsch // 65280 through 65534 are reserved
170 1.1 jakllsch //
171 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST 65535
172 1.1 jakllsch
173 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK 0x7FFF
174 1.1 jakllsch #define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL 0x0000
175 1.1 jakllsch
176 1.1 jakllsch
177 1.1 jakllsch typedef struct {
178 1.1 jakllsch UINT16 Type;
179 1.1 jakllsch BOOLEAN AcceptAnyResponse;
180 1.1 jakllsch UINT8 Reserved;
181 1.1 jakllsch EFI_IP_ADDRESS IpAddr;
182 1.1 jakllsch } EFI_PXE_BASE_CODE_SRVLIST;
183 1.1 jakllsch
184 1.1 jakllsch typedef struct {
185 1.1 jakllsch BOOLEAN UseMCast;
186 1.1 jakllsch BOOLEAN UseBCast;
187 1.1 jakllsch BOOLEAN UseUCast;
188 1.1 jakllsch BOOLEAN MustUseList;
189 1.1 jakllsch EFI_IP_ADDRESS ServerMCastIp;
190 1.1 jakllsch UINT16 IpCnt;
191 1.1 jakllsch EFI_PXE_BASE_CODE_SRVLIST SrvList[1];
192 1.1 jakllsch } EFI_PXE_BASE_CODE_DISCOVER_INFO;
193 1.1 jakllsch
194 1.1 jakllsch //
195 1.1 jakllsch // Mtftp() definitions
196 1.1 jakllsch //
197 1.1 jakllsch
198 1.1 jakllsch typedef enum {
199 1.1 jakllsch EFI_PXE_BASE_CODE_TFTP_FIRST,
200 1.1 jakllsch EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE,
201 1.1 jakllsch EFI_PXE_BASE_CODE_TFTP_READ_FILE,
202 1.1 jakllsch EFI_PXE_BASE_CODE_TFTP_WRITE_FILE,
203 1.1 jakllsch EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY,
204 1.1 jakllsch EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE,
205 1.1 jakllsch EFI_PXE_BASE_CODE_MTFTP_READ_FILE,
206 1.1 jakllsch EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY,
207 1.1 jakllsch EFI_PXE_BASE_CODE_MTFTP_LAST
208 1.1 jakllsch } EFI_PXE_BASE_CODE_TFTP_OPCODE;
209 1.1 jakllsch
210 1.1 jakllsch typedef struct {
211 1.1 jakllsch EFI_IP_ADDRESS MCastIp;
212 1.1 jakllsch EFI_PXE_BASE_CODE_UDP_PORT CPort;
213 1.1 jakllsch EFI_PXE_BASE_CODE_UDP_PORT SPort;
214 1.1 jakllsch UINT16 ListenTimeout;
215 1.1 jakllsch UINT16 TransmitTimeout;
216 1.1 jakllsch } EFI_PXE_BASE_CODE_MTFTP_INFO;
217 1.1 jakllsch
218 1.1 jakllsch //
219 1.1 jakllsch // PXE Base Code Mode structure
220 1.1 jakllsch //
221 1.1 jakllsch
222 1.1 jakllsch #define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES 8
223 1.1 jakllsch #define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES 8
224 1.1 jakllsch
225 1.1 jakllsch typedef struct {
226 1.1 jakllsch BOOLEAN Started;
227 1.1 jakllsch BOOLEAN Ipv6Available;
228 1.1 jakllsch BOOLEAN Ipv6Supported;
229 1.1 jakllsch BOOLEAN UsingIpv6;
230 1.1 jakllsch BOOLEAN BisSupported;
231 1.1 jakllsch BOOLEAN BisDetected;
232 1.1 jakllsch BOOLEAN AutoArp;
233 1.1 jakllsch BOOLEAN SendGUID;
234 1.1 jakllsch BOOLEAN DhcpDiscoverValid;
235 1.1 jakllsch BOOLEAN DhcpAckReceived;
236 1.1 jakllsch BOOLEAN ProxyOfferReceived;
237 1.1 jakllsch BOOLEAN PxeDiscoverValid;
238 1.1 jakllsch BOOLEAN PxeReplyReceived;
239 1.1 jakllsch BOOLEAN PxeBisReplyReceived;
240 1.1 jakllsch BOOLEAN IcmpErrorReceived;
241 1.1 jakllsch BOOLEAN TftpErrorReceived;
242 1.1 jakllsch BOOLEAN MakeCallbacks;
243 1.1 jakllsch UINT8 TTL;
244 1.1 jakllsch UINT8 ToS;
245 1.1 jakllsch EFI_IP_ADDRESS StationIp;
246 1.1 jakllsch EFI_IP_ADDRESS SubnetMask;
247 1.1 jakllsch EFI_PXE_BASE_CODE_PACKET DhcpDiscover;
248 1.1 jakllsch EFI_PXE_BASE_CODE_PACKET DhcpAck;
249 1.1 jakllsch EFI_PXE_BASE_CODE_PACKET ProxyOffer;
250 1.1 jakllsch EFI_PXE_BASE_CODE_PACKET PxeDiscover;
251 1.1 jakllsch EFI_PXE_BASE_CODE_PACKET PxeReply;
252 1.1 jakllsch EFI_PXE_BASE_CODE_PACKET PxeBisReply;
253 1.1 jakllsch EFI_PXE_BASE_CODE_IP_FILTER IpFilter;
254 1.1 jakllsch UINT32 ArpCacheEntries;
255 1.1 jakllsch EFI_PXE_BASE_CODE_ARP_ENTRY ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES];
256 1.1 jakllsch UINT32 RouteTableEntries;
257 1.1 jakllsch EFI_PXE_BASE_CODE_ROUTE_ENTRY RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES];
258 1.1 jakllsch EFI_PXE_BASE_CODE_ICMP_ERROR IcmpError;
259 1.1 jakllsch EFI_PXE_BASE_CODE_TFTP_ERROR TftpError;
260 1.1 jakllsch } EFI_PXE_BASE_CODE_MODE;
261 1.1 jakllsch
262 1.1 jakllsch //
263 1.1 jakllsch // PXE Base Code Interface Function definitions
264 1.1 jakllsch //
265 1.1 jakllsch
266 1.1 jakllsch typedef
267 1.1 jakllsch EFI_STATUS
268 1.1 jakllsch (EFIAPI *EFI_PXE_BASE_CODE_START) (
269 1.1.1.2 jmcneill IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This,
270 1.1.1.2 jmcneill IN BOOLEAN UseIpv6
271 1.1 jakllsch );
272 1.1 jakllsch
273 1.1 jakllsch typedef
274 1.1 jakllsch EFI_STATUS
275 1.1 jakllsch (EFIAPI *EFI_PXE_BASE_CODE_STOP) (
276 1.1.1.2 jmcneill IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This
277 1.1 jakllsch );
278 1.1 jakllsch
279 1.1 jakllsch typedef
280 1.1 jakllsch EFI_STATUS
281 1.1 jakllsch (EFIAPI *EFI_PXE_BASE_CODE_DHCP) (
282 1.1.1.2 jmcneill IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This,
283 1.1.1.2 jmcneill IN BOOLEAN SortOffers
284 1.1 jakllsch );
285 1.1 jakllsch
286 1.1 jakllsch typedef
287 1.1 jakllsch EFI_STATUS
288 1.1 jakllsch (EFIAPI *EFI_PXE_BASE_CODE_DISCOVER) (
289 1.1.1.2 jmcneill IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This,
290 1.1 jakllsch IN UINT16 Type,
291 1.1 jakllsch IN UINT16 *Layer,
292 1.1 jakllsch IN BOOLEAN UseBis,
293 1.1 jakllsch IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO *Info OPTIONAL
294 1.1 jakllsch );
295 1.1 jakllsch
296 1.1 jakllsch typedef
297 1.1 jakllsch EFI_STATUS
298 1.1 jakllsch (EFIAPI *EFI_PXE_BASE_CODE_MTFTP) (
299 1.1.1.2 jmcneill IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This,
300 1.1.1.2 jmcneill IN EFI_PXE_BASE_CODE_TFTP_OPCODE Operation,
301 1.1.1.2 jmcneill IN OUT VOID *BufferPtr OPTIONAL,
302 1.1.1.2 jmcneill IN BOOLEAN Overwrite,
303 1.1.1.2 jmcneill IN OUT UINT64 *BufferSize,
304 1.1.1.2 jmcneill IN UINTN *BlockSize OPTIONAL,
305 1.1.1.2 jmcneill IN EFI_IP_ADDRESS *ServerIp,
306 1.1.1.2 jmcneill IN UINT8 *Filename,
307 1.1.1.2 jmcneill IN EFI_PXE_BASE_CODE_MTFTP_INFO *Info OPTIONAL,
308 1.1.1.2 jmcneill IN BOOLEAN DontUseBuffer
309 1.1 jakllsch );
310 1.1 jakllsch
311 1.1 jakllsch typedef
312 1.1 jakllsch EFI_STATUS
313 1.1 jakllsch (EFIAPI *EFI_PXE_BASE_CODE_UDP_WRITE) (
314 1.1.1.2 jmcneill IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This,
315 1.1.1.2 jmcneill IN UINT16 OpFlags,
316 1.1.1.2 jmcneill IN EFI_IP_ADDRESS *DestIp,
317 1.1.1.2 jmcneill IN EFI_PXE_BASE_CODE_UDP_PORT *DestPort,
318 1.1.1.2 jmcneill IN EFI_IP_ADDRESS *GatewayIp, OPTIONAL
319 1.1.1.2 jmcneill IN EFI_IP_ADDRESS *SrcIp, OPTIONAL
320 1.1.1.2 jmcneill IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL
321 1.1.1.2 jmcneill IN UINTN *HeaderSize, OPTIONAL
322 1.1.1.2 jmcneill IN VOID *HeaderPtr, OPTIONAL
323 1.1.1.2 jmcneill IN UINTN *BufferSize,
324 1.1.1.2 jmcneill IN VOID *BufferPtr
325 1.1 jakllsch );
326 1.1 jakllsch
327 1.1 jakllsch typedef
328 1.1 jakllsch EFI_STATUS
329 1.1 jakllsch (EFIAPI *EFI_PXE_BASE_CODE_UDP_READ) (
330 1.1.1.2 jmcneill IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This,
331 1.1.1.2 jmcneill IN UINT16 OpFlags,
332 1.1.1.2 jmcneill IN OUT EFI_IP_ADDRESS *DestIp, OPTIONAL
333 1.1.1.2 jmcneill IN OUT EFI_PXE_BASE_CODE_UDP_PORT *DestPort, OPTIONAL
334 1.1.1.2 jmcneill IN OUT EFI_IP_ADDRESS *SrcIp, OPTIONAL
335 1.1.1.2 jmcneill IN OUT EFI_PXE_BASE_CODE_UDP_PORT *SrcPort, OPTIONAL
336 1.1.1.2 jmcneill IN UINTN *HeaderSize, OPTIONAL
337 1.1.1.2 jmcneill IN VOID *HeaderPtr, OPTIONAL
338 1.1.1.2 jmcneill IN OUT UINTN *BufferSize,
339 1.1.1.2 jmcneill IN VOID *BufferPtr
340 1.1 jakllsch );
341 1.1 jakllsch
342 1.1 jakllsch typedef
343 1.1 jakllsch EFI_STATUS
344 1.1 jakllsch (EFIAPI *EFI_PXE_BASE_CODE_SET_IP_FILTER) (
345 1.1.1.2 jmcneill IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This,
346 1.1.1.2 jmcneill IN EFI_PXE_BASE_CODE_IP_FILTER *NewFilter
347 1.1 jakllsch );
348 1.1 jakllsch
349 1.1 jakllsch typedef
350 1.1 jakllsch EFI_STATUS
351 1.1 jakllsch (EFIAPI *EFI_PXE_BASE_CODE_ARP) (
352 1.1.1.2 jmcneill IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This,
353 1.1.1.2 jmcneill IN EFI_IP_ADDRESS *IpAddr,
354 1.1.1.2 jmcneill IN EFI_MAC_ADDRESS *MacAddr OPTIONAL
355 1.1 jakllsch );
356 1.1 jakllsch
357 1.1 jakllsch typedef
358 1.1 jakllsch EFI_STATUS
359 1.1 jakllsch (EFIAPI *EFI_PXE_BASE_CODE_SET_PARAMETERS) (
360 1.1.1.2 jmcneill IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This,
361 1.1.1.2 jmcneill IN BOOLEAN *NewAutoArp, OPTIONAL
362 1.1.1.2 jmcneill IN BOOLEAN *NewSendGUID, OPTIONAL
363 1.1.1.2 jmcneill IN UINT8 *NewTTL, OPTIONAL
364 1.1.1.2 jmcneill IN UINT8 *NewToS, OPTIONAL
365 1.1.1.2 jmcneill IN BOOLEAN *NewMakeCallback OPTIONAL
366 1.1 jakllsch );
367 1.1 jakllsch
368 1.1 jakllsch typedef
369 1.1 jakllsch EFI_STATUS
370 1.1 jakllsch (EFIAPI *EFI_PXE_BASE_CODE_SET_STATION_IP) (
371 1.1.1.2 jmcneill IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This,
372 1.1.1.2 jmcneill IN EFI_IP_ADDRESS *NewStationIp, OPTIONAL
373 1.1.1.2 jmcneill IN EFI_IP_ADDRESS *NewSubnetMask OPTIONAL
374 1.1 jakllsch );
375 1.1 jakllsch
376 1.1 jakllsch typedef
377 1.1 jakllsch EFI_STATUS
378 1.1 jakllsch (EFIAPI *EFI_PXE_BASE_CODE_SET_PACKETS) (
379 1.1.1.2 jmcneill IN struct _EFI_PXE_BASE_CODE_PROTOCOL *This,
380 1.1.1.2 jmcneill BOOLEAN *NewDhcpDiscoverValid, OPTIONAL
381 1.1.1.2 jmcneill BOOLEAN *NewDhcpAckReceived, OPTIONAL
382 1.1.1.2 jmcneill BOOLEAN *NewProxyOfferReceived, OPTIONAL
383 1.1.1.2 jmcneill BOOLEAN *NewPxeDiscoverValid, OPTIONAL
384 1.1.1.2 jmcneill BOOLEAN *NewPxeReplyReceived, OPTIONAL
385 1.1.1.2 jmcneill BOOLEAN *NewPxeBisReplyReceived,OPTIONAL
386 1.1.1.2 jmcneill IN EFI_PXE_BASE_CODE_PACKET *NewDhcpDiscover, OPTIONAL
387 1.1.1.2 jmcneill IN EFI_PXE_BASE_CODE_PACKET *NewDhcpAck, OPTIONAL
388 1.1.1.2 jmcneill IN EFI_PXE_BASE_CODE_PACKET *NewProxyOffer, OPTIONAL
389 1.1.1.2 jmcneill IN EFI_PXE_BASE_CODE_PACKET *NewPxeDiscover, OPTIONAL
390 1.1.1.2 jmcneill IN EFI_PXE_BASE_CODE_PACKET *NewPxeReply, OPTIONAL
391 1.1.1.2 jmcneill IN EFI_PXE_BASE_CODE_PACKET *NewPxeBisReply OPTIONAL
392 1.1 jakllsch );
393 1.1 jakllsch
394 1.1 jakllsch //
395 1.1 jakllsch // PXE Base Code Protocol structure
396 1.1 jakllsch //
397 1.1 jakllsch
398 1.1.1.2 jmcneill #define EFI_PXE_BASE_CODE_PROTOCOL_REVISION 0x00010000
399 1.1.1.2 jmcneill #define EFI_PXE_BASE_CODE_INTERFACE_REVISION EFI_PXE_BASE_CODE_PROTOCOL_REVISION
400 1.1 jakllsch
401 1.1.1.2 jmcneill typedef struct _EFI_PXE_BASE_CODE_PROTOCOL {
402 1.1 jakllsch UINT64 Revision;
403 1.1 jakllsch EFI_PXE_BASE_CODE_START Start;
404 1.1 jakllsch EFI_PXE_BASE_CODE_STOP Stop;
405 1.1 jakllsch EFI_PXE_BASE_CODE_DHCP Dhcp;
406 1.1 jakllsch EFI_PXE_BASE_CODE_DISCOVER Discover;
407 1.1 jakllsch EFI_PXE_BASE_CODE_MTFTP Mtftp;
408 1.1 jakllsch EFI_PXE_BASE_CODE_UDP_WRITE UdpWrite;
409 1.1 jakllsch EFI_PXE_BASE_CODE_UDP_READ UdpRead;
410 1.1 jakllsch EFI_PXE_BASE_CODE_SET_IP_FILTER SetIpFilter;
411 1.1 jakllsch EFI_PXE_BASE_CODE_ARP Arp;
412 1.1 jakllsch EFI_PXE_BASE_CODE_SET_PARAMETERS SetParameters;
413 1.1 jakllsch EFI_PXE_BASE_CODE_SET_STATION_IP SetStationIp;
414 1.1 jakllsch EFI_PXE_BASE_CODE_SET_PACKETS SetPackets;
415 1.1 jakllsch EFI_PXE_BASE_CODE_MODE *Mode;
416 1.1.1.2 jmcneill } EFI_PXE_BASE_CODE_PROTOCOL;
417 1.1.1.2 jmcneill
418 1.1.1.2 jmcneill // Note: Because it conflicted with the EDK2 struct name, the
419 1.1.1.2 jmcneill // 'EFI_PXE_BASE_CODE_PROTOCOL' GUID definition, from older
420 1.1.1.2 jmcneill // versions of gnu-efi, is now obsoleted.
421 1.1.1.2 jmcneill // Use 'EFI_PXE_BASE_CODE_PROTOCOL_GUID' instead.
422 1.1.1.2 jmcneill
423 1.1.1.2 jmcneill typedef struct _EFI_PXE_BASE_CODE_PROTOCOL _EFI_PXE_BASE_CODE;
424 1.1.1.2 jmcneill typedef struct _EFI_PXE_BASE_CODE_PROTOCOL EFI_PXE_BASE_CODE;
425 1.1 jakllsch
426 1.1 jakllsch //
427 1.1 jakllsch // Call Back Definitions
428 1.1 jakllsch //
429 1.1 jakllsch
430 1.1.1.2 jmcneill #define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_GUID \
431 1.1 jakllsch { 0x245dca21, 0xfb7b, 0x11d3, {0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
432 1.1 jakllsch
433 1.1 jakllsch //
434 1.1 jakllsch // Revision Number
435 1.1 jakllsch //
436 1.1 jakllsch
437 1.1.1.2 jmcneill #define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_REVISION 0x00010000
438 1.1.1.2 jmcneill #define EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_REVISION
439 1.1 jakllsch
440 1.1.1.2 jmcneill INTERFACE_DECL(_EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL);
441 1.1 jakllsch
442 1.1 jakllsch typedef enum {
443 1.1 jakllsch EFI_PXE_BASE_CODE_FUNCTION_FIRST,
444 1.1 jakllsch EFI_PXE_BASE_CODE_FUNCTION_DHCP,
445 1.1 jakllsch EFI_PXE_BASE_CODE_FUNCTION_DISCOVER,
446 1.1 jakllsch EFI_PXE_BASE_CODE_FUNCTION_MTFTP,
447 1.1 jakllsch EFI_PXE_BASE_CODE_FUNCTION_UDP_WRITE,
448 1.1 jakllsch EFI_PXE_BASE_CODE_FUNCTION_UDP_READ,
449 1.1 jakllsch EFI_PXE_BASE_CODE_FUNCTION_ARP,
450 1.1 jakllsch EFI_PXE_BASE_CODE_FUNCTION_IGMP,
451 1.1 jakllsch EFI_PXE_BASE_CODE_PXE_FUNCTION_LAST
452 1.1 jakllsch } EFI_PXE_BASE_CODE_FUNCTION;
453 1.1 jakllsch
454 1.1 jakllsch typedef enum {
455 1.1 jakllsch EFI_PXE_BASE_CODE_CALLBACK_STATUS_FIRST,
456 1.1 jakllsch EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE,
457 1.1 jakllsch EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT,
458 1.1 jakllsch EFI_PXE_BASE_CODE_CALLBACK_STATUS_LAST
459 1.1 jakllsch } EFI_PXE_BASE_CODE_CALLBACK_STATUS;
460 1.1 jakllsch
461 1.1 jakllsch typedef
462 1.1.1.2 jmcneill EFI_PXE_BASE_CODE_CALLBACK_STATUS
463 1.1 jakllsch (EFIAPI *EFI_PXE_CALLBACK) (
464 1.1.1.2 jmcneill IN struct _EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL *This,
465 1.1.1.2 jmcneill IN EFI_PXE_BASE_CODE_FUNCTION Function,
466 1.1.1.2 jmcneill IN BOOLEAN Received,
467 1.1.1.2 jmcneill IN UINT32 PacketLen,
468 1.1.1.2 jmcneill IN EFI_PXE_BASE_CODE_PACKET *Packet OPTIONAL
469 1.1 jakllsch );
470 1.1 jakllsch
471 1.1.1.2 jmcneill typedef struct _EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL {
472 1.1 jakllsch UINT64 Revision;
473 1.1 jakllsch EFI_PXE_CALLBACK Callback;
474 1.1.1.2 jmcneill } EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL;
475 1.1.1.2 jmcneill
476 1.1.1.2 jmcneill // Note: Because it conflicted with the EDK2 struct name, the
477 1.1.1.2 jmcneill // 'EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL' GUID definition, from
478 1.1.1.2 jmcneill // older versions of gnu-efi, is now obsoleted.
479 1.1.1.2 jmcneill // Use 'EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_GUID' instead.
480 1.1.1.2 jmcneill
481 1.1.1.2 jmcneill typedef struct _EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL _EFI_PXE_BASE_CODE_CALLBACK;
482 1.1.1.2 jmcneill typedef EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL EFI_PXE_BASE_CODE_CALLBACK;
483 1.1 jakllsch
484 1.1 jakllsch #endif /* _EFIPXEBC_H */
485