forked from freifunk-franken/firmware
Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
Fabian Bläse | 6b1089f2e9 |
|
@ -80,11 +80,9 @@ CONFIG_CLEAN_IPKG=y
|
||||||
# CONFIG_FASTD_ENABLE_METHOD_GENERIC_UMAC is not set
|
# CONFIG_FASTD_ENABLE_METHOD_GENERIC_UMAC is not set
|
||||||
CONFIG_KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE=1
|
CONFIG_KERNEL_SQUASHFS_FRAGMENT_CACHE_SIZE=1
|
||||||
# CONFIG_PACKAGE_ALFRED_VIS is not set
|
# CONFIG_PACKAGE_ALFRED_VIS is not set
|
||||||
CONFIG_PACKAGE_hostapd-mini=y
|
|
||||||
CONFIG_PACKAGE_iwinfo=m
|
CONFIG_PACKAGE_iwinfo=m
|
||||||
CONFIG_PACKAGE_libiwinfo=m
|
CONFIG_PACKAGE_libiwinfo=m
|
||||||
CONFIG_PACKAGE_opkg=m
|
CONFIG_PACKAGE_opkg=m
|
||||||
CONFIG_PACKAGE_wpad-mini=m
|
|
||||||
CONFIG_PACKAGE_ath10k-firmware-qca9887=m
|
CONFIG_PACKAGE_ath10k-firmware-qca9887=m
|
||||||
CONFIG_PACKAGE_ath10k-firmware-qca9888=m
|
CONFIG_PACKAGE_ath10k-firmware-qca9888=m
|
||||||
CONFIG_PACKAGE_ath10k-firmware-qca988x=m
|
CONFIG_PACKAGE_ath10k-firmware-qca988x=m
|
||||||
|
|
|
@ -19,6 +19,10 @@ getWirelessHoodfile() {
|
||||||
uci set wireless.w${freq}ap.disabled='1'
|
uci set wireless.w${freq}ap.disabled='1'
|
||||||
uci set wireless.w${freq}mesh.disabled='1'
|
uci set wireless.w${freq}mesh.disabled='1'
|
||||||
uci set wireless.w${freq}configap.disabled='1'
|
uci set wireless.w${freq}configap.disabled='1'
|
||||||
|
|
||||||
|
if uci -q get wireless.w${freq}owe >/dev/null; then
|
||||||
|
uci set wireless.w${freq}owe.disabled='1'
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
uci commit wireless
|
uci commit wireless
|
||||||
|
|
|
@ -134,6 +134,14 @@ if [ -s "$hoodfiletmp" ]; then
|
||||||
uci set wireless.w${freq}ap.ssid="$essid"
|
uci set wireless.w${freq}ap.ssid="$essid"
|
||||||
uci set wireless.w${freq}ap.disabled='0'
|
uci set wireless.w${freq}ap.disabled='0'
|
||||||
|
|
||||||
|
# Configure wXowe
|
||||||
|
if uci -q get wireless.w${freq}owe >/dev/null; then
|
||||||
|
uci set wireless.w${freq}owe.ssid="${essid}_OWE"
|
||||||
|
uci set wireless.w${freq}owe.owe_transition_ssid="$essid"
|
||||||
|
uci set wireless.w${freq}ap.owe_transition_ssid="${essid}_OWE"
|
||||||
|
uci set wireless.w${freq}owe.disabled='0'
|
||||||
|
fi
|
||||||
|
|
||||||
# Configure 802.11s mesh if type = "802.11s"
|
# Configure 802.11s mesh if type = "802.11s"
|
||||||
if [ "$mesh_type" = "802.11s" ]; then
|
if [ "$mesh_type" = "802.11s" ]; then
|
||||||
uci set wireless.w${freq}mesh.mode='mesh'
|
uci set wireless.w${freq}mesh.mode='mesh'
|
||||||
|
|
|
@ -41,10 +41,18 @@ configure() {
|
||||||
|
|
||||||
# set essid
|
# set essid
|
||||||
uci set wireless.w${freq}ap.ssid="$essid"
|
uci set wireless.w${freq}ap.ssid="$essid"
|
||||||
|
|
||||||
|
# owe stuff (TODO: check if ssid is too long, add owe variable)
|
||||||
|
if uci -q get wireless.w${freq}owe >/dev/null; then
|
||||||
|
uci set wireless.w${freq}owe.ssid="${essid}_OWE"
|
||||||
|
uci set wireless.w${freq}owe.owe_transition_ssid="$essid"
|
||||||
|
uci set wireless.w${freq}ap.owe_transition_ssid="${essid}_OWE"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# enable or disable ap interface appropriately. The radios 'disabled'-option is not touched
|
# enable or disable ap interface appropriately. The radios 'disabled'-option is not touched
|
||||||
uci set wireless.w${freq}ap.disabled="$disabled"
|
uci set wireless.w${freq}ap.disabled="$disabled"
|
||||||
|
uci set wireless.w${freq}owe.disabled="$disabled"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ removeWifiIface() {
|
||||||
configWifiDevice() {
|
configWifiDevice() {
|
||||||
local radio="$1"
|
local radio="$1"
|
||||||
local freq="$(wifiGetFreq $radio)"
|
local freq="$(wifiGetFreq $radio)"
|
||||||
|
local path=$(uci get wireless.${radio}.path)
|
||||||
|
|
||||||
[ "$freq" = "2" ] && uci set "wireless.${radio}.legacy_rates=0"
|
[ "$freq" = "2" ] && uci set "wireless.${radio}.legacy_rates=0"
|
||||||
|
|
||||||
|
@ -38,6 +39,7 @@ configWifiDevice() {
|
||||||
set wireless.w${freq}ap.encryption='none'
|
set wireless.w${freq}ap.encryption='none'
|
||||||
set wireless.w${freq}ap.hidden='0'
|
set wireless.w${freq}ap.hidden='0'
|
||||||
set wireless.w${freq}ap.disabled='0'
|
set wireless.w${freq}ap.disabled='0'
|
||||||
|
set wireless.w${freq}ap.macaddr='$(wifiGetMacIndex "$path" 1)'
|
||||||
|
|
||||||
set network.w${freq}mesh='interface'
|
set network.w${freq}mesh='interface'
|
||||||
set network.w${freq}mesh.mtu='1560'
|
set network.w${freq}mesh.mtu='1560'
|
||||||
|
@ -53,6 +55,7 @@ configWifiDevice() {
|
||||||
set wireless.w${freq}mesh.encryption='none'
|
set wireless.w${freq}mesh.encryption='none'
|
||||||
set wireless.w${freq}mesh.mesh_fwding=0
|
set wireless.w${freq}mesh.mesh_fwding=0
|
||||||
set wireless.w${freq}mesh.disabled='0'
|
set wireless.w${freq}mesh.disabled='0'
|
||||||
|
set wireless.w${freq}mesh.macaddr='$(wifiGetMacIndex "$path" 0)'
|
||||||
|
|
||||||
set network.configap${freq}=interface
|
set network.configap${freq}=interface
|
||||||
set network.configap${freq}.proto='static'
|
set network.configap${freq}.proto='static'
|
||||||
|
@ -67,7 +70,27 @@ configWifiDevice() {
|
||||||
set wireless.w${freq}configap.encryption='none'
|
set wireless.w${freq}configap.encryption='none'
|
||||||
set wireless.w${freq}configap.hidden='1'
|
set wireless.w${freq}configap.hidden='1'
|
||||||
set wireless.w${freq}configap.disabled='1'
|
set wireless.w${freq}configap.disabled='1'
|
||||||
|
set wireless.w${freq}configap.macaddr='$(wifiGetMacIndex "$path" 2)'
|
||||||
__EOF__
|
__EOF__
|
||||||
|
|
||||||
|
if wifiRadioSupportsOWE "$path"; then
|
||||||
|
uci batch <<-__EOF__
|
||||||
|
set wireless.w${freq}owe='wifi-iface'
|
||||||
|
set wireless.w${freq}owe.device='${radio}'
|
||||||
|
set wireless.w${freq}owe.network='client'
|
||||||
|
set wireless.w${freq}owe.ifname='w${freq}owe'
|
||||||
|
set wireless.w${freq}owe.mode='ap'
|
||||||
|
set wireless.w${freq}owe.ssid='noservice.freifunk_OWE'
|
||||||
|
set wireless.w${freq}owe.encryption='owe'
|
||||||
|
set wireless.w${freq}owe.hidden='1'
|
||||||
|
set wireless.w${freq}owe.disabled='1'
|
||||||
|
set wireless.w${freq}owe.macaddr='$(wifiGetMacIndex "$path" 3)'
|
||||||
|
set wireless.w${freq}owe.owe_transition_ssid='noservice.freifunk'
|
||||||
|
set wireless.w${freq}owe.owe_transition_bssid='$(wifiGetMacIndex "$path" 1)'
|
||||||
|
set wireless.w${freq}ap.owe_transition_ssid='noservice.freifunk_OWE'
|
||||||
|
set wireless.w${freq}ap.owe_transition_bssid='$(wifiGetMacIndex "$path" 3)'
|
||||||
|
__EOF__
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Remove WiFi config
|
# Remove WiFi config
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# SPDX-License-Identifier: GPL-3.0-only
|
# SPDX-License-Identifier: GPL-3.0-only
|
||||||
#
|
#
|
||||||
# Copyright 2016 Tim Niemeyer
|
# Copyright 2016 Tim Niemeyer
|
||||||
|
# Copyright 2022 Fabian Bläse
|
||||||
|
|
||||||
wifiListRadio() {
|
wifiListRadio() {
|
||||||
if [ $# -ne "0" ]
|
if [ $# -ne "0" ]
|
||||||
|
@ -27,4 +28,95 @@ wifiGetFreq() {
|
||||||
[ "$(uci get "wireless.${radio}.band")" = "5g" ] && echo "5" || echo "2"
|
[ "$(uci get "wireless.${radio}.band")" = "5g" ] && echo "5" || echo "2"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wifiRadioSupportsOWE() {
|
||||||
|
if [ $# -ne "1" ]
|
||||||
|
then
|
||||||
|
echo "Usage: wifiGetMacIndexDriver <path>"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local phy=$(ls /sys/devices/$1/ieee80211/ | head -n1)
|
||||||
|
[ -n "$phy" ] || return 1
|
||||||
|
|
||||||
|
local file="/sys/kernel/debug/ieee80211/$phy/hwflags"
|
||||||
|
|
||||||
|
grep -q "MFP_CAPABLE" "$file" || return 1
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
wifiGetMacIndexDriver() {
|
||||||
|
# adopted from OpenWrt: /lib/netifd/wireless/mac80211.sh -> mac80211_get_addr()
|
||||||
|
|
||||||
|
if [ $# -ne "2" ]
|
||||||
|
then
|
||||||
|
echo "Usage: wifiGetMacIndexDriver <phy> <index>"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local phy="$1"
|
||||||
|
local idx="$(($2 + 1))"
|
||||||
|
|
||||||
|
head -n $idx /sys/class/ieee80211/${phy}/addresses | tail -n1
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
wifiGetMacIndex() {
|
||||||
|
# adopted from OpenWrt: /lib/netifd/wireless/mac80211.sh -> mac80211_generate_mac()
|
||||||
|
|
||||||
|
if [ $# -ne "2" ]
|
||||||
|
then
|
||||||
|
echo "Usage: wifiGetMacIndex <path> <index>"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local phy=$(ls /sys/devices/$1/ieee80211/ | head -n1)
|
||||||
|
local id="$2"
|
||||||
|
|
||||||
|
[ -n "$phy" ] || return 1
|
||||||
|
|
||||||
|
local ref="$(cat /sys/class/ieee80211/${phy}/macaddress)"
|
||||||
|
local mask="$(cat /sys/class/ieee80211/${phy}/address_mask)"
|
||||||
|
|
||||||
|
[ "$mask" = "00:00:00:00:00:00" ] && {
|
||||||
|
mask="ff:ff:ff:ff:ff:ff";
|
||||||
|
|
||||||
|
[ "$(wc -l < /sys/class/ieee80211/${phy}/addresses)" -gt $id ] && {
|
||||||
|
addr="$(wifiGetMacIndexDriver "$phy" "$id")"
|
||||||
|
[ -n "$addr" ] && {
|
||||||
|
echo "$addr"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
local oIFS="$IFS"; IFS=":"; set -- $mask; IFS="$oIFS"
|
||||||
|
|
||||||
|
local mask1=$1
|
||||||
|
local mask6=$6
|
||||||
|
|
||||||
|
local oIFS="$IFS"; IFS=":"; set -- $ref; IFS="$oIFS"
|
||||||
|
|
||||||
|
macidx=$(($id + 1))
|
||||||
|
[ "$((0x$mask1))" -gt 0 ] && {
|
||||||
|
b1="0x$1"
|
||||||
|
[ "$id" -gt 0 ] && \
|
||||||
|
b1=$(($b1 ^ ((($id - !($b1 & 2)) << 2)) | 0x2))
|
||||||
|
printf "%02x:%s:%s:%s:%s:%s" $b1 $2 $3 $4 $5 $6
|
||||||
|
return
|
||||||
|
}
|
||||||
|
[ "$((0x$mask6))" -lt 255 ] && {
|
||||||
|
printf "%s:%s:%s:%s:%s:%02x" $1 $2 $3 $4 $5 $(( 0x$6 ^ $id ))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
off2=$(( (0x$6 + $id) / 0x100 ))
|
||||||
|
printf "%s:%s:%s:%s:%02x:%02x" \
|
||||||
|
$1 $2 $3 $4 \
|
||||||
|
$(( (0x$5 + $off2) % 0x100 )) \
|
||||||
|
$(( (0x$6 + $id) % 0x100 ))
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
# vim: set noexpandtab:tabstop=4
|
# vim: set noexpandtab:tabstop=4
|
||||||
|
|
Loading…
Reference in New Issue