1 /* ----------------------------------------------------------------------- * 2 * 3 * Copyright 2007-2008 H. Peter Anvin - All Rights Reserved 4 * 5 * Permission is hereby granted, free of charge, to any person 6 * obtaining a copy of this software and associated documentation 7 * files (the "Software"), to deal in the Software without 8 * restriction, including without limitation the rights to use, 9 * copy, modify, merge, publish, distribute, sublicense, and/or 10 * sell copies of the Software, and to permit persons to whom 11 * the Software is furnished to do so, subject to the following 12 * conditions: 13 * 14 * The above copyright notice and this permission notice shall 15 * be included in all copies or substantial portions of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 19 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 21 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 22 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 23 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 24 * OTHER DEALINGS IN THE SOFTWARE. 25 * 26 * ----------------------------------------------------------------------- */ 27 28 /* 29 * syslinux/pxe_api.h 30 * 31 * PXE type and constant definitions for SYSLINUX 32 */ 33 34 #ifndef _SYSLINUX_PXE_API_H 35 #define _SYSLINUX_PXE_API_H 36 37 #include <stdint.h> 38 #include <netinet/in.h> 39 #include <klibc/compiler.h> 40 #include <com32.h> 41 42 /* PXE spec structures and definitions. These mostly follow the PXE 43 spec, except when the PXE spec is unnecessarily stupid. Of course, 44 that is most of the time. */ 45 46 /* Basic types; use Unix-like _t convention instead of SCREAMING; also 47 re-use types we already have, like in_addr_t. */ 48 49 typedef uint16_t pxenv_status_t; 50 51 #define MAC_ADDR_LEN 16 52 typedef uint8_t mac_addr_t[MAC_ADDR_LEN]; 53 54 /* "Protected mode segment descriptor" according to PXE... */ 55 typedef struct { 56 uint16_t sel; 57 uint32_t base; 58 uint16_t size; 59 } __packed pxe_segdesc_t; 60 61 typedef far_ptr_t segoff16_t; 62 63 typedef struct { 64 uint8_t opcode; 65 #define BOOTP_REQ 1 66 #define BOOTP_REP 2 67 uint8_t Hardware; 68 uint8_t Hardlen; 69 uint8_t Gatehops; 70 uint32_t ident; 71 uint16_t seconds; 72 uint16_t Flags; 73 #define BOOTP_BCAST 0x8000 74 in_addr_t cip; /* Client IP address */ 75 in_addr_t yip; /* You IP address */ 76 in_addr_t sip; /* next server IP address */ 77 in_addr_t gip; /*relay agent IP address */ 78 mac_addr_t CAddr; 79 uint8_t Sname[64]; 80 uint8_t bootfile[128]; 81 union { 82 #define BOOTP_DHCPVEND 1024 83 uint8_t d[BOOTP_DHCPVEND]; 84 struct { 85 uint8_t magic[4]; 86 #define VM_RFC1048 0x63825363L 87 uint32_t flags; 88 uint8_t pad[56]; 89 } v; 90 } vendor; 91 } __packed pxe_bootp_t; 92 93 /* Function calling structures and constants */ 94 95 typedef struct s_PXENV_GET_CACHED_INFO { 96 pxenv_status_t Status; 97 uint16_t PacketType; 98 #define PXENV_PACKET_TYPE_DHCP_DISCOVER 1 99 #define PXENV_PACKET_TYPE_DHCP_ACK 2 100 #define PXENV_PACKET_TYPE_CACHED_REPLY 3 101 uint16_t BufferSize; 102 segoff16_t Buffer; 103 uint16_t BufferLimit; 104 } __packed t_PXENV_GET_CACHED_INFO; 105 106 typedef struct s_PXENV_START_UNDI { 107 pxenv_status_t Status; 108 uint16_t AX; 109 uint16_t BX; 110 uint16_t DX; 111 uint16_t DI; 112 uint16_t ES; 113 } __packed t_PXENV_START_UNDI; 114 115 typedef struct s_PXENV_STOP_UNDI { 116 pxenv_status_t Status; 117 } __packed t_PXENV_STOP_UNDI; 118 119 typedef struct s_PXENV_START_BASE { 120 pxenv_status_t Status; 121 } __packed t_PXENV_START_BASE; 122 123 typedef struct s_PXENV_STOP_BASE { 124 pxenv_status_t Status; 125 } __packed t_PXENV_STOP_BASE; 126 127 typedef struct s_PXENV_TFTP_OPEN { 128 pxenv_status_t Status; 129 in_addr_t ServerIPAddress; 130 in_addr_t GatewayIPAddress; 131 uint8_t FileName[128]; 132 in_port_t TFTPPort; 133 uint16_t PacketSize; 134 } __packed t_PXENV_TFTP_OPEN; 135 136 typedef struct s_PXENV_TFTP_CLOSE { 137 pxenv_status_t Status; 138 } __packed t_PXENV_TFTP_CLOSE; 139 140 typedef struct s_PXENV_TFTP_READ { 141 pxenv_status_t Status; 142 uint16_t PacketNumber; 143 uint16_t BufferSize; 144 segoff16_t Buffer; 145 } __packed t_PXENV_TFTP_READ; 146 147 typedef struct s_PXENV_TFTP_READ_FILE { 148 pxenv_status_t Status; 149 uint8_t FileName[128]; 150 uint32_t BufferSize; 151 void *Buffer; 152 in_addr_t ServerIPAddress; 153 in_addr_t GatewayIPAddress; 154 in_addr_t McastIPAddress; 155 in_port_t TFTPClntPort; 156 in_port_t TFTPSrvPort; 157 uint16_t TFTPOpenTimeOut; 158 uint16_t TFTPReopenDelay; 159 } __packed t_PXENV_TFTP_READ_FILE; 160 161 typedef struct s_PXENV_TFTP_GET_FSIZE { 162 pxenv_status_t Status; 163 in_addr_t ServerIPAddress; 164 in_addr_t GatewayIPAddress; 165 uint8_t FileName[128]; 166 uint32_t FileSize; 167 } __packed t_PXENV_TFTP_GET_FSIZE; 168 169 typedef struct s_PXENV_UDP_OPEN { 170 pxenv_status_t status; 171 in_addr_t src_ip; 172 } __packed t_PXENV_UDP_OPEN; 173 174 typedef struct s_PXENV_UDP_CLOSE { 175 pxenv_status_t status; 176 } __packed t_PXENV_UDP_CLOSE; 177 178 typedef struct s_PXENV_UDP_WRITE { 179 pxenv_status_t status; 180 in_addr_t ip; 181 in_addr_t gw; 182 in_port_t src_port; 183 in_port_t dst_port; 184 uint16_t buffer_size; 185 segoff16_t buffer; 186 } __packed t_PXENV_UDP_WRITE; 187 188 typedef struct s_PXENV_UDP_READ { 189 pxenv_status_t status; 190 in_addr_t src_ip; 191 in_addr_t dest_ip; 192 in_port_t s_port; 193 in_port_t d_port; 194 uint16_t buffer_size; 195 segoff16_t buffer; 196 } __packed t_PXENV_UDP_READ; 197 198 typedef struct s_PXENV_UNDI_STARTUP { 199 pxenv_status_t Status; 200 } __packed t_PXENV_UNDI_STARTUP; 201 202 typedef struct s_PXENV_UNDI_CLEANUP { 203 pxenv_status_t Status; 204 } __packed t_PXENV_UNDI_CLEANUP; 205 206 typedef struct s_PXENV_UNDI_INITIALIZE { 207 pxenv_status_t Status; 208 void *ProtocolIni; 209 uint8_t reserved[8]; 210 } __packed t_PXENV_UNDI_INITIALIZE; 211 212 #define MAXNUM_MCADDR 8 213 typedef struct s_PXENV_UNDI_MCAST_ADDRESS { 214 uint16_t MCastAddrCount; 215 mac_addr_t McastAddr[MAXNUM_MCADDR]; 216 } __packed t_PXENV_UNDI_MCAST_ADDRESS; 217 218 typedef struct s_PXENV_UNDI_RESET { 219 pxenv_status_t Status; 220 t_PXENV_UNDI_MCAST_ADDRESS R_Mcast_Buf; 221 } __packed t_PXENV_UNDI_RESET; 222 223 typedef struct s_PXENV_UNDI_SHUTDOWN { 224 pxenv_status_t Status; 225 } __packed t_PXENV_UNDI_SHUTDOWN; 226 227 typedef struct s_PXENV_UNDI_OPEN { 228 pxenv_status_t Status; 229 uint16_t OpenFlag; 230 uint16_t PktFilter; 231 #define FLTR_DIRECTED 0x0001 232 #define FLTR_BRDCST 0x0002 233 #define FLTR_PRMSCS 0x0004 234 #define FLTR_SRC_RTG 0x0008 235 t_PXENV_UNDI_MCAST_ADDRESS R_Mcast_Buf; 236 } __packed t_PXENV_UNDI_OPEN; 237 238 typedef struct s_PXENV_UNDI_CLOSE { 239 pxenv_status_t Status; 240 } __packed t_PXENV_UNDI_CLOSE; 241 242 typedef struct s_PXENV_UNDI_TRANSMIT { 243 pxenv_status_t Status; 244 uint8_t Protocol; 245 #define P_UNKNOWN 0 246 #define P_IP 1 247 #define P_ARP 2 248 #define P_RARP 3 249 uint8_t XmitFlag; 250 #define XMT_DESTADDR 0x0000 251 #define XMT_BROADCAST 0x0001 252 segoff16_t DestAddr; 253 segoff16_t TBD; 254 uint32_t Reserved[2]; 255 } __packed t_PXENV_UNDI_TRANSMIT; 256 #define MAX_DATA_BLKS 8 257 typedef struct s_PXENV_UNDI_TBD { 258 uint16_t ImmedLength; 259 segoff16_t Xmit; 260 uint16_t DataBlkCount; 261 struct DataBlk { 262 uint8_t TDPtrType; 263 uint8_t TDRsvdByte; 264 uint16_t TDDataLen; 265 segoff16_t TDDataPtr; 266 } DataBlock[MAX_DATA_BLKS]; 267 } __packed t_PXENV_UNDI_TBD; 268 269 typedef struct s_PXENV_UNDI_SET_MCAST_ADDRESS { 270 pxenv_status_t Status; 271 t_PXENV_UNDI_MCAST_ADDRESS R_Mcast_Buf; 272 } __packed t_PXENV_UNDI_SET_MCAST_ADDR; 273 274 typedef struct s_PXENV_UNDI_SET_STATION_ADDRESS { 275 pxenv_status_t Status; 276 mac_addr_t StationAddress; 277 } __packed t_PXENV_UNDI_SET_STATION_ADDR; 278 279 typedef struct s_PXENV_UNDI_SET_PACKET_FILTER { 280 pxenv_status_t Status; 281 uint8_t filter; 282 } __packed t_PXENV_UNDI_SET_PACKET_FILTER; 283 284 typedef struct s_PXENV_UNDI_GET_INFORMATION { 285 pxenv_status_t Status; 286 uint16_t BaseIo; 287 uint16_t IntNumber; 288 uint16_t MaxTranUnit; 289 uint16_t HwType; 290 #define ETHER_TYPE 1 291 #define EXP_ETHER_TYPE 2 292 #define IEEE_TYPE 6 293 #define ARCNET_TYPE 7 294 uint16_t HwAddrLen; 295 mac_addr_t CurrentNodeAddress; 296 mac_addr_t PermNodeAddress; 297 uint16_t ROMAddress; 298 uint16_t RxBufCt; 299 uint16_t TxBufCt; 300 } __packed t_PXENV_UNDI_GET_INFORMATION; 301 302 typedef struct s_PXENV_UNDI_GET_STATISTICS { 303 pxenv_status_t Status; 304 uint32_t XmtGoodFrames; 305 uint32_t RcvGoodFrames; 306 uint32_t RcvCRCErrors; 307 uint32_t RcvResourceErrors; 308 } __packed t_PXENV_UNDI_GET_STATISTICS; 309 310 typedef struct s_PXENV_UNDI_CLEAR_STATISTICS { 311 pxenv_status_t Status; 312 } __packed t_PXENV_UNDI_CLEAR_STATISTICS; 313 314 typedef struct s_PXENV_UNDI_INITIATE_DIAGS { 315 pxenv_status_t Status; 316 } __packed t_PXENV_UNDI_INITIATE_DIAGS; 317 318 typedef struct s_PXENV_UNDI_FORCE_INTERRUPT { 319 pxenv_status_t Status; 320 } __packed t_PXENV_UNDI_FORCE_INTERRUPT; 321 322 typedef struct s_PXENV_UNDI_GET_MCAST_ADDRESS { 323 pxenv_status_t Status; 324 in_addr_t InetAddr; 325 mac_addr_t MediaAddr; 326 } __packed t_PXENV_UNDI_GET_MCAST_ADDR; 327 328 typedef struct s_PXENV_UNDI_GET_NIC_TYPE { 329 pxenv_status_t Status; 330 uint8_t NicType; 331 #define PCI_NIC 2 332 #define PnP_NIC 3 333 #define CardBus_NIC 4 334 union { 335 struct { 336 uint16_t Vendor_ID; 337 uint16_t Dev_ID; 338 uint8_t Base_Class; 339 uint8_t Sub_Class; 340 uint8_t Prog_Intf; 341 uint8_t Rev; 342 uint16_t BusDevFunc; 343 uint16_t SubVendor_ID; 344 uint16_t SubDevice_ID; 345 } pci, cardbus; 346 struct { 347 uint32_t EISA_Dev_ID; 348 uint8_t Base_Class; 349 uint8_t Sub_Class; 350 uint8_t Prog_Intf; 351 uint16_t CardSelNum; 352 } __packed pnp; 353 } __packed info; 354 } __packed t_PXENV_UNDI_GET_NIC_TYPE; 355 356 typedef struct s_PXENV_UNDI_GET_IFACE_INFO { 357 pxenv_status_t Status; 358 uint8_t IfaceType[16]; 359 uint32_t LinkSpeed; 360 uint32_t ServiceFlags; 361 uint32_t Reserved[4]; 362 } __packed t_PXENV_UNDI_GET_IFACE_INFO; 363 #define PXE_UNDI_IFACE_FLAG_BCAST 0x00000001 364 #define PXE_UNDI_IFACE_FLAG_MCAST 0x00000002 365 #define PXE_UNDI_IFACE_FLAG_GROUP 0x00000004 366 #define PXE_UNDI_IFACE_FLAG_PROMISC 0x00000008 367 #define PXE_UNDI_IFACE_FLAG_SOFTMAC 0x00000010 368 #define PXE_UNDI_IFACE_FLAG_STATS 0x00000020 369 #define PXE_UNDI_IFACE_FLAG_DIAGS 0x00000040 370 #define PXE_UNDI_IFACE_FLAG_LOOPBACK 0x00000080 371 #define PXE_UNDI_IFACE_FLAG_RCVCHAIN 0x00000100 372 #define PXE_UNDI_IFACE_FLAG_IBMSRCRT 0x00000200 373 #define PXE_UNDI_IFACE_FLAG_RESET 0x00000400 374 #define PXE_UNDI_IFACE_FLAG_OPEN 0x00000800 375 #define PXE_UNDI_IFACE_FLAG_IRQ 0x00001000 376 #define PXE_UNDI_IFACE_FLAG_SRCRT 0x00002000 377 #define PXE_UNDI_IFACE_FLAG_GDTVIRT 0x00004000 378 #define PXE_UNDI_IFACE_FLAG_MULTI 0x00008000 379 #define PXE_UNDI_IFACE_FLAG_LKFISZ 0x00010000 380 381 typedef struct s_PXENV_UNDI_GET_STATE { 382 #define PXE_UNDI_GET_STATE_STARTED 1 383 #define PXE_UNDI_GET_STATE_INITIALIZED 2 384 #define PXE_UNDI_GET_STATE_OPENED 3 385 pxenv_status_t Status; 386 uint8_t UNDIstate; 387 } __packed t_PXENV_UNDI_GET_STATE; 388 389 typedef struct s_PXENV_UNDI_ISR { 390 pxenv_status_t Status; 391 uint16_t FuncFlag; 392 uint16_t BufferLength; 393 uint16_t FrameLength; 394 uint16_t FrameHeaderLength; 395 segoff16_t Frame; 396 uint8_t ProtType; 397 uint8_t PktType; 398 } __packed t_PXENV_UNDI_ISR; 399 400 typedef struct s_PXENV_FILE_API_CHECK { 401 pxenv_status_t Status; 402 uint16_t Size; 403 uint32_t Magic; 404 uint32_t Provider; 405 uint32_t APIMask; 406 uint32_t Flags; 407 } __packed t_PXENV_FILE_API_CHECK; 408 409 typedef struct s_PXENV_FILE_READ { 410 pxenv_status_t Status; 411 uint16_t FileHandle; 412 uint16_t BufferSize; 413 segoff16_t Buffer; 414 } __packed t_PXENV_FILE_READ; 415 416 typedef struct s_PXENV_FILE_OPEN { 417 pxenv_status_t Status; 418 uint16_t FileHandle; 419 segoff16_t FileName; 420 uint32_t Reserved; 421 } __packed t_PXENV_FILE_OPEN; 422 423 typedef struct s_PXENV_FILE_CLOSE { 424 pxenv_status_t Status; 425 uint16_t FileHandle; 426 } __packed t_PXENV_FILE_CLOSE; 427 428 typedef struct s_PXENV_GET_FILE_SIZE { 429 pxenv_status_t Status; 430 uint16_t FileHandle; 431 uint32_t FileSize; 432 } __packed t_PXENV_GET_FILE_SIZE; 433 434 typedef struct s_PXENV_UNLOAD_STACK { 435 pxenv_status_t Status; 436 uint8_t reserved[10]; 437 } __packed t_PXENV_UNLOAD_STACK; 438 439 #define PXENV_UNDI_ISR_IN_START 1 440 #define PXENV_UNDI_ISR_IN_PROCESS 2 441 #define PXENV_UNDI_ISR_IN_GET_NEXT 3 442 /* One of these will be returned for 443 PXENV_UNDI_ISR_IN_START */ 444 #define PXENV_UNDI_ISR_OUT_OURS 0 445 #define PXENV_UNDI_USR_OUT_NOT_OURS 1 446 /* One of these will be returned for 447 PXENV_UNDI_ISR_IN_PROCESS and 448 PXENV_UNDI_ISR_IN_GET_NEXT */ 449 #define PXENV_UNDI_ISR_OUT_DONE 0 450 #define PXENV_UNDI_ISR_OUT_TRANSMIT 2 451 #define PXENV_UNDI_ISR_OUT_RECEIVE 3 452 #define PXENV_UNDI_ISR_OUT_BUSY 4 453 454 /* Function numbers and error codes */ 455 456 #define PXENV_TFTP_OPEN 0x0020 457 #define PXENV_TFTP_CLOSE 0x0021 458 #define PXENV_TFTP_READ 0x0022 459 #define PXENV_TFTP_READ_FILE 0x0023 460 #define PXENV_TFTP_READ_FILE_PMODE 0x0024 461 #define PXENV_TFTP_GET_FSIZE 0x0025 462 463 #define PXENV_UDP_OPEN 0x0030 464 #define PXENV_UDP_CLOSE 0x0031 465 #define PXENV_UDP_READ 0x0032 466 #define PXENV_UDP_WRITE 0x0033 467 468 #define PXENV_START_UNDI 0x0000 469 #define PXENV_UNDI_STARTUP 0x0001 470 #define PXENV_UNDI_CLEANUP 0x0002 471 #define PXENV_UNDI_INITIALIZE 0x0003 472 #define PXENV_UNDI_RESET_NIC 0x0004 473 #define PXENV_UNDI_SHUTDOWN 0x0005 474 #define PXENV_UNDI_OPEN 0x0006 475 #define PXENV_UNDI_CLOSE 0x0007 476 #define PXENV_UNDI_TRANSMIT 0x0008 477 #define PXENV_UNDI_SET_MCAST_ADDR 0x0009 478 #define PXENV_UNDI_SET_STATION_ADDR 0x000A 479 #define PXENV_UNDI_SET_PACKET_FILTER 0x000B 480 #define PXENV_UNDI_GET_INFORMATION 0x000C 481 #define PXENV_UNDI_GET_STATISTICS 0x000D 482 #define PXENV_UNDI_CLEAR_STATISTICS 0x000E 483 #define PXENV_UNDI_INITIATE_DIAGS 0x000F 484 #define PXENV_UNDI_FORCE_INTERRUPT 0x0010 485 #define PXENV_UNDI_GET_MCAST_ADDR 0x0011 486 #define PXENV_UNDI_GET_NIC_TYPE 0x0012 487 #define PXENV_UNDI_GET_IFACE_INFO 0x0013 488 #define PXENV_UNDI_ISR 0x0014 489 #define PXENV_STOP_UNDI 0x0015 /* Overlap...? */ 490 #define PXENV_UNDI_GET_STATE 0x0015 /* Overlap...? */ 491 492 #define PXENV_UNLOAD_STACK 0x0070 493 #define PXENV_GET_CACHED_INFO 0x0071 494 #define PXENV_RESTART_DHCP 0x0072 495 #define PXENV_RESTART_TFTP 0x0073 496 #define PXENV_MODE_SWITCH 0x0074 497 #define PXENV_START_BASE 0x0075 498 #define PXENV_STOP_BASE 0x0076 499 500 /* gPXE extensions... */ 501 #define PXENV_FILE_OPEN 0x00e0 502 #define PXENV_FILE_CLOSE 0x00e1 503 #define PXENV_FILE_SELECT 0x00e2 504 #define PXENV_FILE_READ 0x00e3 505 #define PXENV_GET_FILE_SIZE 0x00e4 506 #define PXENV_FILE_EXEC 0x00e5 507 #define PXENV_FILE_API_CHECK 0x00e6 508 509 /* Exit codes */ 510 #define PXENV_EXIT_SUCCESS 0x0000 511 #define PXENV_EXIT_FAILURE 0x0001 512 513 /* Status codes */ 514 #define PXENV_STATUS_SUCCESS 0x00 515 #define PXENV_STATUS_FAILURE 0x01 516 #define PXENV_STATUS_BAD_FUNC 0x02 517 #define PXENV_STATUS_UNSUPPORTED 0x03 518 #define PXENV_STATUS_KEEP_UNDI 0x04 519 #define PXENV_STATUS_KEEP_ALL 0x05 520 #define PXENV_STATUS_OUT_OF_RESOURCES 0x06 521 #define PXENV_STATUS_ARP_TIMEOUT 0x11 522 #define PXENV_STATUS_UDP_CLOSED 0x18 523 #define PXENV_STATUS_UDP_OPEN 0x19 524 #define PXENV_STATUS_TFTP_CLOSED 0x1a 525 #define PXENV_STATUS_TFTP_OPEN 0x1b 526 #define PXENV_STATUS_MCOPY_PROBLEM 0x20 527 #define PXENV_STATUS_BIS_INTEGRITY_FAILURE 0x21 528 #define PXENV_STATUS_BIS_VALIDATE_FAILURE 0x22 529 #define PXENV_STATUS_BIS_INIT_FAILURE 0x23 530 #define PXENV_STATUS_BIS_SHUTDOWN_FAILURE 0x24 531 #define PXENV_STATUS_BIS_GBOA_FAILURE 0x25 532 #define PXENV_STATUS_BIS_FREE_FAILURE 0x26 533 #define PXENV_STATUS_BIS_GSI_FAILURE 0x27 534 #define PXENV_STATUS_BIS_BAD_CKSUM 0x28 535 #define PXENV_STATUS_TFTP_CANNOT_ARP_ADDRESS 0x30 536 #define PXENV_STATUS_TFTP_OPEN_TIMEOUT 0x32 537 538 #define PXENV_STATUS_TFTP_UNKNOWN_OPCODE 0x33 539 #define PXENV_STATUS_TFTP_READ_TIMEOUT 0x35 540 #define PXENV_STATUS_TFTP_ERROR_OPCODE 0x36 541 #define PXENV_STATUS_TFTP_CANNOT_OPEN_CONNECTION 0x38 542 #define PXENV_STATUS_TFTP_CANNOT_READ_FROM_CONNECTION 0x39 543 #define PXENV_STATUS_TFTP_TOO_MANY_PACKAGES 0x3a 544 #define PXENV_STATUS_TFTP_FILE_NOT_FOUND 0x3b 545 #define PXENV_STATUS_TFTP_ACCESS_VIOLATION 0x3c 546 #define PXENV_STATUS_TFTP_NO_MCAST_ADDRESS 0x3d 547 #define PXENV_STATUS_TFTP_NO_FILESIZE 0x3e 548 #define PXENV_STATUS_TFTP_INVALID_PACKET_SIZE 0x3f 549 #define PXENV_STATUS_DHCP_TIMEOUT 0x51 550 #define PXENV_STATUS_DHCP_NO_IP_ADDRESS 0x52 551 #define PXENV_STATUS_DHCP_NO_BOOTFILE_NAME 0x53 552 #define PXENV_STATUS_DHCP_BAD_IP_ADDRESS 0x54 553 #define PXENV_STATUS_UNDI_INVALID_FUNCTION 0x60 554 #define PXENV_STATUS_UNDI_MEDIATEST_FAILED 0x61 555 #define PXENV_STATUS_UNDI_CANNOT_INIT_NIC_FOR_MCAST 0x62 556 #define PXENV_STATUS_UNDI_CANNOT_INITIALIZE_NIC 0x63 557 #define PXENV_STATUS_UNDI_CANNOT_INITIALIZE_PHY 0x64 558 #define PXENV_STATUS_UNDI_CANNOT_READ_CONFIG_DATA 0x65 559 #define PXENV_STATUS_UNDI_CANNOT_READ_INIT_DATA 0x66 560 #define PXENV_STATUS_UNDI_BAD_MAC_ADDRESS 0x67 561 #define PXENV_STATUS_UNDI_BAD_EEPROM_CHECKSUM 0x68 562 #define PXENV_STATUS_UNDI_ERROR_SETTING_ISR 0x69 563 #define PXENV_STATUS_UNDI_INVALID_STATE 0x6a 564 #define PXENV_STATUS_UNDI_TRANSMIT_ERROR 0x6b 565 #define PXENV_STATUS_UNDI_INVALID_PARAMETER 0x6c 566 #define PXENV_STATUS_BSTRAP_PROMPT_MENU 0x74 567 #define PXENV_STATUS_BSTRAP_MCAST_ADDR 0x76 568 #define PXENV_STATUS_BSTRAP_MISSING_LIST 0x77 569 #define PXENV_STATUS_BSTRAP_NO_RESPONSE 0x78 570 #define PXENV_STATUS_BSTRAP_FILE_TOO_BIG 0x79 571 #define PXENV_STATUS_BINL_CANCELED_BY_KEYSTROKE 0xa0 572 #define PXENV_STATUS_BINL_NO_PXE_SERVER 0xa1 573 #define PXENV_STATUS_NOT_AVAILABLE_IN_PMODE 0xa2 574 #define PXENV_STATUS_NOT_AVAILABLE_IN_RMODE 0xa3 575 #define PXENV_STATUS_BUSD_DEVICE_NOT_SUPPORTED 0xb0 576 #define PXENV_STATUS_LOADER_NO_FREE_BASE_MEMORY 0xc0 577 #define PXENV_STATUS_LOADER_NO_BC_ROMID 0xc1 578 #define PXENV_STATUS_LOADER_BAD_BC_ROMID 0xc2 579 #define PXENV_STATUS_LOADER_BAD_BC_RUNTIME_IMAGE 0xc3 580 #define PXENV_STATUS_LOADER_NO_UNDI_ROMID 0xc4 581 #define PXENV_STATUS_LOADER_BAD_UNDI_ROMID 0xc5 582 #define PXENV_STATUS_LOADER_BAD_UNDI_DRIVER_IMAGE 0xc6 583 #define PXENV_STATUS_LOADER_NO_PXE_STRUCT 0xc8 584 #define PXENV_STATUS_LOADER_NO_PXENV_STRUCT 0xc9 585 #define PXENV_STATUS_LOADER_UNDI_START 0xca 586 #define PXENV_STATUS_LOADER_BC_START 0xcb 587 588 int __weak pxe_call(int, void *); 589 void __weak unload_pxe(uint16_t flags); 590 uint32_t __weak dns_resolv(const char *); 591 592 extern uint32_t __weak SendCookies; 593 void __weak http_bake_cookies(void); 594 595 #endif /* _SYSLINUX_PXE_API_H */ 596