From b7380decc28b069cdf74b526230cd1d01df9d581 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Tue, 30 Aug 2016 01:02:50 +0200 Subject: [PATCH] gluon-mesh-batman-adv-*: add gluon_mesh protocol handlers --- .../mesh/setup.d/30-gluon-mesh-batman-adv-14 | 3 ++ .../teardown.d/70-gluon-mesh-batman-adv-14 | 3 ++ .../mesh/setup.d/30-gluon-mesh-batman-adv-15 | 3 ++ .../teardown.d/70-gluon-mesh-batman-adv-15 | 3 ++ .../config_mesh_interface | 44 +++++++++++++++++++ 5 files changed, 56 insertions(+) create mode 100755 package/gluon-mesh-batman-adv-14/files/lib/gluon/core/mesh/setup.d/30-gluon-mesh-batman-adv-14 create mode 100755 package/gluon-mesh-batman-adv-14/files/lib/gluon/core/mesh/teardown.d/70-gluon-mesh-batman-adv-14 create mode 100755 package/gluon-mesh-batman-adv-15/files/lib/gluon/core/mesh/setup.d/30-gluon-mesh-batman-adv-15 create mode 100755 package/gluon-mesh-batman-adv-15/files/lib/gluon/core/mesh/teardown.d/70-gluon-mesh-batman-adv-15 create mode 100755 package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/mesh-batman-adv-core/config_mesh_interface 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 00000000..8be4037a --- /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 00000000..494a4f9c --- /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 00000000..a9b67cb0 --- /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 00000000..494a4f9c --- /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 00000000..ad2d11d4 --- /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