104 switch ( packet_type ) {
106 return "DHCPDISCOVER";
128#define cached_info __use_data16 ( cached_info )
154 sizeof ( *
info ) ) ) != 0 ) {
190 get_cached_info->
Buffer.segment,
233 get_cached_info->
BufferSize =
sizeof ( *info );
235 get_cached_info->
Buffer.segment,
236 get_cached_info->
Buffer.offset,
242 len =
sizeof ( *info );
246 get_cached_info->
Buffer.offset );
284 unsigned int bus_type;
285 unsigned int location;
289 start_undi->
AX, start_undi->
BX, start_undi->
DX );
299 location = start_undi->
BX;
304 location = start_undi->
AX;
#define NULL
NULL pointer (VOID *)
struct arbelprm_rc_send_wqe rc
#define assert(condition)
Assert a condition at run-time.
#define hooked_bios_interrupts
#define BUS_TYPE_PCI
PCI bus type.
#define BUS_TYPE_ISAPNP
ISAPnP bus type.
uint8_t data[48]
Additional event data.
int create_fakedhcpdiscover(struct net_device *netdev, void *data, size_t max_len)
Create fake DHCPDISCOVER packet.
int create_fakepxebsack(struct net_device *netdev, void *data, size_t max_len)
Create fake PXE Boot Server ACK packet.
int create_fakedhcpack(struct net_device *netdev, void *data, size_t max_len)
Create fake DHCPACK packet.
static struct net_device * netdev
uint32_t buffer
Buffer index (or NETVSC_RNDIS_NO_BUFFER)
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
#define PXENV_EXIT_FAILURE
An error occurred.
#define PXENV_EXIT_SUCCESS
No error occurred.
UINT16_t PXENV_EXIT_t
A PXE exit code.
#define PXENV_STATUS_UNDI_CANNOT_INITIALIZE_NIC
#define PXENV_STATUS_UNSUPPORTED
#define PXENV_STATUS_SUCCESS
#define PXENV_STATUS_KEEP_UNDI
struct bootph BOOTPLAYER_t
#define PXENV_PACKET_TYPE_CACHED_REPLY
The Boot Server's Discover Reply packet.
#define PXENV_PACKET_TYPE_DHCP_DISCOVER
The client's DHCPDISCOVER packet.
#define PXENV_GET_CACHED_INFO
PXE API function code for pxenv_get_cached_info()
#define PXENV_PACKET_TYPE_DHCP_ACK
The DHCP server's DHCPACK packet.
#define PXENV_RESTART_TFTP
PXE API function code for pxenv_restart_tftp()
#define PXENV_START_BASE
PXE API function code for pxenv_start_base()
#define PXENV_START_UNDI
PXE API function code for pxenv_start_undi()
#define PXENV_STOP_BASE
PXE API function code for pxenv_stop_base()
#define PXENV_STOP_UNDI
PXE API function code for pxenv_stop_undi()
#define PXENV_UNLOAD_STACK
PXE API function code for pxenv_unload_stack()
Dynamic Host Configuration Protocol.
void * memcpy(void *dest, const void *src, size_t len) __nonnull
void * memset(void *dest, int character, size_t len) __nonnull
void startup(void)
Start up iPXE.
static void shutdown_boot(void)
Shut down system for OS boot.
uint16_t isapnp_read_port
ISAPnP Read Port address.
#define ISAPNP_READ_PORT_MAX
#define ISAPNP_READ_PORT_MIN
#define __from_data16(pointer)
#define __bss16_array(variable, array)
struct net_device * find_netdev_by_location(unsigned int bus_type, unsigned int location)
Get network device by PCI bus:dev.fn address.
Network device management.
#define PXE_API_CALL(_opcode, _entry, _params_type)
Define a PXE API call.
#define __pxe_api_call
Declare a PXE API call.
rmjmp_buf pxe_restart_nbp
Jump buffer for PXENV_RESTART_TFTP.
void pxe_activate(struct net_device *netdev)
Activate PXE stack.
int pxe_deactivate(void)
Deactivate PXE stack.
#define PXE_LOAD_PHYS
PXE physical load address.
static const char * pxenv_get_cached_info_name(int packet_type)
Name PXENV_GET_CACHED_INFO packet type.
static PXENV_EXIT_t pxenv_start_base(struct s_PXENV_START_BASE *start_base)
static struct pxe_dhcp_packet_creator pxe_dhcp_packet_creators[]
PXE DHCP packet creators.
static PXENV_EXIT_t pxenv_stop_base(struct s_PXENV_STOP_BASE *stop_base)
static PXENV_EXIT_t pxenv_stop_undi(struct s_PXENV_STOP_UNDI *stop_undi)
static PXENV_EXIT_t pxenv_restart_tftp(struct s_PXENV_TFTP_READ_FILE *restart_tftp)
static PXENV_EXIT_t pxenv_get_cached_info(struct s_PXENV_GET_CACHED_INFO *get_cached_info)
static PXENV_EXIT_t pxenv_unload_stack(struct s_PXENV_UNLOAD_STACK *unload_stack)
UNLOAD BASE CODE STACK.
static PXENV_EXIT_t pxenv_start_undi(struct s_PXENV_START_UNDI *start_undi)
pxe_cached_info_indices
Zero-based versions of PXENV_GET_CACHED_INFO::PacketType.
@ CACHED_INFO_DHCPDISCOVER
void pxe_fake_cached_info(void)
Construct cached DHCP packets.
PXENV_EXIT_t pxenv_tftp_read_file(struct s_PXENV_TFTP_READ_FILE *tftp_read_file)
TFTP/MTFTP read file.
struct net_device * pxe_netdev
static __always_inline void * real_to_virt(unsigned int segment, unsigned int offset)
Convert segment:offset address to virtual address.
#define rmlongjmp(_env, _val)
char * strerror(int errno)
Retrieve string representation of error number.
A PXE DHCP packet creator.
int(* create)(struct net_device *netdev, void *data, size_t max_len)
Create DHCP packet.
Parameter block for pxenv_get_cached_info()
SEGOFF16_t Buffer
Buffer address.
UINT16_t BufferLimit
Maximum buffer size.
UINT16_t BufferSize
Buffer size.
UINT16_t PacketType
Packet type.
PXENV_STATUS_t Status
PXE status code.
Parameter block for pxenv_start_base()
PXENV_STATUS_t Status
PXE status code.
Parameter block for pxenv_start_undi()
PXENV_STATUS_t Status
PXE status code.
UINT16_t DX
dx register as passed to the Option ROM initialisation routine.
UINT16_t BX
bx register as passed to the Option ROM initialisation routine.
UINT16_t AX
ax register as passed to the Option ROM initialisation routine.
Parameter block for pxenv_stop_base()
PXENV_STATUS_t Status
PXE status code.
Parameter block for pxenv_stop_undi()
PXENV_STATUS_t Status
PXE status code.
Parameter block for pxenv_tftp_read_file()
ADDR32_t Buffer
Address of data buffer.
UINT32_t BufferSize
Size of data buffer.
Parameter block for pxenv_unload_stack()
PXENV_STATUS_t Status
PXE status code.