Comment 5 for bug 1718209

Revision history for this message
Witold Krecicki (wpk) wrote :

isc-dhcp from Xenial - 4.3.3-5ubuntu12.7

The relevant part of config, as generated by maas, looks like this (I've changed filenames to make things clearly visible):

shared-network vlan-5002 {
    subnet6 XXXXXXXXXXXXX::/64 {
           # Bootloaders
           if client-arch-type = 00:01 {
               option dhcp6.bootfile-url "tftp://[XXXXXXXXXXXXX:fa00::1]//00:01";
           } elsif client-arch-type = 00:00 {
               option dhcp6.bootfile-url "tftp://[XXXXXXXXXXXXX:fa00::1]//00:00";
           } elsif client-arch-type = 00:07 {
               option dhcp6.bootfile-url "tftp://[XXXXXXXXXXXXX:fa00::1]//00:07";
           } else {
               option dhcp6.bootfile-url "tftp://[XXXXXXXXXXXXX:fa00::1]//default";
           }
    (...)
}

When trying to boot virsh qemu with fresh iPXE that is sending 00:00 as OPT61 client-arch-type (verified with wireshark, unfortunately tcpdump does not understand DHCPv6 very well) dhcpd returns (...)/default as bootfile to iPXE (as seen on screen1.png)

With modified dhcpd.conf:
           if exists dhcp6.client-arch-type and option dhcp6.client-arch-type = 00:01 {
               option dhcp6.bootfile-url "tftp://[XXXXXXXXXXXXX:fa00::1]//00:01";
           } elsif exists dhcp6.client-arch-type and option dhcp6.client-arch-type = 00:00 {
               option dhcp6.bootfile-url "tftp://[XXXXXXXXXXXXX:fa00::1]//00:00";
           } elsif exists dhcp6.client-arch-type and option dhcp6.client-arch-type = 00:07 {
               option dhcp6.bootfile-url "tftp://[XXXXXXXXXXXXX:fa00::1]//00:07";
           } else {
               option dhcp6.bootfile-url "tftp://[XXXXXXXXXXXXX:fa00::1]//default";
           }
iPXE receives proper '00:00' filename (as seen on screen2.png)

It works without this fix only because of the sane defaults (pxelinux.0 for IPv4 and uefi_amd64 for IPv6), but the client-arch-type was always ignored - in this case when I tried to boot with regular BIOS on IPv6 it tried to load uefi_amd64 which regular bios does not understand (pxelinux.0 won't work either but that's another bug)