#!/bin/sh
#
# Init script : ucarp for FreeBSD
# By Nico <nico@rottenbytes.info>
#
# PROVIDE: ucarp
# REQUIRE: DAEMON
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable & configure ucarp:
#
# ucarp_enable (bool):		Set it to "YES" to enable ucarp
#				Default is "NO".
# ucarp_if:			Set interface to use for ucarp checks
#				Default is "eth0"
# ucarp_src:			Set source (real) IP address of that host
# ucarp_vhid:			Set virtual IP identifier (1-255)
#				Default is "1"
# ucarp_pass:			Set password
#				Default is "dumbp4ss"
# ucarp_preempt (bool):		Set it to "YES" to become a master as soon as possible
#				Default is "NO"
# ucarp_addr:			Set virtual shared IP address
# ucarp_advbase:		Set advertisement frequency (seconds)
# ucarp_advskew:		Set advertisement skew (0-255)
# ucarp_upscript:		Run <file> to become a master
# ucarp_downscript:		Run <file> to become a backup
# ucarp_deadratio:		Set ratio to consider a host as dead
# ucarp_shutdown (bool):	Set it to "YES"  to call shutdown script at exit
#				Default is "YES"
# ucarp_facility:		Set syslog facility
#				Default is "daemon"

. %%RC_SUBR%%

name="ucarp"
rcvar=`set_rcvar`

load_rc_config $name

: ${ucarp_enable="NO"}
: ${ucarp_if="eth0"}
: ${ucarp_vhid="1"}
: ${ucarp_pass="dumbp4ss"}
: ${ucarp_preempt="NO"}
: ${ucarp_shutdown="YES"}
: ${ucarp_facility="daemon"}

command=%%PREFIX%%/sbin/ucarp
command_args="-i ${ucarp_if} -v ${ucarp_vhid} -p ${ucarp_pass} -f ${ucarp_facility} -B "
start_precmd="build_command_args"

build_command_args()
{
	if [ ${ucarp_preempt} = "YES" ]
	then
		command_args=${command_args}"-P "
	fi

	if [ ${ucarp_shutdown} = "YES" ]
	then
		command_args=${command_args}"-z "
	fi

	# Mandatory arguments
	if [ -z ${ucarp_src} ]
	then
		echo "source address is not set ! please set it"
		exit 1
	fi

	if [ -z ${ucarp_addr} ]
	then
		echo "virtual address is not set ! please set it"
		exit 1
	fi

	command_args=${command_args}"-s ${ucarp_src} -a ${ucarp_addr} "

	# Optional args
	if ! [ -z ${ucarp_upscript} ]
	then
		command_args=${command_args}"-u ${ucarp_upscript} "
	fi
	if ! [ -z ${ucarp_downscript} ]
	then
		command_args=${command_args}"-d ${ucarp_downscript} "
	fi
	if ! [ -z ${ucarp_deadratio} ]
	then
		command_args=${command_args}"-r ${ucarp_deadratio} "
	fi
	if ! [ -z ${ucarp_advbase} ]
	then
		command_args=${command_args}"-b ${ucarp_advbase} "
	fi
	if ! [ -z ${ucarp_advskew} ]
	then
		command_args=${command_args}"-k ${ucarp_advskew} "
	fi
}

run_rc_command "$1"


syntax highlighted by Code2HTML, v. 0.9.1