summaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
space:
mode:
authorjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-09-15 01:53:36 +0000
committerjow <jow@3c298f89-4303-0410-b956-a3cf2f4a3e73>2010-09-15 01:53:36 +0000
commit5986668ca9d41f7b6aee1c9890345853e157aa6b (patch)
tree9ca7e640e1f3cd10f04dec23e3c5669f1395973a /package
parentac32f8a93b20dbb922568f7d8f3fc9195de708a6 (diff)
[package] firewall: run ifdown hotplug events synchronized, fixes a racecondition on "ifup iface" when ifdown and ifup events are delivered with a small dealy
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@23064 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
-rw-r--r--package/firewall/Makefile2
-rw-r--r--package/firewall/files/firewall.hotplug2
-rw-r--r--package/firewall/files/lib/core.sh14
3 files changed, 8 insertions, 10 deletions
diff --git a/package/firewall/Makefile b/package/firewall/Makefile
index 205f2098c..8cf22e834 100644
--- a/package/firewall/Makefile
+++ b/package/firewall/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=firewall
PKG_VERSION:=2
-PKG_RELEASE:=14
+PKG_RELEASE:=15
include $(INCLUDE_DIR)/package.mk
diff --git a/package/firewall/files/firewall.hotplug b/package/firewall/files/firewall.hotplug
index ac8469524..720b34cc8 100644
--- a/package/firewall/files/firewall.hotplug
+++ b/package/firewall/files/firewall.hotplug
@@ -17,6 +17,6 @@ case "$ACTION" in
fw_configure_interface "$INTERFACE" add "$DEVICE" &
;;
ifdown)
- fw_configure_interface "$INTERFACE" del "$DEVICE" &
+ fw_configure_interface "$INTERFACE" del "$DEVICE"
;;
esac
diff --git a/package/firewall/files/lib/core.sh b/package/firewall/files/lib/core.sh
index 2178e0505..c350e8f0f 100644
--- a/package/firewall/files/lib/core.sh
+++ b/package/firewall/files/lib/core.sh
@@ -58,16 +58,14 @@ fw_stop() {
fw_callback pre stop
- local old_zones z
- config_get old_zones core zones
- for z in $old_zones; do
- local old_networks n i
- config_get old_networks core "${z}_networks"
- for n in $old_networks; do
+ local z n i
+ config_get z core zones
+ for z in $z; do
+ config_get n core "${z}_networks"
+ for n in $n; do
config_get i core "${n}_ifname"
[ -n "$i" ] && env -i ACTION=remove ZONE="$z" \
- INTERFACE="$n" DEVICE="$i" \
- /sbin/hotplug-call firewall
+ INTERFACE="$n" DEVICE="$i" /sbin/hotplug-call firewall
done
done