iPXE
Data Structures | Macros | Typedefs | Functions | Variables
pxe_api.h File Reference

Preboot eXecution Environment (PXE) API. More...

#include "pxe_types.h"

Go to the source code of this file.

Data Structures

struct  s_PXENV
 The PXENV+ structure. More...
 
struct  s_PXE
 The !PXE structure. More...
 
struct  s_PXENV_UNLOAD_STACK
 Parameter block for pxenv_unload_stack() More...
 
struct  s_PXENV_GET_CACHED_INFO
 Parameter block for pxenv_get_cached_info() More...
 
struct  bootph
 Format of buffer filled in by pxenv_get_cached_info() More...
 
union  bootph::bootph_vendor
 DHCP options. More...
 
struct  bootph::bootph_vendor::bootph_vendor_v
 DHCP options. More...
 
union  bootph_vendor
 DHCP options. More...
 
struct  bootph_vendor::bootph_vendor_v
 DHCP options. More...
 
struct  s_PXENV_START_UNDI
 Parameter block for pxenv_start_undi() More...
 
struct  s_PXENV_STOP_UNDI
 Parameter block for pxenv_stop_undi() More...
 
struct  s_PXENV_START_BASE
 Parameter block for pxenv_start_base() More...
 
struct  s_PXENV_STOP_BASE
 Parameter block for pxenv_stop_base() More...
 
struct  s_PXENV_TFTP_OPEN
 Parameter block for pxenv_tftp_open() More...
 
struct  s_PXENV_TFTP_CLOSE
 Parameter block for pxenv_tftp_close() More...
 
struct  s_PXENV_TFTP_READ
 Parameter block for pxenv_tftp_read() More...
 
struct  s_PXENV_TFTP_READ_FILE
 Parameter block for pxenv_tftp_read_file() More...
 
struct  s_PXENV_TFTP_GET_FSIZE
 Parameter block for pxenv_tftp_get_fsize() More...
 
struct  s_PXENV_UDP_OPEN
 Parameter block for pxenv_udp_open() More...
 
struct  s_PXENV_UDP_CLOSE
 Parameter block for pxenv_udp_close() More...
 
struct  s_PXENV_UDP_WRITE
 Parameter block for pxenv_udp_write() More...
 
struct  s_PXENV_UDP_READ
 Parameter block for pxenv_udp_read() More...
 
struct  s_PXENV_UNDI_STARTUP
 Parameter block for pxenv_undi_startup() More...
 
struct  s_PXENV_UNDI_CLEANUP
 Parameter block for pxenv_undi_cleanup() More...
 
struct  s_PXENV_UNDI_INITIALIZE
 Parameter block for pxenv_undi_initialize() More...
 
struct  s_PXENV_UNDI_MCAST_ADDRESS
 List of multicast MAC addresses. More...
 
struct  s_PXENV_UNDI_RESET
 Parameter block for pxenv_undi_reset_adapter() More...
 
struct  s_PXENV_UNDI_SHUTDOWN
 Parameter block for pxenv_undi_shutdown() More...
 
struct  s_PXENV_UNDI_OPEN
 Parameter block for pxenv_undi_open() More...
 
struct  s_PXENV_UNDI_CLOSE
 Parameter block for pxenv_undi_close() More...
 
struct  s_PXENV_UNDI_TBD
 A transmit buffer descriptor, as pointed to by s_PXENV_UNDI_TRANSMIT::TBD. More...
 
struct  s_PXENV_UNDI_TBD::DataBlk
 Array of up to MAX_DATA_BLKS additional transmit buffers. More...
 
struct  DataBlk
 Array of up to MAX_DATA_BLKS additional transmit buffers. More...
 
struct  s_PXENV_UNDI_TRANSMIT
 Parameter block for pxenv_undi_transmit() More...
 
struct  s_PXENV_UNDI_SET_MCAST_ADDRESS
 Parameter block for pxenv_undi_set_mcast_address() More...
 
struct  s_PXENV_UNDI_SET_STATION_ADDRESS
 Parameter block for pxenv_undi_set_station_address() More...
 
struct  s_PXENV_UNDI_SET_PACKET_FILTER
 Parameter block for pxenv_undi_set_packet_filter() More...
 
struct  s_PXENV_UNDI_GET_INFORMATION
 Parameter block for pxenv_undi_get_information() More...
 
struct  s_PXENV_UNDI_GET_STATISTICS
 Parameter block for pxenv_undi_get_statistics() More...
 
struct  s_PXENV_UNDI_CLEAR_STATISTICS
 Parameter block for pxenv_undi_clear_statistics() More...
 
struct  s_PXENV_UNDI_INITIATE_DIAGS
 Parameter block for pxenv_undi_initiate_diags() More...
 
struct  s_PXENV_UNDI_FORCE_INTERRUPT
 Parameter block for pxenv_undi_force_interrupt() More...
 
struct  s_PXENV_UNDI_GET_MCAST_ADDRESS
 Parameter block for pxenv_undi_get_mcast_address() More...
 
struct  pci_nic_info
 Information for a PCI or equivalent NIC. More...
 
struct  pnp_nic_info
 Information for an ISAPnP or equivalent NIC. More...
 
struct  s_PXENV_UNDI_GET_NIC_TYPE
 Parameter block for pxenv_undi_get_nic_type() More...
 
union  s_PXENV_UNDI_GET_NIC_TYPE::nic_type_info
 NIC information. More...
 
union  nic_type_info
 NIC information. More...
 
struct  s_PXENV_UNDI_GET_IFACE_INFO
 Parameter block for pxenv_undi_get_iface_info() More...
 
struct  s_PXENV_UNDI_GET_STATE
 Parameter block for pxenv_undi_get_state() More...
 
struct  s_PXENV_UNDI_ISR
 Parameter block for pxenv_undi_isr() More...
 
struct  s_PXENV_FILE_OPEN
 Parameter block for pxenv_file_open() More...
 
struct  s_PXENV_FILE_CLOSE
 Parameter block for pxenv_file_close() More...
 
struct  s_PXENV_FILE_SELECT
 Parameter block for pxenv_file_select() More...
 
struct  s_PXENV_FILE_READ
 Parameter block for pxenv_file_read() More...
 
struct  s_PXENV_GET_FILE_SIZE
 Parameter block for pxenv_get_file_size() More...
 
struct  s_PXENV_FILE_EXEC
 Parameter block for pxenv_file_exec() More...
 
struct  s_PXENV_FILE_API_CHECK
 Parameter block for pxenv_file_api_check() More...
 
struct  s_PXENV_FILE_EXIT_HOOK
 Parameter block for pxenv_file_exit_hook() More...
 
struct  s_PXENV_FILE_CMDLINE
 Parameter block for pxenv_file_cmdline() More...
 
struct  s_UNDI_LOADER
 Parameter block for undi_loader() More...
 

Macros

#define PXENV_UNLOAD_STACK   0x0070
 PXE API function code for pxenv_unload_stack() More...
 
#define PXENV_GET_CACHED_INFO   0x0071
 PXE API function code for pxenv_get_cached_info() More...
 
#define PXENV_PACKET_TYPE_DHCP_DISCOVER   1
 The client's DHCPDISCOVER packet. More...
 
#define PXENV_PACKET_TYPE_DHCP_ACK   2
 The DHCP server's DHCPACK packet. More...
 
#define PXENV_PACKET_TYPE_CACHED_REPLY   3
 The Boot Server's Discover Reply packet. More...
 
#define BOOTP_REQ   1
 A BOOTP request packet. More...
 
#define BOOTP_REP   2
 A BOOTP reply packet. More...
 
#define BOOTP_BCAST   0x8000
 DHCP broadcast flag. More...
 
#define VM_RFC1048   0x63825363L
 DHCP magic cookie. More...
 
#define BOOTP_DHCPVEND   1024
 Maximum length of DHCP options. More...
 
#define PXENV_RESTART_TFTP   0x0073
 PXE API function code for pxenv_restart_tftp() More...
 
#define PXENV_START_UNDI   0x0000
 PXE API function code for pxenv_start_undi() More...
 
#define PXENV_STOP_UNDI   0x0015
 PXE API function code for pxenv_stop_undi() More...
 
#define PXENV_START_BASE   0x0075
 PXE API function code for pxenv_start_base() More...
 
#define PXENV_STOP_BASE   0x0076
 PXE API function code for pxenv_stop_base() More...
 
#define PXENV_TFTP_OPEN   0x0020
 PXE API function code for pxenv_tftp_open() More...
 
#define PXENV_TFTP_CLOSE   0x0021
 PXE API function code for pxenv_tftp_close() More...
 
#define PXENV_TFTP_READ   0x0022
 PXE API function code for pxenv_tftp_read() More...
 
#define PXENV_TFTP_READ_FILE   0x0023
 PXE API function code for pxenv_tftp_read_file() More...
 
#define PXENV_TFTP_GET_FSIZE   0x0025
 PXE API function code for pxenv_tftp_get_fsize() More...
 
#define PXENV_UDP_OPEN   0x0030
 PXE API function code for pxenv_udp_open() More...
 
#define PXENV_UDP_CLOSE   0x0031
 PXE API function code for pxenv_udp_close() More...
 
#define PXENV_UDP_WRITE   0x0033
 PXE API function code for pxenv_udp_write() More...
 
#define PXENV_UDP_READ   0x0032
 PXE API function code for pxenv_udp_read() More...
 
#define PXENV_UNDI_STARTUP   0x0001
 PXE API function code for pxenv_undi_startup() More...
 
#define PXENV_BUS_ISA   0
 ISA bus type. More...
 
#define PXENV_BUS_EISA   1
 EISA bus type. More...
 
#define PXENV_BUS_MCA   2
 MCA bus type. More...
 
#define PXENV_BUS_PCI   3
 PCI bus type. More...
 
#define PXENV_BUS_VESA   4
 VESA bus type. More...
 
#define PXENV_BUS_PCMCIA   5
 PCMCIA bus type. More...
 
#define PXENV_UNDI_CLEANUP   0x0002
 PXE API function code for pxenv_undi_cleanup() More...
 
#define PXENV_UNDI_INITIALIZE   0x0003
 PXE API function code for pxenv_undi_initialize() More...
 
#define PXENV_UNDI_RESET_ADAPTER   0x0004
 PXE API function code for pxenv_undi_reset_adapter() More...
 
#define MAXNUM_MCADDR   8
 Maximum number of multicast MAC addresses. More...
 
#define PXENV_UNDI_SHUTDOWN   0x0005
 PXE API function code for pxenv_undi_shutdown() More...
 
#define PXENV_UNDI_OPEN   0x0006
 PXE API function code for pxenv_undi_open() More...
 
#define FLTR_DIRECTED   0x0001
 Accept "directed" packets. More...
 
#define FLTR_BRDCST   0x0002
 Accept broadcast packets. More...
 
#define FLTR_PRMSCS   0x0004
 Accept all packets; listen in promiscuous mode. More...
 
#define FLTR_SRC_RTG   0x0008
 Accept source-routed packets. More...
 
#define PXENV_UNDI_CLOSE   0x0007
 PXE API function code for pxenv_undi_close() More...
 
#define PXENV_UNDI_TRANSMIT   0x0008
 PXE API function code for pxenv_undi_transmit() More...
 
#define P_UNKNOWN   0
 Media header already filled in. More...
 
#define P_IP   1
 IP protocol. More...
 
#define P_ARP   2
 ARP protocol. More...
 
#define P_RARP   3
 RARP protocol. More...
 
#define P_OTHER   4
 Other protocol. More...
 
#define XMT_DESTADDR   0x0000
 Unicast packet. More...
 
#define XMT_BROADCAST   0x0001
 Broadcast packet. More...
 
#define MAX_DATA_BLKS   8
 Maximum number of data blocks in a transmit buffer descriptor. More...
 
#define PXENV_UNDI_SET_MCAST_ADDRESS   0x0009
 PXE API function code for pxenv_undi_set_mcast_address() More...
 
#define PXENV_UNDI_SET_STATION_ADDRESS   0x000a
 PXE API function code for pxenv_undi_set_station_address() More...
 
#define PXENV_UNDI_SET_PACKET_FILTER   0x000b
 PXE API function code for pxenv_undi_set_packet_filter() More...
 
#define PXENV_UNDI_GET_INFORMATION   0x000c
 PXE API function code for pxenv_undi_get_information() More...
 
#define ETHER_TYPE   1
 Ethernet (10Mb) More...
 
#define EXP_ETHER_TYPE   2
 Experimental Ethernet (3Mb) More...
 
#define AX25_TYPE   3
 Amateur Radio AX.25. More...
 
#define TOKEN_RING_TYPE   4
 Proteon ProNET Token Ring. More...
 
#define CHAOS_TYPE   5
 Chaos. More...
 
#define IEEE_TYPE   6
 IEEE 802 Networks. More...
 
#define ARCNET_TYPE   7
 ARCNET. More...
 
#define PXENV_UNDI_GET_STATISTICS   0x000d
 PXE API function code for pxenv_undi_get_statistics() More...
 
#define PXENV_UNDI_CLEAR_STATISTICS   0x000e
 PXE API function code for pxenv_undi_clear_statistics() More...
 
#define PXENV_UNDI_INITIATE_DIAGS   0x000f
 PXE API function code for pxenv_undi_initiate_diags() More...
 
#define PXENV_UNDI_FORCE_INTERRUPT   0x0010
 PXE API function code for pxenv_undi_force_interrupt() More...
 
#define PXENV_UNDI_GET_MCAST_ADDRESS   0x0011
 PXE API function code for pxenv_undi_get_mcast_address() More...
 
#define PXENV_UNDI_GET_NIC_TYPE   0x0012
 PXE API function code for pxenv_undi_get_nic_type() More...
 
#define PCI_NIC   2
 PCI network card. More...
 
#define PnP_NIC   3
 ISAPnP network card. More...
 
#define CardBus_NIC   4
 CardBus network card. More...
 
#define PXENV_UNDI_GET_IFACE_INFO   0x0013
 PXE API function code for pxenv_undi_get_iface_info() More...
 
#define SUPPORTED_BROADCAST   0x0001
 Broadcast supported. More...
 
#define SUPPORTED_MULTICAST   0x0002
 Multicast supported. More...
 
#define SUPPORTED_GROUP   0x0004
 Functional/group addressing supported. More...
 
#define SUPPORTED_PROMISCUOUS   0x0008
 Promiscuous mode supported. More...
 
#define SUPPORTED_SET_STATION_ADDRESS   0x0010
 Software settable station address. More...
 
#define SUPPORTED_DIAGNOSTICS   0x0040
 InitiateDiagnostics supported. More...
 
#define SUPPORTED_RESET   0x0400
 Reset MAC supported. More...
 
#define SUPPORTED_OPEN_CLOSE   0x0800
 Open / Close Adapter supported. More...
 
#define SUPPORTED_IRQ   0x1000
 Interrupt Request supported. More...
 
#define PXENV_UNDI_GET_STATE   0x0015
 PXE API function code for pxenv_undi_get_state() More...
 
#define PXE_UNDI_GET_STATE_STARTED   1
 pxenv_start_undi() has been called More...
 
#define PXE_UNDI_GET_STATE_INITIALIZED   2
 pxenv_undi_initialize() has been called More...
 
#define PXE_UNDI_GET_STATE_OPENED   3
 pxenv_undi_open() has been called More...
 
#define PXENV_UNDI_ISR   0x0014
 PXE API function code for pxenv_undi_isr() More...
 
#define PXENV_UNDI_ISR_IN_START   1
 Determine whether or not this is our interrupt. More...
 
#define PXENV_UNDI_ISR_IN_PROCESS   2
 Start processing interrupt. More...
 
#define PXENV_UNDI_ISR_IN_GET_NEXT   3
 Continue processing interrupt. More...
 
#define PXENV_UNDI_ISR_OUT_OURS   0
 This interrupt was ours. More...
 
#define PXENV_UNDI_ISR_OUT_NOT_OURS   1
 This interrupt was not ours. More...
 
#define PXENV_UNDI_ISR_OUT_DONE   0
 Finished processing interrupt. More...
 
#define PXENV_UNDI_ISR_OUT_TRANSMIT   2
 A packet transmission has completed. More...
 
#define PXENV_UNDI_ISR_OUT_RECEIVE   3
 A packet has been received. More...
 
#define PXENV_UNDI_ISR_OUT_BUSY   4
 We are already in the middle of processing an interrupt. More...
 
#define P_DIRECTED   0
 Unicast packet (or packet captured in promiscuous mode) More...
 
#define P_BROADCAST   1
 Broadcast packet. More...
 
#define P_MULTICAST   2
 Multicast packet. More...
 
#define PXENV_FILE_MIN   0x00e0
 Minimum possible opcode used within PXE FILE API. More...
 
#define PXENV_FILE_MAX   0x00ef
 Minimum possible opcode used within PXE FILE API. More...
 
#define PXENV_FILE_OPEN   0x00e0
 PXE API function code for pxenv_file_open() More...
 
#define PXENV_FILE_CLOSE   0x00e1
 PXE API function code for pxenv_file_close() More...
 
#define PXENV_FILE_SELECT   0x00e2
 PXE API function code for pxenv_file_select() More...
 
#define RDY_READ   0x0001
 File is ready for reading. More...
 
#define PXENV_FILE_READ   0x00e3
 PXE API function code for pxenv_file_read() More...
 
#define PXENV_GET_FILE_SIZE   0x00e4
 PXE API function code for pxenv_get_file_size() More...
 
#define PXENV_FILE_EXEC   0x00e5
 PXE API function code for pxenv_file_exec() More...
 
#define PXENV_FILE_API_CHECK   0x00e6
 PXE API function code for pxenv_file_api_check() More...
 
#define PXENV_FILE_EXIT_HOOK   0x00e7
 PXE API function code for pxenv_file_exit_hook() More...
 
#define PXENV_FILE_CMDLINE   0x00e8
 PXE API function code for pxenv_file_cmdline() More...
 

Typedefs

typedef struct s_PXENV PXENV_t
 
typedef struct s_PXE PXE_t
 
typedef struct s_PXENV_UNLOAD_STACK PXENV_UNLOAD_STACK_t
 
typedef struct s_PXENV_GET_CACHED_INFO PXENV_GET_CACHED_INFO_t
 
typedef struct bootph BOOTPLAYER_t
 
typedef struct s_PXENV_RESTART_TFTP PXENV_RESTART_TFTP_t
 
typedef struct s_PXENV_START_UNDI PXENV_START_UNDI_t
 
typedef struct s_PXENV_STOP_UNDI PXENV_STOP_UNDI_t
 
typedef struct s_PXENV_START_BASE PXENV_START_BASE_t
 
typedef struct s_PXENV_STOP_BASE PXENV_STOP_BASE_t
 
typedef struct s_PXENV_TFTP_OPEN PXENV_TFTP_OPEN_t
 
typedef struct s_PXENV_TFTP_CLOSE PXENV_TFTP_CLOSE_t
 
typedef struct s_PXENV_TFTP_READ PXENV_TFTP_READ_t
 
typedef struct s_PXENV_TFTP_READ_FILE PXENV_TFTP_READ_FILE_t
 
typedef struct s_PXENV_TFTP_GET_FSIZE PXENV_TFTP_GET_FSIZE_t
 
typedef struct s_PXENV_UDP_OPEN PXENV_UDP_OPEN_t
 
typedef struct s_PXENV_UDP_CLOSE PXENV_UDP_CLOSE_t
 
typedef struct s_PXENV_UDP_WRITE PXENV_UDP_WRITE_t
 
typedef struct s_PXENV_UDP_READ PXENV_UDP_READ_t
 
typedef struct s_PXENV_UNDI_STARTUP PXENV_UNDI_STARTUP_t
 
typedef struct s_PXENV_UNDI_CLEANUP PXENV_UNDI_CLEANUP_t
 
typedef struct s_PXENV_UNDI_INITIALIZE PXENV_UNDI_INITIALIZE_t
 
typedef struct s_PXENV_UNDI_MCAST_ADDRESS PXENV_UNDI_MCAST_ADDRESS_t
 
typedef struct s_PXENV_UNDI_RESET PXENV_UNDI_RESET_t
 
typedef struct s_PXENV_UNDI_SHUTDOWN PXENV_UNDI_SHUTDOWN_t
 
typedef struct s_PXENV_UNDI_OPEN PXENV_UNDI_OPEN_t
 
typedef struct s_PXENV_UNDI_CLOSE PXENV_UNDI_CLOSE_t
 
typedef struct s_PXENV_UNDI_TBD PXENV_UNDI_TBD_t
 
typedef struct s_PXENV_UNDI_TRANSMIT PXENV_UNDI_TRANSMIT_t
 
typedef struct s_PXENV_UNDI_SET_MCAST_ADDRESS PXENV_UNDI_SET_MCAST_ADDRESS_t
 
typedef struct s_PXENV_UNDI_SET_STATION_ADDRESS PXENV_UNDI_SET_STATION_ADDRESS_t
 
typedef struct s_PXENV_UNDI_SET_PACKET_FILTER PXENV_UNDI_SET_PACKET_FILTER_t
 
typedef struct s_PXENV_UNDI_GET_INFORMATION PXENV_UNDI_GET_INFORMATION_t
 
typedef struct s_PXENV_UNDI_GET_STATISTICS PXENV_UNDI_GET_STATISTICS_t
 
typedef struct s_PXENV_UNDI_CLEAR_STATISTICS PXENV_UNDI_CLEAR_STATISTICS_t
 
typedef struct s_PXENV_UNDI_INITIATE_DIAGS PXENV_UNDI_INITIATE_DIAGS_t
 
typedef struct s_PXENV_UNDI_FORCE_INTERRUPT PXENV_UNDI_FORCE_INTERRUPT_t
 
typedef struct s_PXENV_UNDI_GET_MCAST_ADDRESS PXENV_UNDI_GET_MCAST_ADDRESS_t
 
typedef struct s_PXENV_UNDI_GET_NIC_TYPE PXENV_UNDI_GET_NIC_TYPE_t
 
typedef struct s_PXENV_UNDI_GET_IFACE_INFO PXENV_UNDI_GET_IFACE_INFO_t
 
typedef struct s_PXENV_UNDI_GET_STATE PXENV_UNDI_GET_STATE_t
 
typedef struct s_PXENV_UNDI_ISR PXENV_UNDI_ISR_t
 
typedef struct s_PXENV_FILE_OPEN PXENV_FILE_OPEN_t
 
typedef struct s_PXENV_FILE_CLOSE PXENV_FILE_CLOSE_t
 
typedef struct s_PXENV_FILE_SELECT PXENV_FILE_SELECT_t
 
typedef struct s_PXENV_FILE_READ PXENV_FILE_READ_t
 
typedef struct s_PXENV_GET_FILE_SIZE PXENV_GET_FILE_SIZE_t
 
typedef struct s_PXENV_FILE_EXEC PXENV_FILE_EXEC_t
 
typedef struct s_PXENV_FILE_API_CHECK PXENV_FILE_API_CHECK_t
 
typedef struct s_PXENV_FILE_EXIT_HOOK PXENV_FILE_EXIT_HOOK_t
 
typedef struct s_PXENV_FILE_CMDLINE PXENV_FILE_CMDLINE_t
 
typedef struct s_UNDI_LOADER UNDI_LOADER_t
 

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 
struct s_PXENV __attribute__ ((packed))
 

Variables

UINT8_t Signature [6]
 Signature. More...
 
UINT16_t Version
 PXE API version. More...
 
UINT8_t Length
 Length of this structure. More...
 
UINT8_t Checksum
 Checksum. More...
 
SEGOFF16_t RMEntry
 Real-mode PXENV+ entry point. More...
 
UINT32_t PMOffset
 Protected-mode PXENV+ entry point offset. More...
 
SEGSEL_t PMSelector
 Protected-mode PXENV+ entry point segment selector. More...
 
SEGSEL_t StackSeg
 Stack segment selector. More...
 
UINT16_t StackSize
 Stack segment size. More...
 
SEGSEL_t BC_CodeSeg
 Base-code code segment selector. More...
 
UINT16_t BC_CodeSize
 Base-code code segment size. More...
 
SEGSEL_t BC_DataSeg
 Base-code data segment selector. More...
 
UINT16_t BC_DataSize
 Base-code data segment size. More...
 
SEGSEL_t UNDIDataSeg
 UNDI data segment selector. More...
 
UINT16_t UNDIDataSize
 UNDI data segment size. More...
 
SEGSEL_t UNDICodeSeg
 UNDI code segment selector. More...
 
UINT16_t UNDICodeSize
 UNDI code segment size. More...
 
SEGOFF16_t PXEPtr
 Address of the !PXE structure. More...
 
UINT8_t StructLength
 Length of this structure. More...
 
UINT8_t StructCksum
 Checksum. More...
 
UINT8_t StructRev
 Revision of this structure. More...
 
UINT8_t reserved_1
 Must be zero. More...
 
SEGOFF16_t UNDIROMID
 Address of the UNDI ROM ID structure. More...
 
SEGOFF16_t BaseROMID
 Address of the Base Code ROM ID structure. More...
 
SEGOFF16_t EntryPointSP
 16-bit !PXE entry point More...
 
SEGOFF16_t EntryPointESP
 32-bit !PXE entry point More...
 
SEGOFF16_t StatusCallout
 Status call-out function. More...
 
UINT8_t reserved_2
 Must be zero. More...
 
UINT8_t SegDescCnt
 Number of segment descriptors. More...
 
SEGSEL_t FirstSelector
 First protected-mode selector. More...
 
SEGDESC_t Stack
 Stack segment descriptor. More...
 
SEGDESC_t UNDIData
 UNDI data segment descriptor. More...
 
SEGDESC_t UNDICode
 UNDI code segment descriptor. More...
 
SEGDESC_t UNDICodeWrite
 UNDI writable code segment descriptor. More...
 
SEGDESC_t BC_Data
 Base-code data segment descriptor. More...
 
SEGDESC_t BC_Code
 Base-code code segment descriptor. More...
 
SEGDESC_t BC_CodeWrite
 Base-code writable code segment descriptor. More...
 
PXENV_STATUS_t Status
 PXE status code. More...
 
UINT8_t reserved [10]
 Must be zero. More...
 
UINT16_t PacketType
 Packet type. More...
 
UINT16_t BufferSize
 Buffer size. More...
 
SEGOFF16_t Buffer
 Buffer address. More...
 
UINT16_t BufferLimit
 Maximum buffer size. More...
 
UINT8_t opcode
 Message opcode. More...
 
UINT8_t Hardware
 NIC hardware type. More...
 
UINT8_t Hardlen
 MAC address length. More...
 
UINT8_t Gatehops
 Gateway hops. More...
 
UINT32_t ident
 DHCP transaction id (xid) More...
 
UINT16_t seconds
 Elapsed time. More...
 
UINT16_t Flags
 Flags. More...
 
IP4_t cip
 Client IP address. More...
 
IP4_t yip
 Your IP address. More...
 
IP4_t sip
 Server IP address. More...
 
IP4_t gip
 Gateway IP address. More...
 
MAC_ADDR_t CAddr
 Client MAC address. More...
 
UINT8_t Sname [64]
 Server host name. More...
 
UINT8_t bootfile [128]
 Boot file name. More...
 
union bootph_vendor vendor
 
UINT16_t AX
 ax register as passed to the Option ROM initialisation routine. More...
 
UINT16_t BX
 bx register as passed to the Option ROM initialisation routine. More...
 
UINT16_t DX
 dx register as passed to the Option ROM initialisation routine. More...
 
OFF16_t DI
 di register as passed to the Option ROM initialisation routine. More...
 
SEGSEL_t ES
 es register as passed to the Option ROM initialisation routine. More...
 
IP4_t ServerIPAddress
 TFTP server IP address. More...
 
IP4_t GatewayIPAddress
 Relay agent IP address. More...
 
UINT8_t FileName [128]
 File name. More...
 
UDP_PORT_t TFTPPort
 TFTP server UDP port. More...
 
UINT16_t PacketSize
 Requested size of TFTP packets. More...
 
UINT16_t PacketNumber
 TFTP packet number. More...
 
IP4_t McastIPAddress
 File multicast IP address. More...
 
UDP_PORT_t TFTPClntPort
 Client multicast listening port. More...
 
UDP_PORT_t TFTPSrvPort
 Server multicast listening port. More...
 
UINT16_t TFTPOpenTimeOut
 TFTP open timeout. More...
 
UINT16_t TFTPReopenDelay
 TFTP reopen timeout. More...
 
UINT32_t FileSize
 Size of the file. More...
 
IP4_t src_ip
 IP address of this station. More...
 
IP4_t ip
 Destination IP address. More...
 
IP4_t gw
 Relay agent IP address. More...
 
UDP_PORT_t src_port
 Source UDP port. More...
 
UDP_PORT_t dst_port
 Destination UDP port. More...
 
UINT16_t buffer_size
 UDP payload buffer size. More...
 
SEGOFF16_t buffer
 UDP payload buffer address. More...
 
IP4_t dest_ip
 Destination IP address. More...
 
UDP_PORT_t s_port
 Source UDP port. More...
 
UDP_PORT_t d_port
 Destination UDP port. More...
 
ADDR32_t ProtocolIni
 NDIS 2.0 configuration information, or NULL. More...
 
UINT16_t MCastAddrCount
 Number of multicast MAC addresses. More...
 
MAC_ADDR_t McastAddr [MAXNUM_MCADDR]
 List of up to MAXNUM_MCADDR multicast MAC addresses. More...
 
struct s_PXENV_UNDI_MCAST_ADDRESS R_Mcast_Buf
 Multicast MAC addresses. More...
 
UINT16_t OpenFlag
 Open flags as defined in NDIS 2.0. More...
 
UINT16_t PktFilter
 Receive packet filter. More...
 
UINT16_t ImmedLength
 Length of the transmit buffer. More...
 
SEGOFF16_t Xmit
 Address of the transmit buffer. More...
 
UINT16_t DataBlkCount
 
struct DataBlk DataBlock [MAX_DATA_BLKS]
 
UINT8_t Protocol
 Protocol. More...
 
UINT8_t XmitFlag
 Unicast/broadcast flag. More...
 
SEGOFF16_t DestAddr
 Destination MAC address. More...
 
SEGOFF16_t TBD
 Address of the Transmit Buffer Descriptor. More...
 
UINT32_t Reserved [2]
 Must be zero. More...
 
MAC_ADDR_t StationAddress
 Station MAC address. More...
 
UINT8_t filter
 Receive packet filter. More...
 
UINT16_t BaseIo
 I/O base address. More...
 
UINT16_t IntNumber
 IRQ number. More...
 
UINT16_t MaxTranUnit
 Adapter MTU. More...
 
UINT16_t HwType
 Hardware type. More...
 
UINT16_t HwAddrLen
 MAC address length. More...
 
MAC_ADDR_t CurrentNodeAddress
 Current MAC address. More...
 
MAC_ADDR_t PermNodeAddress
 Permanent (EEPROM) MAC address. More...
 
SEGSEL_t ROMAddress
 Real-mode ROM segment address. More...
 
UINT16_t RxBufCt
 Receive queue length. More...
 
UINT16_t TxBufCt
 Transmit queue length. More...
 
UINT32_t XmtGoodFrames
 Successful transmission count. More...
 
UINT32_t RcvGoodFrames
 Successful reception count. More...
 
UINT32_t RcvCRCErrors
 Receive CRC error count. More...
 
UINT32_t RcvResourceErrors
 Receive queue overflow count. More...
 
IP4_t InetAddr
 Multicast IP address. More...
 
MAC_ADDR_t MediaAddr
 Multicast MAC address. More...
 
UINT16_t Vendor_ID
 PCI vendor ID. More...
 
UINT16_t Dev_ID
 PCI device ID. More...
 
UINT8_t Base_Class
 PCI base class. More...
 
UINT8_t Sub_Class
 PCI sub class. More...
 
UINT8_t Prog_Intf
 PCI programming interface. More...
 
UINT8_t Rev
 PCI revision. More...
 
UINT16_t BusDevFunc
 PCI bus:dev:fn address. More...
 
UINT16_t SubVendor_ID
 PCI subvendor ID. More...
 
UINT16_t SubDevice_ID
 PCI subdevice ID. More...
 
UINT32_t EISA_Dev_ID
 EISA device ID. More...
 
UINT16_t CardSelNum
 Card Select Number assigned to card. More...
 
UINT8_t NicType
 NIC type. More...
 
union nic_type_info info
 
UINT8_t IfaceType [16]
 Interface type. More...
 
UINT32_t LinkSpeed
 Link speed, in bits per second. More...
 
UINT32_t ServiceFlags
 Service flags. More...
 
UINT8_t UNDIstate
 Current state of the UNDI driver. More...
 
UINT16_t FuncFlag
 Function flag. More...
 
UINT16_t BufferLength
 Data buffer length. More...
 
UINT16_t FrameLength
 Total frame length. More...
 
UINT16_t FrameHeaderLength
 Frame header length. More...
 
SEGOFF16_t Frame
 Data buffer address. More...
 
UINT8_t ProtType
 Protocol type. More...
 
UINT8_t PktType
 Packet type. More...
 
UINT16_t FileHandle
 File handle. More...
 
UINT16_t Ready
 Indication of readiness. More...
 
SEGOFF16_t Command
 Command to execute. More...
 
UINT16_t Size
 Size of structure. More...
 
UINT32_t Magic
 Magic number. More...
 
UINT32_t Provider
 Implementation identifier. More...
 
UINT32_t APIMask
 Supported API functions. More...
 
SEGOFF16_t Hook
 SEG16:OFF16 to jump to. More...
 
SEGSEL_t UNDI_DS
 UNDI data segment. More...
 
SEGSEL_t UNDI_CS
 UNDI code segment. More...
 
SEGOFF16_t PXEptr
 Address of the !PXE structure (a struct s_PXE) More...
 
SEGOFF16_t PXENVptr
 Address of the PXENV+ structure (a struct s_PXENV) More...
 

Detailed Description

Preboot eXecution Environment (PXE) API.

Definition in file pxe_api.h.

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL  )

Variable Documentation

◆ Signature

UINT8_t Signature

Signature.

Contains the bytes 'P', 'X', 'E', 'N', 'V', '+'.

Contains the bytes '!', 'P', 'X', 'E'.

Definition at line 61 of file pxe_api.h.

◆ Version

UINT16_t Version

PXE API version.

MSB is major version number, LSB is minor version number. If the API version number is 0x0201 or greater, the !PXE structure pointed to by PXEPtr should be used instead of this data structure.

Definition at line 69 of file pxe_api.h.

◆ Length

UINT8_t Length

Length of this structure.

Definition at line 70 of file pxe_api.h.

◆ Checksum

UINT8_t Checksum

Checksum.

The byte checksum of this structure (using the length in Length) must be zero.

Definition at line 76 of file pxe_api.h.

◆ RMEntry

SEGOFF16_t RMEntry

Real-mode PXENV+ entry point.

Definition at line 77 of file pxe_api.h.

◆ PMOffset

UINT32_t PMOffset

Protected-mode PXENV+ entry point offset.

PXE 2.1 deprecates this entry point. For protected-mode API calls, use the !PXE structure pointed to by PXEPtr instead.

Definition at line 84 of file pxe_api.h.

◆ PMSelector

SEGSEL_t PMSelector

Protected-mode PXENV+ entry point segment selector.

PXE 2.1 deprecates this entry point. For protected-mode API calls, use the !PXE structure pointed to by PXEPtr instead.

Definition at line 91 of file pxe_api.h.

◆ StackSeg

SEGSEL_t StackSeg

Stack segment selector.

Definition at line 92 of file pxe_api.h.

◆ StackSize

UINT16_t StackSize

Stack segment size.

Definition at line 93 of file pxe_api.h.

◆ BC_CodeSeg

SEGSEL_t BC_CodeSeg

Base-code code segment selector.

Definition at line 94 of file pxe_api.h.

◆ BC_CodeSize

UINT16_t BC_CodeSize

Base-code code segment size.

Definition at line 95 of file pxe_api.h.

◆ BC_DataSeg

SEGSEL_t BC_DataSeg

Base-code data segment selector.

Definition at line 96 of file pxe_api.h.

◆ BC_DataSize

UINT16_t BC_DataSize

Base-code data segment size.

Definition at line 97 of file pxe_api.h.

◆ UNDIDataSeg

SEGSEL_t UNDIDataSeg

UNDI data segment selector.

Definition at line 98 of file pxe_api.h.

◆ UNDIDataSize

UINT16_t UNDIDataSize

UNDI data segment size.

Definition at line 99 of file pxe_api.h.

◆ UNDICodeSeg

SEGSEL_t UNDICodeSeg

UNDI code segment selector.

Definition at line 100 of file pxe_api.h.

◆ UNDICodeSize

UINT16_t UNDICodeSize

UNDI code segment size.

Definition at line 101 of file pxe_api.h.

◆ PXEPtr

SEGOFF16_t PXEPtr

Address of the !PXE structure.

This field is present only if Version is 0x0201 or greater. If present, it points to a struct s_PXE.

Definition at line 107 of file pxe_api.h.

◆ StructLength

UINT8_t StructLength

Length of this structure.

Definition at line 62 of file pxe_api.h.

◆ StructCksum

UINT8_t StructCksum

Checksum.

The byte checksum of this structure (using the length in StructLength) must be zero.

Definition at line 68 of file pxe_api.h.

◆ StructRev

UINT8_t StructRev

Revision of this structure.

For PXE version 2.1, this field must be zero.

Definition at line 73 of file pxe_api.h.

◆ reserved_1

UINT8_t reserved_1

Must be zero.

Definition at line 74 of file pxe_api.h.

◆ UNDIROMID

SEGOFF16_t UNDIROMID

Address of the UNDI ROM ID structure.

This is a pointer to a struct s_UNDI_ROM_ID.

Definition at line 79 of file pxe_api.h.

◆ BaseROMID

SEGOFF16_t BaseROMID

Address of the Base Code ROM ID structure.

This is a pointer to a struct s_BC_ROM_ID.

Definition at line 84 of file pxe_api.h.

◆ EntryPointSP

SEGOFF16_t EntryPointSP

16-bit !PXE entry point

This is the entry point for either real mode, or protected mode with a 16-bit stack segment.

Definition at line 90 of file pxe_api.h.

◆ EntryPointESP

SEGOFF16_t EntryPointESP

32-bit !PXE entry point

This is the entry point for protected mode with a 32-bit stack segment.

Definition at line 96 of file pxe_api.h.

◆ StatusCallout

SEGOFF16_t StatusCallout

Status call-out function.

Parameters
0(if in a time-out loop)
nNumber of a received TFTP packet
Return values
0Continue operation
1Cancel operation

This function will be called whenever the PXE stack is in protected mode, is waiting for an event (e.g. a DHCP reply) and wishes to allow the user to cancel the operation. Parameters are passed in register ax; the return value must also be placed in register ax. All other registers and flags must be preserved.

In real mode, an internal function (that checks for a keypress) will be used.

If this field is set to -1, no status call-out function will be used and consequently the user will not be allowed to interrupt operations.

Note
The PXE specification version 2.1 defines the StatusCallout field, mentions it 11 times, but nowhere defines what it actually does or how it gets called. Fortunately, the WfM specification version 1.1a deigns to inform us of such petty details.

Definition at line 124 of file pxe_api.h.

◆ reserved_2

UINT8_t reserved_2

Must be zero.

Definition at line 125 of file pxe_api.h.

◆ SegDescCnt

UINT8_t SegDescCnt

Number of segment descriptors.

If this number is greater than 7, the remaining descriptors follow immediately after BC_CodeWrite.

Definition at line 131 of file pxe_api.h.

◆ FirstSelector

SEGSEL_t FirstSelector

First protected-mode selector.

This is the segment selector value for the first segment assigned to PXE. Protected-mode selectors must be consecutive, according to the PXE 2.1 specification, though no reason is given. Each #SEGDESC_t includes a field for the segment selector, so this information is entirely redundant.

Definition at line 141 of file pxe_api.h.

◆ Stack

SEGDESC_t Stack

Stack segment descriptor.

Definition at line 143 of file pxe_api.h.

◆ UNDIData

SEGDESC_t UNDIData

UNDI data segment descriptor.

Definition at line 145 of file pxe_api.h.

◆ UNDICode

SEGDESC_t UNDICode

UNDI code segment descriptor.

Definition at line 147 of file pxe_api.h.

◆ UNDICodeWrite

SEGDESC_t UNDICodeWrite

UNDI writable code segment descriptor.

Definition at line 149 of file pxe_api.h.

◆ BC_Data

SEGDESC_t BC_Data

Base-code data segment descriptor.

Definition at line 151 of file pxe_api.h.

◆ BC_Code

SEGDESC_t BC_Code

Base-code code segment descriptor.

Definition at line 153 of file pxe_api.h.

◆ BC_CodeWrite

SEGDESC_t BC_CodeWrite

Base-code writable code segment descriptor.

Definition at line 155 of file pxe_api.h.

◆ Status

PXE status code.

Definition at line 57 of file pxe_api.h.

Referenced by efi_download_abort().

◆ reserved

UINT8_t reserved[8]

Must be zero.

Definition at line 58 of file pxe_api.h.

◆ PacketType

UINT16_t PacketType

Packet type.

Valid values are PXENV_PACKET_TYPE_DHCP_DISCOVER, PXENV_PACKET_TYPE_DHCP_ACK or PXENV_PACKET_TYPE_CACHED_REPLY

Definition at line 63 of file pxe_api.h.

◆ BufferSize

UINT16_t BufferSize

Buffer size.

Data buffer size.

Size of data buffer.

Definition at line 64 of file pxe_api.h.

◆ Buffer

SEGOFF16_t Buffer

Buffer address.

Data buffer.

Address of data buffer.

Definition at line 65 of file pxe_api.h.

◆ BufferLimit

UINT16_t BufferLimit

Maximum buffer size.

Definition at line 66 of file pxe_api.h.

◆ opcode

UINT8_t opcode

Message opcode.

Valid values are BOOTP_REQ and BOOTP_REP.

Definition at line 61 of file pxe_api.h.

◆ Hardware

UINT8_t Hardware

NIC hardware type.

Valid values are as for s_PXENV_UNDI_GET_INFORMATION::HwType.

Definition at line 66 of file pxe_api.h.

◆ Hardlen

UINT8_t Hardlen

MAC address length.

Definition at line 67 of file pxe_api.h.

◆ Gatehops

UINT8_t Gatehops

Gateway hops.

Zero in packets sent by the client. May be non-zero in replies from the DHCP server, if the reply comes via a DHCP relay agent.

Definition at line 74 of file pxe_api.h.

◆ ident

UINT32_t ident

DHCP transaction id (xid)

Definition at line 75 of file pxe_api.h.

◆ seconds

UINT16_t seconds

Elapsed time.

Number of seconds since the client began the DHCP transaction.

Definition at line 81 of file pxe_api.h.

Referenced by mktime(), and sleep_exec().

◆ Flags

UINT32_t Flags

Flags.

Reserved for the future.

This is the bitwise-OR of any of the following values: BOOTP_BCAST.

Definition at line 87 of file pxe_api.h.

◆ cip

IP4_t cip

Client IP address.

Set only if the client already has an IP address.

Definition at line 92 of file pxe_api.h.

◆ yip

IP4_t yip

Your IP address.

This is the IP address that the server assigns to the client.

Definition at line 98 of file pxe_api.h.

◆ sip

IP4_t sip

Server IP address.

This is the IP address of the BOOTP/DHCP server.

Definition at line 103 of file pxe_api.h.

◆ gip

IP4_t gip

Gateway IP address.

This is the IP address of the BOOTP/DHCP relay agent, if any. It is not (necessarily) the address of the default gateway for routing purposes.

Definition at line 110 of file pxe_api.h.

◆ CAddr

MAC_ADDR_t CAddr

Client MAC address.

Definition at line 111 of file pxe_api.h.

◆ Sname

UINT8_t Sname[64]

Server host name.

Definition at line 112 of file pxe_api.h.

◆ bootfile

UINT8_t bootfile[128]

Boot file name.

Definition at line 113 of file pxe_api.h.

◆ vendor

union bootph_vendor vendor

◆ AX

ax register as passed to the Option ROM initialisation routine.

ax register as for PXENV_START_UNDI

For a PCI device, this should contain the bus:dev:fn value that uniquely identifies the PCI device in the system. For a non-PCI device, this field is not defined.

Definition at line 64 of file pxe_api.h.

◆ BX

bx register as passed to the Option ROM initialisation routine.

bx register as for PXENV_START_UNDI

For an ISAPnP device, this should contain the Card Select Number assigned to the ISAPnP card. For non-ISAPnP devices, this should contain 0xffff.

Definition at line 71 of file pxe_api.h.

◆ DX

dx register as passed to the Option ROM initialisation routine.

dx register as for PXENV_START_UNDI

For an ISAPnP device, this should contain the ISAPnP Read Port address as currently set in all ISAPnP cards. If there are no ISAPnP cards, this should contain 0xffff. (If this is a non-ISAPnP device, but there are ISAPnP cards in the system, this value is not well defined.)

Definition at line 80 of file pxe_api.h.

◆ DI

OFF16_t DI

di register as passed to the Option ROM initialisation routine.

di register as for PXENV_START_UNDI

This contains the OFF16_t portion of a struct s_SEGOFF16 that points to the System BIOS Plug and Play Installation Check Structure. (Refer to section 4.4 of the Plug and Play BIOS specification for a description of this structure.)

Note
The PXE specification defines the type of this field as UINT16_t. For x86, OFF16_t and UINT16_t are equivalent anyway; for other architectures OFF16_t makes more sense.

Definition at line 94 of file pxe_api.h.

◆ ES

es register as passed to the Option ROM initialisation routine.

es register as for PXENV_START_UNDI

This contains the SEGSEL_t portion of a struct s_SEGOFF16 that points to the System BIOS Plug and Play Installation Check Structure. (Refer to section 4.4 of the Plug and Play BIOS specification for a description of this structure.)

Note
The PXE specification defines the type of this field as UINT16_t. For x86, SEGSEL_t and UINT16_t are equivalent anyway; for other architectures SEGSEL_t makes more sense.

Definition at line 108 of file pxe_api.h.

◆ ServerIPAddress

IP4_t ServerIPAddress

TFTP server IP address.

Definition at line 58 of file pxe_api.h.

◆ GatewayIPAddress

IP4_t GatewayIPAddress

Relay agent IP address.

Definition at line 59 of file pxe_api.h.

◆ FileName

SEGOFF16_t FileName

File name.

File URL.

Definition at line 60 of file pxe_api.h.

◆ TFTPPort

UDP_PORT_t TFTPPort

TFTP server UDP port.

Definition at line 61 of file pxe_api.h.

◆ PacketSize

UINT16_t PacketSize

Requested size of TFTP packets.

This is the TFTP "blksize" option. This must be at least 512, since servers that do not support TFTP options cannot negotiate blocksizes smaller than this.

Definition at line 68 of file pxe_api.h.

◆ PacketNumber

UINT16_t PacketNumber

TFTP packet number.

Definition at line 58 of file pxe_api.h.

◆ McastIPAddress

IP4_t McastIPAddress

File multicast IP address.

Definition at line 64 of file pxe_api.h.

◆ TFTPClntPort

UDP_PORT_t TFTPClntPort

Client multicast listening port.

Definition at line 66 of file pxe_api.h.

◆ TFTPSrvPort

UDP_PORT_t TFTPSrvPort

Server multicast listening port.

Definition at line 68 of file pxe_api.h.

◆ TFTPOpenTimeOut

UINT16_t TFTPOpenTimeOut

TFTP open timeout.

This is the timeout for receiving the first DATA or ACK packets during the MTFTP Listen phase.

Definition at line 74 of file pxe_api.h.

◆ TFTPReopenDelay

UINT16_t TFTPReopenDelay

TFTP reopen timeout.

This is the timeout for receiving an ACK packet while in the MTFTP Listen phase (when at least one ACK packet has already been seen).

Definition at line 81 of file pxe_api.h.

◆ FileSize

UINT32_t FileSize

Size of the file.

File size.

Definition at line 61 of file pxe_api.h.

◆ src_ip

IP4_t src_ip

IP address of this station.

Source IP address.

Definition at line 58 of file pxe_api.h.

Referenced by efi_pxe_udp_read(), and efi_pxe_udp_write().

◆ ip

IP4_t ip

◆ gw

IP4_t gw

Relay agent IP address.

Definition at line 59 of file pxe_api.h.

◆ src_port

UDP_PORT_t src_port

Source UDP port.

Definition at line 60 of file pxe_api.h.

Referenced by efi_pxe_udp_read(), and efi_pxe_udp_write().

◆ dst_port

UDP_PORT_t dst_port

Destination UDP port.

Definition at line 61 of file pxe_api.h.

◆ buffer_size

UINT16_t buffer_size

UDP payload buffer size.

Definition at line 62 of file pxe_api.h.

Referenced by efi_locate_handle_wrapper().

◆ buffer

SEGOFF16_t buffer

UDP payload buffer address.

Definition at line 63 of file pxe_api.h.

◆ dest_ip

IP4_t dest_ip

Destination IP address.

Definition at line 59 of file pxe_api.h.

Referenced by efi_pxe_udp_read(), efi_pxe_udp_write(), and pxenv_udp_read().

◆ s_port

UDP_PORT_t s_port

Source UDP port.

Definition at line 60 of file pxe_api.h.

◆ d_port

UDP_PORT_t d_port

Destination UDP port.

Definition at line 61 of file pxe_api.h.

Referenced by pxenv_udp_read().

◆ ProtocolIni

ADDR32_t ProtocolIni

NDIS 2.0 configuration information, or NULL.

This is a pointer to the data structure returned by the NDIS 2.0 GetProtocolManagerInfo() API call. The data structure is documented, in a rather haphazard way, in section 4-17 of the NDIS 2.0 specification.

Definition at line 65 of file pxe_api.h.

◆ MCastAddrCount

UINT16_t MCastAddrCount

Number of multicast MAC addresses.

Definition at line 58 of file pxe_api.h.

◆ McastAddr

List of up to MAXNUM_MCADDR multicast MAC addresses.

Definition at line 60 of file pxe_api.h.

◆ R_Mcast_Buf

struct s_PXENV_UNDI_MCAST_ADDRESS R_Mcast_Buf

Multicast MAC addresses.

List of multicast addresses.

Definition at line 59 of file pxe_api.h.

◆ OpenFlag

UINT16_t OpenFlag

Open flags as defined in NDIS 2.0.

This is the OpenOptions field as passed to the NDIS 2.0 OpenAdapter() API call. It is defined to be "adapter specific", though 0 is guaranteed to be a valid value.

Definition at line 64 of file pxe_api.h.

◆ PktFilter

UINT16_t PktFilter

Receive packet filter.

This is the bitwise-OR of any of the following flags: FLTR_DIRECTED, FLTR_BRDCST, FLTR_PRMSCS and FLTR_SRC_RTG.

Definition at line 71 of file pxe_api.h.

◆ ImmedLength

UINT16_t ImmedLength

Length of the transmit buffer.

Definition at line 57 of file pxe_api.h.

◆ Xmit

SEGOFF16_t Xmit

Address of the transmit buffer.

Definition at line 58 of file pxe_api.h.

◆ DataBlkCount

UINT16_t DataBlkCount

Definition at line 59 of file pxe_api.h.

◆ DataBlock

struct DataBlk DataBlock[MAX_DATA_BLKS]

◆ Protocol

UINT8_t Protocol

Protocol.

Valid values are P_UNKNOWN, P_IP, P_ARP or P_RARP. If the caller has already filled in the media header, this field must be set to P_UNKNOWN.

Definition at line 64 of file pxe_api.h.

◆ XmitFlag

UINT8_t XmitFlag

Unicast/broadcast flag.

Valid values are XMT_DESTADDR or XMT_BROADCAST.

Definition at line 69 of file pxe_api.h.

◆ DestAddr

SEGOFF16_t DestAddr

Destination MAC address.

Definition at line 70 of file pxe_api.h.

◆ TBD

SEGOFF16_t TBD

Address of the Transmit Buffer Descriptor.

This is a pointer to a struct s_PXENV_UNDI_TBD.

Definition at line 75 of file pxe_api.h.

◆ Reserved

UINT32_t Reserved

Must be zero.

Reserved.

Definition at line 76 of file pxe_api.h.

◆ StationAddress

MAC_ADDR_t StationAddress

Station MAC address.

Definition at line 58 of file pxe_api.h.

◆ filter

UINT8_t filter

Receive packet filter.

This field takes the same values as s_PXENV_UNDI_OPEN::PktFilter.

Note
Yes, this field is a different size to s_PXENV_UNDI_OPEN::PktFilter. Blame "the managers at Intel who apparently let a consultant come up with the spec without any kind of adult supervision" (quote from hpa).

Definition at line 68 of file pxe_api.h.

Referenced by ath5k_hw_get_rx_filter(), ath5k_hw_set_rx_filter(), ecm_open(), efi_pxe_ip_filter(), efi_pxe_set_ip_filter(), efi_vlan_find(), png_unfilter_pass(), rndis_filter(), and sky2_set_multicast().

◆ BaseIo

UINT16_t BaseIo

I/O base address.

Definition at line 58 of file pxe_api.h.

◆ IntNumber

UINT16_t IntNumber

IRQ number.

Definition at line 59 of file pxe_api.h.

◆ MaxTranUnit

UINT16_t MaxTranUnit

Adapter MTU.

Definition at line 60 of file pxe_api.h.

◆ HwType

UINT16_t HwType

Hardware type.

Valid values are defined in RFC1010 ("Assigned numbers"), and are ETHER_TYPE, EXP_ETHER_TYPE, AX25_TYPE, TOKEN_RING_TYPE, CHAOS_TYPE, IEEE_TYPE or ARCNET_TYPE.

Definition at line 67 of file pxe_api.h.

◆ HwAddrLen

UINT16_t HwAddrLen

MAC address length.

Definition at line 68 of file pxe_api.h.

◆ CurrentNodeAddress

MAC_ADDR_t CurrentNodeAddress

Current MAC address.

Definition at line 69 of file pxe_api.h.

◆ PermNodeAddress

MAC_ADDR_t PermNodeAddress

Permanent (EEPROM) MAC address.

Definition at line 70 of file pxe_api.h.

◆ ROMAddress

SEGSEL_t ROMAddress

Real-mode ROM segment address.

Definition at line 71 of file pxe_api.h.

◆ RxBufCt

UINT16_t RxBufCt

Receive queue length.

Definition at line 72 of file pxe_api.h.

◆ TxBufCt

UINT16_t TxBufCt

Transmit queue length.

Definition at line 73 of file pxe_api.h.

◆ XmtGoodFrames

UINT32_t XmtGoodFrames

Successful transmission count.

Definition at line 58 of file pxe_api.h.

◆ RcvGoodFrames

UINT32_t RcvGoodFrames

Successful reception count.

Definition at line 59 of file pxe_api.h.

◆ RcvCRCErrors

UINT32_t RcvCRCErrors

Receive CRC error count.

Definition at line 60 of file pxe_api.h.

◆ RcvResourceErrors

UINT32_t RcvResourceErrors

Receive queue overflow count.

Definition at line 61 of file pxe_api.h.

◆ InetAddr

IP4_t InetAddr

Multicast IP address.

Definition at line 58 of file pxe_api.h.

◆ MediaAddr

MAC_ADDR_t MediaAddr

Multicast MAC address.

Definition at line 59 of file pxe_api.h.

◆ Vendor_ID

UINT16_t Vendor_ID

PCI vendor ID.

Definition at line 57 of file pxe_api.h.

◆ Dev_ID

UINT16_t Dev_ID

PCI device ID.

Definition at line 58 of file pxe_api.h.

◆ Base_Class

UINT8_t Base_Class

PCI base class.

Base class.

Definition at line 59 of file pxe_api.h.

◆ Sub_Class

UINT8_t Sub_Class

PCI sub class.

Sub class.

Definition at line 60 of file pxe_api.h.

◆ Prog_Intf

UINT8_t Prog_Intf

PCI programming interface.

Programming interface.

Definition at line 61 of file pxe_api.h.

◆ Rev

UINT8_t Rev

PCI revision.

Definition at line 62 of file pxe_api.h.

◆ BusDevFunc

UINT16_t BusDevFunc

PCI bus:dev:fn address.

Definition at line 63 of file pxe_api.h.

◆ SubVendor_ID

UINT16_t SubVendor_ID

PCI subvendor ID.

Definition at line 64 of file pxe_api.h.

◆ SubDevice_ID

UINT16_t SubDevice_ID

PCI subdevice ID.

Definition at line 65 of file pxe_api.h.

◆ EISA_Dev_ID

UINT32_t EISA_Dev_ID

EISA device ID.

Definition at line 57 of file pxe_api.h.

◆ CardSelNum

UINT16_t CardSelNum

Card Select Number assigned to card.

Definition at line 62 of file pxe_api.h.

◆ NicType

UINT8_t NicType

NIC type.

Valid values are PCI_NIC, PnP_NIC or CardBus_NIC.

Definition at line 62 of file pxe_api.h.

◆ info

union nic_type_info info

◆ IfaceType

UINT8_t IfaceType[16]

Interface type.

This is defined in the NDIS 2.0 specification to be one of the strings "802.3", "802.4", "802.5", "802.6", "DIX", "DIX+802.3", "APPLETALK", "ARCNET", "FDDI", "SDLC", "BSC", "HDLC", or "ISDN".

"Normal" Ethernet, for various historical reasons, is "DIX+802.3".

Definition at line 68 of file pxe_api.h.

◆ LinkSpeed

UINT32_t LinkSpeed

Link speed, in bits per second.

Definition at line 69 of file pxe_api.h.

◆ ServiceFlags

UINT32_t ServiceFlags

Service flags.

These are the "service flags" defined in the "MAC Service-Specific Characteristics" table in the NDIS 2.0 specification. Almost all of them are irrelevant to PXE.

Definition at line 76 of file pxe_api.h.

◆ UNDIstate

UINT8_t UNDIstate

Current state of the UNDI driver.

Valid values are PXE_UNDI_GET_STATE_STARTED, PXE_UNDI_GET_STATE_INITIALIZED or PXE_UNDI_GET_STATE_OPENED.

Definition at line 64 of file pxe_api.h.

◆ FuncFlag

UINT16_t FuncFlag

◆ BufferLength

UINT16_t BufferLength

Data buffer length.

Definition at line 67 of file pxe_api.h.

◆ FrameLength

UINT16_t FrameLength

Total frame length.

Definition at line 68 of file pxe_api.h.

◆ FrameHeaderLength

UINT16_t FrameHeaderLength

Frame header length.

Definition at line 69 of file pxe_api.h.

◆ Frame

SEGOFF16_t Frame

Data buffer address.

Definition at line 70 of file pxe_api.h.

◆ ProtType

UINT8_t ProtType

Protocol type.

Valid values are P_IP, P_ARP, P_RARP or P_OTHER.

Definition at line 75 of file pxe_api.h.

◆ PktType

UINT8_t PktType

Packet type.

Valid values are P_DIRECTED, P_BROADCAST or P_MULTICAST.

Definition at line 80 of file pxe_api.h.

◆ FileHandle

UINT16_t FileHandle

File handle.

Definition at line 58 of file pxe_api.h.

◆ Ready

UINT16_t Ready

Indication of readiness.

Definition at line 59 of file pxe_api.h.

◆ Command

SEGOFF16_t Command

Command to execute.

Definition at line 58 of file pxe_api.h.

◆ Size

UINT16_t Size

Size of structure.

Definition at line 58 of file pxe_api.h.

◆ Magic

UINT32_t Magic

Magic number.

Definition at line 59 of file pxe_api.h.

◆ Provider

UINT32_t Provider

Implementation identifier.

Definition at line 60 of file pxe_api.h.

◆ APIMask

UINT32_t APIMask

Supported API functions.

Definition at line 61 of file pxe_api.h.

◆ Hook

SEGOFF16_t Hook

SEG16:OFF16 to jump to.

Definition at line 58 of file pxe_api.h.

◆ UNDI_DS

SEGSEL_t UNDI_DS

UNDI data segment.

Note
The PXE specification defines the type of this field as UINT16_t. For x86, SEGSEL_t and UINT16_t are equivalent anyway; for other architectures SEGSEL_t makes more sense.

Definition at line 76 of file pxe_api.h.

◆ UNDI_CS

SEGSEL_t UNDI_CS

UNDI code segment.

Note
The PXE specification defines the type of this field as UINT16_t. For x86, SEGSEL_t and UINT16_t are equivalent anyway; for other architectures SEGSEL_t makes more sense.

Definition at line 84 of file pxe_api.h.

◆ PXEptr

SEGOFF16_t PXEptr

Address of the !PXE structure (a struct s_PXE)

Definition at line 86 of file pxe_api.h.

◆ PXENVptr

SEGOFF16_t PXENVptr

Address of the PXENV+ structure (a struct s_PXENV)

Definition at line 88 of file pxe_api.h.