[Dnsmasq-discuss] failed to bind DHCP server socket: Address already in use

Simon Kelley simon at thekelleys.org.uk
Tue Oct 14 10:42:40 BST 2008

Michael Rack wrote:
> I use dhcp-fwd v0.7 patched by my self to support dhcp-server override 
> and many other features.
> But it is realy suspect that dhcp-fwd creates two identical entrys:
> udp        0      0    *
> udp        0      0    *
> udp   108324      0    *
> udp        0      0    *

I think that dhcp-fwd is binding to net devices using the non-portable, 
Linux only SO_BINDTODEVICE socket option.

Very early versions of dnsmasq used to do this, but moved to the current 
scheme (one socket, read which device a packet arrived from and discard 
any not needed) when portability to *BSD was added.

> And DNSMASQ creates only one of each port (67/68) ?!? I will try to 
> implement the SO_REUSEADDDR option to the dhcp-fwd process and hope to 
> get it running :-) My C++ skills are very terrible *smile* But i think i 
> will do it :-)

OK, please let me know how you get on, if that works, I'll add it to 
dhcp-helper too.



> Thanks,
> Michael.
> Simon Kelley schrieb:
>> Which dhcp-forwarder are you using?
>> There's no portable way to listen on an _interface_ in Unix, one 
>> normally listens on the _address_ of an interface, but that breaks 
>> DHCP which has to receive packets sent to/from strange addresses 
>> during the configuration process. For that reason, a DHCP server has 
>> to listen on the wildcard address,
>> Dnsmasq partly solves this problem by setting the SO_REUSEADDR flag on 
>> DHCP sockets when --bind-interfaces is set. That allows the wildcard 
>> address to be bound multiple times, as long as every instance sets the 
>> flag. That allows multiple instances of dnsmasq to run, but it breaks 
>> when something else is binding the wildcard address and NOT setting 
>> SO_REUSEADDDR. I suspect that's the case here.
>> Cheers,
>> Simon.

More information about the Dnsmasq-discuss mailing list