[Dnsmasq-discuss] [PATCH] dhcp6: implement vendor class support

Simon Kelley simon at thekelleys.org.uk
Thu Jun 11 14:33:01 UTC 2026



On 10.06.2026 20:56, Luiz Angelo Daros de Luca wrote:
>> 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.
> 

This is good. Patch applied, and I added a sentence in the man-page to 
cover the required enterprise number.

Could you expand the above into a short PXE-boot HOWTO. That would be 
very useful for many, I think.


Simon.

> Regards,
> 
> Luiz
> 
> _______________________________________________
> Dnsmasq-discuss mailing list
> Dnsmasq-discuss at lists.thekelleys.org.uk
> https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss
> 




More information about the Dnsmasq-discuss mailing list