diff --git a/package/gluon-luci-portconfig/luasrc/usr/lib/lua/luci/model/cbi/admin/portconfig.lua b/package/gluon-luci-portconfig/luasrc/usr/lib/lua/luci/model/cbi/admin/portconfig.lua index 2e40577a..613dcb4a 100644 --- a/package/gluon-luci-portconfig/luasrc/usr/lib/lua/luci/model/cbi/admin/portconfig.lua +++ b/package/gluon-luci-portconfig/luasrc/usr/lib/lua/luci/model/cbi/admin/portconfig.lua @@ -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) diff --git a/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/320-gluon-mesh-batman-adv-core-wireless b/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/320-gluon-mesh-batman-adv-core-wireless index 217fbe6a..864e23b2 100755 --- a/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/320-gluon-mesh-batman-adv-core-wireless +++ b/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/320-gluon-mesh-batman-adv-core-wireless @@ -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) diff --git a/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/330-gluon-mesh-batman-adv-core-mesh-on-wan b/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/330-gluon-mesh-batman-adv-core-mesh-on-wan index 7a964ee2..33b77abf 100755 --- a/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/330-gluon-mesh-batman-adv-core-mesh-on-wan +++ b/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/330-gluon-mesh-batman-adv-core-mesh-on-wan @@ -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() diff --git a/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan b/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan index 2cc0d989..81452587 100755 --- a/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan +++ b/package/gluon-mesh-batman-adv-core/luasrc/lib/gluon/upgrade/340-gluon-mesh-batman-adv-core-mesh-on-lan @@ -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 diff --git a/package/gluon-mesh-batman-adv-core/luasrc/lib/lua/gluon/network.lua b/package/gluon-mesh-batman-adv-core/luasrc/lib/lua/gluon/network.lua new file mode 100644 index 00000000..3f1a147a --- /dev/null +++ b/package/gluon-mesh-batman-adv-core/luasrc/lib/lua/gluon/network.lua @@ -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 diff --git a/package/gluon-mesh-vpn-fastd/luasrc/lib/gluon/upgrade/400-mesh-vpn-fastd b/package/gluon-mesh-vpn-fastd/luasrc/lib/gluon/upgrade/400-mesh-vpn-fastd index 6f2095f2..c6ce78a1 100755 --- a/package/gluon-mesh-vpn-fastd/luasrc/lib/gluon/upgrade/400-mesh-vpn-fastd +++ b/package/gluon-mesh-vpn-fastd/luasrc/lib/gluon/upgrade/400-mesh-vpn-fastd @@ -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), } )