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