aboutsummaryrefslogtreecommitdiffstats
path: root/package/firewall/files/20-firewall
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2008-08-11 22:27:36 +0000
committerJohn Crispin <john@openwrt.org>2008-08-11 22:27:36 +0000
commit5627667654db791fc105117c8d5717caacbaa1b9 (patch)
tree45d8346e7513ce5adcc570f6fc31e09586ffb9c9 /package/firewall/files/20-firewall
parent4b5488ebfa23f854fc087a6ae64962905683be7f (diff)
downloadupstream-5627667654db791fc105117c8d5717caacbaa1b9.tar.gz
upstream-5627667654db791fc105117c8d5717caacbaa1b9.tar.bz2
upstream-5627667654db791fc105117c8d5717caacbaa1b9.zip
uci firewall - make uci firewall default and remove old code - fix up dependencies
SVN-Revision: 12284
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
+}