summaryrefslogtreecommitdiffstats
path: root/src/core/malloc.c
diff options
context:
space:
mode:
authorJoshua Oreman2009-11-03 19:45:58 +0100
committerMarty Connor2010-01-22 00:36:26 +0100
commit5efc2fcb602864e82de2cd7414e3828f589034e5 (patch)
tree45e1981406297577a3a27f4bed99cf347be37903 /src/core/malloc.c
parent[pci] Save and restore PCI command register (diff)
downloadipxe-5efc2fcb602864e82de2cd7414e3828f589034e5.tar.gz
ipxe-5efc2fcb602864e82de2cd7414e3828f589034e5.tar.xz
ipxe-5efc2fcb602864e82de2cd7414e3828f589034e5.zip
[dhcp] Keep multiple DHCP offers received, and use them intelligently
Instead of keeping only the best IP and PXE offers, store all of them, and pick the best to use just before a request is sent. This allows priority differentiation to work even when lower-priority offers provide PXE options, and improves robustness at sites with broken PXE servers intermingled with working ones: when a ProxyDHCP request times out, instead of giving up, we try the next PXE offer we've received. It also allows us to avoid breaking up combined IP+PXE offers, which can be important with some firewall configurations. This behavior matches that of most vendor PXE ROMs. Store a reference to the DHCPOFFER packet in the offer structure, so that when registering settings after a successful ACK we can register the proxy PXE settings we originally received; this removes the need for a nonstandard duplicate REQUEST/ACK to port 67 of proxy servers like dnsmasq that provide PXE options in the OFFER. Total cost: 450 bytes uncompressed. Signed-off-by: Marty Connor <mdc@etherboot.org>
Diffstat (limited to 'src/core/malloc.c')
0 files changed, 0 insertions, 0 deletions