diff options
Diffstat (limited to 'main/ucarp')
-rw-r--r-- | main/ucarp/APKBUILD | 36 | ||||
-rw-r--r-- | main/ucarp/ucarp.confd | 13 | ||||
-rwxr-xr-x | main/ucarp/ucarp.initd | 62 |
3 files changed, 111 insertions, 0 deletions
diff --git a/main/ucarp/APKBUILD b/main/ucarp/APKBUILD new file mode 100644 index 000000000..0d1ab5cf3 --- /dev/null +++ b/main/ucarp/APKBUILD @@ -0,0 +1,36 @@ +# Contributor: Leonardo Arena <rnalrd@gmail.com> +# Maintainer: +pkgname=ucarp +pkgver=1.5.1 +pkgrel=1 +pkgdesc="Share common IP and do fail over" +url="http://www.ucarp.org" +license="GPL" +depends="uclibc libpcap" +makedepends="libpcap-dev" +install= +subpackages="" +source="http://download.pureftpd.org/pub/ucarp/$pkgname-$pkgver.tar.gz + ucarp.initd + ucarp.confd" + +build() { + cd "$srcdir/$pkgname-$pkgver" + + ./configure --prefix=/usr \ + --sysconfdir=/etc \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info + make || return 1 +} + +package() { + cd "$srcdir/$pkgname-$pkgver" + make DESTDIR="$pkgdir" install || return 1 + install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname + install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname +} + +md5sums="391caa69fc17ffbc8a3543d8692021c9 ucarp-1.5.1.tar.gz +44df7855b8733cb4dcea2e830a738c72 ucarp.initd +bf914f6ce4fe4fea33a45d4d5b2c1fff ucarp.confd" diff --git a/main/ucarp/ucarp.confd b/main/ucarp/ucarp.confd new file mode 100644 index 000000000..824358b43 --- /dev/null +++ b/main/ucarp/ucarp.confd @@ -0,0 +1,13 @@ +# Things you can set here +# REALIP - if not set, will be first addr on iface +# VHID - Virtual Server ID +# VIP - The Virtual IP +# PASSWORD - The password for the carp announcements +# EXTRA_ARGS - extra arguments + +REALIP= +VHID=2 +VIP=127.0.0.1 +PASSWORD=SecretPassword +#EXTRA_ARGS="--neutral --advbase=3" + diff --git a/main/ucarp/ucarp.initd b/main/ucarp/ucarp.initd new file mode 100755 index 000000000..ff101fce4 --- /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 $? +} + |