#!/bin/sh
# vim: set noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 :

name=$0
basename="$(basename $0)"

_log() {
	logger -p daemon.info -t "${basename}" "$@"
}

_ping_server() {
	local host=$1
	ret=$(ping \
	    -w "$OMR_TRACKER_TIMEOUT" \
	    -c 1 \
	    -q \
	    "${host}" 2>/dev/null
	) && echo "$ret" | grep -sq " 0% packet loss" && {
		server_ping=true
	}
}

_ping_tunnel() {
	local name=$1
	config_get gateway $1 gateway
	config_get ifname $1 device
	[ -z "$ifname" ] && config_get ifname $1 ifname
	config_get disabled $1 disabled
	[ "$(echo $ifname | grep oip)" != "" ] && [ -n "$gateway" ] && [ "$disabled" != "1" ] && {
		_ping_server $gateway
	}
}

. /lib/functions.sh

timeout=${OMR_TRACKER_TIMEOUT:-5}
interval=${OMR_TRACKER_INTERVAL:-10}
intervaltries=${OMR_TRACKER_INTERVAL_TRIES:-2}
retry=${OMR_TRACKER_TRIES:-4}
waittest=${OMR_TRACKER_WAIT_TEST:-0}

while true; do
	server_ping=false
	config_load network
	config_foreach _ping_tunnel interface
	if [ "$server_ping" = false ]; then
		/etc/init.d/openmptcprouter-vps set_gre_tunnel 2>&1 >/dev/null
	fi
	sleep "${interval}"
done
