#!/sbin/runscript # Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ # A simple script to start and stop a ucarp instance DAEMON=/usr/sbin/ucarp IFACE="${SVCNAME#*.}" if [ -n "$IFACE" ] && [ "${SVCNAME}" != "ucarp" ]; then UP="/etc/ucarp/vip-up-$IFACE.sh" DOWN="/etc/ucarp/vip-down-$IFACE.sh" . /etc/conf.d/ucarp.$IFACE else UP="/etc/ucarp/vip-up.sh" DOWN="/etc/ucarp/vip-down.sh" fi # Get the primary ip address for a given interface get_first_ip() { local foo=$( ip addr show $1 ) [ $? != 0 ] && foo="" echo $( echo "$foo" | grep "inet " | head -n1 | \ sed "s+^.*inet ++g; s+/.*$++g" ) } if [ -z "$REALIP" ]; then REALIP=$( get_first_ip $IFACE ) fi depend () { need net after firewall } start () { ebegin "Starting ucarp $IFACE" start-stop-daemon --start --exec $DAEMON \ --background -m -p /var/run/ucarp-$IFACE.pid -- \ -i $IFACE -s $REALIP -v $VHID -p $PASSWORD -a $VIP \ -u $UP -d $DOWN $EXTRA_ARGS -z eend $? } status () { ebegin "ucarp $IFACE is ..." PIDS=$( pidof $( basename $DAEMON )) PID=$( cat /var/run/ucarp-$IFACE.pid 2>/dev/null ) [ -n "$PID" ] && OK=$( echo "$PIDS" | grep "$PID" ) if [ -n "$OK" ]; then echo "running" exit 0 else echo "not running" exit 1 fi } stop () { ebegin "Shutting down ucarp $IFACE" start-stop-daemon --stop --exec $DAEMON \ -p /var/run/ucarp-$IFACE.pid eend $? }