My configuration: /etc/network/interfaces auto wlan0 iface wlan0 inet manual wpa-driver wext wpa-roam /etc/wpa_supplicant/wpa.conf wpa-roam-default-iface dhcp iface dhcp inet dhcp dns-nameservers 8.8.8.8 8.8.4.4 iface dhcp_dns
/etc/wpa_supplicant/wpa.conf network={ ssid="x" priority=10 key_mgmt=WPA-PSK psk="..." id_str="dhcp_dns" } network={ ssid="y" priority=9 key_mgmt=WPA-PSK psk="..." } After connecting to either the x or y networks, wpa_supplicant calls `wpa_action connect` which calls `ifup wlan0=dhcp_dns` or `ifup wlan0=dhcp`, which fails with "ifup: recursion detected for parent interface wlan0 in post-up phase". Therefore, dhclient is never run, so wlan0 never gets an IP address. Note that the wpa_supplicant daemon is started by the /etc/network/if- up.d/wpasupplicant script, and it inherits the environment from `ifup wlan0` (including the environment variable used to detect recursion). `wpa_action connect` then inherits the environment from wpa_supplicant, and `ifup wlan0=dhcp` inherits it from wpa_action, hence the error from ifup. I understand that this variable is meant to avoid certain race conditions, but I don't believe the type of race condition reported in bug #1337873 is applicable to this situation. Because wpa_supplicant is started by ifup itself (and not a boot script), there is no way for the `ifup wlan0` and `ifup wlan0=dhcp` to be called out of order, so there is no chance of a race condition. However, maybe I'm missing something here. Could you explain how the wpa-roam implementation could play along with ifupdown given that it is started by ifup itself and needs to call ifup to reconfigure the interface? -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to wpa in Ubuntu. https://bugs.launchpad.net/bugs/1545302 Title: wpa-roam broken by fix for ifupdown #1337873 Status in wpa package in Ubuntu: Confirmed Bug description: The following versions of ifupdown introduced a recursion check using "IFUPDOWN_<interface>" environment variables along with a new locking mechanism for ifup (see #1337873): 0.7.47.2ubuntu4.2 (in Trusty) 0.7.54ubuntu1.1 (in Wily) 0.7.54ubuntu2 (in Xenial) This recursion check breaks the wpa-roam feature of wpasupplicant, preventing it from loading the logical interface specified by id_str after associating with an AP. Specifically, after upgrading to one of the above ifupdown versions, the '/sbin/ifup -v --force "$WPA_IFACE=$WPA_LOGICAL_IFACE"' command run by wpa_action in functions.sh fails with an "ifup: recursion detected for parent interface wlan0 in post-up phase" error. To fix the issue, functions.sh needs to run `unset "IFDOWN_$WPA_IFACE"` before calling /sbin/ifup to prevent ifup from detecting the recursion. The attached patch implements this change. To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/wpa/+bug/1545302/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp