From 3de151c286baa25967d4f43c9ca851ba21b0cc1a Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
Date: Sun, 18 Jan 2015 07:35:48 +0100
Subject: [PATCH] mesh-batman-adv-core: allow sites to set VLAN for mesh

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
 .../gluon-mesh-batman-adv-core/check_site.lua |  1 +
 .../invariant/020-wireless                    | 23 +++++++++++++++++--
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/package/gluon-mesh-batman-adv-core/check_site.lua b/package/gluon-mesh-batman-adv-core/check_site.lua
index 98aa68fdd..8226d5dd6 100644
--- a/package/gluon-mesh-batman-adv-core/check_site.lua
+++ b/package/gluon-mesh-batman-adv-core/check_site.lua
@@ -7,6 +7,7 @@ for _, config in ipairs({'wifi24', 'wifi5'}) do
    need_string(config .. '.mesh_ssid')
    need_string_match(config .. '.mesh_bssid', '^%x[02468aAcCeE]:%x%x:%x%x:%x%x:%x%x:%x%x$')
    need_number(config .. '.mesh_mcast_rate')
+   need_number(config .. '.mesh_vlan', false)
 end
 
 need_boolean('mesh_on_wan', false)
diff --git a/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/mesh-batman-adv-core/invariant/020-wireless b/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/mesh-batman-adv-core/invariant/020-wireless
index bb3125a86..98ac4c64d 100755
--- a/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/mesh-batman-adv-core/invariant/020-wireless
+++ b/package/gluon-mesh-batman-adv-core/files/lib/gluon/upgrade/mesh-batman-adv-core/invariant/020-wireless
@@ -27,13 +27,32 @@ local function configure_radio(radio, index, config)
 
   local mesh = 'mesh_' .. radio
   uci:delete('network', mesh)
-  uci:section('network', 'interface', mesh,
+  uci:delete('network', mesh .. '_vlan')
+
+  if config.mesh_vlan then
+	uci:section('network', 'interface', mesh,
+	      {
+		proto = 'none',
+		mtu = '1532',
+	      }
+	)
+	uci:section('network', 'interface', mesh .. '_vlan',
 	      {
+		ifname = '@' .. mesh .. '.' .. config.mesh_vlan,
 		proto = 'batadv',
 		mtu = '1528',
 		mesh = 'bat0',
 	      }
-  )
+	)
+  else
+	uci:section('network', 'interface', mesh,
+	      {
+		proto = 'batadv',
+		mtu = '1528',
+		mesh = 'bat0',
+	      }
+	)
+  end
 
   uci:delete('wireless', mesh)
   uci:section('wireless', 'wifi-iface', mesh,
-- 
GitLab