From 826ac884936d695252ade6b8b4b27a8383580f5e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Steffen=20F=C3=B6rster?= <ambassador86@gmail.com>
Date: Mon, 10 Jul 2017 23:08:39 +0200
Subject: [PATCH] gluon-mesh-batman-adv: enable routing algorithm configuration
 through site.conf

[Matthias Schiffer: move to proto_gluon_bat0_setup() and default to BATMAN_IV]
---
 package/gluon-mesh-batman-adv/check_site.lua                | 3 ++-
 .../files/lib/netifd/proto/gluon_bat0.sh                    | 4 ++++
 .../luasrc/lib/gluon/upgrade/310-gluon-mesh-batman-adv-mesh | 6 ++++++
 3 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/package/gluon-mesh-batman-adv/check_site.lua b/package/gluon-mesh-batman-adv/check_site.lua
index 384b32247..3dc2e6aa6 100644
--- a/package/gluon-mesh-batman-adv/check_site.lua
+++ b/package/gluon-mesh-batman-adv/check_site.lua
@@ -1,3 +1,4 @@
 if need_table('mesh', nil, false) and  need_table('mesh.batman_adv', nil, false) then
-  need_number('mesh.batman_adv.gw_sel_class', false)
+	need_number('mesh.batman_adv.gw_sel_class', false)
+	need_one_of('mesh.batman_adv.routing_algo', {'BATMAN_IV', 'BATMAN_V'}, false)
 end
diff --git a/package/gluon-mesh-batman-adv/files/lib/netifd/proto/gluon_bat0.sh b/package/gluon-mesh-batman-adv/files/lib/netifd/proto/gluon_bat0.sh
index 781d91c39..ea562c498 100755
--- a/package/gluon-mesh-batman-adv/files/lib/netifd/proto/gluon_bat0.sh
+++ b/package/gluon-mesh-batman-adv/files/lib/netifd/proto/gluon_bat0.sh
@@ -41,6 +41,10 @@ proto_gluon_bat0_setup() {
 	ip link add primary0 type dummy
 	echo 1 > /proc/sys/net/ipv6/conf/primary0/disable_ipv6
 	ip link set primary0 address "$primary0_mac" mtu 1532 up
+
+	local routing_algo="$(uci -q get batman-adv.bat0.routing_algo || echo 'BATMAN_IV')"
+	(echo "$routing_algo" >/sys/module/batman_adv/parameters/routing_algo) 2>/dev/null
+
 	echo bat0 > /sys/class/net/primary0/batman_adv/mesh_iface
 
 	proto_init_update primary0 1
diff --git a/package/gluon-mesh-batman-adv/luasrc/lib/gluon/upgrade/310-gluon-mesh-batman-adv-mesh b/package/gluon-mesh-batman-adv/luasrc/lib/gluon/upgrade/310-gluon-mesh-batman-adv-mesh
index 8153f0751..b119531a6 100755
--- a/package/gluon-mesh-batman-adv/luasrc/lib/gluon/upgrade/310-gluon-mesh-batman-adv-mesh
+++ b/package/gluon-mesh-batman-adv/luasrc/lib/gluon/upgrade/310-gluon-mesh-batman-adv-mesh
@@ -12,12 +12,18 @@ if site.mesh and site.mesh.batman_adv then
 	gw_sel_class = site.mesh.batman_adv.gw_sel_class
 end
 
+local routing_algo
+if site.mesh and site.mesh.batman_adv then
+	routing_algo = site.mesh.batman_adv.routing_algo
+end
+
 uci:delete('batman-adv', 'bat0')
 uci:section('batman-adv', 'mesh', 'bat0', {
 	orig_interval = 5000,
 	gw_mode = 'client',
 	gw_sel_class = gw_sel_class,
 	hop_penalty = 15,
+	routing_algo = routing_algo,
 	multicast_mode = false,
 })
 uci:save('batman-adv')
-- 
GitLab