1199767fToomas Soome/* $FreeBSD$ */
2199767fToomas Soome#ifndef _EFIPXEBC_H
3199767fToomas Soome#define _EFIPXEBC_H
4199767fToomas Soome
5199767fToomas Soome/*++
6199767fToomas Soome
7199767fToomas SoomeCopyright (c)  1999 - 2002 Intel Corporation. All rights reserved
8199767fToomas SoomeThis software and associated documentation (if any) is furnished
9199767fToomas Soomeunder a license and may only be used or copied in accordance
10199767fToomas Soomewith the terms of the license. Except as permitted by such
11199767fToomas Soomelicense, no part of this software or documentation may be
12199767fToomas Soomereproduced, stored in a retrieval system, or transmitted in any
13199767fToomas Soomeform or by any means without the express written consent of
14199767fToomas SoomeIntel Corporation.
15199767fToomas Soome
16199767fToomas SoomeModule Name:
17199767fToomas Soome
18199767fToomas Soome    efipxebc.h
19199767fToomas Soome
20199767fToomas SoomeAbstract:
21199767fToomas Soome
22199767fToomas Soome    EFI PXE Base Code Protocol
23199767fToomas Soome
24199767fToomas Soome
25199767fToomas Soome
26199767fToomas SoomeRevision History
27199767fToomas Soome
28199767fToomas Soome--*/
29199767fToomas Soome
30199767fToomas Soome//
31199767fToomas Soome// PXE Base Code protocol
32199767fToomas Soome//
33199767fToomas Soome
34199767fToomas Soome#define EFI_PXE_BASE_CODE_PROTOCOL \
35199767fToomas Soome    { 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
36199767fToomas Soome
37199767fToomas SoomeINTERFACE_DECL(_EFI_PXE_BASE_CODE);
38199767fToomas Soome
39199767fToomas Soome#define DEFAULT_TTL 8
40199767fToomas Soome#define DEFAULT_ToS 0
41199767fToomas Soome//
42199767fToomas Soome// Address definitions
43199767fToomas Soome//
44199767fToomas Soome
45199767fToomas Soometypedef union {
46199767fToomas Soome    UINT32      Addr[4];
47199767fToomas Soome    EFI_IPv4_ADDRESS    v4;
48199767fToomas Soome    EFI_IPv6_ADDRESS    v6;
49199767fToomas Soome} EFI_IP_ADDRESS;
50199767fToomas Soome
51199767fToomas Soometypedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;
52199767fToomas Soome
53199767fToomas Soome//
54199767fToomas Soome// Packet definitions
55199767fToomas Soome//
56199767fToomas Soome
57199767fToomas Soometypedef struct {
58199767fToomas Soome    UINT8                           BootpOpcode;
59199767fToomas Soome    UINT8                           BootpHwType;
60199767fToomas Soome    UINT8                           BootpHwAddrLen;
61199767fToomas Soome    UINT8                           BootpGateHops;
62199767fToomas Soome    UINT32                          BootpIdent;
63199767fToomas Soome    UINT16                          BootpSeconds;
64199767fToomas Soome    UINT16                          BootpFlags;
65199767fToomas Soome    UINT8                           BootpCiAddr[4];
66199767fToomas Soome    UINT8                           BootpYiAddr[4];
67199767fToomas Soome    UINT8                           BootpSiAddr[4];
68199767fToomas Soome    UINT8                           BootpGiAddr[4];
69199767fToomas Soome    UINT8                           BootpHwAddr[16];
70199767fToomas Soome    UINT8                           BootpSrvName[64];
71199767fToomas Soome    UINT8                           BootpBootFile[128];
72199767fToomas Soome    UINT32                          DhcpMagik;
73199767fToomas Soome    UINT8                           DhcpOptions[56];
74199767fToomas Soome} EFI_PXE_BASE_CODE_DHCPV4_PACKET;
75199767fToomas Soome
76199767fToomas Soome// TBD in EFI v1.1
77199767fToomas Soome//typedef struct {
78199767fToomas Soome//    UINT8                           reserved;
79199767fToomas Soome//} EFI_PXE_BASE_CODE_DHCPV6_PACKET;
80199767fToomas Soome
81199767fToomas Soometypedef union {
82199767fToomas Soome    UINT8                               Raw[1472];
83199767fToomas Soome    EFI_PXE_BASE_CODE_DHCPV4_PACKET     Dhcpv4;
84199767fToomas Soome//    EFI_PXE_BASE_CODE_DHCPV6_PACKET     Dhcpv6;
85199767fToomas Soome} EFI_PXE_BASE_CODE_PACKET;
86199767fToomas Soome
87199767fToomas Soometypedef struct {
88199767fToomas Soome    UINT8                   Type;
89199767fToomas Soome    UINT8                   Code;
90199767fToomas Soome    UINT16                  Checksum;
91199767fToomas Soome    union {
92199767fToomas Soome        UINT32              reserved;
93199767fToomas Soome        UINT32              Mtu;
94199767fToomas Soome        UINT32              Pointer;
95199767fToomas Soome        struct {
96199767fToomas Soome            UINT16          Identifier;
97199767fToomas Soome            UINT16          Sequence;
98199767fToomas Soome        } Echo;
99199767fToomas Soome    } u;
100199767fToomas Soome    UINT8                   Data[494];
101199767fToomas Soome} EFI_PXE_BASE_CODE_ICMP_ERROR;
102199767fToomas Soome
103199767fToomas Soometypedef struct {
104199767fToomas Soome    UINT8                   ErrorCode;
105199767fToomas Soome    CHAR8                   ErrorString[127];
106199767fToomas Soome} EFI_PXE_BASE_CODE_TFTP_ERROR;
107199767fToomas Soome
108199767fToomas Soome//
109199767fToomas Soome// IP Receive Filter definitions
110199767fToomas Soome//
111199767fToomas Soome#define EFI_PXE_BASE_CODE_MAX_IPCNT             8
112199767fToomas Soometypedef struct {
113199767fToomas Soome    UINT8                       Filters;
114199767fToomas Soome    UINT8                       IpCnt;
115199767fToomas Soome    UINT16                      reserved;
116199767fToomas Soome    EFI_IP_ADDRESS              IpList[EFI_PXE_BASE_CODE_MAX_IPCNT];
117199767fToomas Soome} EFI_PXE_BASE_CODE_IP_FILTER;
118199767fToomas Soome
119199767fToomas Soome#define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP             0x0001
120199767fToomas Soome#define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST              0x0002
121199767fToomas Soome#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS            0x0004
122199767fToomas Soome#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST  0x0008
123199767fToomas Soome
124199767fToomas Soome//
125199767fToomas Soome// ARP Cache definitions
126199767fToomas Soome//
127199767fToomas Soome
128199767fToomas Soometypedef struct {
129199767fToomas Soome    EFI_IP_ADDRESS       IpAddr;
130199767fToomas Soome    EFI_MAC_ADDRESS      MacAddr;
131199767fToomas Soome} EFI_PXE_BASE_CODE_ARP_ENTRY;
132199767fToomas Soome
133199767fToomas Soometypedef struct {
134199767fToomas Soome    EFI_IP_ADDRESS       IpAddr;
135199767fToomas Soome    EFI_IP_ADDRESS       SubnetMask;
136199767fToomas Soome    EFI_IP_ADDRESS       GwAddr;
137199767fToomas Soome} EFI_PXE_BASE_CODE_ROUTE_ENTRY;
138199767fToomas Soome
139199767fToomas Soome//
140199767fToomas Soome// UDP definitions
141199767fToomas Soome//
142199767fToomas Soome
143199767fToomas Soome#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP    0x0001
144199767fToomas Soome#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT  0x0002
145199767fToomas Soome#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP   0x0004
146199767fToomas Soome#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008
147199767fToomas Soome#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER    0x0010
148199767fToomas Soome#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT  0x0020
149199767fToomas Soome
150199767fToomas Soome//
151199767fToomas Soome// Discover() definitions
152199767fToomas Soome//
153199767fToomas Soome
154199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP           0
155199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS        1
156199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM           2
157199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI             3
158199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO          4
159199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD            5
160199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM            6
161199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG    7
162199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW         8
163199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9           9
164199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10          10
165199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11          11
166199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12         12
167199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL      13
168199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT         14
169199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO               15
170199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT             16
171199767fToomas Soome//
172199767fToomas Soome// 17 through 32767 are reserved
173199767fToomas Soome// 32768 through 65279 are for vendor use
174199767fToomas Soome// 65280 through 65534 are reserved
175199767fToomas Soome//
176199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST             65535
177199767fToomas Soome
178199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK               0x7FFF
179199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL            0x0000
180199767fToomas Soome#define EFI_PXE_BASE_CODE_BOOT_LAYER_CREDENTIALS        0x8000
181199767fToomas Soome
182199767fToomas Soome
183199767fToomas Soometypedef struct {
184199767fToomas Soome    UINT16                      Type;
185199767fToomas Soome    BOOLEAN                     AcceptAnyResponse;
186199767fToomas Soome    UINT8                       Reserved;
187199767fToomas Soome    EFI_IP_ADDRESS              IpAddr;
188199767fToomas Soome} EFI_PXE_BASE_CODE_SRVLIST;
189199767fToomas Soome
190199767fToomas Soometypedef struct {
191199767fToomas Soome    BOOLEAN                     UseMCast;
192199767fToomas Soome    BOOLEAN                     UseBCast;
193199767fToomas Soome    BOOLEAN                     UseUCast;
194199767fToomas Soome    BOOLEAN                     MustUseList;
195199767fToomas Soome    EFI_IP_ADDRESS              ServerMCastIp;
196199767fToomas Soome    UINT16                      IpCnt;
197199767fToomas Soome    EFI_PXE_BASE_CODE_SRVLIST   SrvList[1];
198199767fToomas Soome} EFI_PXE_BASE_CODE_DISCOVER_INFO;
199199767fToomas Soome
200199767fToomas Soome//
201199767fToomas Soome// Mtftp() definitions
202199767fToomas Soome//
203199767fToomas Soome
204199767fToomas Soometypedef enum {
205199767fToomas Soome    EFI_PXE_BASE_CODE_TFTP_FIRST,
206199767fToomas Soome    EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE,
207199767fToomas Soome    EFI_PXE_BASE_CODE_TFTP_READ_FILE,
208199767fToomas Soome    EFI_PXE_BASE_CODE_TFTP_WRITE_FILE,
209199767fToomas Soome    EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY,
210199767fToomas Soome    EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE,
211199767fToomas Soome    EFI_PXE_BASE_CODE_MTFTP_READ_FILE,
212199767fToomas Soome    EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY,
213199767fToomas Soome    EFI_PXE_BASE_CODE_MTFTP_LAST
214199767fToomas Soome} EFI_PXE_BASE_CODE_TFTP_OPCODE;
215199767fToomas Soome
216199767fToomas Soometypedef struct {
217199767fToomas Soome    EFI_IP_ADDRESS   MCastIp;
218199767fToomas Soome    EFI_PXE_BASE_CODE_UDP_PORT  CPort;
219199767fToomas Soome    EFI_PXE_BASE_CODE_UDP_PORT  SPort;
220199767fToomas Soome    UINT16                      ListenTimeout;
221199767fToomas Soome    UINT16                      TransmitTimeout;
222199767fToomas Soome} EFI_PXE_BASE_CODE_MTFTP_INFO;
223199767fToomas Soome
224199767fToomas Soome//
225199767fToomas Soome// PXE Base Code Mode structure
226199767fToomas Soome//
227199767fToomas Soome
228199767fToomas Soome#define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES       8
229199767fToomas Soome#define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES     8
230199767fToomas Soome
231199767fToomas Soometypedef struct {
232199767fToomas Soome    BOOLEAN                         Started;
233199767fToomas Soome    BOOLEAN                         Ipv6Available;
234199767fToomas Soome    BOOLEAN                         Ipv6Supported;
235199767fToomas Soome    BOOLEAN                         UsingIpv6;
236199767fToomas Soome    BOOLEAN                         BisSupported;
237199767fToomas Soome    BOOLEAN                         BisDetected;
238199767fToomas Soome    BOOLEAN                         AutoArp;
239199767fToomas Soome    BOOLEAN                         SendGUID;
240199767fToomas Soome    BOOLEAN                         DhcpDiscoverValid;
241199767fToomas Soome    BOOLEAN                         DhcpAckReceived;
242199767fToomas Soome    BOOLEAN                         ProxyOfferReceived;
243199767fToomas Soome    BOOLEAN                         PxeDiscoverValid;
244199767fToomas Soome    BOOLEAN                         PxeReplyReceived;
245199767fToomas Soome    BOOLEAN                         PxeBisReplyReceived;
246199767fToomas Soome    BOOLEAN                         IcmpErrorReceived;
247199767fToomas Soome    BOOLEAN                         TftpErrorReceived;
248199767fToomas Soome    BOOLEAN                         MakeCallbacks;
249199767fToomas Soome    UINT8                           TTL;
250199767fToomas Soome    UINT8                           ToS;
251199767fToomas Soome    EFI_IP_ADDRESS                  StationIp;
252199767fToomas Soome    EFI_IP_ADDRESS                  SubnetMask;
253199767fToomas Soome    EFI_PXE_BASE_CODE_PACKET        DhcpDiscover;
254199767fToomas Soome    EFI_PXE_BASE_CODE_PACKET        DhcpAck;
255199767fToomas Soome    EFI_PXE_BASE_CODE_PACKET        ProxyOffer;
256199767fToomas Soome    EFI_PXE_BASE_CODE_PACKET        PxeDiscover;
257199767fToomas Soome    EFI_PXE_BASE_CODE_PACKET        PxeReply;
258199767fToomas Soome    EFI_PXE_BASE_CODE_PACKET        PxeBisReply;
259199767fToomas Soome    EFI_PXE_BASE_CODE_IP_FILTER     IpFilter;
260199767fToomas Soome    UINT32                          ArpCacheEntries;
261199767fToomas Soome    EFI_PXE_BASE_CODE_ARP_ENTRY     ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES];
262199767fToomas Soome    UINT32                          RouteTableEntries;
263199767fToomas Soome    EFI_PXE_BASE_CODE_ROUTE_ENTRY   RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES];
264199767fToomas Soome    EFI_PXE_BASE_CODE_ICMP_ERROR    IcmpError;
265199767fToomas Soome    EFI_PXE_BASE_CODE_TFTP_ERROR    TftpError;
266199767fToomas Soome} EFI_PXE_BASE_CODE_MODE;
267199767fToomas Soome
268199767fToomas Soome//
269199767fToomas Soome// PXE Base Code Interface Function definitions
270199767fToomas Soome//
271199767fToomas Soome
272199767fToomas Soometypedef
273199767fToomas SoomeEFI_STATUS
274199767fToomas Soome(EFIAPI *EFI_PXE_BASE_CODE_START) (
275199767fToomas Soome    IN struct _EFI_PXE_BASE_CODE    *This,
276199767fToomas Soome    IN BOOLEAN                      UseIpv6
277199767fToomas Soome    );
278199767fToomas Soome
279199767fToomas Soometypedef
280199767fToomas SoomeEFI_STATUS
281199767fToomas Soome(EFIAPI *EFI_PXE_BASE_CODE_STOP) (
282199767fToomas Soome    IN struct _EFI_PXE_BASE_CODE    *This
283199767fToomas Soome    );
284199767fToomas Soome
285199767fToomas Soometypedef
286199767fToomas SoomeEFI_STATUS
287199767fToomas Soome(EFIAPI *EFI_PXE_BASE_CODE_DHCP) (
288199767fToomas Soome    IN struct _EFI_PXE_BASE_CODE    *This,
289199767fToomas Soome    IN BOOLEAN                      SortOffers
290199767fToomas Soome    );
291199767fToomas Soome
292199767fToomas Soometypedef
293199767fToomas SoomeEFI_STATUS
294199767fToomas Soome(EFIAPI *EFI_PXE_BASE_CODE_DISCOVER) (
295199767fToomas Soome    IN struct _EFI_PXE_BASE_CODE            *This,
296199767fToomas Soome    IN UINT16                               Type,
297199767fToomas Soome    IN UINT16                               *Layer,
298199767fToomas Soome    IN BOOLEAN                              UseBis,
299199767fToomas Soome    IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO  *Info   OPTIONAL
300199767fToomas Soome    );
301199767fToomas Soome
302199767fToomas Soometypedef
303199767fToomas SoomeEFI_STATUS
304199767fToomas Soome(EFIAPI *EFI_PXE_BASE_CODE_MTFTP) (
305199767fToomas Soome    IN struct _EFI_PXE_BASE_CODE        *This,
306199767fToomas Soome    IN EFI_PXE_BASE_CODE_TFTP_OPCODE    Operation,
307199767fToomas Soome    IN OUT VOID                         *BufferPtr  OPTIONAL,
308199767fToomas Soome    IN BOOLEAN                          Overwrite,
309199767fToomas Soome    IN OUT UINT64                       *BufferSize,
310199767fToomas Soome    IN UINTN                            *BlockSize  OPTIONAL,
311199767fToomas Soome    IN EFI_IP_ADDRESS                   *ServerIp,
312199767fToomas Soome    IN UINT8                            *Filename,
313199767fToomas Soome    IN EFI_PXE_BASE_CODE_MTFTP_INFO     *Info       OPTIONAL,
314199767fToomas Soome    IN BOOLEAN                          DontUseBuffer
315199767fToomas Soome    );
316199767fToomas Soome
317199767fToomas Soometypedef
318199767fToomas SoomeEFI_STATUS
319199767fToomas Soome(EFIAPI *EFI_PXE_BASE_CODE_UDP_WRITE) (
320199767fToomas Soome    IN struct _EFI_PXE_BASE_CODE        *This,
321199767fToomas Soome    IN UINT16                           OpFlags,
322199767fToomas Soome    IN EFI_IP_ADDRESS                   *DestIp,
323199767fToomas Soome    IN EFI_PXE_BASE_CODE_UDP_PORT       *DestPort,
324199767fToomas Soome    IN EFI_IP_ADDRESS                   *GatewayIp,  OPTIONAL
325199767fToomas Soome    IN EFI_IP_ADDRESS                   *SrcIp,      OPTIONAL
326199767fToomas Soome    IN OUT EFI_PXE_BASE_CODE_UDP_PORT   *SrcPort,    OPTIONAL
327199767fToomas Soome    IN UINTN                            *HeaderSize, OPTIONAL
328199767fToomas Soome    IN VOID                             *HeaderPtr,  OPTIONAL
329199767fToomas Soome    IN UINTN                            *BufferSize,
330199767fToomas Soome    IN VOID                             *BufferPtr
331199767fToomas Soome    );
332199767fToomas Soome
333199767fToomas Soometypedef
334199767fToomas SoomeEFI_STATUS
335199767fToomas Soome(EFIAPI *EFI_PXE_BASE_CODE_UDP_READ) (
336199767fToomas Soome    IN struct _EFI_PXE_BASE_CODE        *This,
337199767fToomas Soome    IN UINT16                           OpFlags,
338199767fToomas Soome    IN OUT EFI_IP_ADDRESS               *DestIp,      OPTIONAL
339199767fToomas Soome    IN OUT EFI_PXE_BASE_CODE_UDP_PORT   *DestPort,    OPTIONAL
340199767fToomas Soome    IN OUT EFI_IP_ADDRESS               *SrcIp,       OPTIONAL
341199767fToomas Soome    IN OUT EFI_PXE_BASE_CODE_UDP_PORT   *SrcPort,     OPTIONAL
342199767fToomas Soome    IN UINTN                            *HeaderSize,  OPTIONAL
343199767fToomas Soome    IN VOID                             *HeaderPtr,   OPTIONAL
344199767fToomas Soome    IN OUT UINTN                        *BufferSize,
345199767fToomas Soome    IN VOID                             *BufferPtr
346199767fToomas Soome    );
347199767fToomas Soome
348199767fToomas Soometypedef
349199767fToomas SoomeEFI_STATUS
350199767fToomas Soome(EFIAPI *EFI_PXE_BASE_CODE_SET_IP_FILTER) (
351199767fToomas Soome    IN struct _EFI_PXE_BASE_CODE    *This,
352199767fToomas Soome    IN EFI_PXE_BASE_CODE_IP_FILTER  *NewFilter
353199767fToomas Soome    );
354199767fToomas Soome
355199767fToomas Soometypedef
356199767fToomas SoomeEFI_STATUS
357199767fToomas Soome(EFIAPI *EFI_PXE_BASE_CODE_ARP) (
358199767fToomas Soome    IN struct _EFI_PXE_BASE_CODE    *This,
359199767fToomas Soome    IN EFI_IP_ADDRESS               *IpAddr,
360199767fToomas Soome    IN EFI_MAC_ADDRESS              *MacAddr      OPTIONAL
361199767fToomas Soome    );
362199767fToomas Soome
363199767fToomas Soometypedef
364199767fToomas SoomeEFI_STATUS
365199767fToomas Soome(EFIAPI *EFI_PXE_BASE_CODE_SET_PARAMETERS) (
366199767fToomas Soome    IN struct _EFI_PXE_BASE_CODE    *This,
367199767fToomas Soome    IN BOOLEAN                      *NewAutoArp,    OPTIONAL
368199767fToomas Soome    IN BOOLEAN                      *NewSendGUID,   OPTIONAL
369199767fToomas Soome    IN UINT8                        *NewTTL,        OPTIONAL
370199767fToomas Soome    IN UINT8                        *NewToS,        OPTIONAL
371199767fToomas Soome    IN BOOLEAN                      *NewMakeCallback    OPTIONAL
372199767fToomas Soome    );
373199767fToomas Soome
374199767fToomas Soometypedef
375199767fToomas SoomeEFI_STATUS
376199767fToomas Soome(EFIAPI *EFI_PXE_BASE_CODE_SET_STATION_IP) (
377199767fToomas Soome    IN struct _EFI_PXE_BASE_CODE    *This,
378199767fToomas Soome    IN EFI_IP_ADDRESS               *NewStationIp,  OPTIONAL
379199767fToomas Soome    IN EFI_IP_ADDRESS               *NewSubnetMask  OPTIONAL
380199767fToomas Soome    );
381199767fToomas Soome
382199767fToomas Soometypedef
383199767fToomas SoomeEFI_STATUS
384199767fToomas Soome(EFIAPI *EFI_PXE_BASE_CODE_SET_PACKETS) (
385199767fToomas Soome    IN struct _EFI_PXE_BASE_CODE    *This,
386199767fToomas Soome    BOOLEAN                         *NewDhcpDiscoverValid,  OPTIONAL
387199767fToomas Soome    BOOLEAN                         *NewDhcpAckReceived,    OPTIONAL
388199767fToomas Soome    BOOLEAN                         *NewProxyOfferReceived, OPTIONAL
389199767fToomas Soome    BOOLEAN                         *NewPxeDiscoverValid,   OPTIONAL
390199767fToomas Soome    BOOLEAN                         *NewPxeReplyReceived,   OPTIONAL
391199767fToomas Soome    BOOLEAN                         *NewPxeBisReplyReceived,OPTIONAL
392199767fToomas Soome    IN EFI_PXE_BASE_CODE_PACKET     *NewDhcpDiscover, OPTIONAL
393199767fToomas Soome    IN EFI_PXE_BASE_CODE_PACKET     *NewDhcpAck,      OPTIONAL
394199767fToomas Soome    IN EFI_PXE_BASE_CODE_PACKET     *NewProxyOffer,   OPTIONAL
395199767fToomas Soome    IN EFI_PXE_BASE_CODE_PACKET     *NewPxeDiscover,  OPTIONAL
396199767fToomas Soome    IN EFI_PXE_BASE_CODE_PACKET     *NewPxeReply,     OPTIONAL
397199767fToomas Soome    IN EFI_PXE_BASE_CODE_PACKET     *NewPxeBisReply   OPTIONAL
398199767fToomas Soome    );
399199767fToomas Soome
400199767fToomas Soome//
401199767fToomas Soome// PXE Base Code Protocol structure
402199767fToomas Soome//
403199767fToomas Soome
404199767fToomas Soome#define EFI_PXE_BASE_CODE_INTERFACE_REVISION    0x00010000
405199767fToomas Soome
406199767fToomas Soometypedef struct _EFI_PXE_BASE_CODE {
407199767fToomas Soome    UINT64                              Revision;
408199767fToomas Soome    EFI_PXE_BASE_CODE_START             Start;
409199767fToomas Soome    EFI_PXE_BASE_CODE_STOP              Stop;
410199767fToomas Soome    EFI_PXE_BASE_CODE_DHCP              Dhcp;
411199767fToomas Soome    EFI_PXE_BASE_CODE_DISCOVER          Discover;
412199767fToomas Soome    EFI_PXE_BASE_CODE_MTFTP             Mtftp;
413199767fToomas Soome    EFI_PXE_BASE_CODE_UDP_WRITE         UdpWrite;
414199767fToomas Soome    EFI_PXE_BASE_CODE_UDP_READ          UdpRead;
415199767fToomas Soome    EFI_PXE_BASE_CODE_SET_IP_FILTER     SetIpFilter;
416199767fToomas Soome    EFI_PXE_BASE_CODE_ARP               Arp;
417199767fToomas Soome    EFI_PXE_BASE_CODE_SET_PARAMETERS    SetParameters;
418199767fToomas Soome    EFI_PXE_BASE_CODE_SET_STATION_IP    SetStationIp;
419199767fToomas Soome    EFI_PXE_BASE_CODE_SET_PACKETS       SetPackets;
420199767fToomas Soome    EFI_PXE_BASE_CODE_MODE              *Mode;
421199767fToomas Soome} EFI_PXE_BASE_CODE;
422199767fToomas Soome
423199767fToomas Soome//
424199767fToomas Soome// Call Back Definitions
425199767fToomas Soome//
426199767fToomas Soome
427199767fToomas Soome#define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL \
428199767fToomas Soome    { 0x245dca21, 0xfb7b, 0x11d3, {0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
429199767fToomas Soome
430199767fToomas Soome//
431199767fToomas Soome// Revision Number
432199767fToomas Soome//
433199767fToomas Soome
434199767fToomas Soome#define EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION   0x00010000
435199767fToomas Soome
436199767fToomas SoomeINTERFACE_DECL(_EFI_PXE_BASE_CODE_CALLBACK);
437199767fToomas Soome
438199767fToomas Soometypedef enum {
439199767fToomas Soome    EFI_PXE_BASE_CODE_FUNCTION_FIRST,
440199767fToomas Soome    EFI_PXE_BASE_CODE_FUNCTION_DHCP,
441199767fToomas Soome    EFI_PXE_BASE_CODE_FUNCTION_DISCOVER,
442199767fToomas Soome    EFI_PXE_BASE_CODE_FUNCTION_MTFTP,
443199767fToomas Soome    EFI_PXE_BASE_CODE_FUNCTION_UDP_WRITE,
444199767fToomas Soome    EFI_PXE_BASE_CODE_FUNCTION_UDP_READ,
445199767fToomas Soome    EFI_PXE_BASE_CODE_FUNCTION_ARP,
446199767fToomas Soome    EFI_PXE_BASE_CODE_FUNCTION_IGMP,
447199767fToomas Soome    EFI_PXE_BASE_CODE_PXE_FUNCTION_LAST
448199767fToomas Soome} EFI_PXE_BASE_CODE_FUNCTION;
449199767fToomas Soome
450199767fToomas Soometypedef enum {
451199767fToomas Soome    EFI_PXE_BASE_CODE_CALLBACK_STATUS_FIRST,
452199767fToomas Soome    EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE,
453199767fToomas Soome    EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT,
454199767fToomas Soome    EFI_PXE_BASE_CODE_CALLBACK_STATUS_LAST
455199767fToomas Soome} EFI_PXE_BASE_CODE_CALLBACK_STATUS;
456199767fToomas Soome
457199767fToomas Soometypedef
458199767fToomas SoomeEFI_PXE_BASE_CODE_CALLBACK_STATUS
459199767fToomas Soome(EFIAPI *EFI_PXE_CALLBACK) (
460199767fToomas Soome    IN struct _EFI_PXE_BASE_CODE_CALLBACK   *This,
461199767fToomas Soome    IN EFI_PXE_BASE_CODE_FUNCTION           Function,
462199767fToomas Soome    IN BOOLEAN                              Received,
463199767fToomas Soome    IN UINT32                               PacketLen,
464199767fToomas Soome    IN EFI_PXE_BASE_CODE_PACKET             *Packet     OPTIONAL
465199767fToomas Soome    );
466199767fToomas Soome
467199767fToomas Soometypedef struct _EFI_PXE_BASE_CODE_CALLBACK {
468199767fToomas Soome    UINT64                      Revision;
469199767fToomas Soome    EFI_PXE_CALLBACK            Callback;
470199767fToomas Soome} EFI_PXE_BASE_CODE_CALLBACK;
471199767fToomas Soome
472199767fToomas Soome#endif /* _EFIPXEBC_H */
473