[Dnsmasq-discuss] Network booting with stateful IPv6 addressing

Derek Higgins derekh at redhat.com
Mon Feb 27 16:04:14 GMT 2017

I've recently been trying to use dnsmasq IPv6 to network boot, after a
number of hurdles the last problem I've been having is that during the
boot process (after dnsmasq initially hands out an IP address as part
of PXE boot), it starts responding with "no addresses available".

The problem I'm hitting is that the IAID and the ClientID in the dhcp
request changes during the process,
- the IAID being used in PXE generated by the OVMF UEFI firmware is a
function including a time based seed[1]
- this chain loads(in my case) to an iPXE image that is using a crc of
the mac address to generate the IAID[2],
- dhclient on the OS then uses the last 4 octets of the MAC address
for the IAID[3]

I have similar problems with ClientID but I havn't looked into them in
as much detail

check_address in dnsmasq/src/rfc3315.c is asserting that the ID's
can't change, and the only way I've gotten the boot process to work
locally is to comment out the checks in check_address

As best I can see RFC 3315 does say that the IAID MUST remain
consistent across restarts of the DHCP client, but then recognizes
that "There may be no way for a client to maintain consistency of the
IAIDs if it does not have non-volatile storage and the client's
hardware configuration changes"

Is there a way to allow these IDs to change? and if not should this
check be in dnsmasq? or would a patch to optionally disable the check
be acceptable?


[1] - https://github.com/tianocore/edk2/blob/418373a1cd97abc0c0e3557f7a00105291829e6f/MdeModulePkg/Library/DxeNetLib/DxeNetLib.c#L866
[2] - https://github.com/qemu/ipxe/blob/c34d151/src/net/udp/dhcpv6.c#L972
[3] - https://source.isc.org/cgi-bin/gitweb.cgi?p=dhcp.git;a=blob;f=client/dhc6.c;h=be604ac988a983b2829f76fe2bff6a5f036d8019;hb=HEAD#l1716

More information about the Dnsmasq-discuss mailing list