[PATCH v7] Support batman-adv meshing over 802.11s
Fabian Bläse
fabian at blaese.de
Sa Okt 14 18:28:26 CEST 2017
Signed-off-by: Fabian Bläse <fabian at blaese.de>
Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
Update in v2:
- Add parentheses
- Rename mesh_type variable
Update in v3:
- nothing
Update in v4:
- Fix wrong variable assignment introduced in v2
Update in v5:
- Add returns to wifiAddMesh
Update in v6:
- Rename json mesh_type variable
Update in v7:
- Remove ath10k-ct
- Remove changes to community file
---
bsp/ar71xx/.config | 4 +--
.../fff/fff-hoods/files/usr/sbin/configurehood | 22 +++++++++---
.../fff-wireless/files/lib/functions/fff/wireless | 40 ++++++++++++++++++++--
3 files changed, 57 insertions(+), 9 deletions(-)
diff --git a/bsp/ar71xx/.config b/bsp/ar71xx/.config
index b407f7d..fdfc966 100644
--- a/bsp/ar71xx/.config
+++ b/bsp/ar71xx/.config
@@ -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=""
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=""
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
diff --git a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
index 264a308..a464841 100755
--- a/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
+++ b/src/packages/fff/fff-hoods/files/usr/sbin/configurehood
@@ -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,9 +156,20 @@ 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."
- exit 1
+ # 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
diff --git a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
index 2c6dff8..4493b05 100644
--- a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
+++ b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
@@ -83,9 +83,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__
@@ -177,4 +177,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
--
2.14.2
Mehr Informationen über die Mailingliste franken-dev