Procházet zdrojové kódy

[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>
tags/v1.20.1
Michael Brown před 9 roky
rodič
revize
f0c6c4efd8
1 změnil soubory, kde provedl 3 přidání a 2 odebrání
  1. 3
    2
      src/net/udp/dhcp.c

+ 3
- 2
src/net/udp/dhcp.c Zobrazit soubor

@@ -296,8 +296,9 @@ static void dhcp_set_state ( struct dhcp_session *dhcp,
296 296
  */
297 297
 static int dhcp_has_pxeopts ( struct dhcp_packet *dhcppkt ) {
298 298
 
299
-	/* Check for a boot filename */
300
-	if ( dhcppkt_fetch ( dhcppkt, DHCP_BOOTFILE_NAME, NULL, 0 ) > 0 )
299
+	/* Check for a next-server and boot filename */
300
+	if ( dhcppkt->dhcphdr->siaddr.s_addr &&
301
+	     ( dhcppkt_fetch ( dhcppkt, DHCP_BOOTFILE_NAME, NULL, 0 ) > 0 ) )
301 302
 		return 1;
302 303
 
303 304
 	/* Check for a PXE boot menu */

Načítá se…
Zrušit
Uložit