aboutsummaryrefslogtreecommitdiffstats
path: root/package/firewall/files/20-firewall
diff options
context:
space:
mode:
authorJohn Crispin <blogic@openwrt.org>2008-08-11 22:27:36 +0000
committerJohn Crispin <blogic@openwrt.org>2008-08-11 22:27:36 +0000
commit4b924f0d7b32978e5161a716acc032ad68007e72 (patch)
treec66c8d821b4c251a41ef47fdd7f5237766662b57 /package/firewall/files/20-firewall
parentecc88154322e2996c0e6f9734b8224c94d5b070a (diff)
downloadmaster-187ad058-4b924f0d7b32978e5161a716acc032ad68007e72.tar.gz
master-187ad058-4b924f0d7b32978e5161a716acc032ad68007e72.tar.bz2
master-187ad058-4b924f0d7b32978e5161a716acc032ad68007e72.zip
uci firewall
- make uci firewall default and remove old code - fix up dependencies git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12284 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/firewall/files/20-firewall')
-rw-r--r--package/firewall/files/20-firewall39
1 files changed, 39 insertions, 0 deletions
diff --git a/package/firewall/files/20-firewall b/package/firewall/files/20-firewall
new file mode 100644
index 0000000000..126fb9bad0
--- /dev/null
+++ b/package/firewall/files/20-firewall
@@ -0,0 +1,39 @@
+. /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" ] && network=$name
+ 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
+
+[ -z "$ZONE" ] && exit 0
+
+[ 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
+}