Commit 3606e97
committed
Fix DHCPv6 PXE boot: use option6:client-arch for architecture detection
The IPv6 section of the dnsmasq template used option:client-arch to
match client architecture, but this is a DHCPv4-only alias (option 93).
In dnsmasq, the "option:" prefix resolves via the DHCPv4 option table
(opttab) and the resulting match rule is added to daemon->dhcp_match,
which is never evaluated by the DHCPv6 server code (rfc3315.c only
iterates daemon->dhcp_match6). The directives were silently ignored.
The fix uses option6:client-arch, which correctly resolves to DHCPv6
option 61 (Client System Architecture Type, RFC 5970). Both EDK2/OVMF
and iPXE send this option in DHCPv6 SOLICIT messages.
Note: option6:client-arch requires dnsmasq to have option 61 in its
DHCPv6 option table (opttab6). Upstream dnsmasq is missing this entry,
but Red Hat has carried a downstream patch adding it since 2021
(dnsmasq-2.86-dhcpv6-client-arch.patch), which is included in the
CentOS Stream 9 base image used by this container.
Also replaces the impossible BIOS fallback (undionly.kpxe over IPv6)
with an x86_64 EFI fallback for PXE clients whose architecture could
not be determined.
Fixes: #9161 parent 5ef9aa8 commit 3606e97
1 file changed
+9
-5
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
59 | 64 | | |
60 | | - | |
61 | | - | |
62 | 65 | | |
63 | 66 | | |
64 | | - | |
| 67 | + | |
65 | 68 | | |
66 | | - | |
67 | | - | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
68 | 72 | | |
69 | 73 | | |
70 | 74 | | |
| |||
0 commit comments