mirror of
https://github.com/xcat2/xNBA.git
synced 2024-12-14 15:21:32 +00:00
Implement the "overwrite TFTP filename" Microsoft RIS bug workaround.
This commit is contained in:
parent
8130443f9f
commit
d05d8edd42
@ -32,6 +32,15 @@
|
||||
#include "pxe.h"
|
||||
#include "pxe_call.h"
|
||||
|
||||
/** Filename used for last TFTP request
|
||||
*
|
||||
* This is a bug-for-bug compatibility hack needed in order to work
|
||||
* with Microsoft Remote Installation Services (RIS). The filename
|
||||
* used in a call to PXENV_RESTART_TFTP must be returned as the DHCP
|
||||
* filename in subsequent calls to PXENV_GET_CACHED_INFO.
|
||||
*/
|
||||
static char *pxe_ris_filename = NULL;
|
||||
|
||||
/**
|
||||
* UNLOAD BASE CODE STACK
|
||||
*
|
||||
@ -122,6 +131,12 @@ PXENV_EXIT_t pxenv_get_cached_info ( struct s_PXENV_GET_CACHED_INFO
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* Overwrite filename to work around Microsoft RIS bug */
|
||||
if ( pxe_ris_filename ) {
|
||||
strncpy ( dhcppkt.dhcphdr->file, pxe_ris_filename,
|
||||
sizeof ( dhcppkt.dhcphdr->file ) );
|
||||
}
|
||||
|
||||
/* Copy packet to client buffer */
|
||||
buffer = real_to_user ( get_cached_info->Buffer.segment,
|
||||
get_cached_info->Buffer.offset );
|
||||
@ -150,6 +165,14 @@ PXENV_EXIT_t pxenv_restart_tftp ( struct s_PXENV_TFTP_READ_FILE
|
||||
|
||||
DBG ( "PXENV_RESTART_TFTP " );
|
||||
|
||||
/* Work around Microsoft RIS bug */
|
||||
free ( pxe_ris_filename );
|
||||
pxe_ris_filename = strdup ( ( char * ) restart_tftp->FileName );
|
||||
if ( ! pxe_ris_filename ) {
|
||||
restart_tftp->Status = PXENV_STATUS_OUT_OF_RESOURCES;
|
||||
return PXENV_EXIT_FAILURE;
|
||||
}
|
||||
|
||||
/* Words cannot describe the complete mismatch between the PXE
|
||||
* specification and any possible version of reality...
|
||||
*/
|
||||
|
@ -65,9 +65,6 @@ static void pxe_tftp_build_uri ( char *uri_string,
|
||||
int blksize ) {
|
||||
struct in_addr address;
|
||||
|
||||
/* This is a fix to make Microsoft Remote Install Services work (RIS) */
|
||||
#warning "Overwrite DHCP filename"
|
||||
|
||||
address.s_addr = ipaddress;
|
||||
if ( ! port )
|
||||
port = htons ( TFTP_PORT );
|
||||
|
Loading…
Reference in New Issue
Block a user