libs/core: add more heuristics to infer device name from switch name
This commit is contained in:
parent
ce024e350a
commit
c7a95b6683
1 changed files with 22 additions and 3 deletions
|
@ -20,6 +20,7 @@ limitations under the License.
|
||||||
local type, next, pairs, ipairs, loadfile, table, tonumber, math, i18n
|
local type, next, pairs, ipairs, loadfile, table, tonumber, math, i18n
|
||||||
= type, next, pairs, ipairs, loadfile, table, tonumber, math, luci.i18n
|
= type, next, pairs, ipairs, loadfile, table, tonumber, math, luci.i18n
|
||||||
|
|
||||||
|
local error = error
|
||||||
local require = require
|
local require = require
|
||||||
|
|
||||||
local nxo = require "nixio"
|
local nxo = require "nixio"
|
||||||
|
@ -449,6 +450,7 @@ function get_interfaces(self)
|
||||||
local ifaces = { }
|
local ifaces = { }
|
||||||
local seen = { }
|
local seen = { }
|
||||||
local nfs = { }
|
local nfs = { }
|
||||||
|
local baseof = { }
|
||||||
|
|
||||||
-- find normal interfaces
|
-- find normal interfaces
|
||||||
_uci_real:foreach("network", "interface",
|
_uci_real:foreach("network", "interface",
|
||||||
|
@ -470,9 +472,26 @@ function get_interfaces(self)
|
||||||
-- find vlan interfaces
|
-- find vlan interfaces
|
||||||
_uci_real:foreach("network", "switch_vlan",
|
_uci_real:foreach("network", "switch_vlan",
|
||||||
function(s)
|
function(s)
|
||||||
local base = s.device or "-"
|
if not s.device then
|
||||||
if not base:match("^eth%d") then
|
return
|
||||||
base = "eth0"
|
end
|
||||||
|
|
||||||
|
local base = baseof[s.device]
|
||||||
|
if not base then
|
||||||
|
if not s.device:match("^eth%d") then
|
||||||
|
local l
|
||||||
|
for l in utl.execi("swconfig dev %q help 2>/dev/null" % s.device) do
|
||||||
|
if not base then
|
||||||
|
base = l:match("^%w+: (%w+)")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not base or not base:match("^eth%d") then
|
||||||
|
base = "eth0"
|
||||||
|
end
|
||||||
|
else
|
||||||
|
base = s.device
|
||||||
|
end
|
||||||
|
baseof[s.device] = base
|
||||||
end
|
end
|
||||||
|
|
||||||
local vid = tonumber(s.vid or s.vlan)
|
local vid = tonumber(s.vid or s.vlan)
|
||||||
|
|
Loading…
Reference in a new issue