diff options
author | John Crispin <john@openwrt.org> | 2008-08-11 22:27:36 +0000 |
---|---|---|
committer | John Crispin <john@openwrt.org> | 2008-08-11 22:27:36 +0000 |
commit | 5627667654db791fc105117c8d5717caacbaa1b9 (patch) | |
tree | 45d8346e7513ce5adcc570f6fc31e09586ffb9c9 /package/firewall/files/20-firewall | |
parent | 4b5488ebfa23f854fc087a6ae64962905683be7f (diff) | |
download | upstream-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-firewall | 39 |
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 +} |