forked from freifunk-franken/firmware
Adrian Schmutzler
8a1eb6d4c8
The two different names "wXmesh" and "wXibss" have no functional purpose and are just for indication. Remove this distinction, so mesh is just mesh. This will make further adjustment easier and clearer. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Reviewed-by: Fabian Bläse <fabian@blaese.de>
230 lines
4.6 KiB
Plaintext
230 lines
4.6 KiB
Plaintext
# 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 <phy> <channel>"
|
|
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}.legacy_rates='0'
|
|
__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 <radio> <essid> <bssid>"
|
|
return 1
|
|
fi
|
|
|
|
local radio=$1
|
|
local essid=$2
|
|
local bssid=$3
|
|
|
|
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='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 <radio> <essid> <network> <iface> <hidden>"
|
|
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 <radio> <essid> <network> <iface>"
|
|
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 <radio> <mesh-id>"
|
|
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='1560'
|
|
set network.${iface}.proto='batadv'
|
|
set network.${iface}.mesh='bat0'
|
|
commit network
|
|
__EOF__
|
|
|
|
echo "${iface}"
|
|
return 0
|
|
}
|
|
# vim: set noexpandtab:tabstop=4
|