aboutsummaryrefslogtreecommitdiff
path: root/net/mwan3/files/etc/hotplug.d
diff options
context:
space:
mode:
authorAaron Goodman <aaronjg@stanford.edu>2020-08-12 20:38:56 -0400
committerAaron Goodman <aaronjg@stanford.edu>2020-10-16 09:54:48 -0400
commit566293d228a48d21a04ecbc815a7ae97e26eb319 (patch)
treea1ea2f22aa059b7f9b4b0e2dc6322da8b19d2357 /net/mwan3/files/etc/hotplug.d
parent5faa99f3b850c40669f231b45cca7bb7273c3083 (diff)
mwan3: use procd for mwan3rtmon and mwan3track
start all mwan3mon and mwan3track instances on mwan3 start if an interface is down when mwan3track starts, it waits for a signal from the hotplug script to start procd can then handle stopping all of the scripts when mwan3 is halted Signed-off-by: Aaron Goodman <aaronjg@stanford.edu>
Diffstat (limited to 'net/mwan3/files/etc/hotplug.d')
-rw-r--r--net/mwan3/files/etc/hotplug.d/iface/15-mwan360
-rw-r--r--net/mwan3/files/etc/hotplug.d/iface/16-mwan3-user14
2 files changed, 34 insertions, 40 deletions
diff --git a/net/mwan3/files/etc/hotplug.d/iface/15-mwan3 b/net/mwan3/files/etc/hotplug.d/iface/15-mwan3
index 196b03257..320e7f787 100644
--- a/net/mwan3/files/etc/hotplug.d/iface/15-mwan3
+++ b/net/mwan3/files/etc/hotplug.d/iface/15-mwan3
@@ -9,6 +9,8 @@
SCRIPTNAME="mwan3-hotplug"
[ "$ACTION" = "ifup" ] || [ "$ACTION" = "ifdown" ] || [ "$ACTION" = "connected" ] || [ "$ACTION" = "disconnected" ] || exit 1
[ -n "$INTERFACE" ] || exit 2
+[ "$FIRSTCONNECT" = "1" ] || [ "$MWAN3_SHUTDOWN" = "1" ] && exit 0
+
if { [ "$ACTION" = "ifup" ] || [ "$ACTION" = "connected" ] ; } && [ -z "$DEVICE" ]; then
LOG notice "$ACTION called on $INTERFACE with no device set"
exit 3
@@ -17,10 +19,9 @@ fi
[ "$MWAN3_STARTUP" = 1 ] || mwan3_lock "$ACTION" "$INTERFACE"
config_load mwan3
-config_get_bool enabled globals 'enabled' '0'
-[ "${enabled}" -gt 0 ] || {
+/etc/init.d/mwan3 running || {
[ "$MWAN3_STARTUP" = 1 ] || mwan3_unlock "$ACTION" "$INTERFACE"
- LOG notice "mwan3 hotplug on $INTERFACE not called because globally disabled"
+ LOG notice "mwan3 hotplug $ACTION on $INTERFACE not called because globally disabled"
mwan3_flush_conntrack "$INTERFACE" "$ACTION"
exit 0
}
@@ -41,7 +42,6 @@ if [ "$MWAN3_STARTUP" != 1 ] && [ "$ACTION" = "ifup" ]; then
mwan3_set_user_iface_rules $INTERFACE $DEVICE
fi
-config_get initial_state $INTERFACE initial_state "online"
config_get_bool enabled $INTERFACE 'enabled' '0'
[ "${enabled}" -eq 1 ] || {
[ "$MWAN3_STARTUP" = 1 ] || mwan3_unlock "$ACTION" "$INTERFACE"
@@ -49,53 +49,47 @@ config_get_bool enabled $INTERFACE 'enabled' '0'
exit 0
}
-trackpid=$(pgrep -f "mwan3track $INTERFACE ")
-
+config_get initial_state $INTERFACE initial_state "online"
if [ "$initial_state" = "offline" ]; then
status=$(cat $MWAN3TRACK_STATUS_DIR/$INTERFACE/STATUS 2>/dev/null || echo unknown)
+ [ "$status" = "online" ] || status=offline
else
status=online
fi
-[ -z "$TRUE_INTERFACE" ] && mwan3_get_true_iface TRUE_INTERFACE $INTERFACE
-
-binary_status=$status
-[ "$binary_status" = "online" ] || binary_status=offline
+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
- ifup|connected)
+ connected)
+ mwan3_set_iface_hotplug_state $INTERFACE "online"
+ mwan3_set_policies_iptables
+ ;;
+ ifup)
mwan3_create_iface_iptables $INTERFACE $DEVICE
mwan3_create_iface_rules $INTERFACE $DEVICE
- [ "$MWAN3_STARTUP" != 1 ] && mwan3_create_iface_route $INTERFACE $DEVICE
- mwan3_set_iface_hotplug_state $INTERFACE "$binary_status"
-
- mwan3_get_src_ip src_ip "$TRUE_INTERFACE"
- if [ -n "${trackpid}" ]; then
- device_pid=$(pgrep -f "mwan3track $INTERFACE $DEVICE ")
- if [ "$device_pid" = "$trackpid" ]; then
- [ "$ACTION" = ifup ] && kill -USR2 "$trackpid"
- else
- mwan3_track $INTERFACE $DEVICE "$binary_status" "$src_ip"
- LOG notice "Restarted tracker [$!] on interface $INTERFACE (${DEVICE:-unknown})"
- fi
- else
- mwan3_track $INTERFACE $DEVICE "$binary_status" "$src_ip"
- LOG notice "Started tracker [$!] on interface $INTERFACE (${DEVICE:-unknown})"
+ mwan3_set_iface_hotplug_state $INTERFACE "$status"
+ if [ "$MWAN3_STARTUP" != 1 ]; then
+ mwan3_create_iface_route $INTERFACE $DEVICE
+ [ "$status" = "online" ] && mwan3_set_policies_iptables
fi
- [ "$MWAN3_STARTUP" != 1 ] && [ "$binary_status" == "online" ] && mwan3_set_policies_iptables
-
- ;;
- ifdown|disconnected)
+ [ "$ACTION" = ifup ] && procd_running mwan3 "track_$INTERFACE" && procd_send_signal mwan3 "track_$INTERFACE" USR2
+ ;;
+ disconnected)
+ mwan3_set_iface_hotplug_state $INTERFACE "offline"
+ mwan3_set_policies_iptables
+ ;;
+ ifdown)
mwan3_set_iface_hotplug_state $INTERFACE "offline"
mwan3_delete_iface_ipset_entries $INTERFACE
mwan3_delete_iface_rules $INTERFACE
mwan3_delete_iface_route $INTERFACE
mwan3_delete_iface_iptables $INTERFACE
- if [ "$ACTION" = "ifdown" ]; then
- [ -n "$trackpid" ] && kill -USR1 "$trackpid"
- fi
+ procd_running mwan3 "track_$INTERFACE" && procd_send_signal mwan3 "track_$INTERFACE" USR1
mwan3_set_policies_iptables
;;
esac
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 2ec5c79a3..698fe0909 100644
--- a/net/mwan3/files/etc/hotplug.d/iface/16-mwan3-user
+++ b/net/mwan3/files/etc/hotplug.d/iface/16-mwan3-user
@@ -4,22 +4,22 @@
. /lib/functions.sh
. /lib/mwan3/mwan3.sh
- [ "$MWAN3_STARTUP" = 1 ] || mwan3_lock "$ACTION" "$DEVICE-user"
+ [ "$MWAN3_SHUTDOWN" != 1 ] && mwan3_lock "$ACTION" "$DEVICE-user"
- config_load mwan3
- config_get_bool enabled globals 'enabled' '0'
- [ "${enabled}" -gt 0 ] || {
- [ "$MWAN3_STARTUP" = 1 ] || mwan3_unlock "$ACTION" "$DEVICE-user"
+ [ "$MWAN3_SHUTDOWN" != 1 ] && ! /etc/init.d/mwan3 running && {
+ mwan3_unlock "$ACTION" "$DEVICE-user"
exit 0
}
+ config_load mwan3
+
config_get_bool enabled "$INTERFACE" enabled 0
[ "${enabled}" -eq 1 ] || {
- [ "$MWAN3_STARTUP" = 1 ] || mwan3_unlock "$ACTION" "$DEVICE-user"
+ [ "$MWAN3_SHUTDOWN" != 1 ] && mwan3_unlock "$ACTION" "$DEVICE-user"
exit 0
}
- [ "$MWAN3_STARTUP" = 1 ] || mwan3_unlock "$ACTION" "$DEVICE-user"
+ [ "$MWAN3_SHUTDOWN" != 1 ] && mwan3_unlock "$ACTION" "$DEVICE-user"
env -i ACTION="$ACTION" INTERFACE="$INTERFACE" DEVICE="$DEVICE" \
/bin/sh /etc/mwan3.user