diff --git a/net/mwan3/Makefile b/net/mwan3/Makefile index ee1565e9a..5ad3e7e3f 100644 --- a/net/mwan3/Makefile +++ b/net/mwan3/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mwan3 -PKG_VERSION:=2.7.9 +PKG_VERSION:=2.7.10 PKG_RELEASE:=1 PKG_MAINTAINER:=Florian Eckert PKG_LICENSE:=GPLv2 diff --git a/net/mwan3/files/etc/hotplug.d/iface/15-mwan3 b/net/mwan3/files/etc/hotplug.d/iface/15-mwan3 index 55d0aa20d..65b99c1bd 100644 --- a/net/mwan3/files/etc/hotplug.d/iface/15-mwan3 +++ b/net/mwan3/files/etc/hotplug.d/iface/15-mwan3 @@ -16,11 +16,11 @@ config_load mwan3 config_get_bool enabled globals 'enabled' '0' [ ${enabled} -gt 0 ] || exit 0 -mwan3_lock +mwan3_lock "$ACTION" "$INTERFACE" mwan3_init mwan3_set_connected_iptables mwan3_set_custom_ipset -mwan3_unlock +mwan3_unlock "$ACTION" "$INTERFACE" config_get enabled $INTERFACE enabled 0 config_get initial_state $INTERFACE initial_state "online" @@ -58,7 +58,7 @@ else running=1 fi -mwan3_lock +mwan3_lock "$ACTION" "$INTERFACE" $LOG notice "Execute "$ACTION" event on interface $INTERFACE (${DEVICE:-unknown})" case "$ACTION" in @@ -91,6 +91,6 @@ case "$ACTION" in ;; esac -mwan3_unlock +mwan3_unlock "$ACTION" "$INTERFACE" exit 0 diff --git a/net/mwan3/files/etc/hotplug.d/iface/16-mwan3 b/net/mwan3/files/etc/hotplug.d/iface/16-mwan3 index d2d148baf..15a8ae5f1 100644 --- a/net/mwan3/files/etc/hotplug.d/iface/16-mwan3 +++ b/net/mwan3/files/etc/hotplug.d/iface/16-mwan3 @@ -9,9 +9,9 @@ config_get_bool enabled globals 'enabled' '0' [ ${enabled} -gt 0 ] || exit 0 if [ "$ACTION" == "ifup" ]; then - mwan3_lock + mwan3_lock "$ACTION" "mwan3rtmon" mwan3_rtmon - mwan3_unlock + mwan3_unlock "$ACTION" "mwan3rtmon" fi exit 0 diff --git a/net/mwan3/files/lib/mwan3/mwan3.sh b/net/mwan3/files/lib/mwan3/mwan3.sh index d28ab28e2..a3343739b 100644 --- a/net/mwan3/files/lib/mwan3/mwan3.sh +++ b/net/mwan3/files/lib/mwan3/mwan3.sh @@ -163,9 +163,11 @@ mwan3_init() mwan3_lock() { lock /var/run/mwan3.lock +# $LOG debug "$1 $2 (lock)" } mwan3_unlock() { +# $LOG debug "$1 $2 (unlock)" lock -u /var/run/mwan3.lock } diff --git a/net/mwan3/files/usr/sbin/mwan3 b/net/mwan3/files/usr/sbin/mwan3 index 6aee3db0c..ef8b851f2 100755 --- a/net/mwan3/files/usr/sbin/mwan3 +++ b/net/mwan3/files/usr/sbin/mwan3 @@ -136,6 +136,8 @@ stop() { local ipset route rule table IP IPT pid + mwan3_lock "command" "mwan3" + for pid in $(pgrep -f "mwan3rtmon"); do kill -TERM "$pid" > /dev/null 2>&1 sleep 1 @@ -184,6 +186,8 @@ stop() $IPS -q destroy $ipset done + mwan3_unlock "command" "mwan3" + mwan3_lock_clean rm -rf $MWAN3_STATUS_DIR $MWAN3TRACK_STATUS_DIR diff --git a/net/mwan3/files/usr/sbin/mwan3rtmon b/net/mwan3/files/usr/sbin/mwan3rtmon index afdc96d1a..f68c298cd 100755 --- a/net/mwan3/files/usr/sbin/mwan3rtmon +++ b/net/mwan3/files/usr/sbin/mwan3rtmon @@ -23,11 +23,16 @@ main() { config_get rtmon_interval globals rtmon_interval '5' sleep 3 - while mwan3_rtmon_ipv4 || mwan3_rtmon_ipv6; do + while true; do + mwan3_lock "service" "mwan3rtmon" + [ mwan3_remon_ipv4 = "1" ] || \ + [ mwan3_rtmon_ipv6 = "1" ] && break + mwan3_unlock "service" "mwan3rtmon" [ "$rtmon_interval" = "0" ] && break sleep "$rtmon_interval" & wait done + mwan3_unlock "service" "mwan3rtmon" } main "$@"