Skip to content

ProxyDHCP response missing BOOTP file header field, breaking U-Boot compatibility #11

@rpersee

Description

@rpersee

U-Boot's ProxyDHCP support (CONFIG_SERVERIP_FROM_PROXYDHCP) identifies a ProxyDHCP response by checking that bp_yiaddr is zero. When matched, it calls store_bootp_params() directly and returns — it does not call dhcp_packet_process_options(). As a result, DHCP options in the ProxyDHCP response are never processed; U-Boot instead reads the boot filename from the raw BOOTP file header field (bp->bp_file) and the server IP from bp->bp_siaddr.

The booter proxy response currently only populates the boot filename via DHCP option 67 (OptBootFileName) and the server name via option 66 (OptTFTPServerName). Because U-Boot never processes those options in the ProxyDHCP path, it receives no boot filename and cannot proceed.

The fix is to also populate the BOOTP BootFileName header field (bp_file) directly in the proxy response, alongside the existing DHCP options. The siaddr field is already set correctly via WithServerIP.

This affects all TFTP-based firmware types (FirmwareX86PC, FirmwareX86EFI, FirmwareARMEFI). iPXE and HTTP-boot clients are unaffected.

Reference: net/bootp.c in u-boot/u-bootdhcp_handler (ProxyDHCP branch) and store_bootp_params.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions