#!/bin/sh

# Avoid POSIX death due to SIGHUP when some parent process exits.
trap '' 1

command_directory=/usr/bin
daemon_directory=/usr/sbin
config_directory=/etc/sysconfig
pid_directory=/var/run


LOGGER="$command_directory/logger -t $0 -i"
INFO="$LOGGER -p info"
WARN="$LOGGER -p warn"
ERROR="$LOGGER -p error"
FATAL="$LOGGER -p emerg"
PANIC="$LOGGER -p panic"

umask 022

#
# Can't do much without these in place.
#
test -d $command_directory || {
	$FATAL no command directory $command_directory!
	exit 1
}
test -d $daemon_directory || {
	$FATAL no daemon directory $daemon_directory!
	exit 1
}
test -d $config_directory || {
	$FATAL no configuration directory $config_directory!
	exit 1
}
test -d $pid_directory || {
	$FATAL no pid directory $pid_directory!
	exit 1
}
test -f $daemon_directory/vrrpd || {
	$FATAL no vrrpd program $daemon_directory/vrrpd!
	exit 1
}
test -f $config_directory/vrrpd || {
	$FATAL no vrrpd config file in $config_directory/vrrpd!
	exit 1
}

. $config_directory/vrrpd

#VIP IFNAME VRID
test -z "${VIP}" && {
		$FATAL no VIP variable set in config file $config_directory/vrrpd!
		exit 1
}
test -z "${VRID}" && {
		$FATAL no VRID variable set in config file $config_directory/vrrpd!
		exit 1
}
test -z "${IFNAME}" && {
		$FATAL no IFNAME variable set in config file $config_directory/vrrpd!
		exit 1
}

case $1 in
start)
	$INFO starting vrrpd
	$daemon_directory/vrrpd -i $IFNAME -f $pid_directory -n -v $VRID $VIP &
	;;

stop)
	$INFO stopping vrrpd
test -f $pid_directory/vrrpd_${IFNAME}_${VRID}.pid && {
	kill `sed 1q $pid_directory/vrrpd_${IFNAME}_${VRID}.pid`
	}
	;;

abort)
	$INFO aborting vrppd
test -f $pid_directory/vrrpd_${IFNAME}_${VRID}.pid && {
	kill `sed 1q $pid_directory/vrrpd_${IFNAME}_${VRID}.pid`
	}
	;;

reload)
	$INFO refreshing vrrpd
test -f $pid_directory/vrrpd_${IFNAME}_${VRID}.pid && {
	kill -HUP `sed 1q $pid_directory/vrrpd_${IFNAME}_${VRID}.pid`
	}
	;;
*)

	$FATAL "usage: $0 start (or stop, reload, or abort)"
	exit 1
	;;

esac
