> Implement the OT_DHCP6_VENDOR option type to properly handle the
> DHCPv6 Vendor Class option (code 16) according to RFC 3315.
>
> Previously, this option was marked as OT_INTERNAL, causing dnsmasq
> to fail immediately if configured by name. Bypassing this block by
> using the numerical option format (option6:16) caused the payload
> to be formatted with an unintended string-length prefix. This broke
> compliance because the RFC requires a fixed 4-byte Enterprise ID
> at the beginning of the option, followed by data blocks.
>
> This byte misalignment broke features like UEFI HTTP IPv6 Boot

With this patch, we complete the support for all UEFI boot methods:

# Vendor matching IPv4
dhcp-vendorclass=set:pxebios,PXEClient:Arch:00000
dhcp-vendorclass=set:pxeefi,PXEClient:Arch:00006
dhcp-vendorclass=set:pxeefi,PXEClient:Arch:00007
dhcp-vendorclass=set:pxeefi,PXEClient:Arch:00009
dhcp-vendorclass=set:httpefi,HTTPClient:Arch:00016

# Vendor matching IPv6
dhcp-match=set:pxeefi,option6:61,00:07
dhcp-match=set:pxeefi,option6:61,00:09
dhcp-match=set:httpefi,option6:61,00:10

# Set vendor class for HTTP IPv4 answers
dhcp-option=httpefi,60,HTTPClient

# Set vendor class for IPv6 answers (requires the patch in this thread)
dhcp-option=httpefi,option6:vendor-class,343,HTTPClient

# Set the IPv4 boot file for PXE and HTTP (I'm using iPXE)
dhcp-boot=tag:pxebios,ipxe/ipxe.pxe,tftpsrv.example.com,192.0.2.2
dhcp-boot=tag:pxeefi,ipxe/ipxe.efi,tftpsrv.example.com,192.0.2.2
dhcp-boot=tag:httpefi,http://192.0.2.2/ipxe/ipxe.efi,httpsrv.example.com

# Set the IPv6 boot file for PXE and HTTP (I'm using iPXE)
dhcp-option=pxeefi,option6:59,tftp://tftpsrv.example.com/ipxe/ipxe.efi
dhcp-option=httpefi,option6:59,http://[2001:db8::2]/ipxe/ipxe.efi

# This is specific for iPXE (after it has already booted,
independently from protocol IPv4/IPv6 or TFTP/HTTP)
dhcp-userclass=set:ipxe,iPXE
# When iPXE uses DHCPv4 first
dhcp-boot=tag:ipxe,/ipxe/ipxe.cfg/init.ipxe
# When iPXE uses DHCPv6 first
dhcp-option=ipxe,option6:59,http://[2001:db8::2]/ipxe/ipxe.cfg/init.ipxe

I didn't double check the Legacy BIOS boot, but I guess it should
work. It would be nice if something like this would be available for
the general public, like in docs, example config files or even man.

Regards,

Luiz

_______________________________________________
Dnsmasq-discuss mailing list
[email protected]
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss

Reply via email to