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:
parent
c73a12e0ea
commit
937fe715c7
@ -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')
|
||||
|
Loading…
Reference in New Issue
Block a user