RESOLVED: dhcpd sporadically ignoring one of two "copies" of a DHCP request

Phil Mayers p.mayers at imperial.ac.uk
Tue Mar 11 19:15:05 UTC 2014


On 11/03/14 17:57, Phil Mayers wrote:
> On 11/03/14 16:43, Phil Mayers wrote:
>
>> What's really odd is that further investigation suggests there is some
>> link to the "seconds" field in the bootp header; if secs==0, the 2nd
>> DISCOVER is ignored. If secs!=0, it's answered.
>>
>
> Actually that might be a red herring; closer investigation suggests that
> it's actually timing/path-dependent:

Digging into the source code I found the cause; apparently we had 
"ping-check" on (!) and, if you do that, the lease is allocated but not 
ACKed until the ping has timed out.

While that's happening, lease->state is set, and ack_lease() has a 
short-circuit return (with no logging; sigh) that drops the 2nd reply.

If I read the code path right the same thing would happen with delayed ack.


More information about the dhcp-users mailing list