luci-mod-admin-network: fix VLAN "add" button for empty switches
Fixes OpenWrt FS#2270.
Ref: https://bugs.openwrt.org/index.php?do=details&task_id=2270
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 6b7afabcdd
)
This commit is contained in:
parent
b99e77d5c3
commit
84692e5bf6
1 changed files with 27 additions and 2 deletions
|
@ -42,6 +42,8 @@ local update_interfaces = function(old_ifname, new_ifname)
|
|||
end
|
||||
end
|
||||
|
||||
local vlan_already_created
|
||||
|
||||
m.uci:foreach("network", "switch",
|
||||
function(x)
|
||||
local sid = x['.name']
|
||||
|
@ -200,8 +202,29 @@ m.uci:foreach("network", "switch",
|
|||
|
||||
-- When creating a new vlan, preset it with the highest found vid + 1.
|
||||
s.create = function(self, section, origin)
|
||||
-- Filter by switch
|
||||
if m:get(origin, "device") ~= switch_name then
|
||||
-- VLAN has already been created for another switch
|
||||
if vlan_already_created then
|
||||
return
|
||||
|
||||
-- VLAN add button was pressed in an empty VLAN section so only
|
||||
-- accept the create event if our switch is without existing VLANs
|
||||
elseif origin == "" then
|
||||
local is_empty_switch = true
|
||||
|
||||
m.uci:foreach("network", "switch_vlan",
|
||||
function(s)
|
||||
if s.device == switch_name then
|
||||
is_empty_switch = false
|
||||
return false
|
||||
end
|
||||
end)
|
||||
|
||||
if not is_empty_switch then
|
||||
return
|
||||
end
|
||||
|
||||
-- VLAN was created for another switch
|
||||
elseif m:get(origin, "device") ~= switch_name then
|
||||
return
|
||||
end
|
||||
|
||||
|
@ -227,6 +250,8 @@ m.uci:foreach("network", "switch",
|
|||
m:set(sid, has_vlan4k, max_id + 1)
|
||||
end
|
||||
|
||||
vlan_already_created = true
|
||||
|
||||
return sid
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue