mirror of
https://github.com/ipxe/ipxe
synced 2025-12-22 13:00:39 +03:00
Updated PXE UDP implementation to use the new Etherboot UDP API.
Updated PXE API dispatcher to use copy_{to,from}_user, and moved to
arch/i386 since the implementation is quite architecture-dependent.
(The individual PXE API calls can be largely
architecture-independent.)
This commit is contained in:
@@ -25,6 +25,8 @@
|
||||
#include "dev.h"
|
||||
#include "pxe.h"
|
||||
|
||||
#if 0
|
||||
|
||||
/* Global pointer to currently installed PXE stack */
|
||||
pxe_stack_t *pxe_stack = NULL;
|
||||
|
||||
@@ -162,151 +164,4 @@ int ensure_pxe_state ( pxe_stack_state_t wanted ) {
|
||||
return success;
|
||||
}
|
||||
|
||||
/* API call dispatcher
|
||||
*
|
||||
* Status: complete
|
||||
*/
|
||||
PXENV_EXIT_t pxe_api_call ( int opcode, union u_PXENV_ANY *any ) {
|
||||
PXENV_EXIT_t ret = PXENV_EXIT_FAILURE;
|
||||
|
||||
/* Set default status in case child routine fails to do so */
|
||||
any->Status = PXENV_STATUS_FAILURE;
|
||||
|
||||
DBG ( "[" );
|
||||
|
||||
/* Hand off to relevant API routine */
|
||||
switch ( opcode ) {
|
||||
case PXENV_START_UNDI:
|
||||
ret = pxenv_start_undi ( &any->start_undi );
|
||||
break;
|
||||
case PXENV_UNDI_STARTUP:
|
||||
ret = pxenv_undi_startup ( &any->undi_startup );
|
||||
break;
|
||||
case PXENV_UNDI_CLEANUP:
|
||||
ret = pxenv_undi_cleanup ( &any->undi_cleanup );
|
||||
break;
|
||||
case PXENV_UNDI_INITIALIZE:
|
||||
ret = pxenv_undi_initialize ( &any->undi_initialize );
|
||||
break;
|
||||
case PXENV_UNDI_RESET_ADAPTER:
|
||||
ret = pxenv_undi_reset_adapter ( &any->undi_reset_adapter );
|
||||
break;
|
||||
case PXENV_UNDI_SHUTDOWN:
|
||||
ret = pxenv_undi_shutdown ( &any->undi_shutdown );
|
||||
break;
|
||||
case PXENV_UNDI_OPEN:
|
||||
ret = pxenv_undi_open ( &any->undi_open );
|
||||
break;
|
||||
case PXENV_UNDI_CLOSE:
|
||||
ret = pxenv_undi_close ( &any->undi_close );
|
||||
break;
|
||||
case PXENV_UNDI_TRANSMIT:
|
||||
ret = pxenv_undi_transmit ( &any->undi_transmit );
|
||||
break;
|
||||
case PXENV_UNDI_SET_MCAST_ADDRESS:
|
||||
ret = pxenv_undi_set_mcast_address (
|
||||
&any->undi_set_mcast_address );
|
||||
break;
|
||||
case PXENV_UNDI_SET_STATION_ADDRESS:
|
||||
ret = pxenv_undi_set_station_address (
|
||||
&any->undi_set_station_address );
|
||||
break;
|
||||
case PXENV_UNDI_SET_PACKET_FILTER:
|
||||
ret = pxenv_undi_set_packet_filter (
|
||||
&any->undi_set_packet_filter );
|
||||
break;
|
||||
case PXENV_UNDI_GET_INFORMATION:
|
||||
ret = pxenv_undi_get_information (
|
||||
&any->undi_get_information );
|
||||
break;
|
||||
case PXENV_UNDI_GET_STATISTICS:
|
||||
ret = pxenv_undi_get_statistics ( &any->undi_get_statistics );
|
||||
break;
|
||||
case PXENV_UNDI_CLEAR_STATISTICS:
|
||||
ret = pxenv_undi_clear_statistics (
|
||||
&any->undi_clear_statistics );
|
||||
break;
|
||||
case PXENV_UNDI_INITIATE_DIAGS:
|
||||
ret = pxenv_undi_initiate_diags ( &any->undi_initiate_diags );
|
||||
|
||||
break;
|
||||
case PXENV_UNDI_FORCE_INTERRUPT:
|
||||
ret = pxenv_undi_force_interrupt (
|
||||
&any->undi_force_interrupt );
|
||||
break;
|
||||
case PXENV_UNDI_GET_MCAST_ADDRESS:
|
||||
ret = pxenv_undi_get_mcast_address (
|
||||
&any->undi_get_mcast_address );
|
||||
break;
|
||||
case PXENV_UNDI_GET_NIC_TYPE:
|
||||
ret = pxenv_undi_get_nic_type ( &any->undi_get_nic_type );
|
||||
break;
|
||||
case PXENV_UNDI_GET_IFACE_INFO:
|
||||
ret = pxenv_undi_get_iface_info ( &any->undi_get_iface_info );
|
||||
break;
|
||||
case PXENV_UNDI_ISR:
|
||||
ret = pxenv_undi_isr ( &any->undi_isr );
|
||||
break;
|
||||
case PXENV_STOP_UNDI:
|
||||
ret = pxenv_stop_undi ( &any->stop_undi );
|
||||
break;
|
||||
case PXENV_TFTP_OPEN:
|
||||
ret = pxenv_tftp_open ( &any->tftp_open );
|
||||
break;
|
||||
case PXENV_TFTP_CLOSE:
|
||||
ret = pxenv_tftp_close ( &any->tftp_close );
|
||||
break;
|
||||
case PXENV_TFTP_READ:
|
||||
ret = pxenv_tftp_read ( &any->tftp_read );
|
||||
break;
|
||||
case PXENV_TFTP_READ_FILE:
|
||||
ret = pxenv_tftp_read_file ( &any->tftp_read_file );
|
||||
break;
|
||||
case PXENV_TFTP_GET_FSIZE:
|
||||
ret = pxenv_tftp_get_fsize ( &any->tftp_get_fsize );
|
||||
break;
|
||||
case PXENV_UDP_OPEN:
|
||||
ret = pxenv_udp_open ( &any->udp_open );
|
||||
break;
|
||||
case PXENV_UDP_CLOSE:
|
||||
ret = pxenv_udp_close ( &any->udp_close );
|
||||
break;
|
||||
case PXENV_UDP_READ:
|
||||
ret = pxenv_udp_read ( &any->udp_read );
|
||||
break;
|
||||
case PXENV_UDP_WRITE:
|
||||
ret = pxenv_udp_write ( &any->udp_write );
|
||||
break;
|
||||
case PXENV_UNLOAD_STACK:
|
||||
ret = pxenv_unload_stack ( &any->unload_stack );
|
||||
break;
|
||||
case PXENV_GET_CACHED_INFO:
|
||||
ret = pxenv_get_cached_info ( &any->get_cached_info );
|
||||
break;
|
||||
case PXENV_RESTART_TFTP:
|
||||
ret = pxenv_restart_tftp ( &any->restart_tftp );
|
||||
break;
|
||||
case PXENV_START_BASE:
|
||||
ret = pxenv_start_base ( &any->start_base );
|
||||
break;
|
||||
case PXENV_STOP_BASE:
|
||||
ret = pxenv_stop_base ( &any->stop_base );
|
||||
break;
|
||||
|
||||
default:
|
||||
DBG ( "PXENV_UNKNOWN_%hx", opcode );
|
||||
any->Status = PXENV_STATUS_UNSUPPORTED;
|
||||
ret = PXENV_EXIT_FAILURE;
|
||||
break;
|
||||
}
|
||||
|
||||
if ( any->Status != PXENV_STATUS_SUCCESS ) {
|
||||
DBG ( " %hx", any->Status );
|
||||
}
|
||||
if ( ret != PXENV_EXIT_SUCCESS ) {
|
||||
DBG ( ret == PXENV_EXIT_FAILURE ? " err" : " ??" );
|
||||
}
|
||||
DBG ( "]" );
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user