From a8c3002082db29a51d1fda15222844c307051001 Mon Sep 17 00:00:00 2001 From: Davide Madrisan Date: Thu, 21 Feb 2013 23:51:49 +0100 Subject: [PATCH] ifup-wireless: modify indentation; remove all the temporary files Signed-off-by: Davide Madrisan --- etc/sysconfig/network-scripts/ifup-wireless | 143 ++++++++++++-------- 1 file changed, 84 insertions(+), 59 deletions(-) diff --git a/etc/sysconfig/network-scripts/ifup-wireless b/etc/sysconfig/network-scripts/ifup-wireless index b7c7919..49edb02 100644 --- a/etc/sysconfig/network-scripts/ifup-wireless +++ b/etc/sysconfig/network-scripts/ifup-wireless @@ -1,28 +1,43 @@ #!/bin/sh # Copyright (c) 2003-2009 by Silvan Calarco -# Copyright (c) 2003-2009 by Davide Madrisan +# Copyright (c) 2003-2009,2013 by Davide Madrisan # Only meant to be called from ifup. +# Configure wireless network device options. +# Valid variables: +# WIRELESS_ESSID +# WIRELESS_MODE +# WIRELESS_ENCMODE: +# WIRELESS_NWID +# WIRELESS_CHANNEL +# WIRELESS_FREQUENCY +# WIRELESS_AP +# WIRELESS_FREQ +# WIRELESS_RATE +# WIRELESS_ENC + unset WIRELESS_OPTS WIRELESS_OPTS2 if [ "$WIRELESS_ESSID" ]; then - tmpfile=`tempfile` - tmpfile1=`tempfile` + tmpfile=`tempfile 2>/dev/null` + tmpfile1=`tempfile 2>/dev/null` if [ "$tmpfile" ]; then ifconfig ${DEVICE} up -# sleep 1 + unset vname found_essid - # Note: iwlist scan essid option does not work with all drivers (see man iwlist) - # so we split cell information below + # Note: iwlist scan essid option does not work with all drivers + # (see man iwlist) so we split cell information below iwlist ${DEVICE} scan essid $WIRELESS_ESSID > $tmpfile - # Note: sometimes iwlist scan fails with "Device or resource busy", so we try again - [ -s $tmpfile ] || { - ifconfig ${DEVICE} down + + # Note: sometimes iwlist scan fails with "Device or resource busy", + # so we try again + [ -s $tmpfile ] || + { ifconfig ${DEVICE} down ifconfig ${DEVICE} up - iwlist ${DEVICE} scan essid $WIRELESS_ESSID > $tmpfile - } + iwlist ${DEVICE} scan essid $WIRELESS_ESSID > $tmpfile; } + cat $tmpfile | \ while read line; do if [ "${line:0:5}" = "Cell " ]; then @@ -31,7 +46,9 @@ if [ "$WIRELESS_ESSID" ]; then echo $line >> $tmpfile1 [ "$line" = "ESSID:\"$WIRELESS_ESSID\"" ] && found_essid=1 done + > $tmpfile + cat $tmpfile1 | \ while read line; do vname=${line/:*} @@ -47,87 +64,92 @@ if [ "$WIRELESS_ESSID" ]; then vname=${vname/_(1)} vval=${line/*:} fi + vname=WIRELESS_AUTO_${vname/* } vval=${vval/ } vval=\"${vval/GHz*}\" - if [ "$vname" = "WIRELESS_AUTO_Mode" -o "$vname" = "WIRELESS_AUTO_Channel" -o \ - "$vname" = "WIRELESS_AUTO_Address" -o "$vname" = "WIRELESS_AUTO_Frequency" -o \ - "$vname" = "WIRELESS_AUTO_IE" -o "$vname" = "WIRELESS_AUTO_Group_Cipher" -o \ - "$vname" = "WIRELESS_AUTO_Pairwise_Ciphers" -o "$vname" = "WIRELESS_AUTO_Authentication_Suites" ]; then + + if [ "$vname" = "WIRELESS_AUTO_Mode" -o \ + "$vname" = "WIRELESS_AUTO_Channel" -o \ + "$vname" = "WIRELESS_AUTO_Address" -o \ + "$vname" = "WIRELESS_AUTO_Frequency" -o \ + "$vname" = "WIRELESS_AUTO_IE" -o \ + "$vname" = "WIRELESS_AUTO_Group_Cipher" -o \ + "$vname" = "WIRELESS_AUTO_Pairwise_Ciphers" -o \ + "$vname" = "WIRELESS_AUTO_Authentication_Suites" ]; then echo $vname=$vval >> $tmpfile fi done + . $tmpfile - rm -f $tmpfile $tmpfile1 else - echo "Warning: unable to create temporary file; skipping wireless autodetection" + echo "\ +Warning: unable to create temporary file; skipping wireless autodetection" fi + rm -f $tmpfile $tmpfile1 fi -if [ "$WIRELESS_MODE" ]; then - WIRELESS_OPTS="$WIRELESS_OPTS mode $WIRELESS_MODE" - #elif [ "$WIRELESS_AUTO_MODE" ]; then - # WIRELESS_OPTS="$WIRELESS_OPTS mode $WIRELESS_AUTO_Mode" - #else - #WIRELESS_OPTS="$WIRELESS_OPTS mode managed" -fi -if [ ! "$WIRELESS_ENCMODE" ]; then - WIRELESS_ENCMODE="open" -fi -if [ "$WIRELESS_ESSID" ]; then - WIRELESS_OPTS="$WIRELESS_OPTS essid $WIRELESS_ESSID" -fi -if [ "$WIRELESS_NWID" ]; then - WIRELESS_OPTS="$WIRELESS_OPTS nwid $WIRELESS_NWID" -fi +[ "$WIRELESS_ENCMODE" ] || WIRELESS_ENCMODE="open" + +[ "$WIRELESS_MODE" ] && WIRELESS_OPTS="$WIRELESS_OPTS mode $WIRELESS_MODE" +[ "$WIRELESS_ESSID" ] && WIRELESS_OPTS="$WIRELESS_OPTS essid $WIRELESS_ESSID" +[ "$WIRELESS_NWID" ] && WIRELESS_OPTS="$WIRELESS_OPTS nwid $WIRELESS_NWID" + if [ "$WIRELESS_CHANNEL" ]; then WIRELESS_OPTS="$WIRELESS_OPTS channel $WIRELESS_CHANNEL" elif [ "$WIRELESS_AUTO_Channel" ]; then WIRELESS_OPTS="$WIRELESS_OPTS channel $WIRELESS_AUTO_Channel" fi + if [ "$WIRELESS_FREQUENCY" ]; then WIRELESS_OPTS="$WIRELESS_OPTS freq $WIRELESS_FREQUENCY" elif [ "$WIRELESS_AUTO_Frequency" ]; then WIRELESS_OPTS="$WIRELESS_OPTS freq ${WIRELESS_AUTO_Frequency}G" fi + if [ "$WIRELESS_AP" ]; then WIRELESS_OPTS2="$WIRELESS_OPTS2 ap $WIRELESS_AP" elif [ "$WIRELESS_AUTO_Address" ]; then WIRELESS_OPTS2="$WIRELESS_OPTS2 ap $WIRELESS_AUTO_Address" fi -if [ "$WIRELESS_FREQ" ]; then - WIRELESS_OPTS2="$WIRELESS_OPTS2 freq $WIRELESS_FREQ" -fi -if [ "$WIRELESS_RATE" ]; then - WIRELESS_OPTS2="$WIRELESS_OPTS2 rate $WIRELESS_RATE" -fi + +[ "$WIRELESS_FREQ" ] && WIRELESS_OPTS2="$WIRELESS_OPTS2 freq $WIRELESS_FREQ" +[ "$WIRELESS_RATE" ] && WIRELESS_OPTS2="$WIRELESS_OPTS2 rate $WIRELESS_RATE" + # Note: WIRELESS_ENC must appear as the last option -if [ "$WIRELESS_ENC" -a "${WIRELESS_AUTO_IE:0:3}" != "WPA" ]; then +[ "$WIRELESS_ENC" -a "${WIRELESS_AUTO_IE:0:3}" != "WPA" ] && WIRELESS_OPTS="$WIRELESS_OPTS key $WIRELESS_ENCMODE $WIRELESS_ENC" -fi if [ "$WIRELESS_ESSID" -o "$WIRELESS_ENC" ]; then echo -n "Setting wireless options for ${DEVICE}: " + ifconfig ${DEVICE} down iwconfig ${DEVICE} $WIRELESS_OPTS - if [ "$WIRELESS_OPTS2" ]; then - iwconfig ${DEVICE} $WIRELESS_OPTS2 - fi + [ "$WIRELESS_OPTS2" ] && iwconfig ${DEVICE} $WIRELESS_OPTS2 + evaluate_retval echo - if [ "${WIRELESS_AUTO_IE:0:3}" == "WPA" -a ! -e /var/run/wpa_supplicant/${DEVICE} ]; then - echo -n "Setting WPA options for ${DEVICE}: " - [ "$WIRELESS_AUTO_Authentication_Suites" ] || WIRELESS_AUTO_Authentication_Suites=PSK - [ "$WIRELESS_AUTO_Pairwise_Ciphers" ] || WIRELESS_AUTO_Pairwise_Ciphers=TKIP - [ "$WIRELESS_AUTO_Group_Cipher" ] || WIRELESS_AUTO_Group_Cipher=TKIP - if [ "${WIRELESS_ENC:0:2}" = "s:" ]; then - WPA_PSK=\"${WIRELESS_ENC/s:}\" - else - WPA_PSK=${WIRELESS_ENC} - fi - tmpfile1=`tempfile` - cat >> $tmpfile1 << _EOF + if [ "${WIRELESS_AUTO_IE:0:3}" = "WPA" -a ! -e /var/run/wpa_supplicant/${DEVICE} ]; then + echo -n "Setting WPA options for ${DEVICE}: " + + [ "$WIRELESS_AUTO_Authentication_Suites" ] || + WIRELESS_AUTO_Authentication_Suites=PSK + + [ "$WIRELESS_AUTO_Pairwise_Ciphers" ] || + WIRELESS_AUTO_Pairwise_Ciphers=TKIP + + [ "$WIRELESS_AUTO_Group_Cipher" ] || + WIRELESS_AUTO_Group_Cipher=TKIP + + if [ "${WIRELESS_ENC:0:2}" = "s:" ]; then + WPA_PSK=\"${WIRELESS_ENC/s:}\" + else + WPA_PSK=${WIRELESS_ENC} + fi + + tmpfile1=`tempfile 2>/dev/null` + cat >> $tmpfile1 << _EOF ctrl_interface=/var/run/wpa_supplicant network={ scan_ssid=0 @@ -139,8 +161,11 @@ group=$WIRELESS_AUTO_Group_Cipher psk=$WPA_PSK } _EOF - wpa_supplicant -Dwext -i${DEVICE} -c $tmpfile1 -B - evaluate_retval - echo + wpa_supplicant -Dwext -i${DEVICE} -c $tmpfile1 -B + + evaluate_retval + echo + + rm -f $tmpfile1 fi fi