add md5sums for binutils & gcc and use the GNU mirror facility
[openwrt.git] / package / mac80211 / files / lib / wifi / mac80211.sh
index 39a7034..74105c6 100644 (file)
@@ -13,14 +13,14 @@ scan_mac80211() {
                
                config_get mode "$vif" mode
                case "$mode" in
-                       adhoc|sta|ap)
+                       adhoc|sta|ap|monitor)
                                append $mode "$vif"
                        ;;
                        *) echo "$device($vif): Invalid mode, ignored."; continue;;
                esac
        done
 
-       config_set "$device" vifs "${ap:+$ap }${adhoc:+$adhoc }${ahdemo:+$ahdemo }${sta:+$sta }${wds:+$wds }"
+       config_set "$device" vifs "${ap:+$ap }${adhoc:+$adhoc }${ahdemo:+$ahdemo }${sta:+$sta }${wds:+$wds }${monitor:+$monitor}"
 }
 
 
@@ -29,7 +29,7 @@ disable_mac80211() (
 
        set_wifi_down "$device"
        # kill all running hostapd and wpa_supplicant processes that
-       # are running on atheros vifs 
+       # are running on atheros/mac80211 vifs 
        for pid in `pidof hostapd wpa_supplicant`; do
                grep wlan /proc/$pid/cmdline >/dev/null && \
                        kill $pid
@@ -53,8 +53,10 @@ enable_mac80211() {
        
        local first=1
        for vif in $vifs; do
+               ifconfig "$ifname" down 2>/dev/null
                config_get ifname "$vif" ifname
                config_get enc "$vif" encryption
+               config_get eap_type "$vif" eap_type
                config_get mode "$vif" mode
                
                config_get ifname "$vif" ifname
@@ -66,11 +68,20 @@ enable_mac80211() {
 
                [ "$first" = 1 ] && {
                        # only need to change freq band and channel on the first vif
-                       iwconfig "$ifname" channel "$channel" >/dev/null 2>/dev/null 
-                       ifconfig "$ifname" up
+                       iwconfig "$ifname" channel "$channel" >/dev/null 2>/dev/null
+                       if [ "$mode" = adhoc ]; then
+                               iwlist "$ifname" scan >/dev/null 2>/dev/null
+                               sleep 1
+                               iwconfig "$ifname" mode ad-hoc >/dev/null 2>/dev/null
+                       fi
                        sleep 1
-                       iwconfig "$ifname" channel "$channel" >/dev/null 2>/dev/null 
+                       iwconfig "$ifname" channel "$channel" >/dev/null 2>/dev/null
                }
+               if [ "$mode" = sta ]; then
+                       iwconfig "$ifname" mode managed >/dev/null 2>/dev/null
+               else
+                       iwconfig "$ifname" mode $mode >/dev/null 2>/dev/null
+               fi
        
                wpa=
                case "$enc" in
@@ -131,8 +142,8 @@ enable_mac80211() {
                case "$mode" in
                        ap)
                                if eval "type hostapd_setup_vif" 2>/dev/null >/dev/null; then
-                                       hostapd_setup_vif "$vif" devicescape || {
-                                               echo "enable_atheros($device): Failed to set up wpa for interface $ifname" >&2
+                                       hostapd_setup_vif "$vif" nl80211 || {
+                                               echo "enable_mac80211($device): Failed to set up wpa for interface $ifname" >&2
                                                # make sure this wifi interface won't accidentally stay open without encryption
                                                ifconfig "$ifname" down
                                                continue
@@ -140,30 +151,14 @@ enable_mac80211() {
                                fi
                        ;;
                        sta)
-                               case "$enc" in 
-                                       PSK|psk|PSK2|psk2)
-                                               case "$enc" in
-                                                       PSK|psk)
-                                                               proto='proto=WPA';;
-                                                       PSK2|psk2)
-                                                               proto='proto=RSN';;
-                                               esac
-                                               cat > /var/run/wpa_supplicant-$ifname.conf <<EOF
-ctrl_interface=/var/run/wpa_supplicant
-network={
-       scan_ssid=1
-       ssid="$ssid"
-       key_mgmt=WPA-PSK
-       $proto
-       psk="$key"
-}
-EOF
-                                       ;;
-                                       WPA|wpa|WPA2|wpa2)
-                                               #add wpa_supplicant calls here
-                                       ;;
-                               esac
-                               [ -z "$proto" ] || wpa_supplicant ${bridge:+ -b $bridge} -B -D wext -i "$ifname" -c /var/run/wpa_supplicant-$ifname.conf
+                               if eval "type wpa_supplicant_setup_vif" 2>/dev/null >/dev/null; then
+                                       wpa_supplicant_setup_vif "$vif" wext || {
+                                               echo "enable_mac80211($device): Failed to set up wpa_supplicant for interface $ifname" >&2
+                                               # make sure this wifi interface won't accidentally stay open without encryption
+                                               ifconfig "$ifname" down
+                                               continue
+                                       }
+                               fi
                        ;;
                esac
                first=0
This page took 0.035229 seconds and 4 git commands to generate.