Ignore:
Timestamp:
2011-03-30T14:37:36+02:00 (5 years ago)
Author:
nbd
Message:

backport mac80211, hostapd, iw, crda from trunk as of r26369

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/package/mac80211/files/lib/wifi/mac80211.sh

    r24820 r26370  
    77 
    88        cfgfile="/var/run/hostapd-$phy.conf" 
     9        macfile="/var/run/hostapd-$phy.maclist" 
     10        [ -e "$macfile" ] && rm -f "$macfile" 
     11 
    912        config_get device "$vif" device 
    1013        config_get country "$device" country 
    1114        config_get hwmode "$device" hwmode 
    1215        config_get channel "$device" channel 
     16        config_get beacon_int "$device" beacon_int 
     17        config_get basic_rate_list "$device" basic_rate 
    1318        config_get_bool noscan "$device" noscan 
    1419        [ -n "$channel" -a -z "$hwmode" ] && wifi_fixup_hwmode "$device" 
     
    3136                } 
    3237        } 
    33         cat > "$cfgfile" <<EOF 
     38 
     39        config_get macfilter "$vif" macfilter 
     40        case "$macfilter" in 
     41                allow) 
     42                        append base_cfg "macaddr_acl=1" "$N" 
     43                        append base_cfg "accept_mac_file=$macfile" "$N" 
     44                        ;; 
     45                deny) 
     46                        append base_cfg "macaddr_acl=0" "$N" 
     47                        append base_cfg "deny_mac_file=$macfile" "$N" 
     48                        ;; 
     49        esac 
     50        config_get maclist "$vif" maclist 
     51        [ -n "$maclist" ] && { 
     52                for mac in $maclist; do 
     53                        echo "$mac" >> $macfile 
     54                done 
     55        } 
     56 
     57        local br brval brstr 
     58        [ -n "$basic_rate_list" ] && { 
     59                for br in $basic_rate_list; do 
     60                        brval="$(($br / 100))" 
     61                        [ -n "$brstr" ] && brstr="$brstr " 
     62                        brstr="$brstr$brval" 
     63                done 
     64        } 
     65         
     66        cat >> "$cfgfile" <<EOF 
    3467ctrl_interface=/var/run/hostapd-$phy 
    3568driver=nl80211 
     
    72105${hwmode:+hw_mode=$hwmode} 
    73106${channel:+channel=$channel} 
     107${beacon_int:+beacon_int=$beacon_int} 
    74108${country:+country_code=$country} 
    75109${noscan:+noscan=$noscan} 
     110${brstr:+basic_rates=$brstr} 
    76111$base_cfg 
    77112 
     
    104139        [ "$wds" -gt 0 ] && append hostapd_cfg "wds_sta=1" "$N" 
    105140 
     141        local macaddr hidden maxassoc wmm 
    106142        config_get macaddr "$vif" macaddr 
     143        config_get maxassoc "$vif" maxassoc 
     144        config_get dtim_period "$vif" dtim_period 
     145        config_get max_listen_int "$vif" max_listen_int 
    107146        config_get_bool hidden "$vif" hidden 0 
    108         config_get maxassoc "$vif" maxassoc 
     147        config_get_bool wmm "$vif" wmm 1 
    109148        cat >> /var/run/hostapd-$phy.conf <<EOF 
    110149$hostapd_cfg 
    111 wmm_enabled=1 
     150wmm_enabled=$wmm 
    112151bssid=$macaddr 
    113152ignore_broadcast_ssid=$hidden 
     153${dtim_period:+dtim_period=$dtim_period} 
     154${max_listen_int:+max_listen_interval=$max_listen_int} 
    114155${maxassoc:+max_num_sta=$maxassoc} 
    115156EOF 
     
    217258        config_get country "$device" country 
    218259        config_get distance "$device" distance 
     260        config_get txantenna "$device" txantenna all 
     261        config_get rxantenna "$device" rxantenna all 
    219262        config_get frag "$device" frag 
    220263        config_get rts "$device" rts 
     
    231274                fixed=1 
    232275        } 
     276 
     277        iw phy "$phy" set antenna $txantenna $rxantenna >/dev/null 2>&1 
    233278 
    234279        [ -n "$distance" ] && iw phy "$phy" set distance "$distance" 
     
    364409                                        config_get bssid "$vif" bssid 
    365410                                        config_get ssid "$vif" ssid 
     411                                        config_get beacon_int "$device" beacon_int 
     412                                        config_get basic_rate_list "$device" basic_rate 
     413                                        config_get encryption "$vif" encryption 
     414                                        config_get key "$vif" key 1 
    366415                                        config_get mcast_rate "$vif" mcast_rate 
     416 
     417                                        local keyspec="" 
     418                                        [ "$encryption" == "wep" ] && { 
     419                                                case "$key" in 
     420                                                        [1234]) 
     421                                                                local idx 
     422                                                                for idx in 1 2 3 4; do 
     423                                                                        local ikey 
     424                                                                        config_get ikey "$vif" "key$idx" 
     425 
     426                                                                        [ -n "$ikey" ] && { 
     427                                                                                ikey="$(($idx - 1)):$(prepare_key_wep "$ikey")" 
     428                                                                                [ $idx -eq $key ] && ikey="d:$ikey" 
     429                                                                                append keyspec "$ikey" 
     430                                                                        } 
     431                                                                done 
     432                                                        ;; 
     433                                                        *) append keyspec "d:0:$(prepare_key_wep "$key")" ;; 
     434                                                esac 
     435                                        } 
     436 
     437                                        local br brval brsub brstr 
     438                                        [ -n "$basic_rate_list" ] && { 
     439                                                for br in $basic_rate_list; do 
     440                                                        brval="$(($br / 1000))" 
     441                                                        brsub="$((($br / 100) % 10))" 
     442                                                        [ "$brsub" -gt 0 ] && brval="$brval.$brsub" 
     443                                                        [ -n "$brstr" ] && brstr="$brstr," 
     444                                                        brstr="$brstr$brval" 
     445                                                done 
     446                                        } 
     447 
    367448                                        local mcval="" 
    368449                                        [ -n "$mcast_rate" ] && { 
     
    371452                                                [ "$mcsub" -gt 0 ] && mcval="$mcval.$mcsub" 
    372453                                        } 
    373                                         iw dev "$ifname" ibss join "$ssid" $freq ${fixed:+fixed-freq} $bssid ${mcval:+mcast-rate $mcval} 
     454 
     455                                        iw dev "$ifname" ibss join "$ssid" $freq \ 
     456                                                ${fixed:+fixed-freq} $bssid \ 
     457                                                ${beacon_int:+beacon-interval $beacon_int} \ 
     458                                                ${brstr:+basic-rates $brstr} \ 
     459                                                ${mcval:+mcast-rate $mcval} \ 
     460                                                ${keyspec:+keys $keyspec} 
    374461                                ;; 
    375462                                sta) 
     
    391478 
    392479 
    393 check_device() { 
     480check_mac80211_device() { 
    394481        config_get phy "$1" phy 
    395482        [ -z "$phy" ] && { 
     
    410497        for dev in $(ls /sys/class/ieee80211); do 
    411498                found=0 
    412                 config_foreach check_device wifi-device 
     499                config_foreach check_mac80211_device wifi-device 
    413500                [ "$found" -gt 0 ] && continue 
    414501 
Note: See TracChangeset for help on using the changeset viewer.