Home | History | Annotate | Line # | Download | only in inc
efipxebc.h revision 1.1
      1  1.1  jakllsch /*	$NetBSD: efipxebc.h,v 1.1 2014/04/01 16:16:07 jakllsch 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  jakllsch #define EFI_PXE_BASE_CODE_PROTOCOL \
     29  1.1  jakllsch     { 0x03c4e603, 0xac28, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
     30  1.1  jakllsch 
     31  1.1  jakllsch INTERFACE_DECL(_EFI_PXE_BASE_CODE);
     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  jakllsch #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  jakllsch     IN struct _EFI_PXE_BASE_CODE    *This,
    270  1.1  jakllsch     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  jakllsch     IN struct _EFI_PXE_BASE_CODE    *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  jakllsch     IN struct _EFI_PXE_BASE_CODE    *This,
    283  1.1  jakllsch     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  jakllsch     IN struct _EFI_PXE_BASE_CODE            *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  jakllsch     IN struct _EFI_PXE_BASE_CODE        *This,
    300  1.1  jakllsch     IN EFI_PXE_BASE_CODE_TFTP_OPCODE    Operation,
    301  1.1  jakllsch     IN OUT VOID                         *BufferPtr  OPTIONAL,
    302  1.1  jakllsch     IN BOOLEAN                          Overwrite,
    303  1.1  jakllsch     IN OUT UINT64                       *BufferSize,
    304  1.1  jakllsch     IN UINTN                            *BlockSize  OPTIONAL,
    305  1.1  jakllsch     IN EFI_IP_ADDRESS                   *ServerIp,
    306  1.1  jakllsch     IN UINT8                            *Filename,
    307  1.1  jakllsch     IN EFI_PXE_BASE_CODE_MTFTP_INFO     *Info       OPTIONAL,
    308  1.1  jakllsch     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  jakllsch     IN struct _EFI_PXE_BASE_CODE        *This,
    315  1.1  jakllsch     IN UINT16                           OpFlags,
    316  1.1  jakllsch     IN EFI_IP_ADDRESS                   *DestIp,
    317  1.1  jakllsch     IN EFI_PXE_BASE_CODE_UDP_PORT       *DestPort,
    318  1.1  jakllsch     IN EFI_IP_ADDRESS                   *GatewayIp,  OPTIONAL
    319  1.1  jakllsch     IN EFI_IP_ADDRESS                   *SrcIp,      OPTIONAL
    320  1.1  jakllsch     IN OUT EFI_PXE_BASE_CODE_UDP_PORT   *SrcPort,    OPTIONAL
    321  1.1  jakllsch     IN UINTN                            *HeaderSize, OPTIONAL
    322  1.1  jakllsch     IN VOID                             *HeaderPtr,  OPTIONAL
    323  1.1  jakllsch     IN UINTN                            *BufferSize,
    324  1.1  jakllsch     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  jakllsch     IN struct _EFI_PXE_BASE_CODE        *This,
    331  1.1  jakllsch     IN UINT16                           OpFlags,
    332  1.1  jakllsch     IN OUT EFI_IP_ADDRESS               *DestIp,      OPTIONAL
    333  1.1  jakllsch     IN OUT EFI_PXE_BASE_CODE_UDP_PORT   *DestPort,    OPTIONAL
    334  1.1  jakllsch     IN OUT EFI_IP_ADDRESS               *SrcIp,       OPTIONAL
    335  1.1  jakllsch     IN OUT EFI_PXE_BASE_CODE_UDP_PORT   *SrcPort,     OPTIONAL
    336  1.1  jakllsch     IN UINTN                            *HeaderSize,  OPTIONAL
    337  1.1  jakllsch     IN VOID                             *HeaderPtr,   OPTIONAL
    338  1.1  jakllsch     IN OUT UINTN                        *BufferSize,
    339  1.1  jakllsch     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  jakllsch     IN struct _EFI_PXE_BASE_CODE    *This,
    346  1.1  jakllsch     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  jakllsch     IN struct _EFI_PXE_BASE_CODE    *This,
    353  1.1  jakllsch     IN EFI_IP_ADDRESS               *IpAddr,
    354  1.1  jakllsch     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  jakllsch     IN struct _EFI_PXE_BASE_CODE    *This,
    361  1.1  jakllsch     IN BOOLEAN                      *NewAutoArp,    OPTIONAL
    362  1.1  jakllsch     IN BOOLEAN                      *NewSendGUID,   OPTIONAL
    363  1.1  jakllsch     IN UINT8                        *NewTTL,        OPTIONAL
    364  1.1  jakllsch     IN UINT8                        *NewToS,        OPTIONAL
    365  1.1  jakllsch     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  jakllsch     IN struct _EFI_PXE_BASE_CODE    *This,
    372  1.1  jakllsch     IN EFI_IP_ADDRESS               *NewStationIp,  OPTIONAL
    373  1.1  jakllsch     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  jakllsch     IN struct _EFI_PXE_BASE_CODE    *This,
    380  1.1  jakllsch     BOOLEAN                         *NewDhcpDiscoverValid,  OPTIONAL
    381  1.1  jakllsch     BOOLEAN                         *NewDhcpAckReceived,    OPTIONAL
    382  1.1  jakllsch     BOOLEAN                         *NewProxyOfferReceived, OPTIONAL
    383  1.1  jakllsch     BOOLEAN                         *NewPxeDiscoverValid,   OPTIONAL
    384  1.1  jakllsch     BOOLEAN                         *NewPxeReplyReceived,   OPTIONAL
    385  1.1  jakllsch     BOOLEAN                         *NewPxeBisReplyReceived,OPTIONAL
    386  1.1  jakllsch     IN EFI_PXE_BASE_CODE_PACKET     *NewDhcpDiscover, OPTIONAL
    387  1.1  jakllsch     IN EFI_PXE_BASE_CODE_PACKET     *NewDhcpAck,      OPTIONAL
    388  1.1  jakllsch     IN EFI_PXE_BASE_CODE_PACKET     *NewProxyOffer,   OPTIONAL
    389  1.1  jakllsch     IN EFI_PXE_BASE_CODE_PACKET     *NewPxeDiscover,  OPTIONAL
    390  1.1  jakllsch     IN EFI_PXE_BASE_CODE_PACKET     *NewPxeReply,     OPTIONAL
    391  1.1  jakllsch     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  jakllsch #define EFI_PXE_BASE_CODE_INTERFACE_REVISION    0x00010000
    399  1.1  jakllsch 
    400  1.1  jakllsch typedef struct _EFI_PXE_BASE_CODE {
    401  1.1  jakllsch     UINT64                              Revision;
    402  1.1  jakllsch     EFI_PXE_BASE_CODE_START             Start;
    403  1.1  jakllsch     EFI_PXE_BASE_CODE_STOP              Stop;
    404  1.1  jakllsch     EFI_PXE_BASE_CODE_DHCP              Dhcp;
    405  1.1  jakllsch     EFI_PXE_BASE_CODE_DISCOVER          Discover;
    406  1.1  jakllsch     EFI_PXE_BASE_CODE_MTFTP             Mtftp;
    407  1.1  jakllsch     EFI_PXE_BASE_CODE_UDP_WRITE         UdpWrite;
    408  1.1  jakllsch     EFI_PXE_BASE_CODE_UDP_READ          UdpRead;
    409  1.1  jakllsch     EFI_PXE_BASE_CODE_SET_IP_FILTER     SetIpFilter;
    410  1.1  jakllsch     EFI_PXE_BASE_CODE_ARP               Arp;
    411  1.1  jakllsch     EFI_PXE_BASE_CODE_SET_PARAMETERS    SetParameters;
    412  1.1  jakllsch     EFI_PXE_BASE_CODE_SET_STATION_IP    SetStationIp;
    413  1.1  jakllsch     EFI_PXE_BASE_CODE_SET_PACKETS       SetPackets;
    414  1.1  jakllsch     EFI_PXE_BASE_CODE_MODE              *Mode;
    415  1.1  jakllsch } EFI_PXE_BASE_CODE;
    416  1.1  jakllsch 
    417  1.1  jakllsch //
    418  1.1  jakllsch // Call Back Definitions
    419  1.1  jakllsch //
    420  1.1  jakllsch 
    421  1.1  jakllsch #define EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL \
    422  1.1  jakllsch     { 0x245dca21, 0xfb7b, 0x11d3, {0x8f, 0x01, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
    423  1.1  jakllsch 
    424  1.1  jakllsch //
    425  1.1  jakllsch // Revision Number
    426  1.1  jakllsch //
    427  1.1  jakllsch 
    428  1.1  jakllsch #define EFI_PXE_BASE_CODE_CALLBACK_INTERFACE_REVISION   0x00010000
    429  1.1  jakllsch 
    430  1.1  jakllsch INTERFACE_DECL(_EFI_PXE_BASE_CODE_CALLBACK);
    431  1.1  jakllsch 
    432  1.1  jakllsch typedef enum {
    433  1.1  jakllsch     EFI_PXE_BASE_CODE_FUNCTION_FIRST,
    434  1.1  jakllsch     EFI_PXE_BASE_CODE_FUNCTION_DHCP,
    435  1.1  jakllsch     EFI_PXE_BASE_CODE_FUNCTION_DISCOVER,
    436  1.1  jakllsch     EFI_PXE_BASE_CODE_FUNCTION_MTFTP,
    437  1.1  jakllsch     EFI_PXE_BASE_CODE_FUNCTION_UDP_WRITE,
    438  1.1  jakllsch     EFI_PXE_BASE_CODE_FUNCTION_UDP_READ,
    439  1.1  jakllsch     EFI_PXE_BASE_CODE_FUNCTION_ARP,
    440  1.1  jakllsch     EFI_PXE_BASE_CODE_FUNCTION_IGMP,
    441  1.1  jakllsch     EFI_PXE_BASE_CODE_PXE_FUNCTION_LAST
    442  1.1  jakllsch } EFI_PXE_BASE_CODE_FUNCTION;
    443  1.1  jakllsch 
    444  1.1  jakllsch typedef enum {
    445  1.1  jakllsch     EFI_PXE_BASE_CODE_CALLBACK_STATUS_FIRST,
    446  1.1  jakllsch     EFI_PXE_BASE_CODE_CALLBACK_STATUS_CONTINUE,
    447  1.1  jakllsch     EFI_PXE_BASE_CODE_CALLBACK_STATUS_ABORT,
    448  1.1  jakllsch     EFI_PXE_BASE_CODE_CALLBACK_STATUS_LAST
    449  1.1  jakllsch } EFI_PXE_BASE_CODE_CALLBACK_STATUS;
    450  1.1  jakllsch 
    451  1.1  jakllsch typedef
    452  1.1  jakllsch EFI_PXE_BASE_CODE_CALLBACK_STATUS
    453  1.1  jakllsch (EFIAPI *EFI_PXE_CALLBACK) (
    454  1.1  jakllsch     IN struct _EFI_PXE_BASE_CODE_CALLBACK   *This,
    455  1.1  jakllsch     IN EFI_PXE_BASE_CODE_FUNCTION           Function,
    456  1.1  jakllsch     IN BOOLEAN                              Received,
    457  1.1  jakllsch     IN UINT32                               PacketLen,
    458  1.1  jakllsch     IN EFI_PXE_BASE_CODE_PACKET             *Packet     OPTIONAL
    459  1.1  jakllsch     );
    460  1.1  jakllsch 
    461  1.1  jakllsch typedef struct _EFI_PXE_BASE_CODE_CALLBACK {
    462  1.1  jakllsch     UINT64                      Revision;
    463  1.1  jakllsch     EFI_PXE_CALLBACK            Callback;
    464  1.1  jakllsch } EFI_PXE_BASE_CODE_CALLBACK;
    465  1.1  jakllsch 
    466  1.1  jakllsch #endif /* _EFIPXEBC_H */
    467