diff --git a/net/mwan3/files/etc/hotplug.d/iface/15-mwan3 b/net/mwan3/files/etc/hotplug.d/iface/15-mwan3 index 5c60128d4..5fe3e33e0 100644 --- a/net/mwan3/files/etc/hotplug.d/iface/15-mwan3 +++ b/net/mwan3/files/etc/hotplug.d/iface/15-mwan3 @@ -5,6 +5,10 @@ . /lib/mwan3/mwan3.sh . /lib/mwan3/common.sh +initscript=/etc/init.d/mwan3 +. /lib/functions/procd.sh + + SCRIPTNAME="mwan3-hotplug" [ "$ACTION" = "ifup" ] || [ "$ACTION" = "ifdown" ] || [ "$ACTION" = "connected" ] || [ "$ACTION" = "disconnected" ] || exit 1 [ -n "$INTERFACE" ] || exit 2 @@ -15,18 +19,17 @@ if { [ "$ACTION" = "ifup" ] || [ "$ACTION" = "connected" ] ; } && [ -z "$DEVICE" exit 3 fi -[ "$MWAN3_STARTUP" = 1 ] || mwan3_lock "$ACTION" "$INTERFACE" +[ "$MWAN3_STARTUP" = 1 ] || procd_lock config_load mwan3 /etc/init.d/mwan3 running || { - [ "$MWAN3_STARTUP" = 1 ] || mwan3_unlock "$ACTION" "$INTERFACE" + [ "$MWAN3_STARTUP" = 1 ] || procd_lock LOG notice "mwan3 hotplug $ACTION on $INTERFACE not called because globally disabled" mwan3_flush_conntrack "$INTERFACE" "$ACTION" exit 0 } $IPT4 -S mwan3_hook &>/dev/null || { - mwan3_unlock "$ACTION" "$INTERFACE" LOG warn "hotplug called on $INTERFACE before mwan3 has been set up" exit 0 } @@ -43,7 +46,6 @@ fi config_get_bool enabled $INTERFACE 'enabled' '0' [ "${enabled}" -eq 1 ] || { - [ "$MWAN3_STARTUP" = 1 ] || mwan3_unlock "$ACTION" "$INTERFACE" LOG notice "mwan3 hotplug on $INTERFACE not called because interface disabled" exit 0 } @@ -56,11 +58,6 @@ else status=online fi -if [ "$ACTION" = ifup ] || [ "$ACTION" = ifdown ]; then - initscript=/etc/init.d/mwan3 - . /lib/functions/procd.sh -fi - LOG notice "Execute $ACTION event on interface $INTERFACE (${DEVICE:-unknown})" case "$ACTION" in @@ -93,5 +90,4 @@ case "$ACTION" in mwan3_set_policies_iptables ;; esac -[ "$MWAN3_STARTUP" = 1 ] || mwan3_unlock "$ACTION" "$INTERFACE" exit 0 diff --git a/net/mwan3/files/etc/hotplug.d/iface/16-mwan3-user b/net/mwan3/files/etc/hotplug.d/iface/16-mwan3-user index 698fe0909..be857e8ff 100644 --- a/net/mwan3/files/etc/hotplug.d/iface/16-mwan3-user +++ b/net/mwan3/files/etc/hotplug.d/iface/16-mwan3-user @@ -3,11 +3,12 @@ [ -f "/etc/mwan3.user" ] && { . /lib/functions.sh . /lib/mwan3/mwan3.sh + initscript=/etc/init.d/mwan3 + . /lib/functions/procd.sh - [ "$MWAN3_SHUTDOWN" != 1 ] && mwan3_lock "$ACTION" "$DEVICE-user" + [ "$MWAN3_SHUTDOWN" != 1 ] && procd_lock [ "$MWAN3_SHUTDOWN" != 1 ] && ! /etc/init.d/mwan3 running && { - mwan3_unlock "$ACTION" "$DEVICE-user" exit 0 } @@ -19,8 +20,6 @@ exit 0 } - [ "$MWAN3_SHUTDOWN" != 1 ] && mwan3_unlock "$ACTION" "$DEVICE-user" - env -i ACTION="$ACTION" INTERFACE="$INTERFACE" DEVICE="$DEVICE" \ /bin/sh /etc/mwan3.user } diff --git a/net/mwan3/files/etc/init.d/mwan3 b/net/mwan3/files/etc/init.d/mwan3 index b7cf91eb1..bd1ea7260 100644 --- a/net/mwan3/files/etc/init.d/mwan3 +++ b/net/mwan3/files/etc/init.d/mwan3 @@ -31,8 +31,6 @@ start_service() { mwan3_init config_foreach start_tracker interface - mwan3_lock "command" "mwan3" - mwan3_update_iface_to_table mwan3_set_connected_ipset mwan3_set_custom_ipset @@ -43,8 +41,6 @@ start_service() { mwan3_set_policies_iptables mwan3_set_user_rules - mwan3_unlock "command" "mwan3" - procd_open_instance rtmon_ipv4 procd_set_param command /usr/sbin/mwan3rtmon ipv4 procd_set_param respawn @@ -61,8 +57,6 @@ start_service() { stop_service() { local ipset rule IP IPTR IPT family table tid - mwan3_lock "command" "mwan3" - config_load mwan3 mwan3_init config_foreach mwan3_interface_shutdown interface @@ -108,7 +102,6 @@ stop_service() { rm -rf $MWAN3_STATUS_DIR $MWAN3TRACK_STATUS_DIR - mwan3_unlock "command" "mwan3" } reload_service() { diff --git a/net/mwan3/files/lib/mwan3/mwan3.sh b/net/mwan3/files/lib/mwan3/mwan3.sh index e6e43ebe8..8a5fe6f0d 100644 --- a/net/mwan3/files/lib/mwan3/mwan3.sh +++ b/net/mwan3/files/lib/mwan3/mwan3.sh @@ -103,16 +103,6 @@ mwan3_count_one_bits() echo $count } -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 -} - mwan3_get_iface_id() { local _tmp diff --git a/net/mwan3/files/usr/sbin/mwan3rtmon b/net/mwan3/files/usr/sbin/mwan3rtmon index 569b4d172..6ece58125 100644 --- a/net/mwan3/files/usr/sbin/mwan3rtmon +++ b/net/mwan3/files/usr/sbin/mwan3rtmon @@ -159,16 +159,13 @@ main() IP="$IP4" fi mwan3_init - mwan3_lock "mwan3rtmon" "start" sh -c "echo \$\$; exec $IP monitor route" | { read -r monitor_pid trap_with_arg func_trap "$monitor_pid" SIGINT SIGTERM SIGKILL while IFS='' read -r line; do [ -z "${line##*table*}" ] && continue LOG debug "handling route update $family '$line'" - mwan3_lock "service" "mwan3rtmon" mwan3_rtmon_route_handle "$line" "$family" - mwan3_unlock "service" "mwan3rtmon" done } & child=$! @@ -176,7 +173,6 @@ main() trap_with_arg func_trap "$child" SIGINT SIGTERM SIGKILL mwan3_set_connected_${family} mwan3_add_all_routes ${family} - mwan3_unlock "mwan3rtmon" "start" kill -SIGCONT $child wait $! }