# Copyright 2016 Tim Niemeyer # License GPLv3 wifiDelAll() { if [ $# -ne "0" ] then echo "Usage: wifiDelAll" return 1 fi > /etc/config/wireless return 0 } wifiDelIface() { if [ $# -ne "0" ] then echo "Usage: wifiDelIface" return 1 fi grep 'config wifi-iface' /etc/config/wireless | sed -n -e "s/.*'\([^']*\)'.*/\1/p" | while read -r line ; do uci -q delete "wireless.$line" done uci -q commit wireless return 0 } wifiAddPhy() { if [ $# -ne "2" ] then echo "Usage: wifiAddPhy " return 1 fi local phy=$1 local channel=$2 local radio="radio$(echo "$phy" | tr -d -C "0-9")" local hwmode="11g" if [ "$channel" = "auto5" ] ; then hwmode="11a" channel="auto" elif ( ! [ "$channel" = "auto" ] ) && [ "$channel" -gt "14" ]; then hwmode="11a" fi uci batch <<-__EOF__ set wireless.${radio}='wifi-device' set wireless.${radio}.type='mac80211' set wireless.${radio}.channel='${channel}' set wireless.${radio}.phy='${phy}' set wireless.${radio}.hwmode='${hwmode}' set wireless.${radio}.htmode='HT20' set wireless.${radio}.country='DE' __EOF__ if [ "$hwmode" = "11g" ]; then uci batch <<-__EOF__ set wireless.${radio}.supported_rates='6000 9000 12000 18000 24000 36000 48000 54000' set wireless.${radio}.basic_rate='6000 9000 18000 36000 54000' __EOF__ fi uci commit wireless echo "${radio}" return 0 } wifiAddPhyCond() { if [ $# -ne "3" ] then return 1 fi local phy=$1 local freq=$2 local channel=$3 local radio="" if iw phy "$phy" info | grep -q -m1 "${freq}... MHz"; then radio="$(wifiAddPhy "$phy" "$channel")" if [ -z "$radio" ]; then return 1 fi fi echo "$radio" return 0 # also returns success if outermost if is false } wifiAddAdHocMesh() { if [ $# -ne "3" ] then echo "Usage: wifiAddAdHocMesh " return 1 fi local radio=$1 local essid=$2 local bssid=$3 local channel=$(uci get "wireless.${radio}.channel") local iface="w2ibss" if [ "$channel" -gt "14" ]; then iface="w5ibss" fi uci batch <<-__EOF__ set wireless.${iface}='wifi-iface' set wireless.${iface}.device='${radio}' set wireless.${iface}.network='${iface}' set wireless.${iface}.ifname='${iface}' set wireless.${iface}.mode='adhoc' set wireless.${iface}.bssid='${bssid}' set wireless.${iface}.ssid='${essid}' set wireless.${iface}.mcast_rate='6000' set wireless.${iface}.encryption='none' commit wireless set network.${iface}='interface' set network.${iface}.mtu='1528' set network.${iface}.proto='batadv' set network.${iface}.mesh='bat0' commit network __EOF__ echo "${iface}" return 0 } wifiAddAP() { if [ $# -ne "5" ] then echo "Usage: wifiAddAP " return 1 fi local radio=$1 local essid=$2 local network=$3 local inface=$4 local hidden=$5 local channel=$(uci get "wireless.${radio}.channel") local iface="w2${inface}" if [ "$channel" -gt "14" ]; then iface="w5${inface}" fi uci batch <<-__EOF__ set wireless.${iface}='wifi-iface' set wireless.${iface}.device='${radio}' set wireless.${iface}.network='${network}' set wireless.${iface}.ifname='${iface}' set wireless.${iface}.mode='ap' set wireless.${iface}.ssid='${essid}' set wireless.${iface}.encryption='none' set wireless.${iface}.hidden='${hidden}' commit wireless __EOF__ echo "${iface}" return 0 } wifiAddSta() { if [ $# -ne "4" ] then echo "Usage: wifiAddSta " return 1 fi local radio=$1 local essid=$2 local network=$3 local iface=$4 uci batch <<-__EOF__ set wireless.${iface}='wifi-iface' set wireless.${iface}.device='${radio}' set wireless.${iface}.network='${network}' set wireless.${iface}.ifname='${iface}' set wireless.${iface}.mode='sta' set wireless.${iface}.ssid='${essid}' commit wireless __EOF__ echo "${iface}" return 0 } wifiAddMesh() { if [ $# -ne "2" ] then echo "Usage: wifiAddMesh " return 1 fi local radio=$1 local mesh_id=$2 local channel=$(uci get "wireless.${radio}.channel") local iface="w2mesh" if [ "$channel" -gt "14" ]; then iface="w5mesh" fi uci batch <<-__EOF__ set wireless.${iface}='wifi-iface' set wireless.${iface}.device='${radio}' set wireless.${iface}.network='${iface}' set wireless.${iface}.ifname='${iface}' set wireless.${iface}.mode='mesh' set wireless.${iface}.mesh_id='${mesh_id}' set wireless.${iface}.encryption='none' set wireless.${iface}.mesh_fwding=0 commit wireless set network.${iface}='interface' set network.${iface}.mtu='1528' set network.${iface}.proto='batadv' set network.${iface}.mesh='bat0' commit network __EOF__ echo "${iface}" return 0 } # vim: set noexpandtab:tabstop=4