forked from freifunk-franken/firmware
Support batman-adv meshing over 802.11s
Signed-off-by: Fabian Bläse <fabian@blaese.de> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Reviewed-by: Christian Dresel <fff@chrisi01.de>
This commit is contained in:
parent
c8c92466be
commit
d788f843b6
|
@ -7,9 +7,9 @@ CONFIG_TARGET_MULTI_PROFILE=y
|
|||
CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_gl-ar150=y
|
||||
CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_generic_DEVICE_gl-ar150=""
|
||||
CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_archer-c25-v1=y
|
||||
CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_generic_DEVICE_archer-c25-v1="-kmod-ath10k kmod-ath10k-ct -ath10k-firmware-qca9887 ath10k-firmware-qca9887-ct"
|
||||
CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_generic_DEVICE_archer-c25-v1="-kmod-ath10k kmod-ath10k-ct"
|
||||
CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_archer-c7-v2=y
|
||||
CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_generic_DEVICE_archer-c7-v2="-kmod-ath10k kmod-ath10k-ct -ath10k-firmware-qca988x ath10k-firmware-qca988x-ct"
|
||||
CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_generic_DEVICE_archer-c7-v2="-kmod-ath10k kmod-ath10k-ct"
|
||||
CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_cpe210-220=y
|
||||
CONFIG_TARGET_DEVICE_PACKAGES_ar71xx_generic_DEVICE_cpe210-220=""
|
||||
CONFIG_TARGET_DEVICE_ar71xx_generic_DEVICE_cpe510-520=y
|
||||
|
|
|
@ -119,6 +119,7 @@ if [ -s /tmp/keyxchangev2data ]; then
|
|||
json_select hood
|
||||
|
||||
json_get_var hood name
|
||||
json_get_var mesh_id mesh_id
|
||||
json_get_var mesh_bssid mesh_bssid
|
||||
json_get_var mesh_essid mesh_essid
|
||||
json_get_var essid essid
|
||||
|
@ -126,10 +127,10 @@ if [ -s /tmp/keyxchangev2data ]; then
|
|||
# i think the next things we don't active this in the first version! we can do it later
|
||||
#json_get_var channel2 channel2
|
||||
#json_get_var mode2 mode2
|
||||
#json_get_var type2 type2
|
||||
json_get_var mesh_type2 mesh_type2
|
||||
#json_get_var channel5 channel5
|
||||
#json_get_var mode5 mode5
|
||||
#json_get_var type5 type5
|
||||
json_get_var mesh_type5 mesh_type5
|
||||
#json_get_var protocol protocol
|
||||
|
||||
json_select ".." # back to root
|
||||
|
@ -155,10 +156,21 @@ if [ -s /tmp/keyxchangev2data ]; then
|
|||
# here we set a bit for add hidden AP
|
||||
touch /tmp/hiddenapflag
|
||||
|
||||
if ! wifiAddAdHocMesh "$radio" "$mesh_essid" "$mesh_bssid"; then
|
||||
echo "Can't add AP interface on $radio."
|
||||
# add 802.11s mesh if type == "802.11s"
|
||||
if ( [ -n "$radio5" ] && [ "$mesh_type5" == "802.11s" ] ) || [ "$mesh_type2" == "802.11s" ]; then
|
||||
if ! wifiAddMesh "$radio" "$mesh_id"; then
|
||||
echo "Can't add Mesh interface on $radio."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# add IBSS mesh if type == "ibss"
|
||||
if ( [ -n "$radio5" ] && [ "$mesh_type5" == "ibss" ] ) || [ "$mesh_type2" == "ibss" ]; then
|
||||
if ! wifiAddAdHocMesh "$radio" "$mesh_essid" "$mesh_bssid"; then
|
||||
echo "Can't add AdHocMesh interface on $radio."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Loading wifi"
|
||||
|
|
|
@ -13,18 +13,18 @@ for phy in $(iw phy | awk '/^Wiphy/{ print $2 }'); do
|
|||
radio="$(wifiAddPhyCond "$phy" "2" "1")"
|
||||
radio5="$(wifiAddPhyCond "$phy" "5" "36")"
|
||||
[ -n "$radio5" ] && radio="$radio5"
|
||||
if [ -z "$radio" ]; then
|
||||
if [ -z "$radio" ] ; then
|
||||
echo "Can't create radio for $phy"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! wifiAddAP "$radio" "do.not.use" "mesh" "ap" "0"; then
|
||||
if ! wifiAddAP "$radio" "do.not.use" "mesh" "ap" "0" ; then
|
||||
echo "Can't add AP interface on $radio."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! wifiAddAdHocMesh "$radio" "batman.do.not.use" "02:CA:FF:EE:BA:BE"; then
|
||||
echo "Can't add AdHocMesh interface on $radio."
|
||||
if ! wifiAddMesh "$radio" "mesh.do.not.use" ; then
|
||||
echo "Can't add Mesh interface on $radio."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
|
|
@ -84,9 +84,9 @@ wifiAddAdHocMesh() {
|
|||
local bssid=$3
|
||||
|
||||
local channel=$(uci get "wireless.${radio}.channel")
|
||||
local iface="w2mesh"
|
||||
local iface="w2ibss"
|
||||
if [ "$channel" -gt "14" ]; then
|
||||
iface="w5mesh"
|
||||
iface="w5ibss"
|
||||
fi
|
||||
|
||||
uci batch <<-__EOF__
|
||||
|
@ -178,4 +178,40 @@ wifiAddSta() {
|
|||
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='1528'
|
||||
set network.${iface}.proto='batadv'
|
||||
set network.${iface}.mesh='bat0'
|
||||
commit network
|
||||
__EOF__
|
||||
|
||||
echo "${iface}"
|
||||
return 0
|
||||
}
|
||||
# vim: set noexpandtab:tabstop=4
|
||||
|
|
Loading…
Reference in New Issue
Block a user