Your message dated Sat, 27 Aug 2011 11:00:21 +1000
with message-id <[email protected]>
and subject line Re: Bug#638789: wpasupplicant: wpa_supplicant not waiting for 
PID file
has caused the Debian Bug report #638789,
regarding wpasupplicant: wpa_supplicant not waiting for PID file
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
638789: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=638789
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: wpasupplicant
Version: 0.7.3-0ubuntu1
Severity: important


We just moved from WEP to WPA and started using wpa_supplicant
on ~30 Ubuntu 11.04 machines. Almost all machines had trouble
connecting as ifup failed when starting wpa_supplicant. The
error went something like:

cat: /var/run/wpa_supplicant.wlan0.pid: No such file or directory

Adding a wait condition in /etc/wpa_supplicant/functions.sh
did the trick:

--- functions.sh
+++ functions.sh.new
@@ -281,8 +281,13 @@
 
        if [ -n "$WPA_SUP_OMIT_PIDFILE" ]; then
                wpa_msg verbose "creating sendsigs omission pidfile: 
$WPA_SUP_OMIT_PIDFILE"
+               while [ ! -f "$WPA_SUP_PIDFILE" ]; do
+                       wpa_msg verbose "Waiting for pid file.."
+                       sleep 1;
+               done;
                cat "$WPA_SUP_PIDFILE" > "$WPA_SUP_OMIT_PIDFILE"
        fi
+
 }
 
 #####################################################################

This may not be the most elegant way of solving the issue,
but it works and the condition is (almost) always met. That
is, ifup -v wlan0 prints "Waiting for pid file.."

We experienced this with two types of cards:
  * USB Proxim Wireless ORiNOCO 802.11a/b/g/n using
    Kernel modules: carl9170, ar9170usb
  * PCI CNet CWP-905 (Ralink chipset)
    Kernel modules: rt2800lib, rt2x00pci, rt2x00lib

In both cases I use the wext driver for wpa_supplicant.

A Google search found some other folks having similar
problems, for example: http://ubuntuforums.org/showthread.php?t=1764073

Thanks,
Björn Swift



-- System Information:
Debian Release: squeeze/sid
  APT prefers natty-updates
  APT policy: (500, 'natty-updates'), (500, 'natty-security'), (500, 'natty')
Architecture: i386 (i686)

Kernel: Linux 2.6.38-8-generic (SMP w/1 CPU core)
Locale: LANG=is_IS.UTF-8, LC_CTYPE=is_IS.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages wpasupplicant depends on:
ii  adduser                3.112+nmu1ubuntu5 add and remove users and groups
ii  libc6                  2.13-0ubuntu13    Embedded GNU C Library: Shared lib
ii  libdbus-1-3            1.4.6-1ubuntu6    simple interprocess messaging syst
ii  libnl1                 1.1-6             library for dealing with netlink s
ii  libpcsclite1           1.7.0-2ubuntu2    Middleware to access a smart card 
ii  libreadline6           6.2-0ubuntu1      GNU readline and history libraries
ii  libssl0.9.8            0.9.8o-5ubuntu1   SSL shared libraries
ii  lsb-base               4.0-0ubuntu11     Linux Standard Base 4.0 init scrip

wpasupplicant recommends no packages.

Versions of packages wpasupplicant suggests:
pn  libengine-pkcs11-openssl      <none>     (no description available)
pn  wpagui                        <none>     (no description available)

-- Configuration Files:
/etc/wpa_supplicant/functions.sh changed:
WPA_SUP_BIN="/sbin/wpa_supplicant"
WPA_SUP_PNAME="wpa_supplicant"
WPA_SUP_PIDFILE="/var/run/wpa_supplicant.${WPA_IFACE}.pid"
WPA_CLI_BIN="/sbin/wpa_cli"
WPA_CLI_PNAME="wpa_cli"
WPA_CLI_PIDFILE="/var/run/wpa_action.${WPA_IFACE}.pid"
WPA_CLI_TIMESTAMP="/var/run/wpa_action.${WPA_IFACE}.timestamp"
WPA_CLI_IFUPDOWN="/var/run/wpa_action.${WPA_IFACE}.ifupdown"
if [ -d /lib/init/rw/sendsigs.omit.d/ ]; then
        # Debian
        
WPA_SUP_OMIT_PIDFILE="/lib/init/rw/sendsigs.omit.d/wpasupplicant.wpa_supplicant.${WPA_IFACE}.pid"
elif [ -d /var/run/sendsigs.omit.d/ ]; then
        # Ubuntu, see https://launchpad.net/bugs/181541 for status
        
WPA_SUP_OMIT_PIDFILE="/var/run/sendsigs.omit.d/wpasupplicant.wpa_supplicant.${WPA_IFACE}.pid"
else
        WPA_SUP_OMIT_PIDFILE=
fi
if [ -z "$WPA_CTRL_DIR" ]; then
        WPA_CTRL_DIR="/var/run/wpa_supplicant"
fi
if [ -n "$IF_WPA_VERBOSITY" ] || [ "$VERBOSITY" = "1" ]; then
        TO_NULL="/dev/stdout"
        DAEMON_VERBOSITY="--verbose"
else
        TO_NULL="/dev/null"
        DAEMON_VERBOSITY="--quiet"
fi
wpa_cli () {
        "$WPA_CLI_BIN" -p "$WPA_CTRL_DIR" -i "$WPA_IFACE" "$@"
        return "$?"
}
wpa_msg () {
        if [ "$1" = "log" ]; then
                shift
                case "$WPA_ACTION" in
                        "CONNECTED"|"DISCONNECTED")
                                [ -x /usr/bin/logger ] || return
                                if [ "$#" -gt 0 ]; then
                                        logger -t "wpa_action" "$@"
                                else
                                        logger -t "wpa_action"
                                fi
                                ;;
                        *)
                                [ "$#" -gt 0 ] && echo "wpa_action: $@"
                                ;;
                esac
                return
        fi
        
        case "$1" in 
                "verbose")
                        shift
                        echo "$WPA_SUP_PNAME: $@" >$TO_NULL
                        ;;
                "action")
                        shift
                        echo -n "$WPA_SUP_PNAME: $@ -- " >$TO_NULL
                        ;;
                "stderr")
                        shift
                        echo "$WPA_SUP_PNAME: $@" >/dev/stderr
                        ;;
                *)
                        ;;
        esac
}
test_daemon_pidfile () {
        local DAEMON
        local PIDFILE
        
        if [ -n "$1" ]; then
                DAEMON="$1"
        fi
        
        if [ -f "$2" ]; then
                PIDFILE="$2"
        fi
        
        if [ -n "$DAEMON" ] && [ -f "$PIDFILE" ]; then
                if start-stop-daemon --stop --quiet --signal 0 \
                        --exec "$DAEMON" --pidfile "$PIDFILE"; then
                        return 0
                else
                        rm -f "$PIDFILE"
                        return 1
                fi
        else
                return 1
        fi
}
test_wpa_supplicant () {
        test_daemon_pidfile "$WPA_SUP_BIN" "$WPA_SUP_PIDFILE"
}
test_wpa_cli () {
        test_daemon_pidfile "$WPA_CLI_BIN" "$WPA_CLI_PIDFILE"
}
init_wpa_supplicant () {
        [ -n "$WPA_SUP_CONF" ] || return 0
        local WPA_SUP_OPTIONS
        WPA_SUP_OPTIONS="-s -B -P $WPA_SUP_PIDFILE -i $WPA_IFACE"
        if [ -n "$WPA_ACTION_SCRIPT" ]; then
                if [ -x "$WPA_ACTION_SCRIPT" ]; then
                        WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -W"
                        wpa_msg verbose "wait for wpa_cli to attach"
                else
                        wpa_msg stderr "action script \"$WPA_ACTION_SCRIPT\" 
not executable"
                        return 1
                fi
        fi
        if [ -n "$IF_WPA_BRIDGE" ]; then
                WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -b $IF_WPA_BRIDGE"
                wpa_msg verbose "wpa-bridge $IF_WPA_BRIDGE"
        fi
        if [ -n "$IF_WPA_DRIVER" ]; then
                wpa_msg verbose "wpa-driver $IF_WPA_DRIVER"
                case "$IF_WPA_DRIVER" in
                        hostap|ipw|madwifi|ndiswrapper)
                                WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -D 
nl80211,wext"
                                wpa_msg stderr "\"$IF_WPA_DRIVER\" wpa-driver 
is unsupported"
                                wpa_msg stderr "using \"nl80211,wext\" 
wpa-driver instead ..."
                                ;;
                        *)
                                WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -D 
$IF_WPA_DRIVER"
                                ;;
                esac
        else
                WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -D nl80211,wext"
                wpa_msg verbose "wpa-driver nl80211,wext (default)"
        fi
        if [ -n "$IF_WPA_DEBUG_LEVEL" ]; then
                case "$IF_WPA_DEBUG_LEVEL" in
                        3)
                                WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -t -ddd"
                                ;;
                        2)
                                WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -t -dd"
                                ;;
                        1)
                                WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -t -d"
                                ;;
                        0)
                                # wpa_supplicant default verbosity
                                ;;
                        -1)
                                WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -q"
                                ;;
                        -2)
                                WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -qq"
                                ;;
                esac
                wpa_msg verbose "using debug level: $IF_WPA_DEBUG_LEVEL"
        fi
        if [ -n "$IF_WPA_LOGFILE" ]; then
                # custom log file
                WPA_SUP_OPTIONS="$WPA_SUP_OPTIONS -f $IF_WPA_LOGFILE"
                WPA_SUP_LOGFILE="$IF_WPA_LOGFILE"
                wpa_msg verbose "logging to $IF_WPA_LOGFILE"
        fi
        wpa_msg verbose "$WPA_SUP_BIN $WPA_SUP_OPTIONS $WPA_SUP_CONF"
                
        start-stop-daemon --start --oknodo $DAEMON_VERBOSITY \
                --name $WPA_SUP_PNAME --startas $WPA_SUP_BIN --pidfile 
$WPA_SUP_PIDFILE \
                -- $WPA_SUP_OPTIONS $WPA_SUP_CONF
        if [ "$?" -ne 0 ]; then
                wpa_msg stderr "$WPA_SUP_BIN daemon failed to start"
                return 1
        fi
        if [ -n "$WPA_SUP_OMIT_PIDFILE" ]; then
                wpa_msg verbose "creating sendsigs omission pidfile: 
$WPA_SUP_OMIT_PIDFILE"
                while [ ! -f "$WPA_SUP_PIDFILE" ]; do
                        wpa_msg verbose "Waiting for pid file.."
                        sleep 1;
                done;
                cat "$WPA_SUP_PIDFILE" > "$WPA_SUP_OMIT_PIDFILE"
        fi
}
kill_wpa_supplicant () {
        test_wpa_supplicant || return 0
        wpa_msg verbose "terminating $WPA_SUP_PNAME daemon via pidfile 
$WPA_SUP_PIDFILE"
        start-stop-daemon --stop --oknodo $DAEMON_VERBOSITY \
                --exec $WPA_SUP_BIN --pidfile $WPA_SUP_PIDFILE
        if [ -f "$WPA_SUP_PIDFILE" ]; then
                rm -f "$WPA_SUP_PIDFILE"
        fi
        if [ -f "$WPA_SUP_OMIT_PIDFILE" ]; then
                wpa_msg verbose "removing $WPA_SUP_OMIT_PIDFILE"
                rm -f "$WPA_SUP_OMIT_PIDFILE"
        fi
}
reload_wpa_supplicant () {
        if test_wpa_supplicant; then
                wpa_msg verbose "reloading wpa_supplicant configuration file 
via HUP signal"
                start-stop-daemon --stop --signal HUP \
                        --name "$WPA_SUP_PNAME" --pidfile "$WPA_SUP_PIDFILE"
        else
                wpa_msg verbose "cannot $WPA_ACTION, $WPA_SUP_PIDFILE does not 
exist"
        fi
}
init_wpa_cli () {
        [ -n "$WPA_ACTION_SCRIPT" ] || return 0
        local WPA_CLI_OPTIONS
        WPA_CLI_OPTIONS="-B -P $WPA_CLI_PIDFILE -i $WPA_IFACE"
        wpa_msg verbose "$WPA_CLI_BIN $WPA_CLI_OPTIONS -p $WPA_CTRL_DIR -a 
$WPA_ACTION_SCRIPT"
                
        start-stop-daemon --start --oknodo $DAEMON_VERBOSITY \
                --name $WPA_CLI_PNAME --startas $WPA_CLI_BIN --pidfile 
$WPA_CLI_PIDFILE \
                -- $WPA_CLI_OPTIONS -p $WPA_CTRL_DIR -a $WPA_ACTION_SCRIPT
        if [ "$?" -ne 0 ]; then
                wpa_msg stderr "$WPA_CLI_BIN daemon failed to start"
                return 1
        fi
}
kill_wpa_cli () {
        test_wpa_cli || return 0
        
        wpa_msg verbose "terminating $WPA_CLI_PNAME daemon via pidfile 
$WPA_CLI_PIDFILE"
        
        start-stop-daemon --stop --oknodo $DAEMON_VERBOSITY \
                --exec $WPA_CLI_BIN --pidfile $WPA_CLI_PIDFILE
        
        if [ -f "$WPA_CLI_PIDFILE" ]; then
                rm -f "$WPA_CLI_PIDFILE"
        fi
        if [ -f "$WPA_CLI_TIMESTAMP" ]; then
                rm -f "$WPA_CLI_TIMESTAMP"
        fi
        if [ -L "$WPA_CLI_IFUPDOWN" ]; then
                rm -f "$WPA_CLI_IFUPDOWN"
        fi
}
wpa_cli_do () {
        if [ -z "$1" ]; then
                return 0
        fi
        
        local WPACLISET_VALUE
        local WPACLISET_VARIABLE
        local WPACLISET_DESC
        
        case "$2" in
                ascii)
                        # Double quote
                        WPACLISET_VALUE="\"$1\""
                        ;;
                raw|*)
                        # Provide raw value
                        WPACLISET_VALUE="$1"
                        ;;
        esac
        
        case "$3" in
                set_network)
                        if [ -z "$WPA_ID" ]; then
                                return 1
                        fi
                        shift
                        WPACLISET_VARIABLE="set_network $WPA_ID $3"
                        ;;
                *)
                        WPACLISET_VARIABLE="$3"
                        ;;
        esac
        
        case "$4" in
                *-psk|*-passphrase|*-passwd*|*-wep-key*)
                        WPACLISET_DESC="$4 *****"
                        ;;
                *)
                        WPACLISET_DESC="$4 $WPACLISET_VALUE"
                        ;;
        esac
        wpa_msg action "$WPACLISET_DESC"
        
        wpa_cli $WPACLISET_VARIABLE "$WPACLISET_VALUE" >$TO_NULL
        if [ "$?" -ne 0 ]; then
                wpa_msg stderr "$WPACLISET_DESC failed!"
        fi
}
ishex () {
        if [ -z "$1" ]; then 
                return 0
        fi
        
        case "$1" in
                *[!0-9a-fA-F]*)
                        # plaintext
                        return 1
                        ;;
                *)
                        # hexadecimal
                        return 0
                        ;;
        esac
}
wpa_key_check_and_set () {
        if [ "$#" -ne 3 ]; then
                return 0
        fi
        local KEY
        local KEY_LEN
        local KEY_TYPE
        local ENC_TYPE
        
        case "$1" in
                '"'*'"')
                        # Strip surrounding quotation marks
                        KEY=$(echo -n "$1" | sed 's/^"//;s/"$//')
                        ;;
                *)
                        KEY="$1"
                        ;;
        esac
        KEY_LEN="${#KEY}"
        case "$2" in
                wep_key*)
                        ENC_TYPE="WEP"
                        ;;
                psk)
                        ENC_TYPE="WPA"
                        ;;
                *)
                        return 0
                        ;;
        esac
        if [ "$ENC_TYPE" = "WEP" ]; then
                if ishex "$KEY"; then
                        case "$KEY_LEN" in
                                10|26|32|58)
                                        # 64/128/152/256-bit WEP
                                        KEY_TYPE="raw"
                                        ;;
                                *)
                                        KEY_TYPE="ascii"
                                        ;;
                        esac
                else
                        KEY_TYPE="ascii"
                fi
                if [ "$KEY_TYPE" = "ascii" ]; then
                        if [ "$KEY_LEN" -lt "5" ]; then
                                wpa_msg stderr "WARNING: plaintext or ascii WEP 
key has $KEY_LEN characters,"
                                wpa_msg stderr "it must have at least 5 to be 
valid."
                        fi
                fi
        elif [ "$ENC_TYPE" = "WPA" ]; then
                if ishex "$KEY"; then
                        case "$KEY_LEN" in
                                64)
                                        # 256-bit WPA
                                        KEY_TYPE="raw"
                                        ;;
                                *)
                                        KEY_TYPE="ascii"
                                        ;;
                        esac
                else
                        KEY_TYPE="ascii"
                fi
                if [ "$KEY_TYPE" = "ascii" ]; then
                        if [ "$KEY_LEN" -lt "8" ] || [ "$KEY_LEN" -gt "63" ]; 
then
                                wpa_msg stderr "WARNING: plaintext or ascii WPA 
key has $KEY_LEN characters,"
                                wpa_msg stderr "it must have between 8 and 63 
to be valid."
                                wpa_msg stderr "If the WPA key is a 256-bit 
hexadecimal key, it must have"
                                wpa_msg stderr "exactly 64 characters."
                        fi
                fi
        fi
        wpa_cli_do "$KEY" "$KEY_TYPE" set_network "$2" "$3"
}
conf_wpa_supplicant () {
        if [ -n "$WPA_ACTION_SCRIPT" ]; then
                return 0
        fi
        if [ "$IF_WPA_DRIVER" = "wired" ]; then
                IF_WPA_AP_SCAN="0"
                wpa_msg verbose "forcing ap_scan=0 (required for wired 
IEEE8021X auth)"
        fi
        if [ -n "$IF_WPA_ESSID" ]; then
                # #403316, be similar to wireless tools
                IF_WPA_SSID="$IF_WPA_ESSID"
        fi
        
        wpa_cli_do "$IF_WPA_AP_SCAN" raw \
                ap_scan wpa-ap-scan
        
        wpa_cli_do "$IF_WPA_PREAUTHENTICATE" raw \
                preauthenticate wpa-preauthenticate
                
        if [ -n "$IF_WPA_SSID" ] || [ "$IF_WPA_DRIVER" = "wired" ] || \
                [ -n "$IF_WPA_KEY_MGMT" ]; then
                
                case "$IF_WPA_SSID" in
                        '"'*'"')
                                IF_WPA_SSID=$(echo -n "$IF_WPA_SSID" | sed 
's/^"//;s/"$//')
                                ;;
                        *)
                                ;;
                esac
                
                WPA_ID=$(wpa_cli add_network)
                wpa_msg verbose "configuring network block -- $WPA_ID"
                
                wpa_cli_do "$IF_WPA_SSID" ascii \
                        set_network ssid wpa-ssid
                
                wpa_cli_do "$IF_WPA_PRIORITY" raw \
                        set_network priority wpa-priority
                
                wpa_cli_do "$IF_WPA_BSSID" raw \
                        set_network bssid wpa-bssid
                
                if [ -s "$IF_WPA_PSK_FILE" ]; then
                        IF_WPA_PSK=$(cat "$IF_WPA_PSK_FILE")
                fi
                
                # remain compat with wpa-passphrase-file
                if [ -s "$IF_WPA_PASSPHRASE_FILE" ]; then
                        IF_WPA_PSK=$(cat "$IF_WPA_PASSPHRASE_FILE")
                fi
                
                # remain compat with wpa-passphrase
                if [ -n "$IF_WPA_PASSPHRASE" ]; then
                        IF_WPA_PSK="$IF_WPA_PASSPHRASE"
                fi
        
                if [ -n "$IF_WPA_PSK" ]; then
                        wpa_key_check_and_set "$IF_WPA_PSK" \
                                psk wpa-psk
                fi
                
                wpa_cli_do "$IF_WPA_PAIRWISE" raw \
                        set_network pairwise wpa-pairwise
                
                wpa_cli_do "$IF_WPA_GROUP" raw \
                        set_network group wpa-group
                wpa_cli_do "$IF_WPA_MODE" raw \
                        set_network mode wpa-mode
                wpa_cli_do "$IF_WPA_FREQUENCY" raw \
                        set_network frequency wpa-frequency
                wpa_cli_do "$IF_WPA_SCAN_FREQ" raw \
                        set_network scan_freq wpa-scan-freq
                wpa_cli_do "$IF_WPA_FREQ_LIST" raw \
                        set_network freq_list wpa-freq-list
                
                wpa_cli_do "$IF_WPA_KEY_MGMT" raw \
                        set_network key_mgmt wpa-key-mgmt
                
                wpa_cli_do "$IF_WPA_PROTO" raw \
                        set_network proto wpa-proto
                
                wpa_cli_do "$IF_WPA_AUTH_ALG" raw \
                        set_network auth_alg wpa-auth-alg
                
                wpa_cli_do "$IF_WPA_SCAN_SSID" raw \
                        set_network scan_ssid wpa-scan-ssid
                
                wpa_cli_do "$IF_WPA_IDENTITY" ascii \
                        set_network identity wpa-identity
                
                wpa_cli_do "$IF_WPA_ANONYMOUS_IDENTITY" ascii \
                        set_network anonymous_identity wpa-anonymous-identity
                
                wpa_cli_do "$IF_WPA_EAP" raw \
                        set_network eap wpa-eap
                
                wpa_cli_do "$IF_WPA_EAPPSK" raw \
                        set_network eappsk wpa-eappsk
                wpa_cli_do "$IF_WPA_NAI" ascii \
                        set_network nai wpa-nai
                wpa_cli_do "$IF_WPA_PASSWORD" ascii \
                        set_network password wpa-password
                wpa_cli_do "$IF_WPA_CA_CERT" ascii \
                        set_network ca_cert wpa-ca-cert
                wpa_cli_do "$IF_WPA_CA_PATH" ascii \
                        set_network ca_path wpa-ca-path
                wpa_cli_do "$IF_WPA_CLIENT_CERT" ascii \
                        set_network client_cert wpa-client-cert
                wpa_cli_do "$IF_WPA_PRIVATE_KEY" ascii \
                        set_network private_key wpa-private-key
                wpa_cli_do "$IF_WPA_PRIVATE_KEY_PASSWD" ascii \
                        set_network private_key_passwd wpa-private-key-passwd
                
                wpa_cli_do "$IF_WPA_DH_FILE" ascii \
                        set_network dh_file wpa-dh-file
                wpa_cli_do "$IF_WPA_SUBJECT_MATCH" ascii \
                        set_network subject_match wpa-subject-match
                wpa_cli_do "$IF_WPA_ALTSUBJECT_MATCH" ascii \
                        set_network altsubject_match wpa-altsubject-match
                wpa_cli_do "$IF_WPA_CA_CERT2" ascii \
                        set_network ca_cert2 wpa-ca-cert2
                wpa_cli_do "$IF_WPA_CA_PATH2" ascii \
                        set_network ca_path2 wpa-ca-path2
                wpa_cli_do "$IF_WPA_CLIENT_CERT2" ascii \
                        set_network client_cert2 wpa-client-cert2
                wpa_cli_do "$IF_WPA_PRIVATE_KEY2" ascii \
                        set_network private_key2 wpa-private-key2
                wpa_cli_do "$IF_WPA_PRIVATE_KEY_PASSWD2" ascii \
                        set_network private_key_passwd2 wpa-private-key-passwd2
                
                wpa_cli_do "$IF_WPA_DH_FILE2" ascii \
                        set_network dh_file2 wpa-dh-file2
                wpa_cli_do "$IF_WPA_SUBJECT_MATCH2" ascii \
                        set_network subject_match2 wpa-subject-match2
                wpa_cli_do "$IF_WPA_ALTSUBJECT_MATCH2" ascii \
                        set_network altsubject_match2 wpa-altsubject-match2
                
                wpa_cli_do "$IF_WPA_EAP_METHODS" raw \
                        set_network eap_methods wpa-eap-methods
                wpa_cli_do "$IF_WPA_PHASE1" ascii \
                        set_network phase1 wpa-phase1
                wpa_cli_do "$IF_WPA_PHASE2" ascii \
                        set_network phase2 wpa-phase2
                wpa_cli_do "$IF_WPA_PCSC" raw \
                        set_network pcsc wpa-pcsc
                wpa_cli_do "$IF_WPA_PIN" ascii \
                        set_network pin wpa-pin
                wpa_cli_do "$IF_WPA_ENGINE" raw \
                        set_network engine wpa-engine
                wpa_cli_do "$IF_WPA_ENGINE_ID" ascii \
                        set_network engine_id wpa-engine-id
                wpa_cli_do "$IF_WPA_KEY_ID" ascii \
                        set_network key_id wpa-key-id
                wpa_cli_do "$IF_WPA_EAPOL_FLAGS" raw \
                        set_network eapol_flags wpa-eapol-flags
                
                if [ -n "$IF_WPA_WEP_KEY0" ]; then
                        wpa_key_check_and_set "$IF_WPA_WEP_KEY0" \
                                wep_key0 wpa-wep-key0
                fi
                
                if [ -n "$IF_WPA_WEP_KEY1" ]; then
                        wpa_key_check_and_set "$IF_WPA_WEP_KEY1" \
                                wep_key1 wpa-wep-key1
                fi
                if [ -n "$IF_WPA_WEP_KEY2" ]; then
                        wpa_key_check_and_set "$IF_WPA_WEP_KEY2" \
                                wep_key2 wpa-wep-key2
                fi
                if [ -n "$IF_WPA_WEP_KEY3" ]; then
                        wpa_key_check_and_set "$IF_WPA_WEP_KEY3" \
                                wep_key3 wpa-wep-key3
                fi
                
                wpa_cli_do "$IF_WPA_WEP_TX_KEYIDX" raw \
                        set_network wep_tx_keyidx wpa-wep-tx-keyidx
                
                wpa_cli_do "$IF_WPA_PROACTIVE_KEY_CACHING" raw \
                        set_network proactive_key_caching 
wpa-proactive-key-caching
                        
                wpa_cli_do "$IF_WPA_PAC_FILE" ascii \
                        set_network pac_file wpa-pac-file
                
                wpa_cli_do "$IF_WPA_PEERKEY" raw \
                        set_network peerkey wpa-peerkey
                        
                wpa_cli_do "$IF_FRAGMENT_SIZE" raw \
                        set_network fragment_size wpa-fragment-size
                wpa_cli_do "$IF_WPA_ID_STR" ascii \
                        set_network id_str wpa-id-str
                
                wpa_cli_do "$WPA_ID" raw \
                        enable_network "enabling network block"
        fi
}
wpa_log_env () {
        wpa_msg log "WPA_IFACE=$WPA_IFACE WPA_ACTION=$WPA_ACTION"
        wpa_msg log "WPA_ID=$WPA_ID WPA_ID_STR=$WPA_ID_STR 
WPA_CTRL_DIR=$WPA_CTRL_DIR"
}
wpa_hysteresis_event () {
        echo "$(date +%s)" > "$WPA_CLI_TIMESTAMP" 2>/dev/null
}
wpa_hysteresis_check () {
        if [ -f "$WPA_CLI_TIMESTAMP" ]; then
                local TIME
                local TIMESTAMP
                local TIMEWAIT
                TIME=$(date +%s)
                # current time minus 4 second event buffer
                TIMEWAIT=$(($TIME-4))
                # get time of last event
                TIMESTAMP=$(cat $WPA_CLI_TIMESTAMP)
                # compare values, allowing new action to be processed 
                # only if last action was more than 4 seconds ago
                if [ "$TIMEWAIT" -le "$TIMESTAMP" ]; then
                        wpa_msg log "$WPA_ACTION event blocked by hysteresis 
check"
                        return 1
                fi
        fi
        return 0
}
ifupdown_lock () {
        ln -s lock "$WPA_CLI_IFUPDOWN"
}
ifupdown_locked () {
        [ -L "$WPA_CLI_IFUPDOWN" ] && return 0
        return 1
}
ifupdown_unlock () {
        rm -f "$WPA_CLI_IFUPDOWN"
}
ifup () {
        local INTERFACES_FILE
        local IFSTATE_FILE
        local IFUP_RETVAL
        local WPA_LOGICAL_IFACE
        if [ -e /etc/network/interfaces ]; then
                INTERFACES_FILE="/etc/network/interfaces"
        else
                wpa_msg log "/etc/network/interfaces does not exist, $WPA_IFACE 
will not be configured"
                return 1
        fi
        if [ -e /etc/network/run/ifstate ]; then
                # debian's ifupdown
                IFSTATE_FILE="/etc/network/run/ifstate"
        elif [ -e /var/run/network/ifstate ]; then
                # ubuntu's
                IFSTATE_FILE="/var/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
        
        if [ -z "$WPA_LOGICAL_IFACE" ] && [ -n "$IF_WPA_MAPPING_SCRIPT" ]; then
                local WPA_MAP_STDIN
                
                WPA_MAP_STDIN=$(set | sed -n 's/^\(IF_WPA_MAP[0-9]*\)=.*/echo 
\$\1/p')
                
                if [ -n "$WPA_MAP_STDIN" ]; then
                        WPA_LOGICAL_IFACE=$(eval "$WPA_MAP_STDIN" | 
"$IF_WPA_MAPPING_SCRIPT" "$WPA_IFACE")
                else            
                        WPA_LOGICAL_IFACE=$("$IF_WPA_MAPPING_SCRIPT" 
"$WPA_IFACE")
                fi
                
                if [ -n "$WPA_LOGICAL_IFACE" ]; then
                        wpa_msg log "mapping script result: $WPA_LOGICAL_IFACE"
                else
                        wpa_msg log "mapping script failed."
                fi
        fi
        if [ -z "$WPA_LOGICAL_IFACE" ]; then
                if [ -n "$IF_WPA_ROAM_DEFAULT_IFACE" ]; then
                        WPA_LOGICAL_IFACE="$IF_WPA_ROAM_DEFAULT_IFACE"
                else
                        WPA_LOGICAL_IFACE="default"
                fi
        fi
        if [ -n "$WPA_LOGICAL_IFACE" ]; then
                if egrep -q 
"^iface[[:space:]]+${WPA_LOGICAL_IFACE}[[:space:]]+inet" "$INTERFACES_FILE"; 
then
                        : # logical network is defined
                else
                        wpa_msg log "network settings not defined for 
$WPA_LOGICAL_IFACE in $INTERFACES_FILE"
                        WPA_LOGICAL_IFACE="default"
                fi
                wpa_msg log "ifup $WPA_IFACE=$WPA_LOGICAL_IFACE"
                ifupdown_lock
                if [ -n "$IFSTATE_FILE" ] && grep -q "^$WPA_IFACE=$WPA_IFACE" 
"$IFSTATE_FILE"; then
                        # Force settings over the unconfigured "master" IFACE
                        /sbin/ifup -v --force "$WPA_IFACE=$WPA_LOGICAL_IFACE"
                else
                        /sbin/ifup -v "$WPA_IFACE=$WPA_LOGICAL_IFACE"
                fi
                IFUP_RETVAL="$?"
                ifupdown_unlock
        fi
        wpa_msg log "creating sendsigs omission pidfile: $WPA_SUP_OMIT_PIDFILE"
        cat "$WPA_SUP_PIDFILE" > "$WPA_SUP_OMIT_PIDFILE"
        return "$IFUP_RETVAL"
}
ifdown () {
        wpa_msg log "ifdown $WPA_IFACE"
        ifupdown_lock
        /sbin/ifdown -v "$WPA_IFACE"
        ifupdown_unlock
        wpa_msg log "removing sendsigs omission pidfile: $WPA_SUP_OMIT_PIDFILE"
        rm -f "$WPA_SUP_OMIT_PIDFILE"
}
if_post_down_up () {
        if [ -x /bin/ip ]; then
                ip addr flush dev "$WPA_IFACE" 2>/dev/null
                ip link set "$WPA_IFACE" up
        else
                ifconfig "$WPA_IFACE" up
        fi
}


-- no debconf information



--- End Message ---
--- Begin Message ---
On Mon, 22 Aug 2011 07:34:23 AM Bjorn Swift wrote:
> Package: wpasupplicant
> Version: 0.7.3-0ubuntu1
> Severity: important
> 
> 
> We just moved from WEP to WPA and started using wpa_supplicant
> on ~30 Ubuntu 11.04 machines. Almost all machines had trouble
> connecting as ifup failed when starting wpa_supplicant. The
> error went something like:
> 
> cat: /var/run/wpa_supplicant.wlan0.pid: No such file or directory
> 

Should be fixed already:

wpasupplicant (0.7.3-3) unstable; urgency=low

  * Restore code which loop waits for wpa_supplicant generated PID and
    UNIX socket on the filesystem before proceeeding with execution of
    ifupdown script. (Closes: #622757, #622589)
...

 -- Kel Modderman <[email protected]>  Sun, 17 Apr 2011 21:07:58 +1000

Kel.


--- End Message ---

Reply via email to