Changeset 38988


Ignore:
Timestamp:
2013-12-02T17:41:03+01:00 (4 years ago)
Author:
nbd
Message:

netifd: add wireless configuration support and port mac80211 to the new framework

Signed-off-by: Felix Fietkau <nbd@…>

Location:
trunk/package
Files:
4 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/base-files/files/sbin/wifi

    r32503 r38988  
    33 
    44. /lib/functions.sh 
     5. /usr/share/libubox/jshn.sh 
    56 
    67usage() { 
    78        cat <<EOF 
    8 Usage: $0 [down|detect] 
     9Usage: $0 [down|detect|reload|status] 
    910enables (default), disables or detects a wifi configuration. 
    1011EOF 
    1112        exit 1 
     13} 
     14 
     15ubus_wifi_cmd() { 
     16        local cmd="$1" 
     17        local dev="$2" 
     18 
     19        json_init 
     20        [ -n "$2" ] && json_add_string device "$2" 
     21        ubus call network.wireless "$1" "$(json_dump)" 
    1222} 
    1323 
     
    96106} 
    97107 
    98 wifi_updown() { 
    99         [ enable = "$1" ] && { 
    100                 wifi_updown disable "$2" 
    101                 scan_wifi 
    102         } 
     108_wifi_updown() { 
    103109        for device in ${2:-$DEVICES}; do ( 
    104110                config_get disabled "$device" disabled 
     
    111117                        eval "scan_$iftype '$device'" 
    112118                        eval "${1}_$iftype '$device'" || echo "$device($iftype): ${1} failed" 
    113                 else 
     119                elif [ ! -f /lib/netifd/wireless/$iftype.sh ]; then 
    114120                        echo "$device($iftype): Interface type not supported" 
    115121                fi 
    116122        ); done 
     123} 
     124 
     125wifi_updown() { 
     126        cmd=down 
     127        [ enable = "$1" ] && { 
     128                _wifi_updown disable "$2" 
     129                scan_wifi 
     130                cmd=up 
     131        } 
     132        ubus_wifi_cmd "$cmd" "$2" 
     133        _wifi_updown "$@" 
     134} 
     135 
     136wifi_reload() { 
     137        _wifi_updown "disable" "$1" 
     138        scan_wifi 
     139        _wifi_updown "enable" "$1" 
    117140} 
    118141 
     
    200223        down) wifi_updown "disable" "$2";; 
    201224        detect) wifi_detect "$2";; 
     225        status) ubus_wifi_cmd "status" "$2";; 
     226        reload) wifi_reload "$2";; 
    202227        --help|help) usage;; 
    203228        *) wifi_updown "enable" "$2";; 
  • trunk/package/kernel/mac80211/Makefile

    r38933 r38988  
    7373  $(call KernelPackage/mac80211/Default) 
    7474  TITLE:=Linux 802.11 Wireless Networking Stack 
    75   DEPENDS+= +kmod-crypto-core +kmod-crypto-arc4 +kmod-crypto-aes +kmod-cfg80211 
     75  DEPENDS+= +kmod-crypto-core +kmod-crypto-arc4 +kmod-crypto-aes +kmod-cfg80211 +hostapd-common 
    7676  KCONFIG:=\ 
    7777        CONFIG_AVERAGE=y 
     
    15381538 
    15391539define KernelPackage/cfg80211/install 
    1540         $(INSTALL_DIR) $(1)/lib/wifi 
     1540        $(INSTALL_DIR) $(1)/lib/wifi $(1)/lib/netifd/wireless 
    15411541        $(INSTALL_DATA) ./files/lib/wifi/mac80211.sh $(1)/lib/wifi 
     1542        $(INSTALL_BIN) ./files/lib/netifd/wireless/mac80211.sh $(1)/lib/netifd/wireless 
    15421543endef 
    15431544 
  • trunk/package/kernel/mac80211/files/lib/wifi/mac80211.sh

    r38915 r38988  
    11#!/bin/sh 
    22append DRIVERS "mac80211" 
    3  
    4 mac80211_hostapd_setup_base() { 
    5         local phy="$1" 
    6         local ifname="$2" 
    7  
    8         cfgfile="/var/run/hostapd-$phy.conf" 
    9  
    10         config_get device "$vif" device 
    11         config_get country "$device" country 
    12         config_get hwmode "$device" hwmode 
    13         config_get channel "$device" channel 
    14         config_get beacon_int "$device" beacon_int 
    15         config_get basic_rate_list "$device" basic_rate 
    16         config_get_bool noscan "$device" noscan 
    17  
    18         hostapd_set_log_options base_cfg "$device" 
    19  
    20         [ -n "$channel" -a -z "$hwmode" ] && wifi_fixup_hwmode "$device" 
    21  
    22         hostapd_channel=$channel 
    23         [ "$channel" = auto -o "$channel" = 0 ] && hostapd_channel=acs_survey 
    24  
    25         [ -n "$hwmode" ] && { 
    26                 config_get hwmode_11n "$device" hwmode_11n 
    27                 [ -n "$hwmode_11n" ] && { 
    28                         hwmode="$hwmode_11n" 
    29                         append base_cfg "ieee80211n=1" "$N" 
    30                         config_get htmode "$device" htmode 
    31                         config_get ht_capab_list "$device" ht_capab 
    32                         case "$htmode" in 
    33                                 HT20|HT40+|HT40-) ht_capab="[$htmode]";; 
    34                                 *)ht_capab=;; 
    35                         esac 
    36                         for cap in $ht_capab_list; do 
    37                                 ht_capab="$ht_capab[$cap]" 
    38                         done 
    39                         [ -n "$ht_capab" ] && append base_cfg "ht_capab=$ht_capab" "$N" 
    40                 } 
    41         } 
    42  
    43         local country_ie=0 
    44         [ -n "$country" ] && country_ie=1 
    45         config_get_bool country_ie "$device" country_ie "$country_ie" 
    46         [ "$country_ie" -gt 0 ] && append base_cfg "ieee80211d=1" "$N" 
    47  
    48         local br brval brstr 
    49         [ -n "$basic_rate_list" ] && { 
    50                 for br in $basic_rate_list; do 
    51                         brval="$(($br / 100))" 
    52                         [ -n "$brstr" ] && brstr="$brstr " 
    53                         brstr="$brstr$brval" 
    54                 done 
    55         } 
    56  
    57         cat >> "$cfgfile" <<EOF 
    58 ctrl_interface=/var/run/hostapd-$phy 
    59 driver=nl80211 
    60 wmm_ac_bk_cwmin=4 
    61 wmm_ac_bk_cwmax=10 
    62 wmm_ac_bk_aifs=7 
    63 wmm_ac_bk_txop_limit=0 
    64 wmm_ac_bk_acm=0 
    65 wmm_ac_be_aifs=3 
    66 wmm_ac_be_cwmin=4 
    67 wmm_ac_be_cwmax=10 
    68 wmm_ac_be_txop_limit=0 
    69 wmm_ac_be_acm=0 
    70 wmm_ac_vi_aifs=2 
    71 wmm_ac_vi_cwmin=3 
    72 wmm_ac_vi_cwmax=4 
    73 wmm_ac_vi_txop_limit=94 
    74 wmm_ac_vi_acm=0 
    75 wmm_ac_vo_aifs=2 
    76 wmm_ac_vo_cwmin=2 
    77 wmm_ac_vo_cwmax=3 
    78 wmm_ac_vo_txop_limit=47 
    79 wmm_ac_vo_acm=0 
    80 tx_queue_data3_aifs=7 
    81 tx_queue_data3_cwmin=15 
    82 tx_queue_data3_cwmax=1023 
    83 tx_queue_data3_burst=0 
    84 tx_queue_data2_aifs=3 
    85 tx_queue_data2_cwmin=15 
    86 tx_queue_data2_cwmax=63 
    87 tx_queue_data2_burst=0 
    88 tx_queue_data1_aifs=1 
    89 tx_queue_data1_cwmin=7 
    90 tx_queue_data1_cwmax=15 
    91 tx_queue_data1_burst=3.0 
    92 tx_queue_data0_aifs=1 
    93 tx_queue_data0_cwmin=3 
    94 tx_queue_data0_cwmax=7 
    95 tx_queue_data0_burst=1.5 
    96 ${hwmode:+hw_mode=$hwmode} 
    97 ${hostapd_channel:+channel=$hostapd_channel} 
    98 ${beacon_int:+beacon_int=$beacon_int} 
    99 ${country:+country_code=$country} 
    100 ${noscan:+noscan=$noscan} 
    101 ${brstr:+basic_rates=$brstr} 
    102 $base_cfg 
    103  
    104 EOF 
    105 } 
    106  
    107 mac80211_hostapd_setup_bss() { 
    108         local phy="$1" 
    109         local vif="$2" 
    110         local staidx="$3" 
    111  
    112         hostapd_cfg= 
    113         cfgfile="/var/run/hostapd-$phy.conf" 
    114         config_get ifname "$vif" ifname 
    115  
    116         if [ -f "$cfgfile" ]; then 
    117                 append hostapd_cfg "bss=$ifname" "$N" 
    118         else 
    119                 mac80211_hostapd_setup_base "$phy" "$ifname" 
    120                 append hostapd_cfg "interface=$ifname" "$N" 
    121         fi 
    122  
    123         local net_cfg bridge 
    124         net_cfg="$(find_net_config "$vif")" 
    125         [ -z "$net_cfg" ] || bridge="$(bridge_interface "$net_cfg")" 
    126         config_set "$vif" bridge "$bridge" 
    127  
    128         hostapd_set_bss_options hostapd_cfg "$vif" 
    129  
    130         config_get_bool wds "$vif" wds 0 
    131         [ "$wds" -gt 0 ] && append hostapd_cfg "wds_sta=1" "$N" 
    132  
    133         [ "$staidx" -gt 0 ] && append hostapd_cfg "start_disabled=1" "$N" 
    134  
    135         local macaddr hidden maxassoc wmm 
    136         config_get macaddr "$vif" macaddr 
    137         config_get maxassoc "$vif" maxassoc 
    138         config_get dtim_period "$vif" dtim_period 
    139         config_get max_listen_int "$vif" max_listen_int 
    140         config_get_bool hidden "$vif" hidden 0 
    141         config_get_bool wmm "$vif" wmm 1 
    142         cat >> /var/run/hostapd-$phy.conf <<EOF 
    143 $hostapd_cfg 
    144 wmm_enabled=$wmm 
    145 bssid=$macaddr 
    146 ignore_broadcast_ssid=$hidden 
    147 ${dtim_period:+dtim_period=$dtim_period} 
    148 ${max_listen_int:+max_listen_interval=$max_listen_int} 
    149 ${maxassoc:+max_num_sta=$maxassoc} 
    150 EOF 
    151 } 
    152  
    153 mac80211_start_vif() { 
    154         local vif="$1" 
    155         local ifname="$2" 
    156  
    157         local net_cfg 
    158         net_cfg="$(find_net_config "$vif")" 
    159         [ -z "$net_cfg" ] || start_net "$ifname" "$net_cfg" 
    160  
    161         set_wifi_up "$vif" "$ifname" 
    162 } 
    1633 
    1644lookup_phy() { 
     
    20444        return 0 
    20545} 
    206  
    207 scan_mac80211() { 
    208         local device="$1" 
    209         local adhoc sta ap monitor mesh disabled 
    210  
    211         config_get vifs "$device" vifs 
    212         for vif in $vifs; do 
    213                 config_get_bool disabled "$vif" disabled 0 
    214                 [ $disabled = 0 ] || continue 
    215  
    216                 config_get mode "$vif" mode 
    217                 case "$mode" in 
    218                         adhoc|sta|ap|monitor|mesh) 
    219                                 append $mode "$vif" 
    220                         ;; 
    221                         *) echo "$device($vif): Invalid mode, ignored."; continue;; 
    222                 esac 
    223         done 
    224  
    225         config_set "$device" vifs "${ap:+$ap }${adhoc:+$adhoc }${sta:+$sta }${monitor:+$monitor }${mesh:+$mesh}" 
    226 } 
    227  
    228 list_phy_interfaces() { 
    229         local phy="$1" 
    230         if [ -d "/sys/class/ieee80211/${phy}/device/net" ]; then 
    231                 ls "/sys/class/ieee80211/${phy}/device/net" 2>/dev/null; 
    232         else 
    233                 ls "/sys/class/ieee80211/${phy}/device" 2>/dev/null | grep net: | sed -e 's,net:,,g' 
    234         fi 
    235 } 
    236  
    237 disable_mac80211() ( 
    238         local device="$1" 
    239  
    240         find_mac80211_phy "$device" || return 0 
    241         config_get phy "$device" phy 
    242  
    243         set_wifi_down "$device" 
    244         # kill all running hostapd and wpa_supplicant processes that 
    245         # are running on atheros/mac80211 vifs 
    246         for pid in `pidof hostapd`; do 
    247                 grep -E "$phy" /proc/$pid/cmdline >/dev/null && \ 
    248                         kill $pid 
    249         done 
    250  
    251         include /lib/network 
    252         for wdev in $(list_phy_interfaces "$phy"); do 
    253                 [ -f "/var/run/$wdev.pid" ] && kill $(cat /var/run/$wdev.pid) >&/dev/null 2>&1 
    254                 for pid in `pidof wpa_supplicant meshd-nl80211`; do 
    255                         grep "$wdev" /proc/$pid/cmdline >/dev/null && \ 
    256                                 kill $pid 
    257                 done 
    258                 ifconfig "$wdev" down 2>/dev/null 
    259                 unbridge "$dev" 
    260                 iw dev "$wdev" del 
    261         done 
    262  
    263         return 0 
    264 ) 
    265  
    266 get_freq() { 
    267         local phy="$1" 
    268         local chan="$2" 
    269         iw "$phy" info | grep -E -m1 "(\* ${chan:-....} MHz${chan:+|\\[$chan\\]})" | grep MHz | awk '{print $2}' 
    270 } 
    271  
    272 mac80211_generate_mac() { 
    273         local id="$1" 
    274         local ref="$2" 
    275         local mask="$3" 
    276  
    277         [ "$mask" = "00:00:00:00:00:00" ] && mask="ff:ff:ff:ff:ff:ff"; 
    278         local oIFS="$IFS"; IFS=":"; set -- $mask; IFS="$oIFS" 
    279  
    280         local mask1=$1 
    281         local mask6=$6 
    282  
    283         local oIFS="$IFS"; IFS=":"; set -- $ref; IFS="$oIFS" 
    284         [ "$((0x$mask1))" -gt 0 ] && { 
    285                 b1="0x$1" 
    286                 [ "$id" -gt 0 ] && \ 
    287                         b1=$(($b1 ^ ((($id - 1) << 2) | 0x2))) 
    288                 printf "%02x:%s:%s:%s:%s:%s" $b1 $2 $3 $4 $5 $6 
    289                 return 
    290         } 
    291  
    292         [ "$((0x$mask6))" -lt 255 ] && { 
    293                 printf "%s:%s:%s:%s:%s:%02x" $1 $2 $3 $4 $5 $(( 0x$6 ^ $id )) 
    294                 return 
    295         } 
    296  
    297         off2=$(( (0x$6 + $id) / 0x100 )) 
    298         printf "%s:%s:%s:%s:%02x:%02x" \ 
    299                 $1 $2 $3 $4 \ 
    300                 $(( (0x$5 + $off2) % 0x100 )) \ 
    301                 $(( (0x$6 + $id) % 0x100 )) 
    302 } 
    303  
    304 enable_mac80211() { 
    305         local device="$1" 
    306         config_get channel "$device" channel 
    307         config_get vifs "$device" vifs 
    308         config_get txpower "$device" txpower 
    309         config_get country "$device" country 
    310         config_get distance "$device" distance 
    311         config_get txantenna "$device" txantenna all 
    312         config_get rxantenna "$device" rxantenna all 
    313         config_get antenna_gain "$device" antenna_gain 0 
    314         config_get frag "$device" frag 
    315         config_get rts "$device" rts 
    316         find_mac80211_phy "$device" || return 0 
    317         config_get phy "$device" phy 
    318         local i=0 
    319         local macidx=0 
    320         local apidx=0 
    321         local staidx=0 
    322         fixed="" 
    323         local hostapd_ctrl="" 
    324  
    325         [ -n "$country" ] && { 
    326                 iw reg get | grep -q "^country $country:" || { 
    327                         iw reg set "$country" 
    328                         sleep 1 
    329                 } 
    330         } 
    331  
    332         config_get chanbw "$device" chanbw 
    333         [ -n "$chanbw" -a -d /sys/kernel/debug/ieee80211/$phy/ath9k ] && echo "$chanbw" > /sys/kernel/debug/ieee80211/$phy/ath9k/chanbw 
    334         [ -n "$chanbw" -a -d /sys/kernel/debug/ieee80211/$phy/ath5k ] && echo "$chanbw" > /sys/kernel/debug/ieee80211/$phy/ath5k/bwmode 
    335  
    336         [ "$channel" = "auto" -o "$channel" = "0" ] || { 
    337                 fixed=1 
    338         } 
    339  
    340         iw phy "$phy" set antenna $txantenna $rxantenna >/dev/null 2>&1 
    341         iw phy "$phy" set antenna_gain $antenna_gain 
    342  
    343         [ -n "$distance" ] && iw phy "$phy" set distance "$distance" 
    344         [ -n "$frag" ] && iw phy "$phy" set frag "${frag%%.*}" 
    345         [ -n "$rts" ] && iw phy "$phy" set rts "${rts%%.*}" 
    346  
    347         export channel fixed 
    348         # convert channel to frequency 
    349         local freq="$(get_freq "$phy" "${fixed:+$channel}")" 
    350  
    351         wifi_fixup_hwmode "$device" "g" 
    352         for vif in $vifs; do 
    353                 config_get ifname "$vif" ifname 
    354                 [ -n "$ifname" ] || { 
    355                         [ $i -gt 0 ] && ifname="wlan${phy#phy}-$i" || ifname="wlan${phy#phy}" 
    356                 } 
    357                 config_set "$vif" ifname "$ifname" 
    358  
    359                 config_get mode "$vif" mode 
    360                 config_get ssid "$vif" ssid 
    361  
    362                 # It is far easier to delete and create the desired interface 
    363                 case "$mode" in 
    364                         adhoc) 
    365                                 iw phy "$phy" interface add "$ifname" type adhoc 
    366                         ;; 
    367                         ap) 
    368                                 # Hostapd will handle recreating the interface and 
    369                                 # it's accompanying monitor 
    370                                 apidx="$(($apidx + 1))" 
    371                                 [ "$apidx" -gt 1 ] || iw phy "$phy" interface add "$ifname" type managed 
    372                         ;; 
    373                         mesh) 
    374                                 config_get key "$vif" key "" 
    375                                 if [ -n "$key" ]; then 
    376                                         iw phy "$phy" interface add "$ifname" type mp 
    377                                 else 
    378                                         config_get mesh_id "$vif" mesh_id 
    379                                         iw phy "$phy" interface add "$ifname" type mp mesh_id "$mesh_id" 
    380                                 fi 
    381                         ;; 
    382                         monitor) 
    383                                 iw phy "$phy" interface add "$ifname" type monitor 
    384                         ;; 
    385                         sta) 
    386                                 local wdsflag 
    387                                 staidx="$(($staidx + 1))" 
    388                                 config_get_bool wds "$vif" wds 0 
    389                                 [ "$wds" -gt 0 ] && wdsflag="4addr on" 
    390                                 iw phy "$phy" interface add "$ifname" type managed $wdsflag 
    391                                 config_get_bool powersave "$vif" powersave 0 
    392                                 [ "$powersave" -gt 0 ] && powersave="on" || powersave="off" 
    393                                 iw "$ifname" set power_save "$powersave" 
    394                         ;; 
    395                 esac 
    396  
    397                 # All interfaces must have unique mac addresses 
    398                 # which can either be explicitly set in the device 
    399                 # section, or automatically generated 
    400                 config_get macaddr "$device" macaddr 
    401                 config_get vif_mac "$vif" macaddr 
    402                 [ -n "$vif_mac" ] || { 
    403                         vif_mac="$(mac80211_generate_mac $macidx $macaddr $(cat /sys/class/ieee80211/${phy}/address_mask))" 
    404                         macidx="$(($macidx + 1))" 
    405                 } 
    406                 [ "$mode" = "ap" ] || ifconfig "$ifname" hw ether "$vif_mac" 
    407                 config_set "$vif" macaddr "$vif_mac" 
    408  
    409                 # !! ap !! 
    410                 # 
    411                 # ALL ap functionality will be passed to hostapd 
    412                 # 
    413                 # !! station !! 
    414                 # 
    415                 # ALL station functionality will be passed to wpa_supplicant 
    416                 # 
    417                 if [ ! "$mode" = "ap" ]; then 
    418                         # We attempt to set the channel for all interfaces, although 
    419                         # mac80211 may not support it or the driver might not yet 
    420                         # for ap mode this is handled by hostapd 
    421                         config_get htmode "$device" htmode 
    422                         case "$htmode" in 
    423                                 HT20|HT40+|HT40-) ;; 
    424                                 *) htmode= ;; 
    425                         esac 
    426                         [ -n "$fixed" -a -n "$channel" ] && iw dev "$ifname" set channel "$channel" $htmode 
    427                 fi 
    428  
    429                 i=$(($i + 1)) 
    430         done 
    431  
    432         local start_hostapd= 
    433         rm -f /var/run/hostapd-$phy.conf 
    434         for vif in $vifs; do 
    435                 config_get mode "$vif" mode 
    436                 case "$mode" in 
    437                         ap) 
    438                                 mac80211_hostapd_setup_bss "$phy" "$vif" "$staidx" 
    439                                 start_hostapd=1 
    440                         ;; 
    441                         mesh) 
    442                                 config_get key "$vif" key "" 
    443                                 [ -n "$key" ] && authsae_start_interface "$device" "$vif" 
    444                         ;; 
    445                 esac 
    446         done 
    447  
    448         [ -n "$start_hostapd" ] && { 
    449                 hostapd -P /var/run/wifi-$phy.pid -B /var/run/hostapd-$phy.conf || { 
    450                         echo "Failed to start hostapd for $phy" 
    451                         return 
    452                 } 
    453                 sleep 2 
    454  
    455                 for vif in $vifs; do 
    456                         config_get mode "$vif" mode 
    457                         config_get ifname "$vif" ifname 
    458                         [ "$mode" = "ap" ] || continue 
    459                         hostapd_ctrl="${hostapd_ctrl:-/var/run/hostapd-$phy/$ifname}" 
    460                         mac80211_start_vif "$vif" "$ifname" 
    461                 done 
    462         } 
    463  
    464         for vif in $vifs; do 
    465                 config_get mode "$vif" mode 
    466                 config_get ifname "$vif" ifname 
    467                 [ "$mode" = "ap" ] || ifconfig "$ifname" up 
    468  
    469                 config_get vif_txpower "$vif" txpower 
    470                 # use vif_txpower (from wifi-iface) to override txpower (from 
    471                 # wifi-device) if the latter doesn't exist 
    472                 txpower="${txpower:-$vif_txpower}" 
    473                 [ -z "$txpower" ] || iw dev "$ifname" set txpower fixed "${txpower%%.*}00" 
    474  
    475                 case "$mode" in 
    476                         adhoc) 
    477                                 config_get bssid "$vif" bssid 
    478                                 config_get ssid "$vif" ssid 
    479                                 config_get beacon_int "$device" beacon_int 
    480                                 config_get basic_rate_list "$device" basic_rate 
    481                                 config_get encryption "$vif" encryption 
    482                                 config_get key "$vif" key 1 
    483                                 config_get mcast_rate "$vif" mcast_rate 
    484                                 config_get htmode "$device" htmode 
    485                                 case "$htmode" in 
    486                                         HT20|HT40+|HT40-) ;; 
    487                                         *) htmode= ;; 
    488                                 esac 
    489  
    490  
    491                                 local keyspec="" 
    492                                 [ "$encryption" == "psk" -o "$encryption" == "psk2" ] && { 
    493                                         if eval "type wpa_supplicant_setup_vif" 2>/dev/null >/dev/null; then 
    494                                                 wpa_supplicant_setup_vif "$vif" nl80211 "${hostapd_ctrl:+-H $hostapd_ctrl}" $freq $htmode || { 
    495                                                         echo "enable_mac80211($device): Failed to set up wpa_supplicant for interface $ifname" >&2 
    496                                                         # make sure this wifi interface won't accidentally stay open without encryption 
    497                                                         ifconfig "$ifname" down 
    498                                                 } 
    499                                                 mac80211_start_vif "$vif" "$ifname" 
    500                                                 continue 
    501                                         fi 
    502                                 } 
    503  
    504                                 [ "$encryption" == "wep" ] && { 
    505                                         case "$key" in 
    506                                                 [1234]) 
    507                                                         local idx 
    508                                                         for idx in 1 2 3 4; do 
    509                                                                 local ikey 
    510                                                                 config_get ikey "$vif" "key$idx" 
    511  
    512                                                                 [ -n "$ikey" ] && { 
    513                                                                         ikey="$(($idx - 1)):$(prepare_key_wep "$ikey")" 
    514                                                                         [ $idx -eq $key ] && ikey="d:$ikey" 
    515                                                                         append keyspec "$ikey" 
    516                                                                 } 
    517                                                         done 
    518                                                 ;; 
    519                                                 *) append keyspec "d:0:$(prepare_key_wep "$key")" ;; 
    520                                         esac 
    521                                 } 
    522  
    523                                 local br brval brsub brstr 
    524                                 [ -n "$basic_rate_list" ] && { 
    525                                         for br in $basic_rate_list; do 
    526                                                 brval="$(($br / 1000))" 
    527                                                 brsub="$((($br / 100) % 10))" 
    528                                                 [ "$brsub" -gt 0 ] && brval="$brval.$brsub" 
    529                                                 [ -n "$brstr" ] && brstr="$brstr," 
    530                                                 brstr="$brstr$brval" 
    531                                         done 
    532                                 } 
    533  
    534                                 local mcval="" 
    535                                 [ -n "$mcast_rate" ] && { 
    536                                         mcval="$(($mcast_rate / 1000))" 
    537                                         mcsub="$(( ($mcast_rate / 100) % 10 ))" 
    538                                         [ "$mcsub" -gt 0 ] && mcval="$mcval.$mcsub" 
    539                                 } 
    540  
    541                                 iw dev "$ifname" ibss join "$ssid" $freq $htmode \ 
    542                                         ${fixed:+fixed-freq} $bssid \ 
    543                                         ${beacon_int:+beacon-interval $beacon_int} \ 
    544                                         ${brstr:+basic-rates $brstr} \ 
    545                                         ${mcval:+mcast-rate $mcval} \ 
    546                                         ${keyspec:+keys $keyspec} 
    547                         ;; 
    548                         mesh) 
    549                                 mp_list="mesh_retry_timeout mesh_confirm_timeout mesh_holding_timeout mesh_max_peer_links 
    550                                         mesh_max_retries mesh_ttl mesh_element_ttl mesh_auto_open_plinks mesh_hwmp_max_preq_retries 
    551                                         mesh_path_refresh_time mesh_min_discovery_timeout mesh_hwmp_active_path_timeout 
    552                                         mesh_hwmp_preq_min_interval mesh_hwmp_net_diameter_traversal_time mesh_hwmp_rootmode 
    553                                         mesh_hwmp_rann_interval mesh_gate_announcements mesh_fwding mesh_sync_offset_max_neighor 
    554                                         mesh_rssi_threshold mesh_hwmp_active_path_to_root_timeout mesh_hwmp_root_interval 
    555                                         mesh_hwmp_confirmation_interval mesh_power_mode mesh_awake_window" 
    556                                 for mp in $mp_list 
    557                                 do 
    558                                         config_get mp_val "$vif" "$mp" "" 
    559                                         [ -n "$mp_val" ] && iw dev "$ifname" set mesh_param "$mp" "$mp_val" 
    560                                 done 
    561                         ;; 
    562                         sta) 
    563                                 if eval "type wpa_supplicant_setup_vif" 2>/dev/null >/dev/null; then 
    564                                         wpa_supplicant_setup_vif "$vif" nl80211 "${hostapd_ctrl:+-H $hostapd_ctrl}" || { 
    565                                                 echo "enable_mac80211($device): Failed to set up wpa_supplicant for interface $ifname" >&2 
    566                                                 # make sure this wifi interface won't accidentally stay open without encryption 
    567                                                 ifconfig "$ifname" down 
    568                                                 continue 
    569                                         } 
    570                                 fi 
    571                         ;; 
    572                 esac 
    573                 [ "$mode" = "ap" ] || mac80211_start_vif "$vif" "$ifname" 
    574         done 
    575  
    576 } 
    577  
    57846 
    57947check_mac80211_device() { 
  • trunk/package/network/config/netifd/Makefile

    r38627 r38988  
    22 
    33PKG_NAME:=netifd 
    4 PKG_VERSION:=2013-10-31 
     4PKG_VERSION:=2013-12-02 
    55PKG_RELEASE=$(PKG_SOURCE_VERSION) 
    66 
     
    88PKG_SOURCE_URL:=git://nbd.name/luci2/netifd.git 
    99PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) 
    10 PKG_SOURCE_VERSION:=199723ed921160c029a0d15fa95914ddfcdc5cb9 
     10PKG_SOURCE_VERSION:=29db00ed0efb251bd88ecce298356f2702b6cee1 
    1111PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz 
    1212PKG_MAINTAINER:=Felix Fietkau <nbd@openwrt.org> 
  • trunk/package/network/config/netifd/files/etc/init.d/network

    r38982 r38988  
    1919reload_service() { 
    2020        ubus call network reload 
    21         /sbin/wifi up 
     21        /sbin/wifi reload 
    2222} 
    2323 
  • trunk/package/network/services/hostapd/Makefile

    r38914 r38988  
    209209endef 
    210210 
     211define Package/hostapd-common 
     212  TITLE:=hostapd/wpa_supplicant common support files 
     213  SECTION:=net 
     214  CATEGORY:=Network 
     215endef 
    211216 
    212217ifneq ($(wildcard $(PKG_BUILD_DIR)/.config_*),$(subst .configured_,.config_,$(STAMP_CONFIGURED))) 
     
    310315endef 
    311316 
     317define Package/hostapd-common/install 
     318        $(INSTALL_DIR) $(1)/lib/netifd 
     319        $(INSTALL_DATA) ./files/netifd.sh $(1)/lib/netifd/hostapd.sh 
     320endef 
     321 
    312322define Package/hostapd/install 
    313323        $(call Install/hostapd,$(1)) 
     
    356366$(eval $(call BuildPackage,wpa-cli)) 
    357367$(eval $(call BuildPackage,hostapd-utils)) 
     368$(eval $(call BuildPackage,hostapd-common)) 
Note: See TracChangeset for help on using the changeset viewer.