[RFC PATCH] Add support for 802.11s meshing with batman-adv
Fabian Bläse
fabian at blaese.de
Mi Sep 13 14:37:04 CEST 2017
Signed-off-by: Fabian Bläse <fabian at blaese.de>
---
community/franken.cfg | 1 +
.../files/etc/uci-defaults/60-fff-wireless | 15 +++++++--
.../fff-wireless/files/lib/functions/fff/wireless | 38 ++++++++++++++++++++--
3 files changed, 49 insertions(+), 5 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-wireless/files/etc/uci-defaults/60-fff-wireless b/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
index 8e207a4..13f361e 100644
--- a/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
+++ b/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
@@ -34,9 +34,18 @@ for phy in $(iw phy | awk '/^Wiphy/{ print $2 }'); do
exit 1
fi
- if ! wifiAddAdHocMesh "$radio" "$ESSID_MESH" "$BSSID_MESH"; then
- echo "Can't add AdHocMesh interface on $radio."
- exit 1
+ if [[ -n "$MESH_ID" ]]; then
+ if ! wifiAddMesh "$radio" "$MESH_ID"; then
+ echo "Can't add Mesh interface on $radio."
+ exit 1
+ fi
+ fi
+
+ if [[ -n "$ESSID_MESH" ]] && [[ -n "$BSSID_MESH" ]]; then
+ if ! wifiAddAdHocMesh "$radio" "$ESSID_MESH" "$BSSID_MESH"; 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 59c8ce2..62ad356 100644
--- a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
+++ b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
@@ -56,9 +56,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__
@@ -114,4 +114,38 @@ wifiAddAP() {
echo "${iface}"
}
+wifiAddMesh() {
+ if [ $# -ne "2" ]
+ then
+ echo "Usage: wifiAddMesh <radio> <mesh-id>"
+ 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='mesh'
+ 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}"
+}
# vim: set noexpandtab:tabstop=4
--
2.11.0 (Apple Git-81)
Mehr Informationen über die Mailingliste franken-dev