applications/luci-splash: Fix a crash when removing whitelisted clients which could caused deadlocks
This commit is contained in:
parent
e966cfea23
commit
4ae0d30edd
1 changed files with 15 additions and 5 deletions
|
@ -411,16 +411,24 @@ function remove_whitelist(mac)
|
||||||
end
|
end
|
||||||
|
|
||||||
function remove_whitelist_tc(mac)
|
function remove_whitelist_tc(mac)
|
||||||
if debug then
|
|
||||||
print("Removing whitelist filters for " .. mac)
|
|
||||||
end
|
|
||||||
uci:foreach("luci_splash", "iface", function(s)
|
uci:foreach("luci_splash", "iface", function(s)
|
||||||
local device = get_physdev(s['.name'])
|
local device = get_physdev(s['.name'])
|
||||||
if device and device ~= "" then
|
if device and device ~= "" then
|
||||||
|
if debug then
|
||||||
|
print("Removing whitelist filters for %s interface %s." % {mac, device})
|
||||||
|
end
|
||||||
local handle = get_filter_handle('ffff:', 'src', device, mac)
|
local handle = get_filter_handle('ffff:', 'src', device, mac)
|
||||||
exec('tc filter del dev "%s" parent ffff: protocol ip prio 1 handle %s u32' % { device, handle })
|
if handle then
|
||||||
|
exec('tc filter del dev "%s" parent ffff: protocol ip prio 1 handle %s u32' % { device, handle })
|
||||||
|
else
|
||||||
|
print('Warning! Could not get a handle for %s parent :ffff on interface %s' % { mac, device })
|
||||||
|
end
|
||||||
local handle = get_filter_handle('1:', 'dest', device, mac)
|
local handle = get_filter_handle('1:', 'dest', device, mac)
|
||||||
exec('tc filter del dev "%s" parent 1:0 protocol ip prio 1 handle %s u32' % { device, handle })
|
if handle then
|
||||||
|
exec('tc filter del dev "%s" parent 1:0 protocol ip prio 1 handle %s u32' % { device, handle })
|
||||||
|
else
|
||||||
|
print('Warning! Could not get a handle for %s parent 1:0 on interface %s' % { mac, device })
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
@ -493,6 +501,8 @@ function remove_lease_rule(mac, ipaddr, device, limit_up, limit_down)
|
||||||
local handle = get_filter_handle('ffff:', 'src', device, mac)
|
local handle = get_filter_handle('ffff:', 'src', device, mac)
|
||||||
if handle then
|
if handle then
|
||||||
exec('tc filter del dev "%s" parent ffff: protocol ip prio 2 handle %s u32 police rate %skbit mtu 6k burst 6k drop' % {device, handle, limit_up})
|
exec('tc filter del dev "%s" parent ffff: protocol ip prio 2 handle %s u32 police rate %skbit mtu 6k burst 6k drop' % {device, handle, limit_up})
|
||||||
|
else
|
||||||
|
print('Warning! Could not get a handle for %s parent :ffff on interface %s' % { mac, device })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue