aboutsummaryrefslogtreecommitdiffstats
path: root/package/firewall/files/new/20-firewall
diff options
context:
space:
mode:
authorJohn Crispin <blogic@openwrt.org>2008-08-04 11:51:58 +0000
committerJohn Crispin <blogic@openwrt.org>2008-08-04 11:51:58 +0000
commit275038cae7e3e363c1e0062d0639749178659a8b (patch)
tree366e67ab18afcef24dc1dfd1f5fb39eb7484275f /package/firewall/files/new/20-firewall
parent8ffee3956dc468134bb14f47a7c82f248b9671ff (diff)
downloadupstream-275038cae7e3e363c1e0062d0639749178659a8b.tar.gz
upstream-275038cae7e3e363c1e0062d0639749178659a8b.tar.bz2
upstream-275038cae7e3e363c1e0062d0639749178659a8b.zip
adds a new uci firewall
- iptbales and netfilter packages need to be rewrapped when we switch to this firewall as default - there are some examples in the file /etc/config/firewall - iptables-save/restore are still missing - hotplug takes care of adding/removing netdevs during runtime - misisng features ? wishes ? let me know ... git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12089 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/firewall/files/new/20-firewall')
-rw-r--r--package/firewall/files/new/20-firewall41
1 files changed, 41 insertions, 0 deletions
diff --git a/package/firewall/files/new/20-firewall b/package/firewall/files/new/20-firewall
new file mode 100644
index 0000000000..a8ce17c976
--- /dev/null
+++ b/package/firewall/files/new/20-firewall
@@ -0,0 +1,41 @@
+. /lib/firewall/uci_firewall.sh
+unset ZONE
+config_get ifname $INTERFACE ifname
+INTERFACE=$ifname
+[ "$INTERFACE" == "lo" ] && exit 0
+load_zones() {
+ local name
+ local network
+ config_get name $1 name
+ config_get network $1 network
+ [ -z "$network" ] && return
+ for n in $network; do
+ local ifname
+ config_get ifname $n ifname
+ list_contains ifname $INTERFACE && {
+ list_contains ZONE $name || ZONE="$ZONE $name"
+ }
+ done
+}
+
+config_foreach load_zones zone
+
+IFACE=$(find_config $INTERFACE)
+[ -n "$IFACE" ] &&
+ list_contains ZONE $IFACE || ZONE="$ZONE $IFACE"
+
+[ ifup = "$ACTION" ] && {
+ for z in $ZONE; do
+ local loaded
+ config_get loaded core loaded
+ [ -n "$loaded" ] && addif $INTERFACE $z
+ done
+}
+
+[ ifdown = "$ACTION" ] && {
+ for z in $ZONE; do
+ local up
+ config_get up $z up
+ [ "$up" == "1" ] && delif $INTERFACE $z
+ done
+}