[Dnsmasq-discuss] [PATCH] dhcp6: implement vendor class support
Luiz Angelo Daros de Luca
luizluca at gmail.com
Wed Jun 10 19:56:30 UTC 2026
> 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
More information about the Dnsmasq-discuss
mailing list