diff options
| author | Michael Brown | 2015-08-29 17:49:54 +0200 |
|---|---|---|
| committer | Michael Brown | 2015-08-29 17:58:12 +0200 |
| commit | 2ef04f092c1449ba4cff631d5127455ddecc505f (patch) | |
| tree | 8f3329c12b184b1a85da24aaa3d1b30e6411fff3 /src/arch/i386/include | |
| parent | [efi] Improve efi_wrap debugging (diff) | |
| download | ipxe-2ef04f092c1449ba4cff631d5127455ddecc505f.tar.gz ipxe-2ef04f092c1449ba4cff631d5127455ddecc505f.tar.xz ipxe-2ef04f092c1449ba4cff631d5127455ddecc505f.zip | |
[pxe] Construct all fake DHCP packets before starting PXE NBP
Commit edf74df ("[pxe] Always reconstruct packet for
PXENV_GET_CACHED_INFO") fixed the problems caused by returning stale
DHCP packets (e.g. from an earlier boot attempt using a different
network device), but broke interoperability with NBPs such as WDS
which may overwrite our cached (fake) DHCP packets and expect the
modified packets to be returned by a subsequent call to
PXENV_GET_CACHED_INFO.
Fix by constructing the fake DHCP packets immediately before
transferring control to a PXE NBP. Calls to PXENV_GET_CACHED_INFO
will now never modify the cached packets.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch/i386/include')
| -rw-r--r-- | src/arch/i386/include/pxe.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/arch/i386/include/pxe.h b/src/arch/i386/include/pxe.h index 66d752683..54649b504 100644 --- a/src/arch/i386/include/pxe.h +++ b/src/arch/i386/include/pxe.h @@ -192,6 +192,7 @@ extern struct net_device *pxe_netdev; extern const char *pxe_cmdline; extern void pxe_set_netdev ( struct net_device *netdev ); +extern void pxe_fake_cached_info ( void ); extern PXENV_EXIT_t pxenv_tftp_read_file ( struct s_PXENV_TFTP_READ_FILE *tftp_read_file ); extern PXENV_EXIT_t undi_loader ( struct s_UNDI_LOADER *undi_loader ); |
