Simon Kelley wrote:
I'm guessing that what happens is that the client sends a DHCPREQUEST to renew its lease and dnsmasq returns DHCPNAK: lease not found. The client then does DHCPDISCOVER-DHCPOFFER-DHCPREQUEST-DHCPACK and gets a new lease, but for the same address. (Checking the logs on the openWRT box will tell you if this is the case.

My first reaction to this is that returning a DHCPNAK to an attempt to renew an unknown lease is the correct thing to do, and can't be changed, but when I actually looked at the RFC it wasn't clear that that's true. In fact, RFC2131 says almost nothing about sending a DHCPNAK to a client in RENEWING state. (It has plenty to say about SELECTING and INIT_REBOOT, but that's not relevant here.)

As far as I can see, there are no bad consequences to just accepting a renewal of a previously-unknown lease, except in the case that the renewal is broadcast (ie rebinding) and picked up by both the correct server and another which happens to be on the same network. To avoid that, I would probably only change the behaviour when the dhcp-authoritative configuration is set, since that already has the meaning of "optimise for the case that I'm the only DHCP server on this network."

I'll post a query about this to IETF mailing list.

Cheers,

Simon.

I checked the logs. That is indeed what's happening during the dialog with Windows XP. I have a D-link access point that seems to need a couple of DHCPREQUEST-DHCPNAK cycles before it finally decides to DHCPDISCOVER. That device has an entry in both the ethers file and the hosts file, so it can't get another address. At the very least, I would expect devices that are pinned like that to not need leases. Just a thought.

Steve

Reply via email to