gluon-mesh-batman-adv-*: configure batadv interfaces from hotplug script instead of netifd
This commit is contained in:
parent
5aa075e39e
commit
f8f8a9ce00
@ -24,12 +24,10 @@ define Build/Configure
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
define Build/Compile
|
define Build/Compile
|
||||||
$(call GluonSrcDiet,./luasrc,$(PKG_BUILD_DIR)/luadest/)
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/gluon-mesh-batman-adv-14/install
|
define Package/gluon-mesh-batman-adv-14/install
|
||||||
$(CP) ./files/* $(1)/
|
$(CP) ./files/* $(1)/
|
||||||
$(CP) $(PKG_BUILD_DIR)/luadest/* $(1)/
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call BuildPackage,gluon-mesh-batman-adv-14))
|
$(eval $(call BuildPackage,gluon-mesh-batman-adv-14))
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
[ "$ACTION" = 'add' ] || exit 0
|
||||||
|
|
||||||
|
# Exit if we're in setup mode
|
||||||
|
[ $(lua -e 'uci_state=require("luci.model.uci").cursor_state(); print(uci_state:get_first("gluon-setup-mode", "setup_mode", "running", "0"))') = 0 ] || exit 0
|
||||||
|
|
||||||
|
exec /lib/gluon/mesh-batman-adv-core/enable_mesh_interface "$INTERFACE" 1528
|
@ -1,47 +0,0 @@
|
|||||||
#!/usr/bin/lua
|
|
||||||
|
|
||||||
local site = require 'gluon.site_config'
|
|
||||||
|
|
||||||
local uci = require('luci.model.uci').cursor()
|
|
||||||
|
|
||||||
|
|
||||||
local function configure_mtu(radio, config, mtu)
|
|
||||||
if config.ibss then
|
|
||||||
local network = 'ibss_' .. radio
|
|
||||||
|
|
||||||
if config.ibss.vlan then
|
|
||||||
uci:set('network', network, 'mtu', mtu + 4)
|
|
||||||
uci:set('network', network .. '_vlan', 'mtu', mtu)
|
|
||||||
else
|
|
||||||
uci:set('network', network, 'mtu', mtu)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if config.mesh then
|
|
||||||
uci:set('network', 'mesh_' .. radio, 'mtu', mtu)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local radios = {}
|
|
||||||
|
|
||||||
uci:foreach('wireless', 'wifi-device',
|
|
||||||
function(s)
|
|
||||||
table.insert(radios, s['.name'])
|
|
||||||
end
|
|
||||||
)
|
|
||||||
|
|
||||||
local mtu = 1528
|
|
||||||
|
|
||||||
for _, radio in ipairs(radios) do
|
|
||||||
local hwmode = uci:get('wireless', radio, 'hwmode')
|
|
||||||
|
|
||||||
if hwmode == '11g' or hwmode == '11ng' then
|
|
||||||
configure_mtu(radio, site.wifi24, mtu)
|
|
||||||
elseif hwmode == '11a' or hwmode == '11na' then
|
|
||||||
configure_mtu(radio, site.wifi5, mtu)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
uci:save('network')
|
|
@ -24,12 +24,10 @@ define Build/Configure
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
define Build/Compile
|
define Build/Compile
|
||||||
$(call GluonSrcDiet,./luasrc,$(PKG_BUILD_DIR)/luadest/)
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
define Package/gluon-mesh-batman-adv-15/install
|
define Package/gluon-mesh-batman-adv-15/install
|
||||||
$(CP) ./files/* $(1)/
|
$(CP) ./files/* $(1)/
|
||||||
$(CP) $(PKG_BUILD_DIR)/luadest/* $(1)/
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
$(eval $(call BuildPackage,gluon-mesh-batman-adv-15))
|
$(eval $(call BuildPackage,gluon-mesh-batman-adv-15))
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
[ "$ACTION" = 'add' ] || exit 0
|
||||||
|
|
||||||
|
# Exit if we're in setup mode
|
||||||
|
[ $(lua -e 'uci_state=require("luci.model.uci").cursor_state(); print(uci_state:get_first("gluon-setup-mode", "setup_mode", "running", "0"))') = 0 ] || exit 0
|
||||||
|
|
||||||
|
exec /lib/gluon/mesh-batman-adv-core/enable_mesh_interface "$INTERFACE" 1532
|
@ -1,47 +0,0 @@
|
|||||||
#!/usr/bin/lua
|
|
||||||
|
|
||||||
local site = require 'gluon.site_config'
|
|
||||||
|
|
||||||
local uci = require('luci.model.uci').cursor()
|
|
||||||
|
|
||||||
|
|
||||||
local function configure_mtu(radio, config, mtu)
|
|
||||||
if config.ibss then
|
|
||||||
local network = 'ibss_' .. radio
|
|
||||||
|
|
||||||
if config.ibss.vlan then
|
|
||||||
uci:set('network', network, 'mtu', mtu + 4)
|
|
||||||
uci:set('network', network .. '_vlan', 'mtu', mtu)
|
|
||||||
else
|
|
||||||
uci:set('network', network, 'mtu', mtu)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if config.mesh then
|
|
||||||
uci:set('network', 'mesh_' .. radio, 'mtu', mtu)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
local radios = {}
|
|
||||||
|
|
||||||
uci:foreach('wireless', 'wifi-device',
|
|
||||||
function(s)
|
|
||||||
table.insert(radios, s['.name'])
|
|
||||||
end
|
|
||||||
)
|
|
||||||
|
|
||||||
local mtu = 1532
|
|
||||||
|
|
||||||
for _, radio in ipairs(radios) do
|
|
||||||
local hwmode = uci:get('wireless', radio, 'hwmode')
|
|
||||||
|
|
||||||
if hwmode == '11g' or hwmode == '11ng' then
|
|
||||||
configure_mtu(radio, site.wifi24, mtu)
|
|
||||||
elseif hwmode == '11a' or hwmode == '11na' then
|
|
||||||
configure_mtu(radio, site.wifi5, mtu)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
uci:save('network')
|
|
@ -0,0 +1,38 @@
|
|||||||
|
#!/usr/bin/lua
|
||||||
|
|
||||||
|
local mesh = require 'gluon.mesh'
|
||||||
|
local util = require 'gluon.util'
|
||||||
|
|
||||||
|
local fs = require 'nixio.fs'
|
||||||
|
|
||||||
|
|
||||||
|
local ifname = arg[1]
|
||||||
|
local mtu = tonumber(arg[2])
|
||||||
|
|
||||||
|
local interfaces = mesh.interfaces()
|
||||||
|
local interface = interfaces[ifname]
|
||||||
|
|
||||||
|
if not interface then
|
||||||
|
os.exit(0)
|
||||||
|
end
|
||||||
|
|
||||||
|
if not interface.fixed_mtu then
|
||||||
|
-- If we have a VLAN on a wireless interface, we need to adjust the MTU of the real interface...
|
||||||
|
local lower = fs.glob('/sys/class/net/' .. ifname .. '/lower_*')()
|
||||||
|
if lower then
|
||||||
|
lower = lower:match('/lower_([^/]+)$')
|
||||||
|
if fs.access('/sys/class/net/' .. lower .. '/wireless') then
|
||||||
|
util.exec('ip', 'link', 'set', 'dev', lower, 'mtu', tostring(mtu+4))
|
||||||
|
end
|
||||||
|
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(interface.transitive and '1' or '0')
|
||||||
|
file:close()
|
@ -50,8 +50,8 @@ local function configure_ibss(config, radio, index, suffix, disabled)
|
|||||||
uci:section('network', 'interface', name .. '_vlan',
|
uci:section('network', 'interface', name .. '_vlan',
|
||||||
{
|
{
|
||||||
ifname = '@' .. name .. '.' .. config.vlan,
|
ifname = '@' .. name .. '.' .. config.vlan,
|
||||||
proto = 'batadv',
|
proto = 'none',
|
||||||
mesh = 'bat0',
|
auto = 1,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -59,8 +59,8 @@ local function configure_ibss(config, radio, index, suffix, disabled)
|
|||||||
else
|
else
|
||||||
uci:section('network', 'interface', name,
|
uci:section('network', 'interface', name,
|
||||||
{
|
{
|
||||||
proto = 'batadv',
|
proto = 'none',
|
||||||
mesh = 'bat0',
|
auto = 1,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -104,8 +104,8 @@ local function configure_mesh(config, radio, index, suffix, disabled)
|
|||||||
|
|
||||||
uci:section('network', 'interface', name,
|
uci:section('network', 'interface', name,
|
||||||
{
|
{
|
||||||
proto = 'batadv',
|
proto = 'none',
|
||||||
mesh = 'bat0',
|
auto = 1,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -9,9 +9,7 @@ local c = uci.cursor()
|
|||||||
if not c:get('network', 'mesh_wan') then
|
if not c:get('network', 'mesh_wan') then
|
||||||
c:section('network', 'interface', 'mesh_wan',
|
c:section('network', 'interface', 'mesh_wan',
|
||||||
{ ifname = 'br-wan'
|
{ ifname = 'br-wan'
|
||||||
, proto = 'batadv'
|
, proto = 'none'
|
||||||
, mesh = 'bat0'
|
|
||||||
, mesh_no_rebroadcast = '1'
|
|
||||||
, auto = site.mesh_on_wan and 1 or 0
|
, auto = site.mesh_on_wan and 1 or 0
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
@ -16,9 +16,7 @@ uci:section('network', 'interface', 'mesh_lan', {
|
|||||||
ifname = sysconfig.lan_ifname,
|
ifname = sysconfig.lan_ifname,
|
||||||
type = 'bridge',
|
type = 'bridge',
|
||||||
igmp_snooping = 0,
|
igmp_snooping = 0,
|
||||||
proto = 'batadv',
|
proto = 'none',
|
||||||
mesh = 'bat0',
|
|
||||||
mesh_no_rebroadcast = '1',
|
|
||||||
macaddr = util.get_mac(3),
|
macaddr = util.get_mac(3),
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -43,8 +41,4 @@ end
|
|||||||
|
|
||||||
uci:save('network')
|
uci:save('network')
|
||||||
|
|
||||||
if uci:get_bool('network', 'mesh_lan', 'auto') then
|
mesh.register_interface('br-mesh_lan', {transitive = true})
|
||||||
mesh.register_interface('br-mesh_lan', {transitive = true})
|
|
||||||
else
|
|
||||||
mesh.unregister_interface('br-mesh_lan')
|
|
||||||
end
|
|
||||||
|
Loading…
Reference in New Issue
Block a user