gluon-mesh-batman-adv-core, gluon-mesh-vpn-fastd, gluon-luci-portconfig: fill and maintain mesh interface list

This commit is contained in:
Matthias Schiffer 2016-04-27 13:05:32 +02:00
parent b648860ff8
commit 5aa075e39e
No known key found for this signature in database
GPG Key ID: 16EF3F64CB201D9C
6 changed files with 46 additions and 5 deletions

View File

@ -14,6 +14,7 @@ $Id$
local uci = luci.model.uci.cursor()
local lutil = require 'luci.util'
local network = require 'gluon.network'
local sysconfig = require 'gluon.sysconfig'
local wan = uci:get_all("network", "wan")
@ -150,6 +151,8 @@ function f.handle(self, state, data)
uci:commit('system')
end
network.update_mesh_on_wan()
if dns then
if #data.dns > 0 then
uci:set("gluon-wan-dnsmasq", dns, "server", data.dns)

View File

@ -1,5 +1,6 @@
#!/usr/bin/lua
local mesh = require 'gluon.mesh'
local site = require 'gluon.site_config'
local util = require 'gluon.util'
@ -24,6 +25,7 @@ end
local function configure_ibss(config, radio, index, suffix, disabled)
local name = 'ibss_' .. radio
local ifname = 'ibss' .. suffix
uci:delete('network', name)
uci:delete('network', name .. '_vlan')
@ -52,6 +54,8 @@ local function configure_ibss(config, radio, index, suffix, disabled)
mesh = 'bat0',
}
)
mesh.register_interface(ifname .. '.' .. config.vlan)
else
uci:section('network', 'interface', name,
{
@ -59,6 +63,8 @@ local function configure_ibss(config, radio, index, suffix, disabled)
mesh = 'bat0',
}
)
mesh.register_interface(ifname)
end
uci:section('wireless', 'wifi-iface', name,
@ -70,7 +76,7 @@ local function configure_ibss(config, radio, index, suffix, disabled)
bssid = config.bssid,
macaddr = macaddr,
mcast_rate = config.mcast_rate,
ifname = suffix and 'ibss' .. suffix,
ifname = ifname,
disabled = disabled and 1 or 0,
}
)
@ -78,6 +84,7 @@ end
local function configure_mesh(config, radio, index, suffix, disabled)
local name = 'mesh_' .. radio
local ifname = 'mesh' .. suffix
local macfilter = uci:get('wireless', name, 'macfilter')
local maclist = uci:get('wireless', name, 'maclist')
@ -93,6 +100,8 @@ local function configure_mesh(config, radio, index, suffix, disabled)
return
end
mesh.register_interface(ifname)
uci:section('network', 'interface', name,
{
proto = 'batadv',
@ -109,7 +118,7 @@ local function configure_mesh(config, radio, index, suffix, disabled)
mesh_fwding = 0,
macaddr = macaddr,
mcast_rate = config.mcast_rate,
ifname = suffix and 'mesh' .. suffix,
ifname = ifname,
disabled = disabled and 1 or 0,
macfilter = macfilter,
maclist = maclist,
@ -119,6 +128,9 @@ end
local function configure_radio(radio, index, config)
local suffix = radio:match('^radio(%d+)$')
if not suffix then
return
end
local ibss_disabled = is_disabled('ibss_' .. radio)
local mesh_disabled = is_disabled('mesh_' .. radio)

View File

@ -1,5 +1,6 @@
#!/usr/bin/lua
local network = require 'gluon.network'
local site = require 'gluon.site_config'
local uci = require 'luci.model.uci'
@ -16,3 +17,5 @@ if not c:get('network', 'mesh_wan') then
end
c:save('network')
network.update_mesh_on_wan()

View File

@ -1,5 +1,6 @@
#!/usr/bin/lua
local mesh = require 'gluon.mesh'
local site = require 'gluon.site_config'
local util = require 'gluon.util'
local sysconfig = require 'gluon.sysconfig'
@ -41,3 +42,9 @@ if uci:get('network', 'mesh_lan', 'auto') == nil then
end
uci:save('network')
if uci:get_bool('network', 'mesh_lan', 'auto') then
mesh.register_interface('br-mesh_lan', {transitive = true})
else
mesh.unregister_interface('br-mesh_lan')
end

View File

@ -0,0 +1,14 @@
-- High-level network config functions
local mesh = require 'gluon.mesh'
local uci = require('luci.model.uci').cursor()
module 'gluon.network'
function update_mesh_on_wan()
if uci:get_bool('network', 'mesh_wan', 'auto') then
mesh.register_interface('br-wan', {transitive = true, fixed_mtu = true})
else
mesh.unregister_interface('br-wan')
end
end

View File

@ -1,5 +1,6 @@
#!/usr/bin/lua
local mesh = require 'gluon.mesh'
local site = require 'gluon.site_config'
local users = require 'gluon.users'
local util = require 'gluon.util'
@ -64,6 +65,8 @@ uci:section('fastd', 'fastd', 'mesh_vpn',
)
uci:delete('fastd', 'mesh_vpn', 'user')
mesh.register_interface('mesh-vpn', {fixed_mtu = true, transitive = true})
local add_groups
@ -124,9 +127,8 @@ uci:save('fastd')
uci:section('network', 'interface', 'mesh_vpn',
{
ifname = 'mesh-vpn',
proto = 'batadv',
mesh = 'bat0',
mesh_no_rebroadcast = 1,
proto = 'none',
auto = 1,
macaddr = util.get_mac(1),
}
)