#!/sbin/openrc-run
#
# OpenRC init script for ConnMan connection manager.
#

description="Connection Manager"

command="/usr/sbin/connmand"

depend() {
	need localmount
	use dbus logger
	after bootmisc
}

setup_resolvconf() {
	# shellcheck disable=SC1091
	[ -f /etc/default/connman ] && . /etc/default/connman
	if [ "${CONNMAN_RUNSTATEDIR_RESOLVCONF:-yes}" != "no" ]; then
		mkdir -p /run/connman
		ln -sf /run/connman/resolv.conf /etc/resolv.conf
	fi
}

get_pid() {
	[ -S /run/dbus/system_bus_socket ] || return 0
	dbus-send --system --dest=org.freedesktop.DBus --print-reply \
		/org/freedesktop/DBus org.freedesktop.DBus.GetConnectionUnixProcessID \
		string:net.connman 2>/dev/null | awk '/uint32/ {print $2}'
}

start_pre() {
	setup_resolvconf
	return 0
}

start() {
	[ -x "$command" ] || return 0
	# shellcheck disable=SC1091
	[ -f /etc/default/connman ] && . /etc/default/connman

	ebegin "Starting connman"
	start-stop-daemon --start --exec "$command" -- ${DAEMON_OPTS:-}
	eend $?
}

stop() {
	[ -x "$command" ] || return 0

	ebegin "Stopping connman"
	start-stop-daemon --stop --quiet --quiet --exec "$command" || true
	eend 0
}

status() {
	pid=$(get_pid)
	if [ -n "$pid" ]; then
		einfo "connmand is running"
		return 0
	fi
	einfo "connmand is not running"
	return 3
}
