summaryrefslogtreecommitdiff
path: root/package/firewall/files/new/20-firewall
diff options
context:
space:
mode:
authorblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>2008-08-04 11:51:58 +0000
committerblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>2008-08-04 11:51:58 +0000
commit8e2cf077d0066a626bf3b90596acd941f430fe9e (patch)
tree366e67ab18afcef24dc1dfd1f5fb39eb7484275f /package/firewall/files/new/20-firewall
parentd738ce55876f392957ef8fd186fb486b92298d4d (diff)
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
+}