race condition in launching DHCP client and restarting wired interface
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
wicd |
Fix Released
|
Medium
|
Dan O'Reilly |
Bug Description
I use wicd-1.6.2 to manage both the wireless and wired interfaces. My hardware is DELL Latitude E6400 with Intel WiFi and ethernet cards (iwlagn and e1000e linux drivers).
The problem is that when the DHCP client is trying to get a DHCP address for a wired interface (eth0), it ends up with a timeout. I tried three different clients: dhcpcd, pump and dhclient. All behaves similarly.
I guess the problem is that the wired interface is disabled and reenabled just before the DHCP client is started. This is the log sequence from /var/log/messages:
Aug 26 12:37:16 tataj Registered led device: iwl-phy0::radio
Aug 26 12:37:16 tataj Registered led device: iwl-phy0::assoc
Aug 26 12:37:16 tataj Registered led device: iwl-phy0::RX
Aug 26 12:37:16 tataj Registered led device: iwl-phy0::TX
Aug 26 12:37:16 tataj e1000e 0000:00:19.0: irq 26 for MSI/MSI-X
Aug 26 12:37:16 tataj e1000e 0000:00:19.0: irq 26 for MSI/MSI-X
Aug 26 12:37:16 tataj pumpd[11517]: PUMP: sending discover
Aug 26 12:37:19 tataj e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
Aug 26 12:37:47 tataj e1000e 0000:00:19.0: irq 26 for MSI/MSI-X
Aug 26 12:37:47 tataj e1000e 0000:00:19.0: irq 26 for MSI/MSI-X
Aug 26 12:37:50 tataj e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
As you can see, the DHCP client (pump in this example) is started and sends a discovery packed 3 seconds before the eth0 interface is actually initialised. So this packet is probably lost.
If I execute "pump eth0" from a terminal, it immediately gets IP from the server. Similar situation is for the other two clients.
Is it possible that wicd does not check whether an interface is "up" before starting the DHCP client?
Thanks in advance for your help!
Changed in wicd: | |
status: | In Progress → Fix Committed |
Changed in wicd: | |
status: | Fix Committed → Fix Released |
Thanks for the report. Right now wicd doesn't wait for the interface to actually report being up after it issues the "ifconfig up" command. We should be though, and it's an easy addition to make. Expect it for the next version.