Home | History | Annotate | Line # | Download | only in inc
      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