applications/luci-splash: Fix a crash when removing whitelisted clients which could caused deadlocks

This commit is contained in:
Manuel Munz 2013-10-16 23:51:43 +00:00
parent e966cfea23
commit 4ae0d30edd

View file

@ -411,16 +411,24 @@ function remove_whitelist(mac)
end
function remove_whitelist_tc(mac)
if debug then
print("Removing whitelist filters for " .. mac)
end
uci:foreach("luci_splash", "iface", function(s)
local device = get_physdev(s['.name'])
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)
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)
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
@ -493,6 +501,8 @@ function remove_lease_rule(mac, ipaddr, device, limit_up, limit_down)
local handle = get_filter_handle('ffff:', 'src', device, mac)
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})
else
print('Warning! Could not get a handle for %s parent :ffff on interface %s' % { mac, device })
end
end