home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 16 / hacker16 / 16_HACKER16.ISO / linux / tpm-security-server-1.2.1.iso / etc / wlan / shared next >
Encoding:
Text File  |  2004-01-27  |  15.8 KB  |  697 lines

  1. #!/bin/bash
  2. # etc/wlan/shared
  3. #
  4. # Copyright (C) 2002 AbsoluteValue Systems, Inc.  All Rights Reserved.
  5. # --------------------------------------------------------------------
  6. #
  7. # linux-wlan
  8. #
  9. #   The contents of this file are subject to the Mozilla Public
  10. #   License Version 1.1 (the "License"); you may not use this file
  11. #   except in compliance with the License. You may obtain a copy of
  12. #   the License at http://www.mozilla.org/MPL/
  13. #
  14. #   Software distributed under the License is distributed on an "AS
  15. #   IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  16. #   implied. See the License for the specific language governing
  17. #   rights and limitations under the License.
  18. #
  19. #   Alternatively, the contents of this file may be used under the
  20. #   terms of the GNU Public License version 2 (the "GPL"), in which
  21. #   case the provisions of the GPL are applicable instead of the
  22. #   above.  If you wish to allow the use of your version of this file
  23. #   only under the terms of the GPL and not to allow others to use
  24. #   your version of this file under the MPL, indicate your decision
  25. #   by deleting the provisions above and replace them with the notice
  26. #   and other provisions required by the GPL.  If you do not delete
  27. #   the provisions above, a recipient may use your version of this
  28. #   file under either the MPL or the GPL.
  29. #
  30. # --------------------------------------------------------------------
  31. #
  32. # Inquiries regarding the linux-wlan Open Source project can be
  33. # made directly to:
  34. #
  35. # AbsoluteValue Systems Inc.
  36. # info@linux-wlan.com
  37. # http://www.linux-wlan.com
  38. #
  39. # --------------------------------------------------------------------
  40. #
  41. # Portions of the development of this software were funded by 
  42. # Intersil Corporation as part of PRISM(R) chipset product development.
  43. #
  44. # --------------------------------------------------------------------
  45.  
  46. if [ ! -n $ECHO ]; then
  47.     ECHO=echo
  48. fi
  49.  
  50. if [ -x /sbin/modprobe ] ; then
  51.     MODPROBE=/sbin/modprobe
  52. else
  53.     ${ECHO} "/sbin/modprobe not found."
  54.     exit 1
  55. fi
  56.  
  57. if [ -x /sbin/wlanctl-ng ] ; then 
  58.     WLANCTL=/sbin/wlanctl-ng
  59. else
  60.     ${ECHO} "/sbin/wlanctl-ng not found."
  61.     exit 1
  62. fi
  63.  
  64. if [ -x /sbin/wland ] ; then
  65.     WLAND=/sbin/wland
  66. else
  67.     ${ECHO} "/sbin/wland not found."
  68.     exit 1
  69. fi
  70.  
  71. if [ -d /etc/hotplug ] ; then
  72.     HAS_HOTPLUG=y
  73. else
  74.     HAS_HOTPLUG=n
  75. fi
  76.  
  77. # Source the wlan configuration
  78. if [ -f /etc/wlan/wlan.conf ] ; then
  79.     . /etc/wlan/wlan.conf
  80. else
  81.     ${ECHO} "/etc/wlan/wlan.conf not found."
  82.     exit 0
  83. fi
  84.  
  85. # Source NSD specific functions
  86. # nsd_fwload
  87. # nsd_mibset
  88. for i in /etc/wlan/shared.* ; do 
  89.     . $i
  90. done
  91.  
  92. is_true ()
  93. {
  94.     # $1 == string containing a t/f indicator.
  95.  
  96.     [ "$1" = "y" -o "$1" = "Y" -o "$1" = "yes" -o "$1" = "YES" ]
  97. }
  98.  
  99. wlan_nsdname ()
  100. {
  101.     # $1 == wlandev
  102.     # Writes the given device's name to stdout
  103.     grep 'nsd name' /proc/net/p80211/$1/wlandev | sed -e 's/.*: \(.*\)_.*/\1/'
  104. }
  105.  
  106. wlan_enable ()
  107. {
  108.     # $1 == wlandev
  109.  
  110.     #=======ENABLE IFSTATE=============================
  111.     # Bring the device into its operable state
  112.  
  113.     $MODPROBE $1
  114.     
  115.     # First, make sure the driver is loaded....
  116.     if ! ifconfig $1 > /dev/null 2>&1 ; then
  117.         ${ECHO} "Error: Device $1 does not seem to be present."
  118.         ${ECHO} "Make sure you've inserted the appropriate"
  119.         ${ECHO} "modules or that your modules.conf file contains"
  120.         ${ECHO} "the appropriate aliase(s)."
  121.         return 1
  122.     fi
  123.  
  124.     # Call the nsd script's fwload function, in case the card needs
  125.     # a firmware load, or could use an optional one.
  126.  
  127.     nsdname=`wlan_nsdname $1`
  128.     if ! ${nsdname}_fwload $1 ; then
  129.         ${ECHO} "Firmware failed to load for device $1"
  130.         return 1
  131.     fi
  132.  
  133.     # Enable the interface
  134.     result=`$WLANCTL $1 lnxreq_ifstate ifstate=enable`
  135.     if [ $? = 0 ] ; then
  136.         eval $result
  137.         if [ $resultcode != "success" ]; then
  138.             ${ECHO} "Failed to enable the device, resultcode=" \
  139.                 $resultcode "."
  140.             return 1
  141.         fi
  142.     else
  143.         ${ECHO} "Failed to enable the device, exitcode=" $? "."
  144.         return 1
  145.     fi
  146.  
  147.     # Set any NSD specific MIBs
  148.     ${nsdname}_mibset $1
  149. }
  150.  
  151. wlan_user_mibs ()
  152. {
  153.     # $1 == wlandev
  154.  
  155.     #=======USER MIB SETTINGS=============================
  156.     # Set the user specified MIB items.
  157.     for i in $USER_MIBS ; do
  158.         result=`$WLANCTL $1 dot11req_mibset "mibattribute=$i"`
  159.         if [ $? = 0 ] ; then
  160.             eval $result
  161.             if [ $resultcode != "success" ] ; then 
  162.                 ${ECHO} "Failed to set user MIB $i."
  163.                 return 1
  164.             fi
  165.         else
  166.             ${ECHO} "Failed to set user MIB $i."
  167.             return 1
  168.         fi
  169.     done
  170. }
  171.  
  172. wlan_source_config ()
  173. {
  174.     # $1 == wlandev
  175.  
  176.     # XXX what about stray singlequotes.
  177.     eval 'GOSSID="$SSID_'$1'"'
  178.     wlan_source_config_for_ssid "$GOSSID"
  179. }
  180.  
  181. wlan_source_config_for_ssid ()
  182. {
  183.     # $1 == ssid[:bssid]
  184.         # $2 == bssid (optional)
  185.  
  186.         DesiredSSID="$1"
  187.         DesiredBSSID="$2"
  188.  
  189.         if [ -n "$2" ] ; then
  190.                token_ssid=`echo $1 | sed -ne 's/\(.*\)\(:..:..:..:..:..:..\).*/\1/p'`
  191.                token_bssid=`echo $1 | sed -ne 's/\(.*\):\(..:..:..:..:..:..\).*/\2/p'`
  192.            if [ -n "$token_ssid" ] ; then
  193.            DesiredSSID="$token_ssid"
  194.            DesiredBSSID="$token_bssid"
  195.            fi
  196.  
  197.     fi
  198.  
  199.     if [ -f "/etc/wlan/wlancfg-$DesiredSSID:$DesiredBSSID" ] ; then
  200.         . "/etc/wlan/wlancfg-$DesiredSSID:$DesiredBSSID"
  201.     elif [ -f "/etc/wlan/wlancfg-$DesiredSSID" ] ; then
  202.         . "/etc/wlan/wlancfg-$DesiredSSID"
  203.     else 
  204.  
  205.         if [ -n "$1" ] ; then
  206.             ${ECHO} "Failed to open network config file /etc/wlan/wlancfg-$1, using default."
  207.         fi
  208.  
  209.         . "/etc/wlan/wlancfg-DEFAULT"
  210.     fi
  211. }
  212.  
  213. wlan_disable ()
  214. {
  215.     # $1 == wlandev
  216.  
  217.     $WLANCTL $1 lnxreq_ifstate ifstate=disable
  218. }    
  219.  
  220. wlan_ssid_in_list ()
  221. {
  222.     # $1 == wlandev, $2 == ssid,  $3 == bssid
  223.  
  224.       eval 'GOSSID="$SSID_'$1'"'
  225.       
  226.     # This "eval" hackery is to allow escapes in GOSSID...
  227.     cmd="for token in $GOSSID ; do
  228.         ssid_token=\`echo \"\$token\" | sed -ne 's/\(.*\)\(:..:..:..:..:..:..\).*/\1/p'\`
  229.         bssid_token=\`echo \"\$token\" | sed -ne 's/\(.*\):\(..:..:..:..:..:..\).*/\2/p'\`
  230.   
  231.         if [ -z \"\$ssid_token\" ] ; then
  232.             ssid_token="\$token"
  233.           fi
  234.   
  235.         if [ -n \"\$bssid_token\" ] ; then
  236.             if [ \"\$bssid_token\" = \"\$3\" ] ; then
  237.                   return 0
  238.               fi
  239.         elif [ \"\$2\" = \"\$ssid_token\" ] ; then
  240.               return 0    
  241.           fi
  242.     done"
  243.     eval "$cmd"
  244.  
  245.     return 1
  246. }
  247.  
  248. wlan_supports_scan ()
  249. {
  250.     # $1 == wlandev
  251.  
  252.     if is_true "$WLAN_SCAN" ; then
  253.         cat /proc/net/p80211/$1/wlandev | grep 'scan' > /dev/null
  254.         if [ $? = 0 ] ; then
  255.             return 0
  256.         fi
  257.     fi
  258.     return 1
  259. }
  260.  
  261. wlan_scan ()
  262. {
  263.     # $1 == wlandev
  264.  
  265.     # find our allowed SSID list.
  266.     
  267.     # XXX what about stray singlequotes.
  268.     eval 'GOSSID="$SSID_'$1'"'
  269.  
  270.     # kick off a quick scan with the broadcast SSID.
  271.     wlan_scan_one $1 '' '' n
  272.     if [ $? = 0  -a \
  273.         "$GOSSID" = "" ] ; then
  274.         # if successful and our ssid list is null, return.
  275.         sleep 1
  276.         return 0
  277.     fi    
  278.  
  279.     # otherwise we walk through the list, and scan for eacn in turn.
  280.     # this "eval" hackery is to allow escapes in GOSSID
  281.     cmd="for token in $GOSSID ; do
  282.         ssid_token=\`echo \"\$token\" | sed -ne 's/\(.*\)\(:..:..:..:..:..:..\).*/\1/p'\`
  283.         bssid_token=\`echo \"\$token\" | sed -ne 's/\(.*\):\(..:..:..:..:..:..\).*/\2/p'\`
  284.  
  285.         if [ -z \"\$ssid_token\" ] ; then
  286.             ssid_token=\"\$token\"
  287.         fi
  288.  
  289.         wlan_scan_one \$1 \"\$ssid_token\" \"\$bssid_token\"
  290.         if [ \$? = 0 ] ; then
  291.             sleep 1
  292.             return 0
  293.         fi
  294.     done"
  295.     eval "$cmd"
  296.  
  297.     # We got to the end of the list.  Maybe try "any"
  298.     if is_true "$WLAN_ANY" ; then
  299.         wlan_scan_one $1
  300.         sleep 1
  301.         return $?
  302.     fi
  303.  
  304.     sleep 1
  305.     return 1
  306. }
  307.  
  308.  
  309. wlan_scan_one ()
  310. {
  311.     # $1 == wlandev, [ $2 == ssid, $3 == bssid, $4 == append ]
  312.  
  313.     if [ -z "$4" ] ; then
  314.     append=true
  315.     else
  316.     append=false
  317.     fi
  318.  
  319.     numbss=0
  320.  
  321.     result=`$WLANCTL $1 dot11req_scan bsstype=any bssid=ff:ff:ff:ff:ff:ff \
  322.         scantype=active probedelay=0 channellist=$ChannelList ssid="$2" \
  323.         minchanneltime=$ChannelMinTime maxchanneltime=$ChannelMaxTime append=$append`
  324.     eval $result
  325.     if [ $resultcode != 'success' ] ; then
  326.         ${ECHO} "Scan failed ($resultcode) "
  327.         return 1
  328.     fi
  329.  
  330.     ## XXX if numbss == 0, repeat with $2 $3 $4?
  331.  
  332.     i=0
  333.     bssfound=""
  334.  
  335.     # walk through the results and do first-cut matching.
  336.     while [ $i -lt $numbss ] ; do
  337.         result=`$WLANCTL $1 dot11req_scan_results bssindex=$i`
  338.         eval $result
  339.  
  340.         if [ -n "$3" ] ; then
  341.                         if [ "$3" = "$bssid" ] ; then
  342.                                bssfound="$bssfound $i"
  343.             fi
  344.         elif [ -z "$2" ] ; then
  345.             # if our ssid is "", then we pick the first entry.
  346.             bssfound="$bssfound $i"
  347.         elif [ "$2" = "$ssid" ] ; then
  348.             bssfound="$bssfound $i"
  349.         fi
  350.         i=`expr $i + 1`
  351.     done
  352.  
  353.     if [ -z "$bssfound" ]; then    # No BSSs found, bail.
  354.         return 1
  355.     else
  356.         # Now find the closest
  357.         bigsignal=0
  358.         for i in $bssfound ; do
  359.             result=`$WLANCTL $1 dot11req_scan_results bssindex=$i`
  360.             eval $result
  361.             if [ $bigsignal -lt $signal ]; then
  362.                 bigsignal=$signal
  363.                 bigbssindex=$i
  364.             fi
  365.         done
  366.         result=`$WLANCTL $1 dot11req_scan_results bssindex=$bigbssindex`
  367.         eval $result
  368.         return 0
  369.     fi
  370. }
  371.  
  372. wlan_wep ()
  373. {
  374.     # $1 == wlandev
  375.  
  376.     #=======WEP===========================================
  377.     # Setup privacy
  378.     if [ ${dot11PrivacyInvoked:-"false"} = "false" ] ; then
  379.         return 0;
  380.     fi
  381.  
  382.     result=`$WLANCTL $1 dot11req_mibget mibattribute=dot11PrivacyOptionImplemented`
  383.     if [ $? = 0 ] ; then
  384.         eval $result
  385.         eval $mibattribute
  386.     else
  387.         ${ECHO} "dot11PrivacyOptionImplemented mibget failed."
  388.         return 1
  389.     fi
  390.  
  391.     if [ $dot11PrivacyOptionImplemented = "false" ] ; then
  392.         ${ECHO} "Cannot enable privacy, dot11PrivacyOptionImplemented=false."
  393.         return 1
  394.     fi
  395.  
  396.     # Do we want host-based WEP?
  397.     result=`$WLANCTL $1 lnxreq_hostwep \
  398.         decrypt="${lnxreq_hostWEPDecrypt:-false}"    \
  399.         encrypt="${lnxreq_hostWEPEncrypt:-false}"`
  400.  
  401.     # set up the rest of the parametsrs.
  402.     if [ $dot11PrivacyOptionImplemented = "true" -a \
  403.          $dot11PrivacyInvoked = "true" ] ; then
  404.         result=`$WLANCTL $1 dot11req_mibset \
  405.               mibattribute=dot11WEPDefaultKeyID=$dot11WEPDefaultKeyID `
  406.         result=`$WLANCTL $1 dot11req_mibset \
  407.             mibattribute=dot11ExcludeUnencrypted=$dot11ExcludeUnencrypted `
  408.         result=`$WLANCTL $1 dot11req_mibset \
  409.             mibattribute=dot11PrivacyInvoked=$dot11PrivacyInvoked`
  410.         if [ "${PRIV_GENSTR:-empty}" != "empty" ] ; then
  411.             if [ ${PRIV_KEY128:-"false"} = "false" ]; then
  412.                 keys=`$PRIV_GENERATOR "$PRIV_GENSTR" 5`
  413.             else
  414.                 keys=`$PRIV_GENERATOR "$PRIV_GENSTR" 13`
  415.             fi
  416.                 knum=0
  417.             for i in $keys ; do
  418.                 result=`$WLANCTL $1 dot11req_mibset \
  419.                 mibattribute=dot11WEPDefaultKey$knum=$i`
  420.                 knum=$[$knum + 1]
  421.             done
  422.         else 
  423.             result=`$WLANCTL $1 dot11req_mibset \
  424.             mibattribute=dot11WEPDefaultKey0=$dot11WEPDefaultKey0 `
  425.             result=`$WLANCTL $1 dot11req_mibset \
  426.             mibattribute=dot11WEPDefaultKey1=$dot11WEPDefaultKey1 `
  427.             result=`$WLANCTL $1 dot11req_mibset \
  428.             mibattribute=dot11WEPDefaultKey2=$dot11WEPDefaultKey2 `
  429.             result=`$WLANCTL $1 dot11req_mibset \
  430.             mibattribute=dot11WEPDefaultKey3=$dot11WEPDefaultKey3 `
  431.         fi
  432.     else
  433.         # disable wep explicitly.
  434.         result=`$WLANCTL $1 dot11req_mibset \
  435.             mibattribute=dot11PrivacyInvoked=$dot11PrivacyInvoked `
  436.         result=`$WLANCTL $1 dot11req_mibset \
  437.             mibattribute=dot11ExcludeUnencrypted=false `
  438.     fi
  439. }
  440.  
  441. wlan_adhoc ()
  442. {
  443.     # $1 == wlandev
  444.  
  445.     #=======IBSS STARTUP==================================
  446.     startcmd="$WLANCTL $1 dot11req_start "
  447.     startcmd="$startcmd ssid=$DesiredSSID"
  448.     startcmd="$startcmd bsstype=independent"
  449.     startcmd="$startcmd beaconperiod=$BCNINT" 
  450.     startcmd="$startcmd dtimperiod=3"
  451.     startcmd="$startcmd cfpollable=false"
  452.     startcmd="$startcmd cfpollreq=false"
  453.     startcmd="$startcmd cfpperiod=3"
  454.     startcmd="$startcmd cfpmaxduration=100"
  455.     startcmd="$startcmd probedelay=100"
  456.     startcmd="$startcmd dschannel=$CHANNEL"
  457.     j=1
  458.     for i in $BASICRATES ; do
  459.         startcmd="$startcmd basicrate$j=$i"
  460.         j=$[j + 1]
  461.         done
  462.  
  463.     j=1
  464.     for i in $OPRATES ; do
  465.         startcmd="$startcmd operationalrate$j=$i"
  466.         j=$[j + 1]
  467.     done
  468.  
  469.     results=`$startcmd`    # Here's where it runs
  470.     if [ $? = 0 ]; then 
  471.         eval $results
  472.         if [ $resultcode != "success" ] ; then 
  473.             ${ECHO} "IBSS not started, resultcode=$resultcode"
  474.             exit 1
  475.         else
  476.             ${ECHO} "IBSS mode started."
  477.         fi
  478.     else
  479.         ${ECHO} FAILED: $startcmd
  480.         return 1
  481.     fi
  482.     WLAN_SCHEMESSID="$DesiredSSID"
  483. }
  484.  
  485. wlan_infra ()
  486. {
  487.     # $1 == wlandev
  488.  
  489.     #==== INFRASTRUCURE STARTUP===========================
  490.     # XXX TODO:  Grok DesiredBSSID
  491.  
  492.     sleep 5
  493.     results=`$WLANCTL $1 lnxreq_autojoin \
  494.         "ssid=$DesiredSSID" \
  495.         authtype=${AuthType:="opensystem"} | sed 's/\([^=]*\)=\(.*\)/\1="\2"/'`
  496.     eval $results
  497.     if [ ${resultcode:-"failure"} != "success" ] ; then
  498.         ${ECHO} 'error: Autojoin indicated failure!'
  499.         return 1;
  500.     fi
  501.  
  502.     WLAN_SCHEMESSID="$DesiredSSID"
  503. }
  504.  
  505. wlan_dot11_join ()
  506. {
  507.     # $1 == wlandev
  508.  
  509.     joincmd="$WLANCTL $1 dot11req_join bssid=$DesiredBSSID"
  510.     joincmd="$joincmd joinfailuretimeout=1"
  511.     
  512.     j=1
  513.     for i in $OPRATES ; do
  514.         joincmd="$joincmd operationalrate$j=$i"
  515.         j=$[j + 1]
  516.     done
  517.  
  518.     results=`$joincmd`
  519.  
  520.     eval $results
  521.     if [ ${resultcode:-"failure"} != "success" ] ; then
  522.         ${ECHO} "$1: JOIN Failure"
  523.         ${ECHO} "joincmd=$joincmd"
  524.         ${ECHO} "results=$results"
  525.         return 1;
  526.     fi
  527. }
  528.  
  529. wlan_dot11_auth_assoc ()
  530. {
  531.     # $1 == wlandev
  532.     if [ $bsstype = "infrastructure" ] ; then 
  533.         results=`$WLANCTL $1 dot11req_authenticate \
  534.                 peerstaaddress=$DesiredBSSID \
  535.                 authenticationtype=$AuthType \
  536.                 authenticationfailuretimeout=2000`
  537.         eval $results
  538.         if [ ${resultcode:-"failure"} != "success" ] ; then
  539.             ${ECHO} "error:  dot11req_authenticate failed, "\
  540.                 "resultcode=$resultcode"
  541.             return 1;
  542.         fi
  543.         results=`$WLANCTL $1 dot11req_associate \
  544.                 listeninterval=1000 \
  545.                 associatefailuretimeout=2000 `
  546.         if [ ${resultcode:-"failure"} != "success" ] ; then
  547.             ${ECHO} 'error:  dot11req_associate failed!'
  548.             return 1;
  549.         fi
  550.     fi
  551. }
  552.  
  553. wlan_set_ssid_schemefile ()
  554. {
  555.     # $1 == SSID
  556.  
  557.     # Find the scheme file 
  558.     if [ -r /var/lib/misc/pcmcia-scheme ] ; then
  559.         # Debian
  560.         WLAN_SCHEMEFILE="/var/lib/misc/pcmcia-scheme"
  561.     elif [ -d /var/state/pcmcia ] ; then
  562.         WLAN_SCHEMEFILE="/var/state/pcmcia/scheme"
  563.     elif [ -d /var/lib/pcmcia ] ; then
  564.             WLAN_SCHEMEFILE="/var/lib/pcmcia/scheme"
  565.     else
  566.         WLAN_SCHEMEFILE="/var/run/pcmcia-scheme"
  567.     fi
  568.  
  569.     # Collect the current scheme name and save the file
  570.     if [ -r $WLAN_SCHEMEFILE ] ; then
  571.         WLAN_SCHEME=`cat $WLAN_SCHEMEFILE`
  572.         cp $WLAN_SCHEMEFILE /tmp/wlan_scheme_`date +"%T"`.tmp
  573.     else
  574.         touch /tmp/wlan_scheme_`date +"%T"`.tmp
  575.         
  576.     fi
  577.  
  578.     # Set up the <scheme:SSID> string
  579.     if [ ! "$WLAN_SCHEME" ] ; then 
  580.         WLAN_SCHEME="default"
  581.     fi
  582.     WLAN_SCHEME="$WLAN_SCHEME:$1"
  583.  
  584.     # Write to schemefile
  585.     echo $WLAN_SCHEME > $WLAN_SCHEMEFILE
  586. }
  587.  
  588. wlan_restore_schemefile ()
  589. {
  590.     # Find the scheme file 
  591.     if [ -r /var/lib/misc/pcmcia-scheme ] ; then
  592.         # Debian
  593.         WLAN_SCHEMEFILE="/var/lib/misc/pcmcia-scheme"
  594.     elif [ -d /var/state/pcmcia ] ; then
  595.         WLAN_SCHEMEFILE="/var/state/pcmcia/scheme"
  596.     elif [ -d /var/lib/pcmcia ] ; then
  597.             WLAN_SCHEMEFILE="/var/lib/pcmcia/scheme"
  598.     else
  599.         WLAN_SCHEMEFILE="/var/run/pcmcia-scheme"
  600.     fi
  601.  
  602.     TMPFILE=`ls /tmp/wlan_scheme*.tmp | tail -n 1`
  603.  
  604.     if [ -r $TMPFILE ] ; then
  605.         cat $TMPFILE > $WLAN_SCHEMEFILE
  606.         rm -f $TMPFILE
  607.     else
  608.         ${ECHO} "wlan_restore_schemefile: No wlan_scheme\*.tmp file found."
  609.     fi
  610. }
  611.  
  612. wlan_bring_it_up ()
  613. {
  614.     # $1 == wlandev
  615.  
  616.     #=======ENABLE========================================
  617.     # Do we want to init the card at all?
  618.     eval 'WLAN_ENABLE=$ENABLE_'$1
  619.  
  620.     if ! is_true $WLAN_ENABLE ; then
  621.     return 1
  622.     fi
  623.     
  624.     wlan_enable $1
  625.  
  626.     if [ ! $? = 0 ] ; then
  627.     return $?
  628.     fi
  629.  
  630.     wlan_scan_and_join $1
  631.  
  632.     return $?
  633. }
  634.  
  635. wlan_scan_and_join ()
  636. {
  637.     #=======MAC STARTUP=========================================
  638.     wlan_supports_scan $1
  639.     if [ $? = 0 ] ; then
  640.     wlan_scan $1 
  641.     if [ $? = 0 ] ; then
  642.         wlan_source_config_for_ssid "$ssid" "$bssid"
  643.         
  644.         wlan_user_mibs $1
  645.         wlan_wep $1
  646.         
  647.         wlan_join $1
  648.     else
  649.         if is_true $IS_ADHOC ; then     
  650.         # start an IBSS; we didn't find one.
  651.         wlan_adhoc $1
  652.         else
  653.         return 1
  654.         fi
  655.     fi
  656.     else
  657.     wlan_source_config $1
  658.     
  659.     wlan_user_mibs $1
  660.     wlan_wep $1
  661.     
  662.     if is_true $IS_ADHOC ; then     
  663.         wlan_adhoc $1
  664.     else
  665.         wlan_infra $1
  666.     fi
  667.     fi
  668.     
  669.     return $?
  670. }
  671.  
  672. wlan_join ()
  673. {
  674.     # $1 == wlandev
  675.     grep 'autojoin' /proc/net/p80211/$1/wlandev > /dev/null
  676.     if [ $? = 0 ]; then
  677.     wlan_infra $1
  678.     else
  679.     wlan_dot11_join $1
  680.     wlan_dot11_auth_assoc $1
  681.     fi
  682. }
  683.  
  684. start_wland ()
  685. {
  686.     $WLAND
  687. }
  688.  
  689. stop_wland ()
  690. {
  691.     killall wland
  692. }
  693.  
  694. # This is set by the Configure script as part of 'make install'
  695. #FIRMWARE_DIR="/usr/share/linux-wlan"
  696. FIRMWARE_DIR=/etc/wlan/
  697.