[Dnsmasq-discuss] No space left in packet

Simon Kelley simon at thekelleys.org.uk
Fri May 30 14:46:00 BST 2008


Hans-Joachim Baader wrote:
> Hi,
> 
> thanks for your hints.
> 
>>> I'm currently testing replacing ISC dhdpc with dnsmasq. On one of the test
>>> machines I got an error "cannot send DHCP/BOOTP option 43: no space left
>>> in packet". This message repeated endlessly and none of the clients could
>>> get a lease. All other servers worked fine so far. The other servers have
>>> identical configuration, but the clients may have a different PXE BIOS.
>>>
>>> What could be the cause of this? Following is the complete config file.
>>> No command line options are used.
> 
>> Your client uses bootp, sometimes there's very little space for
>> options in the packet. You can try removing everything non-essential,
>> such as net2 options when they're not used.
> 
> After doing a tcpdump it appears that the net2 options are not in the
> packet.
> 
> The packet is exactly the same length as the packet generated by ISC DHCP.
> Except that ISC DHCP manages to stuff option 43 in. It does this by setting
> option 52 and putting options in the server host name field.
> 
> dnsmasq should be able to do the same, but fails to do so. It seems to think
> the hostname field is used and cannot be overlaid. How can I change that?
> I looked at rfc2131.c but found no solution yet. I'm using 2.41.

Dnsmasq will use the hostname and filename fields as extra space in the
same way as ISC DHCP but there are circumstances which will stop it from
doing so.

1) BOOTP. If the client is BOOTP, dnsmasq takes a very strict view of
what's allowed, the option space can only be 128 bytes, and no
overloading of the hostname and filename fields is allowed. If your
clients are BOOTP, that may be the problem.

2) hostname and/or filename fields in use. You have this line:

dhcp-boot=dummy.0,server043,172.16.1.53

which will put that data in the hostname and filename fields. It's
possible to move these to options, (66 and 67, I think) but dnsmasq will
only do this if the client requests those option numbers in the
"requested options" in the request packet.

The servername field is often not used by PXE clients, so you might be
able to leave that empty by changing your dhcp-boot to

dhcp-boot=dummy.0,,172.16.1.53

which will allow dnsmasq to put options into the hostname field.

3) --dhcp-no-override set. That's in your config file so you should
remove it.


If you can get packet dumps of the requests and replies (using
wireshark/etherereal or tcpdump) that will help to diagnose exactly
what's going on. Also, setting the dnsmasq option --log-dhcp gives much
more information about what's happening.



Cheers,

Simon.




More information about the Dnsmasq-discuss mailing list