dhcpcd-2 used DHCP_INFORM to receive dhcp info and claim address. dhcpcd-3 uses DHCP_REQUEST which is NAK'd by my router (linksys: linux w/dnsmasq). Have looked through the working and non-working code, supplying a patch. It works for me but I admit I haven't read all the involved RFCs. I tried to make the patch as small as possible, but may not have captured the error paths well. I updated the router firmware, no change. I have three systems, same issue, x86 and x86_64. always occurs: with Linksys router, 2.6.20 kernels, >=dhcp-3.0.11 -s dotted.addr
Created attachment 116663 [details, diff] added a state to client.c for inform
Created attachment 116665 [details] /var/log/messages for dhcpcd-2.0.5-r1, dhcpcd-3.0.17, and patch this is the output from each of {dhcpcd-2.0.5-r1,dhcpcd-3.0.17,dhcpcd-patch} with the -d option enabled. The -t option was not constant, but did not affect this behavior.
dhcpcd-1 and 2 usage of DHCP_INFORM was questionable to say the least. DHCP_INFORM is a mechanism to get configuration information from a DHCP server. It does nothing with the address whatsoever. It does not reserve it, lease it or even check to see if it is valid or not. DHCP_INFORM messages may be possible with dhcpcd-3.1, but purely to return information to the client and optionally configure the client (except for ip address). Do other dhcp clients work? For example pump, udhcpc or dhclient? Can you attach wireshark traces of the dhcp requests?
Created attachment 116762 [details] wireshark trace of dhcpcd-3.0.17 dhcp_request. a trace with -s 192.168.1.69, an address outside the range managed by the dhcp server. The expected behavior is to set-up eth0 with the address and set the resolv.conf DNS parameters. I've used this method because I've had problems resolving the DNS parameters when setting the static address in net. I have no DNS services on my home network, I use the servers set by my ISP.
I'm looking at putting DHCP_INFORM support into dhcpcd-3.1 now, but out of curiosity, do you know what dnsmasq version you run on your linksys?
I've put a 3.1_pre1 tarball up here. http://dev.gentoo.org/~uberlord/dhcpcd-3.1.0_pre1.tar.bz2 Does that work for you? You have to do this now. dhcpcd -Ss192.168.1.69 eth0 Or if eth0 already has the address, you just have to do this dhcpcd -S eth0
http://dev.gentoo.org/~uberlord/dhcpcd-3.1.0_pre1.tar.bz2 works for me.