diff --git a/package/network/config/firewall/Makefile b/package/network/config/firewall/Makefile index 7f8c655c5..6e99960ec 100644 --- a/package/network/config/firewall/Makefile +++ b/package/network/config/firewall/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=firewall -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL=$(PROJECT_GIT)/project/firewall3.git diff --git a/package/network/config/firewall/files/firewall.init b/package/network/config/firewall/files/firewall.init index bcec949af..2d641d049 100755 --- a/package/network/config/firewall/files/firewall.init +++ b/package/network/config/firewall/files/firewall.init @@ -4,6 +4,17 @@ START=19 USE_PROCD=1 QUIET="" +LOCK_FILE="/var/lock/procd_firewall.lock" +set_lock() { + exec 1000>"$LOCK_FILE" + flock -xn 1000 +} + +unset_lock() { + flock -u 1000 + rm -rf "$LOCK_FILE" +} + validate_firewall_redirect() { uci_validate_section firewall redirect "${1}" \ @@ -30,28 +41,39 @@ validate_firewall_rule() service_triggers() { procd_add_reload_trigger firewall + set_lock procd_open_validate validate_firewall_redirect validate_firewall_rule procd_close_validate + unset_lock } restart() { + unset_lock + set_lock fw3 restart + unset_lock } start_service() { + set_lock fw3 ${QUIET} start + unset_lock } stop_service() { fw3 flush + unset_lock } reload_service() { + unset_lock + set_lock reload_config firewall fw3 reload + unset_lock } boot() {