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 ---

