diff options
Diffstat (limited to 'main/ucarp/ucarp.initd')
-rwxr-xr-x | main/ucarp/ucarp.initd | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/main/ucarp/ucarp.initd b/main/ucarp/ucarp.initd new file mode 100755 index 0000000000..ff101fce47 --- /dev/null +++ b/main/ucarp/ucarp.initd @@ -0,0 +1,62 @@ +#!/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 + +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 $? +} + |