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-boot — dhcp_handler (ProxyDHCP branch) and store_bootp_params.
U-Boot's ProxyDHCP support (
CONFIG_SERVERIP_FROM_PROXYDHCP) identifies a ProxyDHCP response by checking thatbp_yiaddris zero. When matched, it callsstore_bootp_params()directly and returns — it does not calldhcp_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 BOOTPfileheader field (bp->bp_file) and the server IP frombp->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
BootFileNameheader field (bp_file) directly in the proxy response, alongside the existing DHCP options. Thesiaddrfield is already set correctly viaWithServerIP.This affects all TFTP-based firmware types (
FirmwareX86PC,FirmwareX86EFI,FirmwareARMEFI). iPXE and HTTP-boot clients are unaffected.Reference:
net/bootp.cin u-boot/u-boot —dhcp_handler(ProxyDHCP branch) andstore_bootp_params.