gluon-mesh-batman-adv-core: make mesh_lan config a bridge

There are a few devices which have more than one LAN interface (for example
some revision of the TL-WR941ND, which uses a DSA-based switch, so each
switch port has its own netdev.) On these devices we need a bridge for
mesh-on-lan (as the alternative of adding them to batman-adv individually
would need too many MAC addresses.)
This commit is contained in:
Matthias Schiffer 2016-04-27 12:20:27 +02:00
parent c73a12e0ea
commit 937fe715c7
1 changed files with 21 additions and 14 deletions

View File

@ -7,7 +7,21 @@ local sysconfig = require 'gluon.sysconfig'
local uci = require('luci.model.uci').cursor()
local lutil = require 'luci.util'
if sysconfig.lan_ifname and not uci:get('network', 'mesh_lan') then
if not sysconfig.lan_ifname then
os.exit(0)
end
uci:section('network', 'interface', 'mesh_lan', {
ifname = sysconfig.lan_ifname,
type = 'bridge',
igmp_snooping = 0,
proto = 'batadv',
mesh = 'bat0',
mesh_no_rebroadcast = '1',
macaddr = util.generate_mac(6),
})
if uci:get('network', 'mesh_lan', 'auto') == nil then
local enable = site.mesh_on_lan
if enable then
@ -15,22 +29,15 @@ if sysconfig.lan_ifname and not uci:get('network', 'mesh_lan') then
if interfaces then
for _, lanif in ipairs(lutil.split(sysconfig.lan_ifname, ' ')) do
if lutil.contains(interfaces, lanif) then
enable = false
break
if lutil.contains(interfaces, lanif) then
enable = false
break
end
end
end
end
uci:section('network', 'interface', 'mesh_lan',
{ ifname = sysconfig.lan_ifname
, proto = 'batadv'
, mesh = 'bat0'
, mesh_no_rebroadcast = '1'
, macaddr = util.generate_mac(6)
, auto = enable and 1 or 0
})
uci:save('network')
uci:set('network', 'mesh_lan', 'auto', enable and 1 or 0)
end
uci:save('network')