1 #ifndef _PXE_ 2 #define _PXE_ 3 4 /* Basic types */ 5 6 typedef UINT16 OFF16; 7 typedef UINT16 PXENV_EXIT; 8 typedef UINT16 PXENV_STATUS; 9 typedef UINT16 SEGSEL; 10 typedef UINT16 UDP_PORT; 11 typedef UINT32 ADDR32; 12 13 #include <pshpack1.h> 14 15 #define IP_ADDR_LEN 4 16 typedef union 17 { 18 UINT32 num; 19 UINT8 array[IP_ADDR_LEN]; 20 } IP4; 21 22 #define MAC_ADDR_LEN 16 23 typedef UINT8 MAC_ADDR[MAC_ADDR_LEN]; 24 25 typedef struct s_SEGDESC 26 { 27 UINT16 segment_address; 28 UINT32 physical_address; 29 UINT16 seg_size; 30 } SEGDESC; 31 32 typedef struct s_SEGOFF16 33 { 34 OFF16 offset; 35 SEGSEL segment; 36 } SEGOFF16; 37 38 typedef struct s_PXE 39 { 40 UINT8 Signature[4]; 41 UINT8 StructLength; 42 UINT8 StructCksum; 43 UINT8 StructRev; 44 UINT8 reserved1; 45 SEGOFF16 UNDIROMID; 46 SEGOFF16 BaseROMID; 47 SEGOFF16 EntryPointSP; 48 SEGOFF16 EntryPointESP; 49 SEGOFF16 StatusCallout; 50 UINT8 reserved2; 51 UINT8 SegDescCnt; 52 SEGSEL FirstSelector; 53 SEGDESC Stack; 54 SEGDESC UNDIData; 55 SEGDESC UNDICode; 56 SEGDESC UNDICodeWrite; 57 SEGDESC BC_Data; 58 SEGDESC BC_Code; 59 SEGDESC BC_CodeWrite; 60 } PXE, *PPXE; 61 62 /* PXENV structures */ 63 64 typedef struct s_PXENV_START_UNDI 65 { 66 PXENV_STATUS Status; 67 UINT16 AX; 68 UINT16 BX; 69 UINT16 DX; 70 UINT16 DI; 71 UINT16 ES; 72 } t_PXENV_START_UNDI; 73 74 typedef struct s_PXENV_UNDI_STARTUP 75 { 76 PXENV_STATUS Status; 77 } t_PXENV_UNDI_STARTUP; 78 79 typedef struct s_PXENV_UNDI_CLEANUP 80 { 81 PXENV_STATUS Status; 82 } t_PXENV_UNDI_CLEANUP; 83 84 typedef struct s_PXENV_UNDI_INITIALIZE 85 { 86 PXENV_STATUS Status; 87 ADDR32 ProtocolIni; 88 UINT8 reserved[8]; 89 } t_PXENV_UNDI_INITIALIZE; 90 91 #define MAXNUM_MCADDR 8 92 typedef struct s_PXENV_UNDI_MCAST_ADDRESS 93 { 94 UINT16 MCastAddrCount; 95 MAC_ADDR McastAddr[MAXNUM_MCADDR]; 96 } t_PXENV_UNDI_MCAST_ADDRESS; 97 98 typedef struct s_PXENV_UNDI_RESET 99 { 100 PXENV_STATUS Status; 101 t_PXENV_UNDI_MCAST_ADDRESS R_Mcast_Buf; 102 } t_PXENV_UNDI_RESET; 103 104 typedef struct s_PXENV_UNDI_SHUTDOWN 105 { 106 PXENV_STATUS Status; 107 } t_PXENV_UNDI_SHUTDOWN; 108 109 typedef struct s_PXENV_UNDI_OPEN 110 { 111 PXENV_STATUS Status; 112 UINT16 OpenFlag; 113 UINT16 PktFilter; 114 #define FLTR_DIRECTED 0x01 115 #define FLTR_BRDCST 0x02 116 #define FLTR_PRMSCS 0x04 117 #define FLTR_SRC_RTG 0x08 118 119 t_PXENV_UNDI_MCAST_ADDRESS R_Mcast_Buf; 120 } t_PXENV_UNDI_OPEN; 121 122 typedef struct s_PXENV_UNDI_CLOSE 123 { 124 PXENV_STATUS Status; 125 } t_PXENV_UNDI_CLOSE; 126 127 typedef struct s_PXENV_UNDI_TRANSMIT 128 { 129 PXENV_STATUS Status; 130 UINT8 Protocol; 131 #define P_UNKNOWN 0 132 #define P_IP 1 133 #define P_ARP 2 134 #define P_RARP 3 135 136 UINT8 XmitFlag; 137 #define XMT_DESTADDR 0x00 138 #define XMT_BROADCAST 0x01 139 140 SEGOFF16 DestAddr; 141 SEGOFF16 TBD; 142 UINT32 Reserved[2]; 143 } t_PXENV_UNDI_TRANSMIT; 144 145 #define MAX_DATA_BLKS 8 146 typedef struct s_PXENV_UNDI_TBD 147 { 148 UINT16 ImmedLength; 149 SEGOFF16 Xmit; 150 UINT16 DataBlkCount; 151 struct DataBlk 152 { 153 UINT8 TDPtrType; 154 UINT8 TDRsvdByte; 155 UINT8 TDDataLen; 156 SEGOFF16 TDDataPtr; 157 } DataBlock[MAX_DATA_BLKS]; 158 } t_PXENV_UNDI_TBD; 159 160 typedef struct s_PXENV_UNDI_SET_MCAST_ADDRESS 161 { 162 PXENV_STATUS Status; 163 t_PXENV_UNDI_MCAST_ADDRESS R_Mcast_Buf; 164 } t_PXENV_UNDI_SET_MCAST_ADDRESS; 165 166 typedef struct s_PXENV_UNDI_SET_STATION_ADDRESS 167 { 168 PXENV_STATUS Status; 169 MAC_ADDR StationAddress; 170 } t_PXENV_UNDI_SET_STATION_ADDRESS; 171 172 typedef struct s_PXENV_UNDI_SET_PACKET_FILTER 173 { 174 PXENV_STATUS Status; 175 UINT8 filter; 176 } t_PXENV_UNDI_SET_PACKET_FILTER; 177 178 typedef struct s_PXENV_UNDI_GET_INFORMATION 179 { 180 PXENV_STATUS Status; 181 UINT16 BaseIo; 182 UINT16 IntNumber; 183 UINT16 MaxTranUnit; 184 UINT16 HwType; 185 #define ETHER_TYPE 1 186 #define EXP_ETHER_TYPE 2 187 #define IEEE_TYPE 3 188 #define ARCNET_TYPE 4 189 190 UINT16 HwAddrLen; 191 MAC_ADDR CurrentNodeAddress; 192 MAC_ADDR PermNodeAddress; 193 SEGSEL ROMAddress; 194 UINT16 RxBufCt; 195 UINT16 TxBufCt; 196 } t_PXENV_UNDI_GET_INFORMATION; 197 198 typedef struct s_PXENV_UNDI_GET_STATISTICS 199 { 200 PXENV_STATUS Status; 201 UINT32 XmtGoodFrames; 202 UINT32 RcvGoodFrames; 203 UINT32 RcvCRCErrors; 204 UINT32 RcvResourceErrors; 205 } t_PXENV_UNDI_GET_STATISTICS; 206 207 typedef struct s_PXENV_UNDI_CLEAR_STATISTICS 208 { 209 PXENV_STATUS Status; 210 } t_PXENV_UNDI_CLEAR_STATISTICS; 211 212 typedef struct s_PXENV_UNDI_INITIATE_DIAGS 213 { 214 PXENV_STATUS Status; 215 } t_PXENV_UNDI_INITIATE_DIAGS; 216 217 typedef struct s_PXENV_UNDI_FORCE_INTERRUPT 218 { 219 PXENV_STATUS Status; 220 } t_PXENV_UNDI_FORCE_INTERRUPT; 221 222 typedef struct s_PXENV_UNDI_GET_MCAST_ADDRESS 223 { 224 PXENV_STATUS Status; 225 IP4 InetAddr; 226 MAC_ADDR MediaAddr; 227 } t_PXENV_UNDI_GET_MCAST_ADDRESS; 228 229 typedef struct s_PXENV_UNDI_GET_NIC_TYPE 230 { 231 PXENV_STATUS Status; 232 UINT8 NicType; 233 #define PCI_NIC 2 234 #define PnP_NIC 3 235 #define CardBus_NIC 4 236 237 union 238 { 239 struct 240 { 241 UINT16 Vendor_ID; 242 UINT16 Dev_ID; 243 UINT8 Base_Class; 244 UINT8 Sub_Class; 245 UINT8 Prog_Intf; 246 UINT8 Rev; 247 UINT16 BusDevFunc; 248 UINT16 SubVendor_ID; 249 UINT16 SubDevice_ID; 250 } pci, cardbus; 251 struct 252 { 253 UINT32 EISA_Dev_ID; 254 UINT8 Base_Class; 255 UINT8 Sub_Class; 256 UINT8 Prog_Intf; 257 UINT16 CardSelNum; 258 } pnp; 259 } info; 260 } t_PXENV_UNDI_GET_NIC_TYPE; 261 262 typedef struct s_PXENV_UNDI_GET_IFACE_INFO 263 { 264 PXENV_STATUS Status; 265 UINT8 IfaceType[16]; 266 UINT32 LinkSpeed; 267 UINT32 ServiceFlags; 268 UINT32 Reserved[4]; 269 } t_PXENV_UNDI_GET_IFACE_INFO; 270 271 typedef struct s_PXENV_UNDI_ISR 272 { 273 PXENV_STATUS Status; 274 UINT16 FuncFlag; 275 UINT16 BufferLength; 276 UINT16 FrameLength; 277 UINT16 FrameHeaderLength; 278 SEGOFF16 Frame; 279 UINT8 ProtType; 280 UINT8 PktType; 281 } t_PXENV_UNDI_ISR; 282 283 #define PXENV_UNDI_ISR_IN_START 1 284 #define PXENV_UNDI_ISR_IN_PROCESS 2 285 #define PXENV_UNDI_ISR_IN_GET_NEXT 3 286 287 /* One of these will be returned for PXENV_UNDI_ISR_IN_START */ 288 #define PXENV_UNDI_ISR_OUT_OURS 0 289 #define PXENV_UNDI_ISR_OUT_NOT_OURS 1 290 291 /* One of these will be returned for PXENV_UNDI_ISR_IN_PROCESS and PXENV_UNDI_ISR_IN_GET_NEXT */ 292 #define PXENV_UNDI_ISR_OUT_DONE 0 293 #define PXENV_UNDI_ISR_OUT_TRANSMIT 2 294 #define PXENV_UNDI_ISR_OUT_RECEIVE 3 295 #define PXENV_UNDI_ISR_OUT_BUSY 4 296 297 typedef struct s_PXENV_UNDI_GET_STATE 298 { 299 PXENV_STATUS Status; 300 #define PXE_UNDI_GET_STATE_STARTED 1 301 #define PXE_UNDI_GET_STATE_INITIALIZED 2 302 #define PXE_UNDI_GET_STATE_OPENED 3 303 UINT8 UNDIState; 304 } t_PXENV_UNDI_GET_STATE; 305 306 typedef struct s_PXENV_STOP_UNDI 307 { 308 PXENV_STATUS Status; 309 } t_PXENV_STOP_UNDI; 310 311 typedef struct s_PXENV_TFTP_OPEN 312 { 313 PXENV_STATUS Status; 314 IP4 ServerIPAddress; 315 IP4 GatewayIPAddress; 316 UINT8 FileName[128]; 317 UDP_PORT TFTPPort; 318 UINT16 PacketSize; 319 } t_PXENV_TFTP_OPEN; 320 321 typedef struct s_PXENV_TFTP_CLOSE 322 { 323 PXENV_STATUS Status; 324 } t_PXENV_TFTP_CLOSE; 325 326 typedef struct s_PXENV_TFTP_READ 327 { 328 PXENV_STATUS Status; 329 UINT16 PacketNumber; 330 UINT16 BufferSize; 331 SEGOFF16 Buffer; 332 } t_PXENV_TFTP_READ; 333 334 typedef struct s_PXENV_TFTP_READ_FILE 335 { 336 PXENV_STATUS Status; 337 UINT8 FileName[128]; 338 UINT32 BufferSize; 339 ADDR32 Buffer; 340 IP4 ServerIPAddress; 341 IP4 GatewayIPAddress; 342 IP4 McastIPAddress; 343 UDP_PORT TFTPClntPort; 344 UDP_PORT TFTPSvrPort; 345 UINT16 TFTPOpenTimeOut; 346 UINT16 TFTPReopenDelay; 347 } t_PXENV_TFTP_READ_FILE; 348 349 typedef struct s_PXENV_TFTP_GET_FSIZE 350 { 351 PXENV_STATUS Status; 352 IP4 ServerIPAddress; 353 IP4 GatewayIPAddress; 354 UINT8 FileName[128]; 355 UINT32 FileSize; 356 } t_PXENV_TFTP_GET_FSIZE; 357 358 typedef struct s_PXENV_UDP_OPEN 359 { 360 PXENV_STATUS Status; 361 IP4 src_ip; 362 } t_PXENV_UDP_OPEN; 363 364 typedef struct s_PXENV_UDP_CLOSE 365 { 366 PXENV_STATUS Status; 367 } t_PXENV_UDP_CLOSE; 368 369 typedef struct s_PXENV_UDP_READ 370 { 371 PXENV_STATUS Status; 372 IP4 ip; 373 IP4 dest_ip; 374 UDP_PORT s_port; 375 UDP_PORT d_port; 376 UINT16 buffer_size; 377 SEGOFF16 buffer; 378 } t_PXENV_UDP_READ; 379 380 typedef struct s_PXENV_UDP_WRITE 381 { 382 PXENV_STATUS Status; 383 IP4 ip; 384 IP4 gw; 385 UDP_PORT src_port; 386 UDP_PORT dst_port; 387 UINT16 buffer_size; 388 SEGOFF16 buffer; 389 } t_PXENV_UDP_WRITE; 390 391 typedef struct s_PXENV_UNLOAD_STACK 392 { 393 PXENV_STATUS Status; 394 UINT8 reserved[10]; 395 } t_PXENV_UNLOAD_STACK; 396 397 typedef struct s_PXENV_GET_CACHED_INFO 398 { 399 PXENV_STATUS Status; 400 UINT16 PacketType; 401 #define PXENV_PACKET_TYPE_DHCP_DISCOVER 1 402 #define PXENV_PACKET_TYPE_DHCP_ACK 2 403 #define PXENV_PACKET_TYPE_CACHED_REPLY 3 404 UINT16 BufferSize; 405 SEGOFF16 Buffer; 406 UINT16 BufferLimit; 407 } t_PXENV_GET_CACHED_INFO; 408 409 typedef struct s_PXENV_START_BASE 410 { 411 PXENV_STATUS Status; 412 } t_PXENV_START_BASE; 413 414 typedef struct s_PXENV_STOP_BASE 415 { 416 PXENV_STATUS Status; 417 } t_PXENV_STOP_BASE; 418 419 typedef struct bootph 420 { 421 UINT8 opcode; 422 #define BOOTP_REQ 1 423 #define BOOTP_REP 2 424 425 UINT8 Hardware; 426 UINT8 Hardlen; 427 UINT8 Gatehops; 428 UINT32 ident; 429 UINT16 seconds; 430 UINT16 Flags; 431 #define BOOTP_BCAST 0x8000 432 433 IP4 cip; 434 IP4 yip; 435 IP4 sip; 436 IP4 gip; 437 MAC_ADDR CAddr; 438 UINT8 Sname[64]; 439 UINT8 bootfile[128]; 440 union 441 { 442 #define BOOTP_DHCPVEND 1024 /* DHCP extended vendor field size */ 443 UINT8 d[BOOTP_DHCPVEND]; 444 struct 445 { 446 UINT8 magic[4]; 447 #define VM_RFC1048 0x63825363 448 UINT32 flags; 449 UINT8 pad[56]; 450 } v; 451 } vendor; 452 } BOOTPLAYER; 453 454 #include <poppack.h> 455 456 /* Exit codes returned in AX by a PXENV API service */ 457 #define PXENV_EXIT_SUCCESS 0x0000 458 #define PXENV_EXIT_FAILURE 0x0001 459 460 /* Generic API status & error codes that are reported by the loader */ 461 #define PXENV_STATUS_SUCCESS 0x00 462 #define PXENV_STATUS_FAILURE 0x01 /* General failure */ 463 #define PXENV_STATUS_BAD_FUNC 0x02 /* Invalid function number */ 464 #define PXENV_STATUS_UNSUPPORTED 0x03 /* Function is not yet supported */ 465 #define PXENV_STATUS_KEEP_UNDI 0x04 /* UNDI must not be unloaded from base memory */ 466 #define PXENV_STATUS_KEEP_ALL 0x05 467 #define PXENV_STATUS_OUT_OF_RESOURCES 0x06 /* Base code and UNDI must not be unloaded from base memory */ 468 469 /* ARP errors (0x10 to 0x1f) */ 470 #define PXENV_STATUS_ARP_TIMEOUT 0x11 471 472 /* Base code state errors */ 473 #define PXENV_STATUS_UDP_CLOSED 0x18 474 #define PXENV_STATUS_UDP_OPEN 0x19 475 #define PXENV_STATUS_TFTP_CLOSED 0x1a 476 #define PXENV_STATUS_TFTP_OPEN 0x1b 477 478 /* BIOS/system errors (0x20 to 0x2f) */ 479 #define PXENV_STATUS_MCOPY_PROBLEM 0x20 480 #define PXENV_STATUS_BIS_INTEGRITY_FAILURE 0x21 481 #define PXENV_STATUS_BIS_VALIDATE_FAILURE 0x22 482 #define PXENV_STATUS_BIS_INIT_FAILURE 0x23 483 #define PXENV_STATUS_BIS_SHUTDOWN_FAILURE 0x24 484 #define PXENV_STATUS_BIS_GBOA_FAILURE 0x25 485 #define PXENV_STATUS_BIS_FREE_FAILURE 0x26 486 #define PXENV_STATUS_BIS_GSI_FAILURE 0x27 487 #define PXENV_STATUS_BIS_BAD_CKSUM 0x28 488 489 /* TFTP/MTFTP errors (0x30 to 0x3f) */ 490 #define PXENV_STATUS_TFTP_CANNOT_ARP_ADDRESS 0x30 491 #define PXENV_STATUS_TFTP_OPEN_TIMEOUT 0x32 492 #define PXENV_STATUS_TFTP_UNKNOWN_OPCODE 0x33 493 #define PXENV_STATUS_TFTP_READ_TIMEOUT 0x35 494 #define PXENV_STATUS_TFTP_ERROR_OPCODE 0x36 495 #define PXENV_STATUS_TFTP_CANNOT_OPEN_CONNECTION 0x38 496 #define PXENV_STATUS_TFTP_CANNOT_READ_FROM_CONNECTION 0x39 497 #define PXENV_STATUS_TFTP_TOO_MANY_PACKAGES 0x3a 498 #define PXENV_STATUS_TFTP_FILE_NOT_FOUND 0x3b 499 #define PXENV_STATUS_TFTP_ACCESS_VIOLATION 0x3c 500 #define PXENV_STATUS_TFTP_NO_MCAST_ADDRESS 0x3d 501 #define PXENV_STATUS_TFTP_NO_FILESIZE 0x3e 502 #define PXENV_STATUS_TFTP_INVALID_PACKET_SIZE 0x3f 503 504 /* Reserved errors (0x40 to 0x4f) */ 505 506 /* DHCP/BOOTP errors (0x50 to 0x5f) */ 507 #define PXENV_STATUS_DHCP_TIMEOUT 0x51 508 #define PXENV_STATUS_DHCP_NO_IP_ADDRESS 0x52 509 #define PXENV_STATUS_DHCP_NO_BOOTFILE_NAME 0x53 510 #define PXENV_STATUS_DHCP_BAD_IP_ADDRESS 0x54 511 512 /* Driver errors (0x60 to 0x6f) */ 513 /* These errors are for UNDI compatible NIC drivers */ 514 #define PXENV_STATUS_UNDI_INVALID_FUNCTION 0x60 515 #define PXENV_STATUS_UNDI_MEDIATEST_FAILED 0x61 516 #define PXENV_STATUS_UNDI_CANNOT_INIT_NIC_FOR_MCAST 0x62 517 #define PXENV_STATUS_UNDI_CANNOT_INITIALIZE_NIC 0x63 518 #define PXENV_STATUS_UNDI_CANNOT_INITIALIZE_PHY 0x64 519 #define PXENV_STATUS_UNDI_CANNOT_READ_CONFIG_DATA 0x65 520 #define PXENV_STATUS_UNDI_CANNOT_READ_INIT_DATA 0x66 521 #define PXENV_STATUS_UNDI_BAD_MAC_ADDRESS 0x67 522 #define PXENV_STATUS_UNDI_BAD_EEPROM_CHECKSUM 0x68 523 #define PXENV_STATUS_UNDI_ERROR_SETTING_ISR 0x69 524 #define PXENV_STATUS_UNDI_INVALID_STATE 0x6a 525 #define PXENV_STATUS_UNDI_TRANSMIT_ERROR 0x6b 526 #define PXENV_STATUS_UNDI_INVALID_PARAMETER 0x6c 527 528 /* ROM and NBP bootstrap errors (0x70 to 0x7f) */ 529 #define PXENV_STATUS_BSTRAP_PROMPT_MENU 0x74 530 #define PXENV_STATUS_BSTRAP_MCAST_ADDR 0x76 531 #define PXENV_STATUS_BSTRAP_MISSING_LIST 0x77 532 #define PXENV_STATUS_BSTRAP_NO_RESPONSE 0x78 533 #define PXENV_STATUS_BSTRAP_FILE_TOO_BIG 0x79 534 535 /* Environment NBP errors (0x80 to 0x8f) */ 536 537 /* Reserved errors (0x90 to 0x9f) */ 538 539 /* Misc. errors (0xa0 to 0xaf) */ 540 #define PXENV_STATUS_BINL_CANCELED_BY_KEYSTROKE 0xa0 541 #define PXENV_STATUS_BINL_NO_PXE_SERVER 0xa1 542 #define PXENV_STATUS_NOT_AVAILABLE_IN_PMODE 0xa2 543 #define PXENV_STATUS_NOT_AVAILABLE_IN_RMODE 0xa3 544 545 /* BUSD errors (0xb0 to 0xbf) */ 546 #define PXENV_STATUS_BUSD_DEVICE_NOT_SUPPORTED 0xb0 547 548 /* Loader errors (0xc0 to 0xcf) */ 549 #define PXENV_STATUS_LOADER_NO_FREE_BASE_MEMORY 0xc0 550 #define PXENV_STATUS_LOADER_NO_BC_ROMID 0xc1 551 #define PXENV_STATUS_LOADER_BAD_BC_ROMID 0xc2 552 #define PXENV_STATUS_LOADER_BAD_BC_RUNTIME_IMAGE 0xc3 553 #define PXENV_STATUS_LOADER_NO_UNDI_ROMID 0xc4 554 #define PXENV_STATUS_LOADER_BAD_UNDI_ROMID 0xc5 555 #define PXENV_STATUS_LOADER_BAD_UNDI_DRIVER_IMAGE 0xc6 556 #define PXENV_STATUS_LOADER_NO_PXE_STRUCT 0xc8 557 #define PXENV_STATUS_LOADER_NO_PXENV_STRUCT 0xc9 558 #define PXENV_STATUS_LOADER_UNDI_START 0xca 559 #define PXENV_STATUS_LOADER_BC_START 0xcb 560 561 /* Vendor errors (0xd0 to 0xff) */ 562 563 /* PXENV API services */ 564 #define PXENV_START_UNDI 0x00 565 #define PXENV_UNDI_STARTUP 0x01 566 #define PXENV_UNDI_CLEANUP 0x02 567 #define PXENV_UNDI_INITIALIZE 0x03 568 #define PXENV_UNDI_RESET_ADAPTER 0x04 569 #define PXENV_UNDI_SHUTDOWN 0x05 570 #define PXENV_UNDI_OPEN 0x06 571 #define PXENV_UNDI_CLOSE 0x07 572 #define PXENV_UNDI_TRANSMIT 0x08 573 #define PXENV_UNDI_SET_MCAST_ADDRESS 0x09 574 #define PXENV_UNDI_SET_STATION_ADDRESS 0x0a 575 #define PXENV_UNDI_SET_PACKET_FILTER 0x0b 576 #define PXENV_UNDI_GET_INFORMATION 0x0c 577 #define PXENV_UNDI_GET_STATISTICS 0x0d 578 #define PXENV_UNDI_CLEAR_STATISTICS 0x0e 579 #define PXENV_UNDI_INITIATE_DIAGS 0x0f 580 #define PXENV_UNDI_FORCE_INTERRUPT 0x10 581 #define PXENV_UNDI_GET_MCAST_ADDRESS 0x11 582 #define PXENV_UNDI_GET_NIC_TYPE 0x12 583 #define PXENV_UNDI_GET_IFACE_INFO 0x13 584 #define PXENV_UNDI_ISR 0x14 585 #define PXENV_UNDI_GET_STATE 0x15 586 #define PXENV_STOP_UNDI 0x15 587 #define PXENV_TFTP_OPEN 0x20 588 #define PXENV_TFTP_CLOSE 0x21 589 #define PXENV_TFTP_READ 0x22 590 #define PXENV_TFTP_READ_FILE 0x23 591 #define PXENV_TFTP_GET_FSIZE 0x25 592 #define PXENV_UDP_OPEN 0x30 593 #define PXENV_UDP_CLOSE 0x31 594 #define PXENV_UDP_READ 0x32 595 #define PXENV_UDP_WRITE 0x33 596 #define PXENV_UNLOAD_STACK 0x70 597 #define PXENV_GET_CACHED_INFO 0x71 598 #define PXENV_RESTART_TFTP 0x73 599 #define PXENV_START_BASE 0x75 600 #define PXENV_STOP_BASE 0x76 601 602 #endif 603