applications/luci-splash: Fix two problems with whitelisting clients
authorManuel Munz <freifunk@somakoma.de>
Sun, 13 Oct 2013 22:40:09 +0000 (22:40 +0000)
committerManuel Munz <freifunk@somakoma.de>
Sun, 13 Oct 2013 22:40:09 +0000 (22:40 +0000)
applications/luci-splash/root/etc/init.d/luci_splash
applications/luci-splash/root/usr/sbin/luci-splash

index 45c4d382ad899cd1e09860aaedc98927c146172c..feefabd81aaea87ea33e6c4d159a39c811eb5f87 100755 (executable)
@@ -114,7 +114,7 @@ whitelist_add() {
        config_get mac "$1" mac
        iface=$2
        $TC filter add dev "$iface" parent ffff: protocol ip prio 1 u32 match ether src $mac police pass
-       $TC filter add dev "$iface" parent 1:0 protocol ip prio 1 u32 match ether dst classid 1:1
+       $TC filter add dev "$iface" parent 1:0 protocol ip prio 1 u32 match ether dst $mac classid 1:1
 }
 
 
index 88f2250c5f476b879618ed8c58e7f39c374a516e..de5332330b2af50566784718bc6bd5ac238fa866 100755 (executable)
@@ -390,10 +390,12 @@ function remove_whitelist_tc(mac)
        end
         uci:foreach("luci_splash", "iface", function(s)
                local device = get_physdev(s['.name'])
-               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 })
-               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 device and device ~= "" then
+                       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 })
+                       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 })
+               end
         end)
 end
 
@@ -486,8 +488,10 @@ function add_whitelist_rule(mac)
        end
         uci:foreach("luci_splash", "iface", function(s)
                local device = get_physdev(s['.name'])
-               exec('tc filter add dev "%s" parent ffff: protocol ip prio 1 u32 match ether src %s police pass' % { device, mac })
-               exec('tc filter add dev "%s" parent 1:0 protocol ip prio 1 u32 match ether dst %s classid 1:1' % { device, mac })
+               if device and device ~= "" then
+                       exec('tc filter add dev "%s" parent ffff: protocol ip prio 1 u32 match ether src %s police pass' % { device, mac })
+                       exec('tc filter add dev "%s" parent 1:0 protocol ip prio 1 u32 match ether dst %s classid 1:1' % { device, mac })
+               end
         end)
 end