forked from freifunk-franken/firmware
Add wifi support for multiple client interfaces
This commit is contained in:
parent
68f90abe3e
commit
5107859331
|
@ -1,51 +1,81 @@
|
||||||
|
. /lib/functions.sh
|
||||||
|
|
||||||
. /lib/functions/fff/wireless
|
. /lib/functions/fff/wireless
|
||||||
|
|
||||||
configure() {
|
configure() {
|
||||||
# get parameters
|
add_wifi() {
|
||||||
essid=$(uci -q get gateway.@client[0].essid)
|
local name="$1"
|
||||||
chan2ghz=$(uci -q get gateway.@client[0].chan2ghz)
|
|
||||||
chan5ghz=$(uci -q get gateway.@client[0].chan5ghz)
|
|
||||||
|
|
||||||
if [ -z "$essid" ]; then
|
# get parameters
|
||||||
echo "WARNING: No ESSID set! WiFi AP is disabled"
|
chan2ghz=$(uci -q get gateway.@client[0].chan2ghz)
|
||||||
fi
|
chan5ghz=$(uci -q get gateway.@client[0].chan5ghz)
|
||||||
|
|
||||||
for radio in $(wifiListRadio); do
|
if [ -z "$essid" ]; then
|
||||||
freq="$(wifiGetFreq $radio)"
|
echo "WARNING: No ESSID set! WiFi AP is disabled"
|
||||||
disabled=1
|
|
||||||
|
|
||||||
# Delete wXmesh, wXconfigap
|
|
||||||
uci -q del wireless.w${freq}mesh
|
|
||||||
uci -q del wireless.w${freq}configap
|
|
||||||
|
|
||||||
if [ -n "$essid" ]; then
|
|
||||||
# set channel for 5ghz
|
|
||||||
if [ "$freq" = "5" ]; then
|
|
||||||
if [ -z "$chan5ghz" ]; then
|
|
||||||
echo "WARNING: No 5 GHz channel set! Disabling AP on $radio"
|
|
||||||
else
|
|
||||||
uci set wireless.${radio}.channel="$chan5ghz"
|
|
||||||
disabled=0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# set channel for 2.4ghz
|
|
||||||
if [ "$freq" = "2" ]; then
|
|
||||||
if [ -z "$chan2ghz" ]; then
|
|
||||||
echo "WARNING: No 2.4 GHz channel set! Disabling AP on $radio"
|
|
||||||
else
|
|
||||||
uci set wireless.${radio}.channel="$chan2ghz"
|
|
||||||
disabled=0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# set essid
|
|
||||||
uci set wireless.w${freq}ap.ssid="$essid"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# enable or disable ap interface appropriately. The radios 'disabled'-option is not touched
|
for radio in $(wifiListRadio); do
|
||||||
uci set wireless.w${freq}ap.disabled="$disabled"
|
freq="$(wifiGetFreq $radio)"
|
||||||
done
|
disabled=1
|
||||||
|
|
||||||
|
# Delete wXmesh, wXconfigap
|
||||||
|
uci -q del wireless.w${freq}mesh
|
||||||
|
uci -q del wireless.w${freq}configap
|
||||||
|
|
||||||
|
essid=$(uci -q get gateway.$name.essid)
|
||||||
|
|
||||||
|
if [ -n "$essid" ]; then
|
||||||
|
# set channel for 5ghz
|
||||||
|
if [ "$freq" = "5" ]; then
|
||||||
|
if [ -z "$chan5ghz" ]; then
|
||||||
|
echo "WARNING: No 5 GHz channel set! Disabling AP for interface \"$name\" on $radio"
|
||||||
|
else
|
||||||
|
uci set wireless.${radio}.channel="$chan5ghz"
|
||||||
|
disabled=0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set channel for 2.4ghz
|
||||||
|
if [ "$freq" = "2" ]; then
|
||||||
|
if [ -z "$chan2ghz" ]; then
|
||||||
|
echo "WARNING: No 2.4 GHz channel set! Disabling AP for interface \"$name\" on $radio"
|
||||||
|
else
|
||||||
|
uci set wireless.${radio}.channel="$chan2ghz"
|
||||||
|
disabled=0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
uci set wireless.w${freq}${name}=wifi-iface
|
||||||
|
uci set wireless.w${freq}${name}.device=$radio
|
||||||
|
uci set wireless.w${freq}${name}.network=$name
|
||||||
|
uci set wireless.w${freq}${name}.ifname=w${freq}${name}
|
||||||
|
uci set wireless.w${freq}${name}.mode=ap
|
||||||
|
uci set wireless.w${freq}${name}.encryption=none
|
||||||
|
uci set wireless.w${freq}${name}.hidden=0
|
||||||
|
|
||||||
|
# set essid
|
||||||
|
uci set wireless.w${freq}${name}.ssid="$essid"
|
||||||
|
uci set wireless.w${freq}${name}.disabled="$disabled"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
remove_wifi() {
|
||||||
|
local name="$1"
|
||||||
|
local netname=$(uci -q get wireless.$name.network)
|
||||||
|
|
||||||
|
# only remove interfaces that disappeared from gwconfig
|
||||||
|
[ "$(uci -q get gateway.$netname)" == "client" ] && return 0
|
||||||
|
|
||||||
|
uci -q del wireless.$name
|
||||||
|
}
|
||||||
|
|
||||||
|
config_load wireless
|
||||||
|
config_foreach remove_wifi wifi-iface
|
||||||
|
|
||||||
|
config_load gateway
|
||||||
|
config_foreach add_wifi client
|
||||||
}
|
}
|
||||||
|
|
||||||
apply() {
|
apply() {
|
||||||
|
|
Loading…
Reference in New Issue