Tags: patch

A patch for this issue is attached.  Basically, the existing `grep 
^$WPA_IFACE=$WPA_IFACE" "$IFSTATE_FILE"` line is replaced with `/sbin/ifquery 
"$WPA_IFACE" | grep -q '^wpa-roam: '`.

In addition to fixing the reported physical=logical interface issue above, this 
patch also ensures that wpa-roam works with the recent ifstate file changes 
made in ifupdown, and future-proofs the code against future changes to the 
ifstate file behavior in ifupdown.

This patch was originally posted at 
https://bugs.launchpad.net/ubuntu/+source/wpa/+bug/1545363 which is a duplicate 
of this bug.
Index: debian/ifupdown/functions.sh
===================================================================
--- debian/ifupdown/functions.sh        (revision 1965)
+++ debian/ifupdown/functions.sh        (working copy)
@@ -890,7 +890,6 @@
 #
 ifup () {
        local INTERFACES_FILE
-       local IFSTATE_FILE
        local IFUP_RETVAL
        local WPA_LOGICAL_IFACE
 
@@ -901,16 +900,6 @@
                return 1
        fi
 
-       if [ -e /etc/network/run/ifstate ]; then
-               # debian's ifupdown
-               IFSTATE_FILE="/etc/network/run/ifstate"
-       elif [ -e /run/network/ifstate ]; then
-               # ubuntu's
-               IFSTATE_FILE="/run/network/ifstate"
-       else
-               unset IFSTATE_FILE
-       fi
-       
        if [ -z "$IF_WPA_MAPPING_SCRIPT_PRIORITY" ] && [ -n "$WPA_ID_STR" ]; 
then
                WPA_LOGICAL_IFACE="$WPA_ID_STR"
        fi
@@ -953,7 +942,7 @@
 
                ifupdown_lock
 
-               if [ -n "$IFSTATE_FILE" ] && grep -q "^$WPA_IFACE=$WPA_IFACE" 
"$IFSTATE_FILE"; then
+               if /sbin/ifquery "$WPA_IFACE" | grep -q '^wpa-roam: ' ; then
                        # Force settings over the unconfigured "master" IFACE
                        /sbin/ifup -v --force "$WPA_IFACE=$WPA_LOGICAL_IFACE"
                else

Reply via email to