summaryrefslogtreecommitdiffstats
path: root/abs/core-testing/wlan-ng26-utils/tmp/trunk/etc/wlan/shared
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core-testing/wlan-ng26-utils/tmp/trunk/etc/wlan/shared')
-rw-r--r--abs/core-testing/wlan-ng26-utils/tmp/trunk/etc/wlan/shared738
1 files changed, 738 insertions, 0 deletions
diff --git a/abs/core-testing/wlan-ng26-utils/tmp/trunk/etc/wlan/shared b/abs/core-testing/wlan-ng26-utils/tmp/trunk/etc/wlan/shared
new file mode 100644
index 0000000..5d84bb8
--- /dev/null
+++ b/abs/core-testing/wlan-ng26-utils/tmp/trunk/etc/wlan/shared
@@ -0,0 +1,738 @@
+#!/bin/bash
+# etc/wlan/shared
+#
+# Copyright (C) 2002 AbsoluteValue Systems, Inc. All Rights Reserved.
+# --------------------------------------------------------------------
+#
+# linux-wlan
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# Alternatively, the contents of this file may be used under the
+# terms of the GNU Public License version 2 (the "GPL"), in which
+# case the provisions of the GPL are applicable instead of the
+# above. If you wish to allow the use of your version of this file
+# only under the terms of the GPL and not to allow others to use
+# your version of this file under the MPL, indicate your decision
+# by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL. If you do not delete
+# the provisions above, a recipient may use your version of this
+# file under either the MPL or the GPL.
+#
+# --------------------------------------------------------------------
+#
+# Inquiries regarding the linux-wlan Open Source project can be
+# made directly to:
+#
+# AbsoluteValue Systems Inc.
+# info@linux-wlan.com
+# http://www.linux-wlan.com
+#
+# --------------------------------------------------------------------
+#
+# Portions of the development of this software were funded by
+# Intersil Corporation as part of PRISM(R) chipset product development.
+#
+# --------------------------------------------------------------------
+
+TMPDIR=/tmp
+
+if [ ! -n "$ECHO" ]; then
+ ECHO=echo
+fi
+
+if [ ! -n "$WLAN_UDEV" ] ; then
+if [ -x /sbin/modprobe ] ; then
+ MODPROBE=/sbin/modprobe
+else
+ ${ECHO} "/sbin/modprobe not found."
+ exit 1
+fi
+fi
+
+if [ -x /sbin/wlanctl-ng ] ; then
+ WLANCTL=/sbin/wlanctl-ng
+else
+ ${ECHO} "/sbin/wlanctl-ng not found."
+ exit 1
+fi
+
+# linux-wlan-ng > 0.2.4 there is no wland
+#if [ -x /sbin/wland ] ; then
+# WLAND=/sbin/wland
+#else
+# ${ECHO} "/sbin/wland not found."
+# exit 1
+#fi
+
+if [ -z "$WLAN_UDEV" ] ; then
+ HAS_HOTPLUG=n
+ if [ -f /proc/sys/kernel/hotplug -a \
+ -f /etc/hotplug/wlan.agent ] ; then
+ HOTPLUGGER=$(</proc/sys/kernel/hotplug)
+ if [ -n "$HOTPLUGGER" ] ; then
+ if [ -x $HOTPLUGGER ] ; then
+ HAS_HOTPLUG=y
+ fi
+ fi
+ fi
+fi
+
+# Source the wlan configuration
+if [ -f /etc/wlan/wlan.conf ] ; then
+ . /etc/wlan/wlan.conf
+else
+ ${ECHO} "/etc/wlan/wlan.conf not found."
+ exit 0
+fi
+
+# Source NSD specific functions
+# nsd_fwload
+# nsd_mibset
+# Debian mod. If there is shared.dpkg-old we get a endless loop
+if [ "`ls /etc/wlan/shared.* 2>/dev/null`" ]; then
+ for i in `find /etc/wlan -name 'shared.*' -a ! -name '*.dpkg*'` ; do
+ . $i
+ done
+else
+ ${ECHO} "/etc/wlan/shared.* not found."
+ exit 0
+fi
+
+is_true ()
+{
+ # $1 == string containing a t/f indicator.
+
+ [ "$1" = "y" -o "$1" = "Y" -o "$1" = "yes" -o "$1" = "YES" \
+ -o "$1" = "t" -o "$1" = "T" -o "$1" = "true" -o "$1" = "TRUE" ]
+}
+
+wlan_nsdname ()
+{
+ # $1 == wlandev
+ # Writes the given device's name to stdout
+ grep 'nsd name' /proc/net/p80211/$1/wlandev | sed -e 's/.*: \(.*\)_.*/\1/'
+}
+
+wlan_enable ()
+{
+ # $1 == wlandev
+
+ #=======ENABLE IFSTATE=============================
+ # Bring the device into its operable state
+
+ # if running under udev module must be loaded to get here so skip checks
+ if [ ! -n "$WLAN_UDEV" ] ; then
+
+ $MODPROBE $1
+
+ # First, make sure the driver is loaded....
+ if ! ifconfig $1 > /dev/null 2>&1 ; then
+ ${ECHO} "Error: Device $1 does not seem to be present."
+ ${ECHO} "Make sure you've inserted the appropriate"
+ ${ECHO} "modules or that your modules.conf file contains"
+ ${ECHO} "the appropriate aliase(s)."
+ return 1
+ fi
+ fi
+ # Call the nsd script's fwload function, in case the card needs
+ # a firmware load, or could use an optional one.
+
+ nsdname=`wlan_nsdname $1`
+ if ! ${nsdname}_fwload $1 ; then
+ ${ECHO} "Firmware failed to load for device $1"
+ return 1
+ fi
+
+ # Enable the interface
+ result=`$WLANCTL $1 lnxreq_ifstate ifstate=enable`
+ if [ $? = 0 ] ; then
+ eval $result
+ if [ $resultcode != "success" ]; then
+ ${ECHO} "Failed to enable the device, resultcode=" \
+ $resultcode "."
+ return 1
+ fi
+ else
+ ${ECHO} "Failed to enable the device, exitcode=" $? "."
+ return 1
+ fi
+
+ # Set any NSD specific MIBs
+ ${nsdname}_mibset $1
+}
+
+wlan_user_mibs ()
+{
+ # $1 == wlandev
+
+ #=======USER MIB SETTINGS=============================
+ # Set the user specified MIB items.
+ for i in $USER_MIBS ; do
+ result=`$WLANCTL $1 dot11req_mibset "mibattribute=$i"`
+ if [ $? = 0 ] ; then
+ eval $result
+ if [ $resultcode != "success" ] ; then
+ ${ECHO} "Failed to set user MIB $i."
+ return 1
+ fi
+ else
+ ${ECHO} "Failed to set user MIB $i."
+ return 1
+ fi
+ done
+}
+
+wlan_source_config ()
+{
+ # $1 == wlandev
+
+ # XXX what about stray singlequotes.
+ eval 'GOSSID="$SSID_'$1'"'
+ wlan_source_config_for_ssid "$GOSSID"
+}
+
+wlan_source_config_for_ssid ()
+{
+ # $1 == ssid[:bssid]
+ # $2 == bssid (optional)
+
+ DesiredSSID="$1"
+ DesiredBSSID="$2"
+
+ if [ -n "$2" ] ; then
+ token_ssid=`echo $1 | sed -ne 's/\(.*\)\(:..:..:..:..:..:..\).*/\1/p'`
+ token_bssid=`echo $1 | sed -ne 's/\(.*\):\(..:..:..:..:..:..\).*/\2/p'`
+ if [ -n "$token_ssid" ] ; then
+ DesiredSSID="$token_ssid"
+ DesiredBSSID="$token_bssid"
+ fi
+
+ fi
+
+ if [ -f "/etc/wlan/wlancfg-$DesiredSSID:$DesiredBSSID" ] ; then
+ . "/etc/wlan/wlancfg-$DesiredSSID:$DesiredBSSID"
+ elif [ -f "/etc/wlan/wlancfg-$DesiredSSID" ] ; then
+ . "/etc/wlan/wlancfg-$DesiredSSID"
+ else
+
+ if [ -n "$1" ] ; then
+ ${ECHO} "Failed to open network config file /etc/wlan/wlancfg-$1, using default."
+ fi
+
+ . "/etc/wlan/wlancfg-DEFAULT"
+ fi
+}
+
+wlan_disable ()
+{
+ # $1 == wlandev
+
+ $WLANCTL $1 lnxreq_ifstate ifstate=disable
+}
+
+wlan_ssid_in_list ()
+{
+ # $1 == wlandev, $2 == ssid, $3 == bssid
+
+ eval 'GOSSID="$SSID_'$1'"'
+
+ # This "eval" hackery is to allow escapes in GOSSID...
+ cmd="for token in $GOSSID ; do
+ ssid_token=\`echo \"\$token\" | sed -ne 's/\(.*\)\(:..:..:..:..:..:..\).*/\1/p'\`
+ bssid_token=\`echo \"\$token\" | sed -ne 's/\(.*\):\(..:..:..:..:..:..\).*/\2/p'\`
+
+ if [ -z \"\$ssid_token\" ] ; then
+ ssid_token="\$token"
+ fi
+
+ if [ -n \"\$bssid_token\" ] ; then
+ if [ \"\$bssid_token\" = \"\$3\" ] ; then
+ return 0
+ fi
+ elif [ \"\$2\" = \"\$ssid_token\" ] ; then
+ return 0
+ fi
+ done"
+ eval "$cmd"
+
+ return 1
+}
+
+wlan_supports_scan ()
+{
+ # $1 == wlandev
+
+ if is_true "$WLAN_SCAN" ; then
+ cat /proc/net/p80211/$1/wlandev | grep 'scan' > /dev/null
+ if [ $? = 0 ] ; then
+ return 0
+ fi
+ fi
+ return 1
+}
+
+wlan_scan ()
+{
+ # $1 == wlandev
+
+ # find our allowed SSID list.
+
+ # XXX what about stray singlequotes.
+ eval 'GOSSID="$SSID_'$1'"'
+
+ # kick off a quick scan with the broadcast SSID.
+ wlan_scan_one $1 '' '' n
+ if [ $? = 0 -a \
+ "$GOSSID" = "" ] ; then
+ # if successful and our ssid list is null, return.
+ sleep 1
+ return 0
+ fi
+
+ # otherwise we walk through the list, and scan for eacn in turn.
+ # this "eval" hackery is to allow escapes in GOSSID
+ cmd="for token in $GOSSID ; do
+ ssid_token=\`echo \"\$token\" | sed -ne 's/\(.*\)\(:..:..:..:..:..:..\).*/\1/p'\`
+ bssid_token=\`echo \"\$token\" | sed -ne 's/\(.*\):\(..:..:..:..:..:..\).*/\2/p'\`
+
+ if [ -z \"\$ssid_token\" ] ; then
+ ssid_token=\"\$token\"
+ fi
+
+ wlan_scan_one \$1 \"\$ssid_token\" \"\$bssid_token\"
+ if [ \$? = 0 ] ; then
+ sleep 1
+ return 0
+ fi
+ done"
+ eval "$cmd"
+
+ # We got to the end of the list. Maybe try "any"
+ if is_true "$WLAN_ANY" ; then
+ wlan_scan_one $1
+ sleep 1
+ return $?
+ fi
+
+ sleep 1
+ return 1
+}
+
+
+wlan_scan_one ()
+{
+ # $1 == wlandev, [ $2 == ssid, $3 == bssid, $4 == append ]
+
+ if [ -z "$4" ] ; then
+ append=true
+ else
+ append=false
+ fi
+
+ numbss=0
+
+ result=`$WLANCTL $1 dot11req_scan bsstype=any bssid=ff:ff:ff:ff:ff:ff \
+ scantype=active probedelay=0 channellist=$ChannelList ssid="$2" \
+ minchanneltime=$ChannelMinTime maxchanneltime=$ChannelMaxTime append=$append`
+ eval $result
+ if [ $resultcode != 'success' ] ; then
+ ${ECHO} "Scan failed ($resultcode) "
+ return 1
+ fi
+
+ ## XXX if numbss == 0, repeat with $2 $3 $4?
+
+ i=0
+ bssfound=""
+
+ # walk through the results and do first-cut matching.
+ while [ $i -lt $numbss ] ; do
+ result=`$WLANCTL $1 dot11req_scan_results bssindex=$i`
+ eval $result
+
+ if [ -n "$3" ] ; then
+ if [ "$3" = "$bssid" ] ; then
+ bssfound="$bssfound $i"
+ fi
+ elif [ -z "$2" ] ; then
+ # if our ssid is "", then we pick the first entry.
+ bssfound="$bssfound $i"
+ elif [ "$2" = "$ssid" ] ; then
+ bssfound="$bssfound $i"
+ fi
+ i=`expr $i + 1`
+ done
+
+ if [ -z "$bssfound" ]; then # No BSSs found, bail.
+ return 1
+ else
+ # Now find the closest
+ bigsignal=0
+ for i in $bssfound ; do
+ result=`$WLANCTL $1 dot11req_scan_results bssindex=$i`
+ eval $result
+ if [ $bigsignal -lt $signal ]; then
+ bigsignal=$signal
+ bigbssindex=$i
+ fi
+ done
+ result=`$WLANCTL $1 dot11req_scan_results bssindex=$bigbssindex`
+ eval $result
+ return 0
+ fi
+}
+
+wlan_wep ()
+{
+ # $1 == wlandev
+
+ #=======WEP===========================================
+ # Setup privacy
+ if [ ${dot11PrivacyInvoked:-"false"} = "false" ] ; then
+ return 0;
+ fi
+
+ result=`$WLANCTL $1 dot11req_mibget mibattribute=dot11PrivacyOptionImplemented`
+ if [ $? = 0 ] ; then
+ eval $result
+ eval $mibattribute
+ else
+ ${ECHO} "dot11PrivacyOptionImplemented mibget failed."
+ return 1
+ fi
+
+ if [ $dot11PrivacyOptionImplemented = "false" ] ; then
+ ${ECHO} "Cannot enable privacy, dot11PrivacyOptionImplemented=false."
+ return 1
+ fi
+
+ # Do we want host-based WEP?
+ result=`$WLANCTL $1 lnxreq_hostwep \
+ decrypt="${lnxreq_hostWEPDecrypt:-false}" \
+ encrypt="${lnxreq_hostWEPEncrypt:-false}"`
+
+ # set up the rest of the parametsrs.
+ if [ $dot11PrivacyOptionImplemented = "true" -a \
+ $dot11PrivacyInvoked = "true" ] ; then
+ result=`$WLANCTL $1 dot11req_mibset \
+ mibattribute=dot11WEPDefaultKeyID=$dot11WEPDefaultKeyID `
+ result=`$WLANCTL $1 dot11req_mibset \
+ mibattribute=dot11ExcludeUnencrypted=$dot11ExcludeUnencrypted `
+ result=`$WLANCTL $1 dot11req_mibset \
+ mibattribute=dot11PrivacyInvoked=$dot11PrivacyInvoked`
+ if [ "${PRIV_GENSTR:-empty}" != "empty" ] ; then
+ if [ ${PRIV_KEY128:-"false"} = "false" ]; then
+ keys=`$PRIV_GENERATOR "$PRIV_GENSTR" 5`
+ else
+ keys=`$PRIV_GENERATOR "$PRIV_GENSTR" 13`
+ fi
+ knum=0
+ for i in $keys ; do
+ result=`$WLANCTL $1 dot11req_mibset \
+ mibattribute=dot11WEPDefaultKey$knum=$i`
+ knum=`expr $knum + 1`
+ done
+ else
+ result=`$WLANCTL $1 dot11req_mibset \
+ mibattribute=dot11WEPDefaultKey0=$dot11WEPDefaultKey0 `
+ result=`$WLANCTL $1 dot11req_mibset \
+ mibattribute=dot11WEPDefaultKey1=$dot11WEPDefaultKey1 `
+ result=`$WLANCTL $1 dot11req_mibset \
+ mibattribute=dot11WEPDefaultKey2=$dot11WEPDefaultKey2 `
+ result=`$WLANCTL $1 dot11req_mibset \
+ mibattribute=dot11WEPDefaultKey3=$dot11WEPDefaultKey3 `
+ fi
+ else
+ # disable wep explicitly.
+ result=`$WLANCTL $1 dot11req_mibset \
+ mibattribute=dot11PrivacyInvoked=$dot11PrivacyInvoked `
+ result=`$WLANCTL $1 dot11req_mibset \
+ mibattribute=dot11ExcludeUnencrypted=false `
+ fi
+}
+
+wlan_adhoc ()
+{
+ # $1 == wlandev
+
+ #=======IBSS STARTUP==================================
+ startcmd="$WLANCTL $1 dot11req_start "
+ startcmd="$startcmd ssid=$DesiredSSID"
+ startcmd="$startcmd bsstype=independent"
+ startcmd="$startcmd beaconperiod=$BCNINT"
+ startcmd="$startcmd dtimperiod=3"
+ startcmd="$startcmd cfpollable=false"
+ startcmd="$startcmd cfpollreq=false"
+ startcmd="$startcmd cfpperiod=3"
+ startcmd="$startcmd cfpmaxduration=100"
+ startcmd="$startcmd probedelay=100"
+ startcmd="$startcmd dschannel=$CHANNEL"
+ j=1
+ for i in $BASICRATES ; do
+ startcmd="$startcmd basicrate$j=$i"
+ j=`expr $j + 1`
+ done
+
+ j=1
+ for i in $OPRATES ; do
+ startcmd="$startcmd operationalrate$j=$i"
+ j=`expr $j + 1`
+ done
+
+ results=`$startcmd` # Here's where it runs
+ if [ $? = 0 ]; then
+ eval $results
+ if [ $resultcode != "success" ] ; then
+ ${ECHO} "IBSS not started, resultcode=$resultcode"
+ exit 1
+ else
+ ${ECHO} "IBSS mode started."
+ fi
+ else
+ ${ECHO} FAILED: $startcmd
+ return 1
+ fi
+ WLAN_SCHEMESSID="$DesiredSSID"
+}
+
+wlan_infra ()
+{
+ # $1 == wlandev
+
+ #==== INFRASTRUCURE STARTUP===========================
+ # XXX TODO: Grok DesiredBSSID
+
+ sleep 5
+ results=`$WLANCTL $1 lnxreq_autojoin \
+ "ssid=$DesiredSSID" \
+ authtype=${AuthType:="opensystem"} | sed 's/\([^=]*\)=\(.*\)/\1="\2"/'`
+ eval $results
+ if [ ${resultcode:-"failure"} != "success" ] ; then
+ ${ECHO} 'error: Autojoin indicated failure!'
+ return 1;
+ fi
+
+ WLAN_SCHEMESSID="$DesiredSSID"
+}
+
+wlan_dot11_join ()
+{
+ # $1 == wlandev
+
+ joincmd="$WLANCTL $1 dot11req_join bssid=$DesiredBSSID"
+ joincmd="$joincmd joinfailuretimeout=1"
+
+ j=1
+ for i in $OPRATES ; do
+ joincmd="$joincmd operationalrate$j=$i"
+ j=`expr $j + 1`
+ done
+
+ results=`$joincmd`
+
+ eval $results
+ if [ ${resultcode:-"failure"} != "success" ] ; then
+ ${ECHO} "$1: JOIN Failure"
+ ${ECHO} "joincmd=$joincmd"
+ ${ECHO} "results=$results"
+ return 1;
+ fi
+}
+
+wlan_dot11_auth_assoc ()
+{
+ # $1 == wlandev
+ if [ $bsstype = "infrastructure" ] ; then
+ results=`$WLANCTL $1 dot11req_authenticate \
+ peerstaaddress=$DesiredBSSID \
+ authenticationtype=$AuthType \
+ authenticationfailuretimeout=2000`
+ eval $results
+ if [ ${resultcode:-"failure"} != "success" ] ; then
+ ${ECHO} "error: dot11req_authenticate failed, "\
+ "resultcode=$resultcode"
+ return 1;
+ fi
+ results=`$WLANCTL $1 dot11req_associate \
+ listeninterval=1000 \
+ associatefailuretimeout=2000 `
+ if [ ${resultcode:-"failure"} != "success" ] ; then
+ ${ECHO} 'error: dot11req_associate failed!'
+ return 1;
+ fi
+ fi
+}
+
+wlan_set_ssid_schemefile ()
+{
+ # $1 == SSID
+
+ # Find the scheme file
+ if [ -r /var/lib/misc/pcmcia-scheme ] ; then
+ # Debian
+ WLAN_SCHEMEFILE="/var/lib/misc/pcmcia-scheme"
+ elif [ -d /var/state/pcmcia ] ; then
+ WLAN_SCHEMEFILE="/var/state/pcmcia/scheme"
+ elif [ -d /var/lib/pcmcia ] ; then
+ WLAN_SCHEMEFILE="/var/lib/pcmcia/scheme"
+ else
+ WLAN_SCHEMEFILE="/var/run/pcmcia-scheme"
+ fi
+
+ # Collect the current scheme name and save the file
+ if [ -r $WLAN_SCHEMEFILE ] ; then
+ WLAN_SCHEME=`cat $WLAN_SCHEMEFILE`
+ cp $WLAN_SCHEMEFILE /var/run/wlan_scheme_`date +"%T"`.tmp
+ else
+ touch /var/run/wlan_scheme_`date +"%T"`.tmp
+
+ fi
+
+ # Set up the <scheme:SSID> string
+ if [ ! "$WLAN_SCHEME" ] ; then
+ WLAN_SCHEME="default"
+ fi
+ WLAN_SCHEME="$WLAN_SCHEME:$1"
+
+ # Write to schemefile
+ echo $WLAN_SCHEME > $WLAN_SCHEMEFILE
+}
+
+wlan_restore_schemefile ()
+{
+ # Find the scheme file
+ if [ -r /var/lib/misc/pcmcia-scheme ] ; then
+ # Debian
+ WLAN_SCHEMEFILE="/var/lib/misc/pcmcia-scheme"
+ elif [ -d /var/state/pcmcia ] ; then
+ WLAN_SCHEMEFILE="/var/state/pcmcia/scheme"
+ elif [ -d /var/lib/pcmcia ] ; then
+ WLAN_SCHEMEFILE="/var/lib/pcmcia/scheme"
+ else
+ WLAN_SCHEMEFILE="/var/run/pcmcia-scheme"
+ fi
+
+ TMPFILE=`ls /var/run/wlan_scheme*.tmp | tail -n 1`
+
+ if [ -r $TMPFILE ] ; then
+ cat $TMPFILE > $WLAN_SCHEMEFILE
+ rm -f $TMPFILE
+ else
+ ${ECHO} "wlan_restore_schemefile: No wlan_scheme\*.tmp file found."
+ fi
+}
+
+wlan_bring_it_up ()
+{
+ # $1 == wlandev
+ # $2 == non-null if wext enabled.
+
+ #=======ENABLE========================================
+ # Do we want to init the card at all?
+ eval 'WLAN_ENABLE=$ENABLE_'$1
+
+ if ! is_true $WLAN_ENABLE ; then
+ return 1
+ fi
+
+ if wlan_enable $1 ; then
+ if [ -z "$2" ] ; then
+ wlan_scan_and_join $1
+ return $?
+ else
+ ${ECHO} "Bypassing configuration due to wireless extensions"
+ fi
+ else
+ return 1;
+ fi
+
+ return 1
+}
+
+wlan_scan_and_join ()
+{
+ #=======MAC STARTUP=========================================
+ wlan_supports_scan $1
+ if [ $? = 0 ] ; then
+ wlan_scan $1
+ if [ $? = 0 ] ; then
+ wlan_source_config_for_ssid "$ssid" "$bssid"
+
+ wlan_user_mibs $1
+ wlan_wep $1
+
+ wlan_join $1
+ else
+ if is_true $IS_ADHOC ; then
+ # start an IBSS; we didn't find one.
+ wlan_adhoc $1
+ else
+ return 1
+ fi
+ fi
+ else
+ wlan_source_config $1
+
+ wlan_user_mibs $1
+ wlan_wep $1
+
+ if is_true $IS_ADHOC ; then
+ wlan_adhoc $1
+ else
+ wlan_infra $1
+ fi
+ fi
+
+ return $?
+}
+
+wlan_join ()
+{
+ # $1 == wlandev
+ grep 'autojoin' /proc/net/p80211/$1/wlandev > /dev/null
+ if [ $? = 0 ]; then
+ wlan_infra $1
+ else
+ wlan_dot11_join $1
+ wlan_dot11_auth_assoc $1
+ fi
+}
+
+tmpname ()
+{
+ # $1 == prefix
+ local i=0
+ local tname=$TMPDIR/${1}_$$
+ if [ -f ${tname}.tmp ] ; then
+ for i in 0 1 2 3 4 5 6 7 8 9 ; do
+ if [ ! -f ${tname}_${i}.tmp ] ; then
+ echo ${tname}_${i}.tmp
+ return 0
+ fi
+ done
+ else
+ echo ${tname}.tmp
+ fi
+ return 0
+}
+
+source_procfile ()
+{
+ # $1 == procfile to source
+ local fname=`tmpname wlan_procfile`
+ cat "$1" > $fname
+ . $fname
+ rm -f $fname
+}
+
+# This is set by the Configure script as part of 'make install'
+#FIRMWARE_DIR="/usr/share/linux-wlan"