diff --git a/package/gluon-mesh-batman-adv-14/files/lib/gluon/core/mesh/setup.d/30-gluon-mesh-batman-adv-14 b/package/gluon-mesh-batman-adv-14/files/lib/gluon/core/mesh/setup.d/30-gluon-mesh-batman-adv-14
new file mode 100755
index 0000000000000000000000000000000000000000..8be4037a9806a78df1ea1b0e380464cf39163759
--- /dev/null
+++ b/package/gluon-mesh-batman-adv-14/files/lib/gluon/core/mesh/setup.d/30-gluon-mesh-batman-adv-14
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec /lib/gluon/mesh-batman-adv-core/config_mesh_interface setup 1528
diff --git a/package/gluon-mesh-batman-adv-14/files/lib/gluon/core/mesh/teardown.d/70-gluon-mesh-batman-adv-14 b/package/gluon-mesh-batman-adv-14/files/lib/gluon/core/mesh/teardown.d/70-gluon-mesh-batman-adv-14
new file mode 100755
index 0000000000000000000000000000000000000000..494a4f9c06787993e1b02485b31804b6e8d1e9fa
--- /dev/null
+++ b/package/gluon-mesh-batman-adv-14/files/lib/gluon/core/mesh/teardown.d/70-gluon-mesh-batman-adv-14
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec /lib/gluon/mesh-batman-adv-core/config_mesh_interface teardown
diff --git a/package/gluon-mesh-batman-adv-15/files/lib/gluon/core/mesh/setup.d/30-gluon-mesh-batman-adv-15 b/package/gluon-mesh-batman-adv-15/files/lib/gluon/core/mesh/setup.d/30-gluon-mesh-batman-adv-15
new file mode 100755
index 0000000000000000000000000000000000000000..a9b67cb032427dadc070ca249fb1d5bc857344f4
--- /dev/null
+++ b/package/gluon-mesh-batman-adv-15/files/lib/gluon/core/mesh/setup.d/30-gluon-mesh-batman-adv-15
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec /lib/gluon/mesh-batman-adv-core/config_mesh_interface setup 1532
diff --git a/package/gluon-mesh-batman-adv-15/files/lib/gluon/core/mesh/teardown.d/70-gluon-mesh-batman-adv-15 b/package/gluon-mesh-batman-adv-15/files/lib/gluon/core/mesh/teardown.d/70-gluon-mesh-batman-adv-15
new file mode 100755
index 0000000000000000000000000000000000000000..494a4f9c06787993e1b02485b31804b6e8d1e9fa
--- /dev/null
+++ b/package/gluon-mesh-batman-adv-15/files/lib/gluon/core/mesh/teardown.d/70-gluon-mesh-batman-adv-15
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec /lib/gluon/mesh-batman-adv-core/config_mesh_interface teardown
diff --git a/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/mesh-batman-adv-core/config_mesh_interface b/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/mesh-batman-adv-core/config_mesh_interface
new file mode 100755
index 0000000000000000000000000000000000000000..ad2d11d4e1d19cb825d4d6c2892b9c3c2eddee01
--- /dev/null
+++ b/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/mesh-batman-adv-core/config_mesh_interface
@@ -0,0 +1,44 @@
+#!/usr/bin/lua
+
+local util = require 'gluon.util'
+local fs = require 'nixio.fs'
+
+
+local ifname = os.getenv('IFNAME')
+local cmd = arg[1]
+
+
+if cmd == 'setup' then
+
+	local fixed_mtu = tonumber(os.getenv('FIXED_MTU')) or 0
+	local transitive = tonumber(os.getenv('TRANSITIVE')) or 0
+
+	local mtu = tonumber(arg[2])
+
+	if fixed_mtu == 0 then
+		local lower = fs.glob('/sys/class/net/' .. ifname .. '/lower_*/wireless')()
+		if lower then
+			lower = lower:match('/lower_([^/]+)/wireless$')
+			util.exec('ip', 'link', 'set', 'dev', lower, 'mtu', tostring(mtu+4))
+		end
+
+		util.exec('ip', 'link', 'set', 'dev', ifname, 'mtu', tostring(mtu))
+	end
+
+	local file = assert(io.open('/sys/class/net/' .. ifname .. '/batman_adv/mesh_iface', 'w'))
+	file:write('bat0')
+	file:close()
+
+	file = assert(io.open('/sys/class/net/' .. ifname .. '/batman_adv/no_rebroadcast', 'w'))
+	file:write(tostring(transitive))
+	file:close()
+
+elseif cmd == 'teardown' then
+
+	local file = io.open('/sys/class/net/' .. ifname .. '/batman_adv/mesh_iface', 'w')
+	if file then
+		file:write('none')
+		file:close()
+	end
+
+end