From c4fa88d46ac9491c2febf74c9d6bdfda5319027f Mon Sep 17 00:00:00 2001 From: Michal Date: Tue, 11 Aug 2026 12:48:24 +0100 Subject: [PATCH] fix(bastion): match arm64 UEFI HTTP boot on option 93 value 19, not 20 Per the IANA Processor Architecture Types registry, 0x0013 (19) is "arm uefi 64 boot from http". 20 is "pc/at bios boot from http", so an arm64 machine using UEFI HTTP Boot never matched the tag and was never offered the arm64 iPXE binary. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_015nRFZXpKwUVE4SRSHw6GjF --- bastion/src/bastion/src/templates/dnsmasq.conf.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/bastion/src/bastion/src/templates/dnsmasq.conf.ts b/bastion/src/bastion/src/templates/dnsmasq.conf.ts index af972da..fc0762c 100644 --- a/bastion/src/bastion/src/templates/dnsmasq.conf.ts +++ b/bastion/src/bastion/src/templates/dnsmasq.conf.ts @@ -48,15 +48,20 @@ enable-tftp tftp-root=${tftpDir} tftp-no-blocksize -# Detect client architecture -- PXE (TFTP) clients +# Detect client architecture -- PXE (TFTP) clients. +# Values are DHCP option 93 (Client System Architecture), IANA "Processor Architecture +# Types". Getting these wrong means the machine is handed a bootloader its firmware +# cannot execute, and it loops or hangs with no console output. dhcp-match=set:bios,option:client-arch,0 dhcp-match=set:efi-x86_64,option:client-arch,7 dhcp-match=set:efi-x86_64,option:client-arch,9 dhcp-match=set:efi-arm64,option:client-arch,11 -# Detect client architecture -- UEFI HTTP Boot clients (no TFTP size limit) +# Detect client architecture -- UEFI HTTP Boot clients (no TFTP size limit). +# 16 = x64 uefi boot from http, 19 = arm uefi 64 boot from http. +# (20 is pc/at bios boot from http -- not arm64.) dhcp-match=set:httpboot-x86_64,option:client-arch,16 -dhcp-match=set:httpboot-arm64,option:client-arch,20 +dhcp-match=set:httpboot-arm64,option:client-arch,19 # Detect iPXE clients (already chainloaded) dhcp-userclass=set:ipxe,iPXE