desktop-packages team mailing list archive
-
desktop-packages team
-
Mailing list archive
-
Message #161432
[Bug 1545302] Re: wpa-roam broken by fix for ifupdown #1337873
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 Desktop
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
References