From 39d0c8f45949b06ece9db05a82341acc4d638980 Mon Sep 17 00:00:00 2001
From: Nils Schneider <nils@nilsschneider.net>
Date: Mon, 4 May 2015 21:18:58 +0200
Subject: [PATCH] mesh-batman-adv: mesh_on_lan

This adds mesh_on_lan functionality.

A new optional site.conf option, mesh_on_lan, has been added. If set to
'true', all LAN ports will be used for meshing instead of being part of
the client bridge.
---
 docs/user/site.rst                            |  3 +++
 .../gluon-mesh-batman-adv-core/check_site.lua |  1 +
 .../310-gluon-mesh-batman-adv-core-mesh       |  3 ++-
 ...340-gluon-mesh-batman-adv-core-mesh-on-lan | 23 +++++++++++++++++++
 4 files changed, 29 insertions(+), 1 deletion(-)
 create mode 100755 package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan

diff --git a/docs/user/site.rst b/docs/user/site.rst
index 689dd51d8..68705ce46 100644
--- a/docs/user/site.rst
+++ b/docs/user/site.rst
@@ -119,6 +119,9 @@ fastd_mesh_vpn
 mesh_on_wan : optional
     Enables the mesh on the WAN port (``true`` or ``false``).
 
+mesh_on_lan : optional
+    Enables the mesh on the LAN port (``true`` or ``false``).
+
 autoupdater : package
     Configuration for the autoupdater feature of Gluon.
     ::
diff --git a/package/gluon-mesh-batman-adv-core/check_site.lua b/package/gluon-mesh-batman-adv-core/check_site.lua
index baed26cb1..e76ca9e9c 100644
--- a/package/gluon-mesh-batman-adv-core/check_site.lua
+++ b/package/gluon-mesh-batman-adv-core/check_site.lua
@@ -13,3 +13,4 @@ for _, config in ipairs({'wifi24', 'wifi5'}) do
 end
 
 need_boolean('mesh_on_wan', false)
+need_boolean('mesh_on_lan', false)
diff --git a/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/310-gluon-mesh-batman-adv-core-mesh b/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/310-gluon-mesh-batman-adv-core-mesh
index c9638c4b4..a51b20e23 100755
--- a/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/310-gluon-mesh-batman-adv-core-mesh
+++ b/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/310-gluon-mesh-batman-adv-core-mesh
@@ -2,6 +2,7 @@
 
 local sysconfig = require 'gluon.sysconfig'
 local sysctl = require 'gluon.sysctl'
+local site = require 'gluon.site_config'
 local uci = require('luci.model.uci').cursor()
 
 
@@ -20,7 +21,7 @@ uci:commit('batman-adv')
 if not uci:get('network', 'client') then
   local ifname
 
-  if sysconfig.lan_ifname then
+  if sysconfig.lan_ifname and not site.mesh_on_lan then
     ifname = sysconfig.lan_ifname .. ' bat0'
   else
     ifname = 'bat0'
diff --git a/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan b/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan
new file mode 100755
index 000000000..f9cbde031
--- /dev/null
+++ b/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan
@@ -0,0 +1,23 @@
+#!/usr/bin/lua
+
+local site = require 'gluon.site_config'
+local uci = require 'luci.model.uci'
+local util = require 'gluon.util'
+local sysconfig = require 'gluon.sysconfig'
+
+local c = uci.cursor()
+
+if sysconfig.lan_ifname then
+  if not c:get('network', 'mesh_lan') then
+    c:section('network', 'interface', 'mesh_lan',
+              { ifname  = sysconfig.lan_ifname
+              , proto   = 'batadv'
+              , mesh    = 'bat0'
+              , macaddr = util.generate_mac(1, 1)
+              , auto    = site.mesh_on_lan and 1 or 0
+              })
+  end
+end
+
+c:save('network')
+c:commit('network')
-- 
GitLab