[PATCH v6] Support batman-adv meshing over 802.11s
Fabian Bläse
fabian at blaese.de
So Okt 8 16:07:08 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
---
community/franken.cfg | 1 +
.../fff/fff-hoods/files/usr/sbin/configurehood | 22 +++++++++---
.../fff-wireless/files/lib/functions/fff/wireless | 40 ++++++++++++++++++++--
3 files changed, 56 insertions(+), 7 deletions(-)
diff --git a/community/franken.cfg b/community/franken.cfg
index 833e98e..3ea5353 100644
--- a/community/franken.cfg
+++ b/community/franken.cfg
@@ -3,6 +3,7 @@ BATMAN_CHANNEL_5GHZ=36
ESSID_AP=franken.freifunk.net
ESSID_MESH=batman.franken.freifunk.net
BSSID_MESH=02:CA:FF:EE:BA:BE
+MESH_ID=mesh.franken.freifunk.net
VPN_PROJECT=fff
NTPD_IP=fe80::ff:feee:1%br-mesh
UPGRADE_PATH=http://[fe80::ff:feee:1%br-mesh]/dev/firmware/current
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.1
Mehr Informationen über die Mailingliste franken-dev