mwan3_delete_iface_iptables $INTERFACE
mwan3_delete_iface_route $INTERFACE
mwan3_delete_iface_ipset_entries $INTERFACE
+ mwan3_track_signal $INTERFACE $DEVICE
mwan3_set_policies_iptables
mwan3_set_user_rules
mwan3_flush_conntrack $INTERFACE $DEVICE "ifdown"
fi
}
+mwan3_track_signal()
+{
+ local pid status
+
+ if [ -f "/var/run/mwan3track-${1}.pid" ]; then
+ pid="$(cat "/var/run/mwan3track-${1}.pid")"
+ status="$(pgrep -f mwan3track | grep "${pid}")"
+ if [ "${status}" != "" ]; then
+ kill -USR1 "${pid}"
+ else
+ $LOG warn "Unable to send signal USR1 to mwan3track on interface $1 with pid ${pid}"
+ fi
+ else
+ $LOG warn "Unable to find \"/var/run/mwan3track-${1}.pid\" file for mwan3track on interface $1"
+ fi
+}
+
mwan3_set_policy()
{
local iface_count id iface family metric probability weight
LOG="/usr/bin/logger -t $(basename "$0")[$$] -p"
INTERFACE=""
+DEVICE=""
+
+IFDOWN_EVENT=0
clean_up() {
$LOG notice "Stopping mwan3track for interface \"${INTERFACE}\""
exit 0
}
+if_down() {
+ $LOG info "Detect ifdown event on interface ${INTERFACE} (${DEVICE})"
+ IFDOWN_EVENT=1
+}
+
main() {
local reliability count timeout interval failure_interval
local recovery_interval down up size
[ -z "$3" ] && echo "Error: should not be started manually" && exit 0
INTERFACE=$1
+ DEVICE=$2
echo "$$" > /var/run/mwan3track-$1.pid
mkdir -p /var/run/mwan3track/$1
trap clean_up SIGINT SIGTERM
+ trap if_down SIGUSR1
config_load mwan3
config_get reliability $1 reliability 1
host_up_count=0
sleep $sleep_time
+
+ if [ "${IFDOWN_EVENT}" -eq 1 ]; then
+ score=0
+ echo "offline" > /var/run/mwan3track/$1/STATUS
+ IFDOWN_EVENT=0
+ fi
done
}