--- a/etc/net/scripts/config-wireless +++ a/etc/net/scripts/config-wireless @@ -10,6 +10,13 @@ usage() [ -z "$1" ] && usage NAME=$1 +shift + +# used as action script in wpa_cli, see below +[ -z "$1" ] || { + [ "$1" == "CONNECTED" ] && kill `cat /var/run/wpa_cli-$NAME.pid` + exit +} pickup_defaults pickup_options @@ -29,10 +36,13 @@ if [ -x "${IWCONFIG:=$DEFAULT_IWCONFIG}" ]; then fi # configure WPA -if [ -x "${WPA_SUPPLICANT:=$DEFAULT_WPA_SUPPLICANT}" ]; then +if [ -x "${WPA_SUPPLICANT:=$DEFAULT_WPA_SUPPLICANT}" -a \ + -x "${WPA_CLI:=$DEFAULT_WPA_CLI}" ]; then prof_conf=`profiled_filename $MYIFACEDIR/wpa_supplicant.conf` if [ -s "$prof_conf" ]; then - $WPA_SUPPLICANT -i$NAME${WPA_DRIVER:+ -D$WPA_DRIVER} -c $prof_conf 2>&1>/dev/null & - echo $! >/var/run/wpa_supplicant-$NAME.pid + $WPA_SUPPLICANT -i$NAME${WPA_DRIVER:+ -D$WPA_DRIVER} \ + -B -P/var/run/wpa_supplicant-$NAME.pid -c $prof_conf + # wait until connected + $WPA_CLI -i$NAME -P/var/run/wpa_cli-$NAME.pid -a "$0" fi fi --- a/etc/net/scripts/functions +++ a/etc/net/scripts/functions @@ -18,6 +18,7 @@ DEFAULT_IFPLUGD=/usr/sbin/ifplugd DEFAULT_IWPRIV=/sbin/iwpriv DEFAULT_IWCONFIG=/sbin/iwconfig DEFAULT_WPA_SUPPLICANT=/usr/sbin/wpa_supplicant +DEFAULT_WPA_CLI=/usr/sbin/wpa_cli DEFAULT_PLIPCONFIG=/sbin/plipconfig DEFAULT_VCONFIG=/usr/bin/vconfig DEFAULT_IPSECADM=/usr/sbin/ipsecadm @@ -501,7 +502,7 @@ declare -frx modprobe_with_rename declare -frx eval_string declare -rx DENOISE DEFAULT_BONDMODE IFACEDIR LOCALSCRIPTDIR VARLIBDIR declare -rx VLANTAB HOSTTAB IFTAB PROFILE_FILE PROC_CMDLINE DEFAULT_IFPLUGSTATUS -declare -rx DEFAULT_IFPLUGD DEFAULT_IWCONFIG DEFAULT_WPA_SUPPLICANT DEFAULT_PLIPCONFIG +declare -rx DEFAULT_IFPLUGD DEFAULT_IWCONFIG DEFAULT_WPA_SUPPLICANT DEFAULT_WPA_CLI DEFAULT_PLIPCONFIG declare -rx DEFAULT_VCONFIG DEFAULT_PENTANETT DEFAULT_PENTAVALT DEFAULT_PENTANET_CONF declare -rx DEFAULT_PENTAVAL_CONF DEFAULT_IPSECADM DEFAULT_IFENSLAVE DEFAULT_BRCTL declare -rx DEFAULT_ETHTOOL DEFAULT_PPPD DEFAULT_CHAT DEFAULT_PPPOPTIONSFILE