gluon-core: fix handling of multi-port interfaces
Multi-port interfaces are stored in the network config as an array using the ports key.
This commit is contained in:
parent
98b16933d3
commit
69ba8e3cfe
@ -20,17 +20,35 @@ local network_data = (board_data or {}).network
|
|||||||
|
|
||||||
local function iface_exists(ifaces)
|
local function iface_exists(ifaces)
|
||||||
if not ifaces then return nil end
|
if not ifaces then return nil end
|
||||||
|
local ifnames = table.concat(ifaces, ' ')
|
||||||
|
|
||||||
for iface in ifaces:gmatch('%S+') do
|
for _, iface in ipairs(ifaces) do
|
||||||
if unistd.access('/sys/class/net/' .. iface:gsub('%..*$', '')) then
|
if unistd.access('/sys/class/net/' .. iface:gsub('%..*$', '')) then
|
||||||
return ifaces
|
return ifnames
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local lan_data = network_data.lan or {}
|
||||||
|
local wan_data = network_data.wan or {}
|
||||||
|
|
||||||
local lan_ifname = iface_exists((network_data.lan or {}).device)
|
local lan_interfaces = lan_data.ports
|
||||||
local wan_ifname = iface_exists((network_data.wan or {}).device)
|
local wan_interfaces = wan_data.ports
|
||||||
|
|
||||||
|
-- In case we have a single port for either WAN or LAN,
|
||||||
|
-- add it to the respective empty table, as devices and
|
||||||
|
-- ports is XOR in board.json
|
||||||
|
|
||||||
|
if lan_data.device ~= nil then
|
||||||
|
lan_interfaces = {lan_data.device}
|
||||||
|
end
|
||||||
|
|
||||||
|
if wan_data.device ~= nil then
|
||||||
|
wan_interfaces = {wan_data.device}
|
||||||
|
end
|
||||||
|
|
||||||
|
local lan_ifname = iface_exists(lan_interfaces)
|
||||||
|
local wan_ifname = iface_exists(wan_interfaces)
|
||||||
|
|
||||||
if platform.match('ar71xx', 'generic', {
|
if platform.match('ar71xx', 'generic', {
|
||||||
'cpe210',
|
'cpe210',
|
||||||
|
Loading…
Reference in New Issue
Block a user