177943Sdfr/* $FreeBSD: stable/11/stand/efi/include/efipxebc.h 293724 2016-01-12 02:17:39Z smh $ */
277943Sdfr#ifndef _EFIPXEBC_H
377943Sdfr#define _EFIPXEBC_H
477943Sdfr
577943Sdfr/*++
677943Sdfr
7163898SmarcelCopyright (c)  1999 - 2002 Intel Corporation. All rights reserved
8163898SmarcelThis software and associated documentation (if any) is furnished
9163898Smarcelunder a license and may only be used or copied in accordance
10163898Smarcelwith the terms of the license. Except as permitted by such
11163898Smarcellicense, no part of this software or documentation may be
12163898Smarcelreproduced, stored in a retrieval system, or transmitted in any
13163898Smarcelform or by any means without the express written consent of
14163898SmarcelIntel Corporation.
1577943Sdfr
1677943SdfrModule Name:
1777943Sdfr
1877943Sdfr    efipxebc.h
1977943Sdfr
2077943SdfrAbstract:
2177943Sdfr
2277943Sdfr    EFI PXE Base Code Protocol
2377943Sdfr
2477943Sdfr
2577943Sdfr
2677943SdfrRevision History
2777943Sdfr
2877943Sdfr--*/
2977943Sdfr
30163898Smarcel//
31163898Smarcel// PXE Base Code protocol
32163898Smarcel//
3377943Sdfr
3477943Sdfr#define EFI_PXE_BASE_CODE_PROTOCOL \
35293724Ssmh    { 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
3677943Sdfr
3777943SdfrINTERFACE_DECL(_EFI_PXE_BASE_CODE);
3877943Sdfr
39163898Smarcel#define DEFAULT_TTL 8
4077943Sdfr#define DEFAULT_ToS 0
41163898Smarcel//
42163898Smarcel// Address definitions
43163898Smarcel//
4477943Sdfr
4577943Sdfrtypedef union {
4677943Sdfr    UINT32      Addr[4];
4777943Sdfr    EFI_IPv4_ADDRESS    v4;
4877943Sdfr    EFI_IPv6_ADDRESS    v6;
4977943Sdfr} EFI_IP_ADDRESS;
5077943Sdfr
5177943Sdfrtypedef UINT16 EFI_PXE_BASE_CODE_UDP_PORT;
5277943Sdfr
53163898Smarcel//
54163898Smarcel// Packet definitions
55163898Smarcel//
5677943Sdfr
5777943Sdfrtypedef struct {
5877943Sdfr    UINT8                           BootpOpcode;
5977943Sdfr    UINT8                           BootpHwType;
6077943Sdfr    UINT8                           BootpHwAddrLen;
6177943Sdfr    UINT8                           BootpGateHops;
6277943Sdfr    UINT32                          BootpIdent;
6377943Sdfr    UINT16                          BootpSeconds;
6477943Sdfr    UINT16                          BootpFlags;
6577943Sdfr    UINT8                           BootpCiAddr[4];
6677943Sdfr    UINT8                           BootpYiAddr[4];
6777943Sdfr    UINT8                           BootpSiAddr[4];
6877943Sdfr    UINT8                           BootpGiAddr[4];
6977943Sdfr    UINT8                           BootpHwAddr[16];
7077943Sdfr    UINT8                           BootpSrvName[64];
7177943Sdfr    UINT8                           BootpBootFile[128];
7277943Sdfr    UINT32                          DhcpMagik;
7377943Sdfr    UINT8                           DhcpOptions[56];
7477943Sdfr} EFI_PXE_BASE_CODE_DHCPV4_PACKET;
7577943Sdfr
76163898Smarcel// TBD in EFI v1.1
77163898Smarcel//typedef struct {
78163898Smarcel//    UINT8                           reserved;
79163898Smarcel//} EFI_PXE_BASE_CODE_DHCPV6_PACKET;
80163898Smarcel
8177943Sdfrtypedef union {
8277943Sdfr    UINT8                               Raw[1472];
8377943Sdfr    EFI_PXE_BASE_CODE_DHCPV4_PACKET     Dhcpv4;
84163898Smarcel//    EFI_PXE_BASE_CODE_DHCPV6_PACKET     Dhcpv6;
8577943Sdfr} EFI_PXE_BASE_CODE_PACKET;
8677943Sdfr
8777943Sdfrtypedef struct {
8877943Sdfr    UINT8                   Type;
8977943Sdfr    UINT8                   Code;
9077943Sdfr    UINT16                  Checksum;
9177943Sdfr    union {
9277943Sdfr        UINT32              reserved;
9377943Sdfr        UINT32              Mtu;
9477943Sdfr        UINT32              Pointer;
9577943Sdfr        struct {
9677943Sdfr            UINT16          Identifier;
9777943Sdfr            UINT16          Sequence;
9877943Sdfr        } Echo;
9977943Sdfr    } u;
10077943Sdfr    UINT8                   Data[494];
10177943Sdfr} EFI_PXE_BASE_CODE_ICMP_ERROR;
10277943Sdfr
10377943Sdfrtypedef struct {
10477943Sdfr    UINT8                   ErrorCode;
10577943Sdfr    CHAR8                   ErrorString[127];
10677943Sdfr} EFI_PXE_BASE_CODE_TFTP_ERROR;
10777943Sdfr
108163898Smarcel//
109163898Smarcel// IP Receive Filter definitions
110163898Smarcel//
11177943Sdfr#define EFI_PXE_BASE_CODE_MAX_IPCNT             8
11277943Sdfrtypedef struct {
11377943Sdfr    UINT8                       Filters;
11477943Sdfr    UINT8                       IpCnt;
11577943Sdfr    UINT16                      reserved;
11677943Sdfr    EFI_IP_ADDRESS              IpList[EFI_PXE_BASE_CODE_MAX_IPCNT];
11777943Sdfr} EFI_PXE_BASE_CODE_IP_FILTER;
11877943Sdfr
11977943Sdfr#define EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP             0x0001
12077943Sdfr#define EFI_PXE_BASE_CODE_IP_FILTER_BROADCAST              0x0002
12177943Sdfr#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS            0x0004
12277943Sdfr#define EFI_PXE_BASE_CODE_IP_FILTER_PROMISCUOUS_MULTICAST  0x0008
12377943Sdfr
124163898Smarcel//
125163898Smarcel// ARP Cache definitions
126163898Smarcel//
12777943Sdfr
12877943Sdfrtypedef struct {
12977943Sdfr    EFI_IP_ADDRESS       IpAddr;
13077943Sdfr    EFI_MAC_ADDRESS      MacAddr;
13177943Sdfr} EFI_PXE_BASE_CODE_ARP_ENTRY;
13277943Sdfr
13377943Sdfrtypedef struct {
13477943Sdfr    EFI_IP_ADDRESS       IpAddr;
13577943Sdfr    EFI_IP_ADDRESS       SubnetMask;
13677943Sdfr    EFI_IP_ADDRESS       GwAddr;
13777943Sdfr} EFI_PXE_BASE_CODE_ROUTE_ENTRY;
13877943Sdfr
139163898Smarcel//
140163898Smarcel// UDP definitions
141163898Smarcel//
14277943Sdfr
14377943Sdfr#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_IP    0x0001
14477943Sdfr#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_SRC_PORT  0x0002
14577943Sdfr#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_IP   0x0004
14677943Sdfr#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_ANY_DEST_PORT 0x0008
14777943Sdfr#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_USE_FILTER    0x0010
14877943Sdfr#define EFI_PXE_BASE_CODE_UDP_OPFLAGS_MAY_FRAGMENT  0x0020
14977943Sdfr
150163898Smarcel//
151163898Smarcel// Discover() definitions
152163898Smarcel//
15377943Sdfr
154292625Semaste#define EFI_PXE_BASE_CODE_BOOT_TYPE_BOOTSTRAP           0
15577943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_MS_WINNT_RIS        1
15677943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_INTEL_LCM           2
15777943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_DOSUNDI             3
15877943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_NEC_ESMPRO          4
15977943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_WSoD            5
16077943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_IBM_LCCM            6
16177943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_CA_UNICENTER_TNG    7
16277943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_HP_OPENVIEW         8
16377943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_9           9
16477943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_10          10
16577943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_ALTIRIS_11          11
16677943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_NOT_USED_12         12
16777943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_INSTALL      13
16877943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_REDHAT_BOOT         14
16977943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_REMBO               15
17077943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_BEOBOOT             16
171163898Smarcel//
172163898Smarcel// 17 through 32767 are reserved
173163898Smarcel// 32768 through 65279 are for vendor use
174163898Smarcel// 65280 through 65534 are reserved
175163898Smarcel//
17677943Sdfr#define EFI_PXE_BASE_CODE_BOOT_TYPE_PXETEST             65535
17777943Sdfr
17877943Sdfr#define EFI_PXE_BASE_CODE_BOOT_LAYER_MASK               0x7FFF
17977943Sdfr#define EFI_PXE_BASE_CODE_BOOT_LAYER_INITIAL            0x0000
180163898Smarcel#define EFI_PXE_BASE_CODE_BOOT_LAYER_CREDENTIALS        0x8000
18177943Sdfr
18277943Sdfr
18377943Sdfrtypedef struct {
18477943Sdfr    UINT16                      Type;
18577943Sdfr    BOOLEAN                     AcceptAnyResponse;
18677943Sdfr    UINT8                       Reserved;
18777943Sdfr    EFI_IP_ADDRESS              IpAddr;
18877943Sdfr} EFI_PXE_BASE_CODE_SRVLIST;
18977943Sdfr
19077943Sdfrtypedef struct {
19177943Sdfr    BOOLEAN                     UseMCast;
19277943Sdfr    BOOLEAN                     UseBCast;
19377943Sdfr    BOOLEAN                     UseUCast;
19477943Sdfr    BOOLEAN                     MustUseList;
19577943Sdfr    EFI_IP_ADDRESS              ServerMCastIp;
19677943Sdfr    UINT16                      IpCnt;
19777943Sdfr    EFI_PXE_BASE_CODE_SRVLIST   SrvList[1];
19877943Sdfr} EFI_PXE_BASE_CODE_DISCOVER_INFO;
19977943Sdfr
200163898Smarcel//
201163898Smarcel// Mtftp() definitions
202163898Smarcel//
20377943Sdfr
20477943Sdfrtypedef enum {
20577943Sdfr    EFI_PXE_BASE_CODE_TFTP_FIRST,
20677943Sdfr    EFI_PXE_BASE_CODE_TFTP_GET_FILE_SIZE,
20777943Sdfr    EFI_PXE_BASE_CODE_TFTP_READ_FILE,
20877943Sdfr    EFI_PXE_BASE_CODE_TFTP_WRITE_FILE,
20977943Sdfr    EFI_PXE_BASE_CODE_TFTP_READ_DIRECTORY,
21077943Sdfr    EFI_PXE_BASE_CODE_MTFTP_GET_FILE_SIZE,
21177943Sdfr    EFI_PXE_BASE_CODE_MTFTP_READ_FILE,
21277943Sdfr    EFI_PXE_BASE_CODE_MTFTP_READ_DIRECTORY,
21377943Sdfr    EFI_PXE_BASE_CODE_MTFTP_LAST
21477943Sdfr} EFI_PXE_BASE_CODE_TFTP_OPCODE;
21577943Sdfr
21677943Sdfrtypedef struct {
21777943Sdfr    EFI_IP_ADDRESS   MCastIp;
21877943Sdfr    EFI_PXE_BASE_CODE_UDP_PORT  CPort;
21977943Sdfr    EFI_PXE_BASE_CODE_UDP_PORT  SPort;
22077943Sdfr    UINT16                      ListenTimeout;
22177943Sdfr    UINT16                      TransmitTimeout;
22277943Sdfr} EFI_PXE_BASE_CODE_MTFTP_INFO;
22377943Sdfr
224163898Smarcel//
225163898Smarcel// PXE Base Code Mode structure
226163898Smarcel//
22777943Sdfr
22877943Sdfr#define EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES       8
22977943Sdfr#define EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES     8
23077943Sdfr
23177943Sdfrtypedef struct {
23277943Sdfr    BOOLEAN                         Started;
23377943Sdfr    BOOLEAN                         Ipv6Available;
23477943Sdfr    BOOLEAN                         Ipv6Supported;
23577943Sdfr    BOOLEAN                         UsingIpv6;
23677943Sdfr    BOOLEAN                         BisSupported;
23777943Sdfr    BOOLEAN                         BisDetected;
23877943Sdfr    BOOLEAN                         AutoArp;
23977943Sdfr    BOOLEAN                         SendGUID;
24077943Sdfr    BOOLEAN                         DhcpDiscoverValid;
24177943Sdfr    BOOLEAN                         DhcpAckReceived;
24277943Sdfr    BOOLEAN                         ProxyOfferReceived;
24377943Sdfr    BOOLEAN                         PxeDiscoverValid;
24477943Sdfr    BOOLEAN                         PxeReplyReceived;
24577943Sdfr    BOOLEAN                         PxeBisReplyReceived;
24677943Sdfr    BOOLEAN                         IcmpErrorReceived;
24777943Sdfr    BOOLEAN                         TftpErrorReceived;
24877943Sdfr    BOOLEAN                         MakeCallbacks;
24977943Sdfr    UINT8                           TTL;
25077943Sdfr    UINT8                           ToS;
25177943Sdfr    EFI_IP_ADDRESS                  StationIp;
25277943Sdfr    EFI_IP_ADDRESS                  SubnetMask;
25377943Sdfr    EFI_PXE_BASE_CODE_PACKET        DhcpDiscover;
25477943Sdfr    EFI_PXE_BASE_CODE_PACKET        DhcpAck;
25577943Sdfr    EFI_PXE_BASE_CODE_PACKET        ProxyOffer;
25677943Sdfr    EFI_PXE_BASE_CODE_PACKET        PxeDiscover;
25777943Sdfr    EFI_PXE_BASE_CODE_PACKET        PxeReply;
25877943Sdfr    EFI_PXE_BASE_CODE_PACKET        PxeBisReply;
25977943Sdfr    EFI_PXE_BASE_CODE_IP_FILTER     IpFilter;
26077943Sdfr    UINT32                          ArpCacheEntries;
26177943Sdfr    EFI_PXE_BASE_CODE_ARP_ENTRY     ArpCache[EFI_PXE_BASE_CODE_MAX_ARP_ENTRIES];
26277943Sdfr    UINT32                          RouteTableEntries;
26377943Sdfr    EFI_PXE_BASE_CODE_ROUTE_ENTRY   RouteTable[EFI_PXE_BASE_CODE_MAX_ROUTE_ENTRIES];
26477943Sdfr    EFI_PXE_BASE_CODE_ICMP_ERROR    IcmpError;
26577943Sdfr    EFI_PXE_BASE_CODE_TFTP_ERROR    TftpError;
26677943Sdfr} EFI_PXE_BASE_CODE_MODE;
26777943Sdfr
268163898Smarcel//
269163898Smarcel// PXE Base Code Interface Function definitions
270163898Smarcel//
27177943Sdfr
27277943Sdfrtypedef
27377943SdfrEFI_STATUS
27477943Sdfr(EFIAPI *EFI_PXE_BASE_CODE_START) (
27577943Sdfr    IN struct _EFI_PXE_BASE_CODE    *This,
27677943Sdfr    IN BOOLEAN                      UseIpv6
27777943Sdfr    );
27877943Sdfr
27977943Sdfrtypedef
28077943SdfrEFI_STATUS
28177943Sdfr(EFIAPI *EFI_PXE_BASE_CODE_STOP) (
28277943Sdfr    IN struct _EFI_PXE_BASE_CODE    *This
28377943Sdfr    );
28477943Sdfr
28577943Sdfrtypedef
28677943SdfrEFI_STATUS
28777943Sdfr(EFIAPI *EFI_PXE_BASE_CODE_DHCP) (
28877943Sdfr    IN struct _EFI_PXE_BASE_CODE    *This,
28977943Sdfr    IN BOOLEAN                      SortOffers
29077943Sdfr    );
29177943Sdfr
29277943Sdfrtypedef
29377943SdfrEFI_STATUS
29477943Sdfr(EFIAPI *EFI_PXE_BASE_CODE_DISCOVER) (
29577943Sdfr    IN struct _EFI_PXE_BASE_CODE            *This,
29677943Sdfr    IN UINT16                               Type,
29777943Sdfr    IN UINT16                               *Layer,
29877943Sdfr    IN BOOLEAN                              UseBis,
29977943Sdfr    IN OUT EFI_PXE_BASE_CODE_DISCOVER_INFO  *Info   OPTIONAL
30077943Sdfr    );
30177943Sdfr
30277943Sdfrtypedef
30377943SdfrEFI_STATUS
30477943Sdfr(EFIAPI *EFI_PXE_BASE_CODE_MTFTP) (
30577943Sdfr    IN struct _EFI_PXE_BASE_CODE        *This,
30677943Sdfr    IN EFI_PXE_BASE_CODE_TFTP_OPCODE    Operation,
30777943Sdfr    IN OUT VOID                         *BufferPtr  OPTIONAL,
30877943Sdfr    IN BOOLEAN                          Overwrite,
309163898Smarcel    IN OUT UINT64                       *BufferSize,
31077943Sdfr    IN UINTN                            *BlockSize  OPTIONAL,
31177943Sdfr    IN EFI_IP_ADDRESS                   *ServerIp,
31277943Sdfr    IN UINT8                            *Filename,
31377943Sdfr    IN EFI_PXE_BASE_CODE_MTFTP_INFO     *Info       OPTIONAL,
31477943Sdfr    IN BOOLEAN                          DontUseBuffer
31577943Sdfr    );
31677943Sdfr
31777943Sdfrtypedef
31877943SdfrEFI_STATUS
31977943Sdfr(EFIAPI *EFI_PXE_BASE_CODE_UDP_WRITE) (
32077943Sdfr    IN struct _EFI_PXE_BASE_CODE        *This,
32177943Sdfr    IN UINT16                           OpFlags,
32277943Sdfr    IN EFI_IP_ADDRESS                   *DestIp,
32377943Sdfr    IN EFI_PXE_BASE_CODE_UDP_PORT       *DestPort,
32477943Sdfr    IN EFI_IP_ADDRESS                   *GatewayIp,  OPTIONAL
32577943Sdfr    IN EFI_IP_ADDRESS                   *SrcIp,      OPTIONAL
32677943Sdfr    IN OUT EFI_PXE_BASE_CODE_UDP_PORT   *SrcPort,    OPTIONAL
32777943Sdfr    IN UINTN                            *HeaderSize, OPTIONAL
32877943Sdfr    IN VOID                             *HeaderPtr,  OPTIONAL
32977943Sdfr    IN UINTN                            *BufferSize,
33077943Sdfr    IN VOID                             *BufferPtr
33177943Sdfr    );
33277943Sdfr
33377943Sdfrtypedef
33477943SdfrEFI_STATUS
33577943Sdfr(EFIAPI *EFI_PXE_BASE_CODE_UDP_READ) (
33677943Sdfr    IN struct _EFI_PXE_BASE_CODE        *This,
33777943Sdfr    IN UINT16                           OpFlags,
33877943Sdfr    IN OUT EFI_IP_ADDRESS               *DestIp,      OPTIONAL
33977943Sdfr    IN OUT EFI_PXE_BASE_CODE_UDP_PORT   *DestPort,    OPTIONAL
34077943Sdfr    IN OUT EFI_IP_ADDRESS               *SrcIp,       OPTIONAL
34177943Sdfr    IN OUT EFI_PXE_BASE_CODE_UDP_PORT   *SrcPort,     OPTIONAL
34277943Sdfr    IN UINTN                            *HeaderSize,  OPTIONAL
34377943Sdfr    IN VOID                             *HeaderPtr,   OPTIONAL
34477943Sdfr    IN OUT UINTN                        *BufferSize,
34577943Sdfr    IN VOID                             *BufferPtr
34677943Sdfr    );
34777943Sdfr
34877943Sdfrtypedef
34977943SdfrEFI_STATUS
35077943Sdfr(EFIAPI *EFI_PXE_BASE_CODE_SET_IP_FILTER) (
35177943Sdfr    IN struct _EFI_PXE_BASE_CODE    *This,
35277943Sdfr    IN EFI_PXE_BASE_CODE_IP_FILTER  *NewFilter
35377943Sdfr    );
35477943Sdfr
35577943Sdfrtypedef
35677943SdfrEFI_STATUS
35777943Sdfr(EFIAPI *EFI_PXE_BASE_CODE_ARP) (
35877943Sdfr    IN struct _EFI_PXE_BASE_CODE    *This,
359292625Semaste    IN EFI_IP_ADDRESS               *IpAddr,
36077943Sdfr    IN EFI_MAC_ADDRESS              *MacAddr      OPTIONAL
36177943Sdfr    );
36277943Sdfr
36377943Sdfrtypedef
36477943SdfrEFI_STATUS
36577943Sdfr(EFIAPI *EFI_PXE_BASE_CODE_SET_PARAMETERS) (
36677943Sdfr    IN struct _EFI_PXE_BASE_CODE    *This,
36777943Sdfr    IN BOOLEAN                      *NewAutoArp,    OPTIONAL
36877943Sdfr    IN BOOLEAN                      *NewSendGUID,   OPTIONAL
36977943Sdfr    IN UINT8                        *NewTTL,        OPTIONAL
37077943Sdfr    IN UINT8                        *NewToS,        OPTIONAL
37177943Sdfr    IN BOOLEAN                      *NewMakeCallback    OPTIONAL
37277943Sdfr    );
37377943Sdfr
37477943Sdfrtypedef
37577943SdfrEFI_STATUS
37677943Sdfr(EFIAPI *EFI_PXE_BASE_CODE_SET_STATION_IP) (
37777943Sdfr    IN struct _EFI_PXE_BASE_CODE    *This,
37877943Sdfr    IN EFI_IP_ADDRESS               *NewStationIp,  OPTIONAL
37977943Sdfr    IN EFI_IP_ADDRESS               *NewSubnetMask  OPTIONAL
38077943Sdfr    );
38177943Sdfr
38277943Sdfrtypedef
38377943SdfrEFI_STATUS
38477943Sdfr(EFIAPI *EFI_PXE_BASE_CODE_SET_PACKETS) (
38577943Sdfr    IN struct _EFI_PXE_BASE_CODE    *This,
38677943Sdfr    BOOLEAN                         *NewDhcpDiscoverValid,  OPTIONAL
38777943Sdfr    BOOLEAN                         *NewDhcpAckReceived,    OPTIONAL
38877943Sdfr    BOOLEAN                         *NewProxyOfferReceived, OPTIONAL
38977943Sdfr    BOOLEAN                         *NewPxeDiscoverValid,   OPTIONAL
39077943Sdfr    BOOLEAN                         *NewPxeReplyReceived,   OPTIONAL
39177943Sdfr    BOOLEAN                         *NewPxeBisReplyReceived,OPTIONAL
39277943Sdfr    IN EFI_PXE_BASE_CODE_PACKET     *NewDhcpDiscover, OPTIONAL
39377943Sdfr    IN EFI_PXE_BASE_CODE_PACKET     *NewDhcpAck,      OPTIONAL
39477943Sdfr    IN EFI_PXE_BASE_CODE_PACKET     *NewProxyOffer,   OPTIONAL
39577943Sdfr    IN EFI_PXE_BASE_CODE_PACKET     *NewPxeDiscover,  OPTIONAL
39677943Sdfr    IN EFI_PXE_BASE_CODE_PACKET     *NewPxeReply,     OPTIONAL
39777943Sdfr    IN EFI_PXE_BASE_CODE_PACKET     *NewPxeBisReply   OPTIONAL
39877943Sdfr    );
39977943Sdfr
400163898Smarcel//
401163898Smarcel// PXE Base Code Protocol structure
402163898Smarcel//
40377943Sdfr
40477943Sdfr#define EFI_PXE_BASE_CODE_INTERFACE_REVISION    0x00010000
40577943Sdfr
40677943Sdfrtypedef struct _EFI_PXE_BASE_CODE {
40777943Sdfr    UINT64                              Revision;
40877943Sdfr    EFI_PXE_BASE_CODE_START             Start;
40977943Sdfr    EFI_PXE_BASE_CODE_STOP              Stop;
41077943Sdfr    EFI_PXE_BASE_CODE_DHCP              Dhcp;
41177943Sdfr    EFI_PXE_BASE_CODE_DISCOVER          Discover;
41277943Sdfr    EFI_PXE_BASE_CODE_MTFTP             Mtftp;
41377943Sdfr    EFI_PXE_BASE_CODE_UDP_WRITE         UdpWrite;
41477943Sdfr    EFI_PXE_BASE_CODE_UDP_READ          UdpRead;
41577943Sdfr    EFI_PXE_BASE_CODE_SET_IP_FILTER     SetIpFilter;
41677943Sdfr    EFI_PXE_BASE_CODE_ARP               Arp;
41777943Sdfr    EFI_PXE_BASE_CODE_SET_PARAMETERS    SetParameters;
41877943Sdfr    EFI_PXE_BASE_CODE_SET_STATION_IP    SetStationIp;
41977943Sdfr    EFI_PXE_BASE_CODE_SET_PACKETS       SetPackets;
42077943Sdfr    EFI_PXE_BASE_CODE_MODE              *Mode;
42177943Sdfr} EFI_PXE_BASE_CODE;
42277943Sdfr
423163898Smarcel//
424163898Smarcel// Call Back Definitions
425163898Smarcel//
42677943Sdfr
42777943Sdfr#define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL \
428293724Ssmh    { 0x245dca21, 0xfb7b, 0x11d3, {0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
42977943Sdfr
430163898Smarcel//
431163898Smarcel// Revision Number
432163898Smarcel//
43377943Sdfr
43477943Sdfr#define EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION   0x00010000
43577943Sdfr
43677943SdfrINTERFACE_DECL(_EFI_PXE_BASE_CODE_CALLBACK);
43777943Sdfr
43877943Sdfrtypedef enum {
43977943Sdfr    EFI_PXE_BASE_CODE_FUNCTION_FIRST,
44077943Sdfr    EFI_PXE_BASE_CODE_FUNCTION_DHCP,
44177943Sdfr    EFI_PXE_BASE_CODE_FUNCTION_DISCOVER,
44277943Sdfr    EFI_PXE_BASE_CODE_FUNCTION_MTFTP,
44377943Sdfr    EFI_PXE_BASE_CODE_FUNCTION_UDP_WRITE,
44477943Sdfr    EFI_PXE_BASE_CODE_FUNCTION_UDP_READ,
44577943Sdfr    EFI_PXE_BASE_CODE_FUNCTION_ARP,
44677943Sdfr    EFI_PXE_BASE_CODE_FUNCTION_IGMP,
44777943Sdfr    EFI_PXE_BASE_CODE_PXE_FUNCTION_LAST
44877943Sdfr} EFI_PXE_BASE_CODE_FUNCTION;
44977943Sdfr
45077943Sdfrtypedef enum {
45177943Sdfr    EFI_PXE_BASE_CODE_CALLBACK_STATUS_FIRST,
45277943Sdfr    EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE,
45377943Sdfr    EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT,
45477943Sdfr    EFI_PXE_BASE_CODE_CALLBACK_STATUS_LAST
45577943Sdfr} EFI_PXE_BASE_CODE_CALLBACK_STATUS;
45677943Sdfr
45777943Sdfrtypedef
458292625SemasteEFI_PXE_BASE_CODE_CALLBACK_STATUS
45977943Sdfr(EFIAPI *EFI_PXE_CALLBACK) (
46077943Sdfr    IN struct _EFI_PXE_BASE_CODE_CALLBACK   *This,
46177943Sdfr    IN EFI_PXE_BASE_CODE_FUNCTION           Function,
46277943Sdfr    IN BOOLEAN                              Received,
46377943Sdfr    IN UINT32                               PacketLen,
46477943Sdfr    IN EFI_PXE_BASE_CODE_PACKET             *Packet     OPTIONAL
46577943Sdfr    );
46677943Sdfr
46777943Sdfrtypedef struct _EFI_PXE_BASE_CODE_CALLBACK {
46877943Sdfr    UINT64                      Revision;
46977943Sdfr    EFI_PXE_CALLBACK            Callback;
47077943Sdfr} EFI_PXE_BASE_CODE_CALLBACK;
47177943Sdfr
47277943Sdfr#endif /* _EFIPXEBC_H */
473