#!/bin/sh # # by lintel@gmail.com, hoowa.sun@gmail.com # # by memccpy@gmail.com 2014.8 append DRIVERS "rt2860v2" prepare_config() { #获取参数 存储配置的变量 目标配置关键字 local num=0 mode disabled #准备产生RaX的无线配置 local device=$1 #获取当前用户配置的无线Mac config_get macaddr $device macaddr #获取当前的无线频道 config_get channel $device channel #获取当前的802.11无线模式 config_get hwmode $device mode #获取WMM支持 config_get wmm $device wmm #获取设备的传输功率 config_get txpower $device txpower #获取设备的HT(频宽) config_get ht $device ht #获取国家代码 config_get country $device country #是否有MAC过滤 config_get macpolicy $device macpolicy #MAC地址过滤列表 config_get maclist $device maclist #字符格式转义 ra_maclist="${maclist// /;};" #是否支持GREEN AP功能 config_get_bool greenap $device greenap 0 config_get_bool antdiv "$device" diversity config_get frag "$device" frag 2346 config_get rts "$device" rts 2347 config_get distance "$device" distance config_get hidessid "$device" hidden 0 #获取该Radio下面的虚拟接口 config_get vifs "$device" vifs #获取虚拟接口的数量,并提前配置SSID for vif in $vifs; do let num+=1 config_get_bool disabled "$vif" disabled 0 config_get mode "$vif" mode 0 #如果某个SSID接口需要隐藏,则所有的接口都隐藏 [ "$hidessid" == "0" ] && { config_get hidessid $vif hidden 0 } #已经关闭的接口以及sta模式的排除在外。 [ "$mode" = "sta" ]&& { let num-=1 continue } [ "$disabled" == "1" ]&& { let num-=1 continue } case $num in 1) config_get ssid1 "$vif" ssid ;; 2) config_get ssid2 "$vif" ssid ;; 3) config_get ssid3 "$vif" ssid ;; 4) config_get ssid4 "$vif" ssid ;; *) ;; esac done #开始准备HT模式配置,注意HT模式仅在11N下有效。 HT=1 HT_CE=1 if [ "$ht" = "20" ]; then HT=0 elif [ "$ht" = "20+40" ]; then HT=1 HT_CE=1 elif [ "$ht" = "40" ] ; then HT=1 HT_CE=0 else echo "ht config has some problem!use default!!!" HT=0 HT_CE=1 fi # 在HT40模式下,需要另外的一个频道,如果EXTCHA=0,则当前第二频道为$channel + 4. # 如果EXTCHA=1,则当前的第二频道为$channel - 4. # 如果当前频道被限制在1-4,则是当前频道+ 4,若否,则为当前频道-4 EXTCHA=1 [ "$channel" != auto ] && [ "$channel" -lt "5" ] && EXTCHA=1 #配置自动选择无线频道 [ "$channel" == "auto" ] && { channel=11 AutoChannelSelect=2 } #开始判断WiFi的MAC过滤方式. case "$macpolicy" in allow|2) ra_macfilter=1; ;; deny|1) ra_macfilter=2; ;; *|disable|none|0) ra_macfilter=0; ;; esac cat > /tmp/RT2860.dat<