summaryrefslogtreecommitdiffstats
path: root/src/net/udp
diff options
context:
space:
mode:
authorMichael Brown2015-08-26 17:02:46 +0200
committerMichael Brown2015-08-26 17:08:58 +0200
commitf0c6c4efd8008d07911a552fe5e44dfe3ad7e06d (patch)
tree402ba9a63436e47495cb202900b19722689226ab /src/net/udp
parent[settings] Re-add "uristring" setting type (diff)
downloadipxe-f0c6c4efd8008d07911a552fe5e44dfe3ad7e06d.tar.gz
ipxe-f0c6c4efd8008d07911a552fe5e44dfe3ad7e06d.tar.xz
ipxe-f0c6c4efd8008d07911a552fe5e44dfe3ad7e06d.zip
[dhcp] Do not skip ProxyDHCPREQUEST if next-server is empty
We attempt to mimic the behaviour of Intel's PXE ROM by skipping the separate ProxyDHCPREQUEST if the ProxyDHCPOFFER already contains a boot filename or a PXE boot menu. Experimentation reveals that Intel's PXE ROM will also check for a non-empty next-server address alongside the boot filename. Update our test to match this behaviour. Reported-by: Wissam Shoukair <wissams@mellanox.com> Tested-by: Wissam Shoukair <wissams@mellanox.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net/udp')
-rw-r--r--src/net/udp/dhcp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/net/udp/dhcp.c b/src/net/udp/dhcp.c
index aed5ee36..36c2b13a 100644
--- a/src/net/udp/dhcp.c
+++ b/src/net/udp/dhcp.c
@@ -296,8 +296,9 @@ static void dhcp_set_state ( struct dhcp_session *dhcp,
*/
static int dhcp_has_pxeopts ( struct dhcp_packet *dhcppkt ) {
- /* Check for a boot filename */
- if ( dhcppkt_fetch ( dhcppkt, DHCP_BOOTFILE_NAME, NULL, 0 ) > 0 )
+ /* Check for a next-server and boot filename */
+ if ( dhcppkt->dhcphdr->siaddr.s_addr &&
+ ( dhcppkt_fetch ( dhcppkt, DHCP_BOOTFILE_NAME, NULL, 0 ) > 0 ) )
return 1;
/* Check for a PXE boot menu */