Merge pull request #2013 from freifunk-gluon/outdoor-setup-ifname

Reuse outdoor device logic for setup mode interface selection, plus some cleanup
This commit is contained in:
Matthias Schiffer 2020-05-12 20:39:30 +02:00 committed by GitHub
commit 3daacfb92e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 37 additions and 25 deletions

View File

@ -1,7 +1,7 @@
return function(form, uci) return function(form, uci)
local platform = require 'gluon.platform' local platform = require 'gluon.platform'
if not platform.is_outdoor_device() then if not (platform.is_outdoor_device() and platform.device_uses_11a(uci)) then
-- only visible on wizard for outdoor devices -- only visible on wizard for outdoor devices
return return
end end

View File

@ -22,7 +22,7 @@ if sysconfig.gluon_version then
outdoor = false outdoor = false
elseif config == 'preset' then elseif config == 'preset' then
-- enable outdoor mode through presets on new installs -- enable outdoor mode through presets on new installs
outdoor = platform.is_outdoor_device() outdoor = platform.is_outdoor_device() and platform.device_uses_11a(uci)
else else
-- enable/disable outdoor mode unconditionally on new installs -- enable/disable outdoor mode unconditionally on new installs
outdoor = config outdoor = config

View File

@ -26,7 +26,10 @@ end
function M.is_outdoor_device() function M.is_outdoor_device()
if M.match('ar71xx', 'generic', { if M.match('ar71xx', 'generic', {
'bullet-m', 'bullet-m',
'cpe210',
'cpe510', 'cpe510',
'wbs210',
'wbs510',
'lbe-m5', 'lbe-m5',
'loco-m-xw', 'loco-m-xw',
'nanostation-m', 'nanostation-m',
@ -35,6 +38,7 @@ function M.is_outdoor_device()
'rocket-m-ti', 'rocket-m-ti',
'rocket-m-xw', 'rocket-m-xw',
'unifi-outdoor', 'unifi-outdoor',
'unifi-outdoor-plus',
}) then }) then
return true return true
@ -46,7 +50,10 @@ function M.is_outdoor_device()
M.get_model() == 'Ubiquiti UniFi-AC-MESH-PRO' then M.get_model() == 'Ubiquiti UniFi-AC-MESH-PRO' then
return true return true
elseif M.match('ath79', 'generic', {'devolo,dvl1750x'}) then elseif M.match('ath79', 'generic', {
'devolo,dvl1750x',
'tplink,cpe220-v3',
}) then
return true return true
elseif M.match('ipq40xx', 'generic', {'engenius,ens620ext'}) then elseif M.match('ipq40xx', 'generic', {'engenius,ens620ext'}) then
@ -66,24 +73,36 @@ function M.device_supports_wpa3()
end end
function M.device_supports_mfp(uci) function M.device_supports_mfp(uci)
local idx = 0
local supports_mfp = true local supports_mfp = true
if not M.device_supports_wpa3() then if not M.device_supports_wpa3() then
return false return false
end end
uci:foreach('wireless', 'wifi-device', function() uci:foreach('wireless', 'wifi-device', function(radio)
local phypath = '/sys/kernel/debug/ieee80211/phy' .. idx .. '/' local phy = util.find_phy(radio)
local phypath = '/sys/kernel/debug/ieee80211/' .. phy .. '/'
if not util.file_contains_line(phypath .. 'hwflags', 'MFP_CAPABLE') then if not util.file_contains_line(phypath .. 'hwflags', 'MFP_CAPABLE') then
supports_mfp = false supports_mfp = false
return false
end end
idx = idx + 1
end) end)
return supports_mfp return supports_mfp
end end
function M.device_uses_11a(uci)
local ret = false
uci:foreach('wireless', 'wifi-device', function(radio)
if radio.hwmode == '11a' or radio.hwmode == '11na' then
ret = true
return false
end
end)
return ret
end
return M return M

View File

@ -8,22 +8,15 @@ if sysconfig.setup_ifname then
os.exit(0) os.exit(0)
end end
if platform.match('ar71xx', 'generic', { if platform.is_outdoor_device() or
'cpe210', platform.match('ar71xx', 'generic', {
'cpe510', 'airgateway',
'wbs210', 'uap-pro',
'wbs510', 'unifiac-pro'
'airgateway', }) or
'nanostation-m', platform.match('ar71xx', 'mikrotik')
'nanostation-m-xw', then
'unifi-outdoor-plus', sysconfig.setup_ifname = sysconfig.wan_ifname or sysconfig.lan_ifname
'uap-pro',
'unifiac-pro'
}) or platform.match('ar71xx', 'mikrotik') then
sysconfig.setup_ifname = sysconfig.config_ifname or sysconfig.wan_ifname or sysconfig.lan_ifname
else else
sysconfig.setup_ifname = sysconfig.config_ifname or sysconfig.lan_ifname or sysconfig.wan_ifname sysconfig.setup_ifname = sysconfig.lan_ifname or sysconfig.wan_ifname
end end
-- Remove the old sysconfig setting
sysconfig.config_ifname = nil