Home | History | Annotate | Line # | Download | only in inc
efipxebc.h revision 1.1.1.1.34.1
      1  1.1.1.1.34.1  pgoyette /*	$NetBSD: efipxebc.h,v 1.1.1.1.34.1 2018/09/06 06:56:38 pgoyette 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.1.34.1  pgoyette #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.1.34.1  pgoyette 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.1.34.1  pgoyette #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.1.34.1  pgoyette     IN struct _EFI_PXE_BASE_CODE_PROTOCOL  *This,
    270  1.1.1.1.34.1  pgoyette     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.1.34.1  pgoyette     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.1.34.1  pgoyette     IN struct _EFI_PXE_BASE_CODE_PROTOCOL  *This,
    283  1.1.1.1.34.1  pgoyette     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.1.34.1  pgoyette     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.1.34.1  pgoyette     IN struct _EFI_PXE_BASE_CODE_PROTOCOL  *This,
    300  1.1.1.1.34.1  pgoyette     IN EFI_PXE_BASE_CODE_TFTP_OPCODE       Operation,
    301  1.1.1.1.34.1  pgoyette     IN OUT VOID                            *BufferPtr  OPTIONAL,
    302  1.1.1.1.34.1  pgoyette     IN BOOLEAN                             Overwrite,
    303  1.1.1.1.34.1  pgoyette     IN OUT UINT64                          *BufferSize,
    304  1.1.1.1.34.1  pgoyette     IN UINTN                               *BlockSize  OPTIONAL,
    305  1.1.1.1.34.1  pgoyette     IN EFI_IP_ADDRESS                      *ServerIp,
    306  1.1.1.1.34.1  pgoyette     IN UINT8                               *Filename,
    307  1.1.1.1.34.1  pgoyette     IN EFI_PXE_BASE_CODE_MTFTP_INFO        *Info       OPTIONAL,
    308  1.1.1.1.34.1  pgoyette     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.1.34.1  pgoyette     IN struct _EFI_PXE_BASE_CODE_PROTOCOL  *This,
    315  1.1.1.1.34.1  pgoyette     IN UINT16                              OpFlags,
    316  1.1.1.1.34.1  pgoyette     IN EFI_IP_ADDRESS                      *DestIp,
    317  1.1.1.1.34.1  pgoyette     IN EFI_PXE_BASE_CODE_UDP_PORT          *DestPort,
    318  1.1.1.1.34.1  pgoyette     IN EFI_IP_ADDRESS                      *GatewayIp,  OPTIONAL
    319  1.1.1.1.34.1  pgoyette     IN EFI_IP_ADDRESS                      *SrcIp,      OPTIONAL
    320  1.1.1.1.34.1  pgoyette     IN OUT EFI_PXE_BASE_CODE_UDP_PORT      *SrcPort,    OPTIONAL
    321  1.1.1.1.34.1  pgoyette     IN UINTN                               *HeaderSize, OPTIONAL
    322  1.1.1.1.34.1  pgoyette     IN VOID                                *HeaderPtr,  OPTIONAL
    323  1.1.1.1.34.1  pgoyette     IN UINTN                               *BufferSize,
    324  1.1.1.1.34.1  pgoyette     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.1.34.1  pgoyette     IN struct _EFI_PXE_BASE_CODE_PROTOCOL  *This,
    331  1.1.1.1.34.1  pgoyette     IN UINT16                              OpFlags,
    332  1.1.1.1.34.1  pgoyette     IN OUT EFI_IP_ADDRESS                  *DestIp,      OPTIONAL
    333  1.1.1.1.34.1  pgoyette     IN OUT EFI_PXE_BASE_CODE_UDP_PORT      *DestPort,    OPTIONAL
    334  1.1.1.1.34.1  pgoyette     IN OUT EFI_IP_ADDRESS                  *SrcIp,       OPTIONAL
    335  1.1.1.1.34.1  pgoyette     IN OUT EFI_PXE_BASE_CODE_UDP_PORT      *SrcPort,     OPTIONAL
    336  1.1.1.1.34.1  pgoyette     IN UINTN                               *HeaderSize,  OPTIONAL
    337  1.1.1.1.34.1  pgoyette     IN VOID                                *HeaderPtr,   OPTIONAL
    338  1.1.1.1.34.1  pgoyette     IN OUT UINTN                           *BufferSize,
    339  1.1.1.1.34.1  pgoyette     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.1.34.1  pgoyette     IN struct _EFI_PXE_BASE_CODE_PROTOCOL  *This,
    346  1.1.1.1.34.1  pgoyette     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.1.34.1  pgoyette     IN struct _EFI_PXE_BASE_CODE_PROTOCOL  *This,
    353  1.1.1.1.34.1  pgoyette     IN EFI_IP_ADDRESS                      *IpAddr,
    354  1.1.1.1.34.1  pgoyette     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.1.34.1  pgoyette     IN struct _EFI_PXE_BASE_CODE_PROTOCOL  *This,
    361  1.1.1.1.34.1  pgoyette     IN BOOLEAN                             *NewAutoArp,    OPTIONAL
    362  1.1.1.1.34.1  pgoyette     IN BOOLEAN                             *NewSendGUID,   OPTIONAL
    363  1.1.1.1.34.1  pgoyette     IN UINT8                               *NewTTL,        OPTIONAL
    364  1.1.1.1.34.1  pgoyette     IN UINT8                               *NewToS,        OPTIONAL
    365  1.1.1.1.34.1  pgoyette     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.1.34.1  pgoyette     IN struct _EFI_PXE_BASE_CODE_PROTOCOL  *This,
    372  1.1.1.1.34.1  pgoyette     IN EFI_IP_ADDRESS                      *NewStationIp,  OPTIONAL
    373  1.1.1.1.34.1  pgoyette     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.1.34.1  pgoyette     IN struct _EFI_PXE_BASE_CODE_PROTOCOL  *This,
    380  1.1.1.1.34.1  pgoyette     BOOLEAN                                *NewDhcpDiscoverValid,  OPTIONAL
    381  1.1.1.1.34.1  pgoyette     BOOLEAN                                *NewDhcpAckReceived,    OPTIONAL
    382  1.1.1.1.34.1  pgoyette     BOOLEAN                                *NewProxyOfferReceived, OPTIONAL
    383  1.1.1.1.34.1  pgoyette     BOOLEAN                                *NewPxeDiscoverValid,   OPTIONAL
    384  1.1.1.1.34.1  pgoyette     BOOLEAN                                *NewPxeReplyReceived,   OPTIONAL
    385  1.1.1.1.34.1  pgoyette     BOOLEAN                                *NewPxeBisReplyReceived,OPTIONAL
    386  1.1.1.1.34.1  pgoyette     IN EFI_PXE_BASE_CODE_PACKET            *NewDhcpDiscover, OPTIONAL
    387  1.1.1.1.34.1  pgoyette     IN EFI_PXE_BASE_CODE_PACKET            *NewDhcpAck,      OPTIONAL
    388  1.1.1.1.34.1  pgoyette     IN EFI_PXE_BASE_CODE_PACKET            *NewProxyOffer,   OPTIONAL
    389  1.1.1.1.34.1  pgoyette     IN EFI_PXE_BASE_CODE_PACKET            *NewPxeDiscover,  OPTIONAL
    390  1.1.1.1.34.1  pgoyette     IN EFI_PXE_BASE_CODE_PACKET            *NewPxeReply,     OPTIONAL
    391  1.1.1.1.34.1  pgoyette     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.1.34.1  pgoyette #define EFI_PXE_BASE_CODE_PROTOCOL_REVISION  0x00010000
    399  1.1.1.1.34.1  pgoyette #define EFI_PXE_BASE_CODE_INTERFACE_REVISION EFI_PXE_BASE_CODE_PROTOCOL_REVISION
    400           1.1  jakllsch 
    401  1.1.1.1.34.1  pgoyette 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.1.34.1  pgoyette } EFI_PXE_BASE_CODE_PROTOCOL;
    417  1.1.1.1.34.1  pgoyette 
    418  1.1.1.1.34.1  pgoyette // Note: Because it conflicted with the EDK2 struct name, the
    419  1.1.1.1.34.1  pgoyette // 'EFI_PXE_BASE_CODE_PROTOCOL' GUID definition, from older
    420  1.1.1.1.34.1  pgoyette // versions of gnu-efi, is now obsoleted.
    421  1.1.1.1.34.1  pgoyette // Use 'EFI_PXE_BASE_CODE_PROTOCOL_GUID' instead.
    422  1.1.1.1.34.1  pgoyette 
    423  1.1.1.1.34.1  pgoyette typedef struct _EFI_PXE_BASE_CODE_PROTOCOL _EFI_PXE_BASE_CODE;
    424  1.1.1.1.34.1  pgoyette 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.1.34.1  pgoyette #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.1.34.1  pgoyette #define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_REVISION  0x00010000
    438  1.1.1.1.34.1  pgoyette #define EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_REVISION
    439           1.1  jakllsch 
    440  1.1.1.1.34.1  pgoyette 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.1.34.1  pgoyette EFI_PXE_BASE_CODE_CALLBACK_STATUS
    463           1.1  jakllsch (EFIAPI *EFI_PXE_CALLBACK) (
    464  1.1.1.1.34.1  pgoyette     IN struct _EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL  *This,
    465  1.1.1.1.34.1  pgoyette     IN EFI_PXE_BASE_CODE_FUNCTION                   Function,
    466  1.1.1.1.34.1  pgoyette     IN BOOLEAN                                      Received,
    467  1.1.1.1.34.1  pgoyette     IN UINT32                                       PacketLen,
    468  1.1.1.1.34.1  pgoyette     IN EFI_PXE_BASE_CODE_PACKET                     *Packet     OPTIONAL
    469           1.1  jakllsch     );
    470           1.1  jakllsch 
    471  1.1.1.1.34.1  pgoyette 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.1.34.1  pgoyette } EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL;
    475  1.1.1.1.34.1  pgoyette 
    476  1.1.1.1.34.1  pgoyette // Note: Because it conflicted with the EDK2 struct name, the
    477  1.1.1.1.34.1  pgoyette // 'EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL' GUID definition, from
    478  1.1.1.1.34.1  pgoyette // older versions of gnu-efi, is now obsoleted.
    479  1.1.1.1.34.1  pgoyette // Use 'EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL_GUID' instead.
    480  1.1.1.1.34.1  pgoyette 
    481  1.1.1.1.34.1  pgoyette typedef struct _EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL _EFI_PXE_BASE_CODE_CALLBACK;
    482  1.1.1.1.34.1  pgoyette typedef EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL EFI_PXE_BASE_CODE_CALLBACK;
    483           1.1  jakllsch 
    484           1.1  jakllsch #endif /* _EFIPXEBC_H */
    485