aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Lecher <jlec@gentoo.org>2011-01-15 12:14:19 +0100
committerJustin Lecher <jlec@gentoo.org>2011-01-15 12:14:19 +0100
commit0deed8731ba700f265818ec9dc72079402037e32 (patch)
treea7383014831b2189bf83bae20c8b66142cd409cd /sys-cluster
parentMerge branch 'master' of git+ssh://git.overlays.gentoo.org/proj/sci (diff)
parentUpdate manifest (diff)
downloadsci-0deed8731ba700f265818ec9dc72079402037e32.tar.gz
sci-0deed8731ba700f265818ec9dc72079402037e32.tar.bz2
sci-0deed8731ba700f265818ec9dc72079402037e32.zip
Merge branch 'master' of git+ssh://git.overlays.gentoo.org/proj/sci
* 'master' of git+ssh://git.overlays.gentoo.org/proj/sci: (98 commits) Update manifest [sys-cluster/pacemaker] add bits missed in previous commit [sys-cluster/pacemaker] fix lib ordering wrt #351329. Thanks to Rafał Mużyło <galtgendo@o2.pl> for suggestion. [sys-cluster/pacemaker] fix autotools issues, patch send upstream [dev-vcs/mercurial-server] InCVS Unmask icm-3.7 sys-cluster/pacemaker dependency bump and LIBADD patch sys-cluster/pacemaker-gui bump sys-cluster/pacemaker-gui upstream revision bump Fix repoman warnings and missing manifest synchronize polybori with s-o-g overlay Remove singular - now in tree sci-libs/cgnsfoam: Version bump sci-libs/libcgnsoo: Version bump sci-visualization/paraview: Added 2nd python path sci-libs/gmsh: delete old version, added some USE-flags sci-libs:/cgnslib: delete old version, made hdf5 really apply again moved to g-x86 more cleaning more removing ...
Diffstat (limited to 'sys-cluster')
-rw-r--r--sys-cluster/condor/ChangeLog7
-rw-r--r--sys-cluster/condor/Manifest4
-rw-r--r--sys-cluster/condor/condor-7.5.4.ebuild160
-rw-r--r--sys-cluster/heartbeat/Manifest6
-rw-r--r--sys-cluster/heartbeat/files/3.0.4-docs.patch57
-rw-r--r--sys-cluster/heartbeat/files/3.0.4-fix_configure.patch99
-rw-r--r--sys-cluster/heartbeat/files/3.0.4-python_tests.patch29
-rw-r--r--sys-cluster/heartbeat/files/heartbeat-init91
-rw-r--r--sys-cluster/heartbeat/heartbeat-3.0.4.ebuild82
-rw-r--r--sys-cluster/keepalived/Manifest5
-rw-r--r--sys-cluster/keepalived/files/init-keepalived31
-rw-r--r--sys-cluster/keepalived/files/keepalived-1.2.1-do-not-need-kernel-sources.patch110
-rw-r--r--sys-cluster/keepalived/files/keepalived-1.2.1-linux-2.6.35-ip_vs.h950
-rw-r--r--sys-cluster/keepalived/keepalived-1.2.1.ebuild70
-rw-r--r--sys-cluster/pacemaker-gui/Manifest5
-rw-r--r--sys-cluster/pacemaker-gui/files/pacemaker-gui-2.0.0-mgmt_crm.patch20
-rw-r--r--sys-cluster/pacemaker-gui/pacemaker-gui-2.0.0.ebuild8
-rw-r--r--sys-cluster/pacemaker/Manifest4
-rw-r--r--sys-cluster/pacemaker/files/pacemaker-1.1.4-autotools-r2.patch256
-rw-r--r--sys-cluster/pacemaker/files/pacemaker-1.1.4-installpaths.patch9
-rw-r--r--sys-cluster/pacemaker/pacemaker-1.1.4-r4.ebuild (renamed from sys-cluster/pacemaker/pacemaker-1.1.4.ebuild)21
21 files changed, 1972 insertions, 52 deletions
diff --git a/sys-cluster/condor/ChangeLog b/sys-cluster/condor/ChangeLog
index c553548c0..484d64224 100644
--- a/sys-cluster/condor/ChangeLog
+++ b/sys-cluster/condor/ChangeLog
@@ -1,7 +1,12 @@
# ChangeLog for sys-cluster/condor
-# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
+# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
# $Header: $
+*condor-7.5.4 (08 Jan 2011)
+
+ 08 Jan 2011; Sébastien Fabbro <bicatali@gentoo.org> +condor-7.5.4.ebuild:
+ Version bump
+
22 Jun 2010; Sébastien Fabbro <bicatali@gentoo.org> condor-7.5.2.ebuild,
files/condor.initd:
More initd fixes, now local config will reside in /var/lib
diff --git a/sys-cluster/condor/Manifest b/sys-cluster/condor/Manifest
index 57fa9004d..795698cbb 100644
--- a/sys-cluster/condor/Manifest
+++ b/sys-cluster/condor/Manifest
@@ -2,6 +2,8 @@ AUX condor.confd 75 RMD160 a58d37af4bbbcf1df486dd1397209832114cb614 SHA1 fcc784f
AUX condor.initd 1783 RMD160 0af1b75734da761674693a768ef9a00fd3f1849c SHA1 2fa56c701351e15966754245893257e26defc642 SHA256 11d1ff517d1ca0ed53a69cdc444cf8020932b20970d1b73078c2b7223d57cf41
AUX condor_config.local 273 RMD160 5aa8e9b62d57059667aac9f2c583cf3f2490b603 SHA1 d53d14ce4fb79510ae267ad6070f0bf6e42e0db1 SHA256 849985bc53bb39c464c55e30a8ae5b7d33e90b2ccee8337452b17bf87edc0b1f
DIST condor_src-7.5.2-all-all.tar.gz 21705891 RMD160 f9911e3a44b69bb22ef607964aec726b51ab9341 SHA1 7e85048545423b13f8173c6ba6d76d35b97f2dcc SHA256 1a4fc437541896aa9963f12ec9231495f6a5ab4cc5ca814b57755a38db407026
+DIST condor_src-7.5.4-all-all.tar.gz 21870900 RMD160 7118a7a7ee32d5d7d9378ed5b94ad7a058ac1fca SHA1 877f748b53dd5e796592f812ae65d75f7b907812 SHA256 a0429b2525047b2eaca988ff4546ff177a5b4e55511354c793e4b3f01b032c08
EBUILD condor-7.5.2.ebuild 4345 RMD160 912cb92deabde325068da49048edf483fb6b9f34 SHA1 73778f44eab0ab48d9466310b75bce1a54de2338 SHA256 37c88bdba428fb366ef8a220c492cbec73e6b84f3e5517b108c7869ce0aac237
-MISC ChangeLog 1461 RMD160 ca2724f6861e01ee441de87906846e34e7b36b25 SHA1 3a0577bcdbf180b5f80e02067548c1be2cc709be SHA256 7c52b89de1c861e71b16f3f974bcb3d70baa8cebceee9b74f4cf33eae9d6e726
+EBUILD condor-7.5.4.ebuild 4345 RMD160 c43f5b08d8d77cf07ca9b0d21c87e33eaf636b4e SHA1 0d25cdcc0c58506a8e9bcdfbaae2355dd5ab5998 SHA256 d0809dd9ec219939bba4788748a919a5950ed554f1b02c4d30794dc32b4df7f2
+MISC ChangeLog 1583 RMD160 1d4525812580e576ad5b458172b791955f9040d3 SHA1 03a96168e04e92d8ed58dccd6b4a3ab023c9ec4d SHA256 90a334777278b4fdb6fdfca76bf3fa25f29c06541112c014caf4cabfe6673eb0
MISC metadata.xml 1247 RMD160 bcc91575dc0a5cc4ac255d5c0c415d0ade7c96c4 SHA1 a9a3ca65688dc4f32a01df1a5c329065fc7b37bf SHA256 87fdc2d2b126339048785a67fa126a184ffdf08a6bf6e6e29e78c62581ca1f0f
diff --git a/sys-cluster/condor/condor-7.5.4.ebuild b/sys-cluster/condor/condor-7.5.4.ebuild
new file mode 100644
index 000000000..daf9d0f73
--- /dev/null
+++ b/sys-cluster/condor/condor-7.5.4.ebuild
@@ -0,0 +1,160 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=2
+
+inherit eutils flag-o-matic autotools
+
+DESCRIPTION="Workload management system for compute-intensive jobs"
+HOMEPAGE="http://www.cs.wisc.edu/condor/"
+SRC_URI="${PN}_src-${PV}-all-all.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="classads drmaa examples gcb kbdd kerberos postgres soap ssl static-libs"
+
+CDEPEND="sys-libs/zlib
+ app-emulation/libvirt
+ dev-libs/libpcre
+ classads? ( sys-cluster/classads[pcre] )
+ gcb? ( net-firewall/gcb )
+ kerberos? ( app-crypt/mit-krb5 )
+ kbdd? ( x11-libs/libX11 )
+ postgres? ( dev-db/postgresql-base )
+ soap? ( net-libs/gsoap )
+ ssl? ( dev-libs/openssl )"
+
+RDEPEND="${CDEPEND}
+ mail-client/mailx"
+
+DEPEND="${CDEPEND}
+ x11-misc/imake"
+
+RESTRICT=fetch
+
+S="${WORKDIR}/${P}/src"
+
+pkg_setup() {
+ enewgroup condor
+ enewuser condor -1 "${ROOT}"bin/bash "${ROOT}var/lib/condor" condor
+}
+
+src_prepare() {
+ # these two eauto* are to replicate the build_init script
+ # not so sure they are really needed
+ eautoheader
+ eautoconf
+ # this patch is mostly to use standard fhs
+ cd condor_examples
+ epatch ./condor_config.generic.rpm.patch
+ # the base local file is in /etc, then the condor local file is updated and should reside in /var/lib
+ sed -i \
+ -e 's:\(LOCAL_CONFIG_FILE.*=\).*:\1 /var/lib/condor/condor_config.local:' \
+ condor_config.generic || die
+}
+
+src_configure() {
+ # condor seems to be buggy with -O2 and above with gcc
+ filter-flags "-O[s2-9]" "-O1"
+
+ # set USE_OLD_IMAKE to anything so condor_imake will use the system
+ # installed imake instead of building its own
+ export USE_OLD_IMAKE=YES
+ econf \
+ --with-buildid=Gentoo-${P} \
+ --enable-proper \
+ --disable-full-port \
+ --disable-gcc-version-check \
+ --disable-glibc-version-check \
+ --disable-rpm \
+ --without-zlib \
+ --with-libvirt \
+ $(use_enable kbdd) \
+ $(use_enable postgres quill) \
+ $(use_enable static-libs static) \
+ $(use_with classads) \
+ $(use_with drmaa) \
+ $(use_with gcb) \
+ $(use_with kerberos krb5) \
+ $(use_with postgres postgresql) \
+ $(use_with soap gsoap) \
+ $(use_with ssl openssl)
+}
+
+src_compile() {
+ # yet to find a way to parallelize compilation
+ emake -j1 || die "emake failed"
+}
+
+src_install() {
+ emake release manpages || die "emake release failed"
+ if use static-libs; then
+ emake static || die "emake static failed"
+ fi
+
+ cd release_dir
+ ## remove a shitload of useless stuff to sync with the rpm package
+ ## comments are from the rpm fedora spec file
+ # used by old MPI universe, not packaged (it's rsh, it should die)
+ rm -rf libexec/rsh
+ # this is distributed as chirp_client.c/h and chirp_protocol.h
+ rm lib/libchirp_client.a include/chirp_client.h
+ # checkpoint, reschedule and vacate live in bin/, don't duplicate
+ rm sbin/condor_{checkpoint,reschedule,vacate}
+ # sbin/condor is a pointless hard links
+ rm sbin/condor
+
+ # binaries
+ dosbin sbin/* || die
+ dobin bin/* || die
+ # headers
+ insinto /usr
+ doins -r include || die
+ # libs
+ dolib.so lib/*so || die
+ use static-libs && dolib.a lib/*a
+ insinto /usr/libexec/condor
+ doins -r libexec/* || die
+
+ # data files
+ insinto /usr/share/${PN}
+ doins lib/*.jar lib/*.class lib/*.pm || die
+ use postgres && doins -r sql
+
+ # examples
+ if use examples; then
+ insinto /usr/share/doc/${PF}
+ doins -r etc/examples || die
+ fi
+
+ # config files
+ insinto /etc/condor
+ newins etc/examples/condor_config.generic condor_config || die
+ newins etc/examples/condor_config.local.generic condor_config.local || die
+ insinto /var/lib/condor/
+ newins etc/examples/condor_config.local.generic
+
+ dodir /var/log/condor
+ dodir /var/run/condor
+ dodir /var/lock/condor
+
+ fperms 750 /var/lib/condor /var/log/condor
+ fperms 755 /var/run/condor
+ fperms 0775 /var/lock/condor
+ fowners condor:condor /var/lib/condor /var/log/condor /var/run/condor /var/lib/condor/condor_config.local
+
+ newconfd "${FILESDIR}"/condor.confd condor || die
+ newinitd "${FILESDIR}"/condor.initd condor || die
+}
+
+pkg_postinst() {
+ elog "Default configuration files have been installed"
+ elog "You can customize it from there or provide your own"
+ elog "in ${ROOT}etc/${PN}/condor_config*"
+
+ elog "The condor ebuild is still under development."
+ elog "Help us improve the ebuild in participating in:"
+ elog "https://bugs.gentoo.org/show_bug.cgi?id=60281"
+}
diff --git a/sys-cluster/heartbeat/Manifest b/sys-cluster/heartbeat/Manifest
new file mode 100644
index 000000000..21f18fa5f
--- /dev/null
+++ b/sys-cluster/heartbeat/Manifest
@@ -0,0 +1,6 @@
+AUX 3.0.4-docs.patch 1728 RMD160 95e043df6208ce0899e5473e5e34d63cf49face6 SHA1 46a19d06b9cf06f72a3f5292c2083ff21cbec69b SHA256 035698b8a53e7a59a29a1bf81e64f96c56f6b231d195da85d107985303fe0fe0
+AUX 3.0.4-fix_configure.patch 2996 RMD160 d142f1c0346ee25a0c1616db41f25ca35c7adb6e SHA1 92987cf7a938fcd6b64a9e599a89dd527bcd0264 SHA256 663ddbae715e8f0ba1926dcc5e0f67404b0b7d3cbe569f0253ac9eb5ca2ec3d1
+AUX 3.0.4-python_tests.patch 464 RMD160 f89b045be69ade44f454330ec6940fdaa80b863d SHA1 3fbd36b9f433b1b2ae3f40e620bb7b2f8bab98d4 SHA256 4adecb3af45c651bd28bc315e1e8607c2a1829a7295b155e1ad61e65afe0efaf
+AUX heartbeat-init 1770 RMD160 583e9081777c7143b0376a04150f1e125e63cd69 SHA1 2f6b3d17a335b99bc64eedf945490eb40c44fc23 SHA256 18c4dce7af12445ff207fabab83c70665b9724da224cb75b56d27a057ebb2f26
+DIST STABLE-3.0.4.tar.bz2 537449 RMD160 849fd1ca46bb247b3115fea978bb6e639f8a2718 SHA1 41920cebc9e260d5ac43be742c74c5e3998ef571 SHA256 8f6997acd673d7ffef9f5946fa507d78b5c81dd0941e998c71cd72dd61a39784
+EBUILD heartbeat-3.0.4.ebuild 1824 RMD160 3cd6de5c3cd07194521cedb92f377309e6262c1b SHA1 477a33e5cf91552aa2e9f126f5e12082c6ba4e88 SHA256 28e8a512e6445ebc0fb23ffd6f512e7593ae7f0682409fecab9d59676f809fbc
diff --git a/sys-cluster/heartbeat/files/3.0.4-docs.patch b/sys-cluster/heartbeat/files/3.0.4-docs.patch
new file mode 100644
index 000000000..3fdcfbda5
--- /dev/null
+++ b/sys-cluster/heartbeat/files/3.0.4-docs.patch
@@ -0,0 +1,57 @@
+--- configure.in
++++ configure.in
+@@ -505,8 +505,15 @@
+ AC_PATH_PROGS(TEST, test)
+ AC_PATH_PROGS(PKGCONFIG, pkg-config)
+
+-dnl xsltproc is required for building the man pages
+-AC_PATH_PROGS(XSLTPROC, xsltproc)
++AC_ARG_ENABLE([doc],
++ AS_HELP_STRING([--enable-doc],[Build documentation]
++))
++AS_IF([test "x$enable_doc" = "xyes"], [
++ AC_PATH_PROGS(XSLTPROC, xsltproc)
++])
++AM_CONDITIONAL([BUILD_DOC], [test "x$enable_doc" = "xyes"] )
++AC_SUBST(XSLTPROC)
++
+
+ dnl ************************************************************************
+ dnl Check whether non-root user can chown.
+--- doc/Makefile.am
++++ doc/Makefile.am
+@@ -33,11 +33,12 @@
+
+ doc_DATA = $(OTHER_DOCS)
+
++if BUILD_DOC
+ man_MANS = heartbeat.8 apphbd.8 cl_status.1 \
+ hb_standby.1 hb_takeover.1 hb_addnode.1 hb_delnode.1 \
+ ha.cf.5 authkeys.5
+
+-STYLESHEET_PREFIX ?= http://docbook.sourceforge.net/release/xsl/current
++STYLESHEET_PREFIX ?= /usr/share/sgml/docbook/xsl-stylesheets
+ MANPAGES_STYLESHEET ?= $(STYLESHEET_PREFIX)/manpages/docbook.xsl
+ HTML_STYLESHEET ?= $(STYLESHEET_PREFIX)/xhtml/docbook.xsl
+ FO_STYLESHEET ?= $(STYLESHEET_PREFIX)/fo/docbook.xsl
+@@ -47,6 +48,12 @@
+ XSLTPROC_HTML_OPTIONS ?= $(XSLTPROC_OPTIONS)
+ XSLTPROC_FO_OPTIONS ?= $(XSLTPROC_OPTIONS)
+
++%.5 %.8 %.1: %.xml
++ $(XSLTPROC) \
++ $(XSLTPROC_MANPAGES_OPTIONS) \
++ $(MANPAGES_STYLESHEET) $<
++endif
++
+ EXTRA_DIST = $(txtfiles) $(htmlfiles) $(man_MANS) $(OTHER_DOCS)
+
+ ChangeLog: $(SPECSRC)
+@@ -56,7 +63,3 @@
+ .html.txt:
+ if [ "X$(HTML2TXT)" = "X" ]; then echo "Lynx or w3m or user-defined HTML2TXT required to convert $< to $@" >$@ ; else $(HTML2TXT) -dump $< >$@ ; fi
+
+-%.5 %.8 %.1: %.xml
+- $(XSLTPROC) \
+- $(XSLTPROC_MANPAGES_OPTIONS) \
+- $(MANPAGES_STYLESHEET) $<
diff --git a/sys-cluster/heartbeat/files/3.0.4-fix_configure.patch b/sys-cluster/heartbeat/files/3.0.4-fix_configure.patch
new file mode 100644
index 000000000..03db0ccc7
--- /dev/null
+++ b/sys-cluster/heartbeat/files/3.0.4-fix_configure.patch
@@ -0,0 +1,99 @@
+--- work/Heartbeat-3-0-STABLE-3.0.4/configure.in 2010-12-09 21:09:47.000000000 +0100
++++ work2/Heartbeat-3-0-STABLE-3.0.4/configure.in 2010-12-28 17:37:45.080773140 +0100
+@@ -243,9 +243,9 @@
+ mandir=`var "$mandir" "$exec_prefix/man"`
+ dnl docdir is available in autoconf 2.60+, for older versions preseed
+ dnl with the same value that 2.60+ uses
+-docdir=`var "$docdir" "${datadir}/doc/${PACKAGE_NAME}"`
+-libdir=`var "$libdir" "$exec_prefix/lib"`
+-libexecdir=`var "$libexecdir" "$exec_prefix/libexec"`
++dnl docdir=`var "$docdir" "${datadir}/doc/${PACKAGE_NAME}"`
++dnl libdir=`var "$libdir" "$exec_prefix/lib"`
++dnl libexecdir=`var "$libexecdir" "$exec_prefix/libexec"`
+ noarchlibdir=`var "$noarchlibdir" "$prefix/lib"`
+
+
+@@ -284,59 +284,11 @@
+ LIBC=`${LDD} ${tmpOutfile} | grep libc | sed -e 's%.*=> *%%' -e 's% .*$%%'`
+ LibCdir=`dirname $LIBC`
+ dirlist=`echo $LibCdir | tr '/' ' '`
+- LibDirSuffix=unknown
+- for dir in $dirlist
+- do
+- case $dir in
+- *lib*) LibDirSuffix=$dir; break;;
+- *);;
+- esac
+- done
+- case $LibDirSuffix in
+- unknown) LibDirSuffix=`basename $LibCdir`;;
+- esac
+ OutFileType=`file $tmpOutfile`
+ rm -f $tmpCfile $tmpOutfile
+ else
+ AC_MSG_ERROR([Cannot Compile trivial C program])
+ fi
+-#
+-# The code above doesn't work right everywhere
+-# (like Fedora and OpenBSD)
+-#
+-case ${LibDirSuffix} in
+- *lib*) : Cool;;
+- *) : Sigh...
+- case $OutFileType in
+- *64-bit*)
+- case $host_os in
+- openbsd*) LibDirSuffix=lib;;
+- *) LibDirSuffix=lib64;;
+- esac;;
+- *32-bit*) LibDirSuffix=lib;;
+- *) LibDirSuffix=lib;;
+- esac;;
+-esac
+-#
+-# This may not yet be quite right for PPC where the default
+-# is to produce 32-bit binaries, even though the OS is 64-bit
+-# or for that matter for system Z, But, it's a lot better than
+-# it used to be.
+-#
+-AC_MSG_RESULT($LibDirSuffix)
+-
+-case $libdir in
+- */*${LibDirSuffix}) : Cool ;;
+- *) : Uh Oh...
+- libdir=`dirname $libdir`/$LibDirSuffix
+- AC_MSG_WARN([Overriding libdir to: $libdir]);;
+-esac
+-case $libexecdir in
+- */$LibDirSuffix) : Cool ;;
+- *) : Uh Oh...
+- libexecdir=`dirname $libexecdir`/$LibDirSuffix
+- AC_MSG_WARN([Overriding libexecdir to: $libexecdir]);;
+-esac
+
+ for j in exec_prefix bindir sbindir datadir sysconfdir localstatedir \
+ includedir oldincludedir mandir docdir stdocdir libdir noarchlibdir
+@@ -386,7 +338,6 @@
+ fi
+
+ AC_CHECK_HEADERS(heartbeat/glue_config.h)
+-GLUE_HEADER=none
+ if test "$ac_cv_header_heartbeat_glue_config_h" = "yes"; then
+ GLUE_HEADER=heartbeat/glue_config.h
+ else
+@@ -453,15 +404,6 @@
+
+ dnl We use this in the RPM specfile...
+ AC_SUBST(ac_configure_args)
+-cleaned_configure_args=""
+-for j in ${ac_configure_args}
+-do
+- case $j in
+- *--libdir=*|*--libexecdir=*) ;;
+- *) cleaned_configure_args="$cleaned_configure_args $j";;
+- esac
+-done
+-AC_SUBST(cleaned_configure_args)
+
+ dnl *************************************************************************
+ PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin"
diff --git a/sys-cluster/heartbeat/files/3.0.4-python_tests.patch b/sys-cluster/heartbeat/files/3.0.4-python_tests.patch
new file mode 100644
index 000000000..a91c7ec3f
--- /dev/null
+++ b/sys-cluster/heartbeat/files/3.0.4-python_tests.patch
@@ -0,0 +1,29 @@
+--- cts/Makefile.am
++++ cts/Makefile.am
+@@ -21,7 +21,7 @@
+
+ ctsdir = @HA_NOARCHDATAHBDIR@/cts
+
+-cts_PYTHON = \
++cts_SCRIPTS = \
+ CM_fs.py \
+ CM_hb.py \
+ CM_LinuxHAv2.py \
+@@ -32,14 +32,12 @@
+ extracttests.py \
+ getpeinputs.sh \
+ OCFIPraTest.py \
+- CIB.py
++ CIB.py \
++ CTSproxy.py \
++ LSBDummy
+
+ cts_DATA = README
+
+-cts_SCRIPTS = \
+- CTSproxy.py \
+- getpeinputs.sh \
+- LSBDummy
+
+ all-local: $(cts_PYTHON)
+
diff --git a/sys-cluster/heartbeat/files/heartbeat-init b/sys-cluster/heartbeat/files/heartbeat-init
new file mode 100644
index 000000000..5a81a21ce
--- /dev/null
+++ b/sys-cluster/heartbeat/files/heartbeat-init
@@ -0,0 +1,91 @@
+#!/sbin/runscript
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/heartbeat/files/heartbeat-init,v 1.7 2007/03/01 00:48:11 xmerlin Exp $
+
+HA_DIR=/etc/ha.d
+. $HA_DIR/shellfuncs
+
+depend() {
+ use logger
+ need net
+}
+
+opts="start stop status reload restart"
+
+CheckBool() {
+ case `echo "$1" | tr A-Z a-z` in
+ y|yes|enable|on|true|1) true;;
+ *) false;;
+ esac
+}
+
+# Run pre-startup script if it exists
+RunStartStop() {
+ [ -f $HA_DIR/resource.d/startstop ] && $HA_DIR/resource.d/startstop "$@"
+}
+
+start() {
+ ebegin "Starting heartbeat"
+
+ . $HA_DIR/shellfuncs
+
+ # start the log subsystem
+ CheckBool "`ha_parameter use_logd`" && \
+ ( /usr/lib/heartbeat/ha_logd -s &>/dev/null || \
+ /usr/lib/heartbeat/ha_logd -d -c /etc/ha.d/ha_logd.cf)
+
+ RunStartStop pre-start
+
+ CheckBool "`ha_parameter crm`" || \
+ /usr/lib/heartbeat/ResourceManager verifyallidle
+
+ /usr/lib/heartbeat/heartbeat &>/dev/null
+ ret=$?
+
+ RunStartStop post-start
+
+ eend ${ret}
+}
+
+stop() {
+ ebegin "Stopping heartbeat"
+
+ RunStartStop pre-stop
+
+ /usr/lib/heartbeat/heartbeat -k &>/dev/null
+ ret=$?
+
+ RunStartStop post-stop ${ret}
+
+ # stop log subsystem
+ CheckBool "`ha_parameter use_logd`" && \
+ ( /usr/lib/heartbeat/ha_logd -s &>/dev/null && \
+ /usr/lib/heartbeat/ha_logd -k &>/dev/null )
+
+ eend ${ret}
+}
+
+status() {
+ /usr/lib/heartbeat/heartbeat -s
+}
+
+reload() {
+ ebegin "Reloading heartbeat"
+ /usr/lib/heartbeat/heartbeat -r &>/dev/null
+ eend $?
+}
+
+restart() {
+ . $HA_DIR/shellfuncs
+
+ sleeptime=$(( `ha_parameter deadtime` + 10 ))
+
+ svc_stop
+
+ ebegin " waiting ${sleeptime}s to allow resource takeover to complete"
+ sleep ${sleeptime}
+ eend 0
+
+ svc_start
+}
diff --git a/sys-cluster/heartbeat/heartbeat-3.0.4.ebuild b/sys-cluster/heartbeat/heartbeat-3.0.4.ebuild
new file mode 100644
index 000000000..e2e8b2bfd
--- /dev/null
+++ b/sys-cluster/heartbeat/heartbeat-3.0.4.ebuild
@@ -0,0 +1,82 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/heartbeat/heartbeat-3.0.3-r2.ebuild,v 1.1 2010/10/06 09:25:37 xarthisius Exp $
+
+EAPI="2"
+
+PYTHON_DEPEND="2"
+inherit python autotools multilib eutils base
+
+DESCRIPTION="Heartbeat high availability cluster manager"
+HOMEPAGE="http://www.linux-ha.org/wiki/Heartbeat"
+SRC_URI="http://hg.linux-ha.org/${PN}-STABLE_3_0/archive/STABLE-${PV}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="doc ipmi snmp static-libs"
+
+RDEPEND="sys-cluster/cluster-glue
+ dev-libs/glib:2
+ virtual/ssh
+ net-libs/gnutls
+ ipmi? ( sys-libs/openipmi )
+ snmp? ( net-analyzer/net-snmp )
+ "
+DEPEND="${RDEPEND}
+ dev-util/pkgconfig
+ dev-lang/swig"
+
+PDEPEND="sys-cluster/resource-agents"
+
+S=${WORKDIR}/Heartbeat-3-0-STABLE-${PV}
+
+PATCHES=(
+ "${FILESDIR}/${PV}-fix_configure.patch"
+ "${FILESDIR}/${PV}-docs.patch"
+ "${FILESDIR}/${PV}-python_tests.patch"
+)
+
+pkg_setup() {
+ python_set_active_version 2
+ python_pkg_setup
+}
+
+src_prepare() {
+ base_src_prepare
+ eautoreconf
+
+ cp "${FILESDIR}"/heartbeat-init "${T}" || die
+ sed -i \
+ -e "/ResourceManager/ s/lib/share/" \
+ -e "s:lib:$(get_libdir):g" \
+ "${T}"/heartbeat-init || die
+}
+
+src_configure() {
+ econf \
+ --disable-dependency-tracking \
+ --disable-fatal-warnings \
+ $(use_enable static-libs static) \
+ $(use_enable doc) \
+ --disable-tipc \
+ $(use_enable ipmi ipmilan) \
+ --enable-dopd \
+ --libdir=/usr/$(get_libdir) \
+ --localstatedir=/var \
+ --docdir=/usr/share/doc/${PF} \
+ $(use_enable snmp)
+}
+
+src_install() {
+ base_src_install
+
+ newinitd "${T}/heartbeat-init" heartbeat || die
+
+ # fix collisions
+ rm -rf "${D}"/usr/include/heartbeat/{compress,ha_msg}.h
+
+ if use doc ; then
+ dodoc README doc/*.txt doc/AUTHORS || die
+ fi
+}
diff --git a/sys-cluster/keepalived/Manifest b/sys-cluster/keepalived/Manifest
new file mode 100644
index 000000000..958025aad
--- /dev/null
+++ b/sys-cluster/keepalived/Manifest
@@ -0,0 +1,5 @@
+AUX init-keepalived 741 RMD160 7c01c24d94758cc93fe1c13f89dbc566187ee444 SHA1 90287f22be2a60af28d166481ce21ee497abf06b SHA256 eaae345df0c529fdfe5cf70e2a2626c280ecb483cfe8953b992fda29b5c7e063
+AUX keepalived-1.2.1-do-not-need-kernel-sources.patch 3277 RMD160 975f2a7aed51f3c538e158f6097e2c0663ccb82d SHA1 5f7cd816e6e5752315da06ffd762c9aed200a962 SHA256 b4a38f12714717016a7588dae8bd5d3717de0cc9a8d72f08b089e6ff0bd88bf4
+AUX keepalived-1.2.1-linux-2.6.35-ip_vs.h 28185 RMD160 5ee5bdaff3f9e2ff8070b38d8fcbda6dc048e107 SHA1 b9546d1b948d740ba4af26b8e18f187cc78c9fdd SHA256 b44b5c4b0621d2e0060b8e860c838cb0575ae98d3e47038172125de778f62ae4
+DIST keepalived-1.2.1.tar.gz 239438 RMD160 6a74e3f5e7a05a05557466cbd690a8ace1c963ee SHA1 37d9414748ec0def3f81ae96f06a71d3e1e25269 SHA256 314afa6bc1cb54fa256b13816a3a56f7a44765f71fa90c39385d1cff66eb94da
+EBUILD keepalived-1.2.1.ebuild 1869 RMD160 84087e6b395dded02278e326c41bb21c0dc7eb63 SHA1 0894f232d5acd45fb77dedd088b50227b4c9e007 SHA256 a30ba9ede7c2f8322dbdc500a0d284b422699b36475e16a7af818e1bd6f13102
diff --git a/sys-cluster/keepalived/files/init-keepalived b/sys-cluster/keepalived/files/init-keepalived
new file mode 100644
index 000000000..c7b34c3a2
--- /dev/null
+++ b/sys-cluster/keepalived/files/init-keepalived
@@ -0,0 +1,31 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/keepalived/files/init-keepalived,v 1.4 2007/04/30 06:45:49 robbat2 Exp $
+
+depend() {
+ use logger
+ need net
+}
+
+PIDFILE=/var/run/keepalived.pid
+
+checkconfig() {
+ if [ ! -e /etc/keepalived/keepalived.conf ] ; then
+ eerror "You need an /etc/keepalived/keepalived.conf file to run keepalived"
+ return 1
+ fi
+}
+
+start() {
+ checkconfig || return 1
+ ebegin "Starting Keepalived"
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --exec /usr/sbin/keepalived
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping Keepalived"
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE
+ eend $?
+}
diff --git a/sys-cluster/keepalived/files/keepalived-1.2.1-do-not-need-kernel-sources.patch b/sys-cluster/keepalived/files/keepalived-1.2.1-do-not-need-kernel-sources.patch
new file mode 100644
index 000000000..e56cc6359
--- /dev/null
+++ b/sys-cluster/keepalived/files/keepalived-1.2.1-do-not-need-kernel-sources.patch
@@ -0,0 +1,110 @@
+diff -urN keepalived-1.1.20-orig/configure.in keepalived-1.1.20/configure.in
+--- keepalived-1.1.20-orig/configure.in 2009-11-05 18:23:04.000000000 +0100
++++ keepalived-1.1.20/configure.in 2010-05-31 11:42:05.000000000 +0200
+@@ -51,103 +51,18 @@
+ AC_CHECK_LIB(popt, poptGetContext,,AC_MSG_ERROR([Popt libraries is required]))
+
+ dnl ----[ Kernel version check ]----
+-CPPFLAGS="$CPPFLAGS -I$kernelinc"
+-AC_MSG_CHECKING([for kernel version])
+-AC_TRY_RUN([
+- #include <stdlib.h>
+- #include <stdio.h>
+- #include <linux/version.h>
+- #if !defined(UTS_RELEASE) && !defined(LINUX_VERSION_CODE)
+- #include <linux/utsrelease.h>
+- #endif
+- int main (void) {
+- FILE *fp = fopen ("linuxinfo", "w");
+- if (!fp) return 1;
+- #if defined(UTS_RELEASE)
+- fprintf (fp, "%s\n", UTS_RELEASE);
+- #elif defined(LINUX_VERSION_CODE)
+- fprintf (fp, "%d.%d.%d\n", LINUX_VERSION_CODE >> 16, (LINUX_VERSION_CODE >> 8) & 0xFF, LINUX_VERSION_CODE & 0xFF);
+- #else
+- fprintf (fp, "0.0.0\n"); /* Let's fail gently */
+- #endif
+- fclose (fp);
+- return 0;
+- }
+- ], [
+- LINUX_MAJOR=`cat linuxinfo | cut -d'.' -f1`
+- LINUX_MINOR=`cat linuxinfo | cut -d'.' -f2`
+- LINUX_PATCH=`cat linuxinfo | cut -d'.' -f3`
+- ], [
+- LINUX_MAJOR="0"
+- LINUX_MINOR="0"
+- LINUX_PATCH="0"
+- ], [
+- LINUX_MAJOR="0"
+- LINUX_MINOR="0"
+- LINUX_PATCH="0"
+- ])
+- rm -f linuxinfo
+-
+- if test "$kernelversion" = "2.4"; then
+- KERN="_KRNL_2_4_"
+- AC_MSG_RESULT([2.4])
+- elif test "$kernelversion" = "2.6"; then
+- KERN="_KRNL_2_6_"
+- AC_MSG_RESULT([2.6])
+- else
+- AC_MSG_RESULT([$LINUX_MAJOR.$LINUX_MINOR.$LINUX_PATCH])
+- if test "$LINUX_MINOR" = "6"; then
+- KERN="_KRNL_2_6_"
+- elif test "$LINUX_MINOR" = "4"; then
+- KERN="_KRNL_2_4_"
+- else
+- KERN="_KRNL_2_6_"
+- fi
+- if test "$LINUX_MAJOR" = "0" -a "$LINUX_MINOR" = "0" -a "$LINUX_PATCH" = "0"; then
+- AC_MSG_WARN([Cannot determine Linux Kernel version.])
+- fi
+- fi
+-
++KERN="_KRNL_2_6_"
+ AC_SUBST(KERN)
+
+ dnl ----[ Checks for LVS and VRRP support ]----
+-IPVS_SUPPORT="_WITHOUT_LVS_"
+-if test "$enable_lvs" != "no"; then
+- AC_CHECK_HEADER([net/ip_vs.h],
+- [IPVS_SUPPORT="_WITH_LVS_"],
+- [
+- IPVS_SUPPORT="_WITHOUT_LVS_"
+- AC_MSG_WARN([keepalived will be built without LVS support.])
+- ])
+-fi
++IPVS_SUPPORT="_WITH_LVS_"
+
+ if test "$IPVS_SUPPORT" = "_WITHOUT_LVS_" -a "$enable_vrrp" = "no"; then
+ AC_MSG_ERROR([keepalived MUST be compiled at least with LVS or VRRP framework])
+ fi
+
+ dnl ----[ IPVS syncd support probe ]---
+-IPVS_SYNCD="_WITHOUT_IPVS_SYNCD_"
+-if test "$IPVS_SUPPORT" = "_WITH_LVS_"; then
+- AC_MSG_CHECKING([for IPVS syncd support])
+- if test "$KERN" = "_KRNL_2_6_"; then
+- IPVS_SYNCD="_HAVE_IPVS_SYNCD_"
+- elif test "_KRNL_2_4_"; then
+- IPVS_SYNCD="_HAVE_IPVS_SYNCD_"
+- else
+- IPVS_SYNCD="_WITHOUT_IPVS_SYNCD_"
+- fi
+-
+- if test "${IPVS_SUPPORT}" = "_WITHOUT_LVS_" -o "$enable_lvs_syncd" = "no"; then
+- IPVS_SYNCD="_WITHOUT_IPVS_SYNCD_"
+- fi
+-
+- if test "$IPVS_SYNCD" = "_HAVE_IPVS_SYNCD_"; then
+- AC_MSG_RESULT([yes])
+- else
+- AC_MSG_RESULT([no])
+- fi
+-fi
+-
++IPVS_SYNCD="_HAVE_IPVS_SYNCD_"
+ AC_SUBST(IPVS_SYNCD)
+
+ dnl ----[ Checks for kernel netlink support ]----
diff --git a/sys-cluster/keepalived/files/keepalived-1.2.1-linux-2.6.35-ip_vs.h b/sys-cluster/keepalived/files/keepalived-1.2.1-linux-2.6.35-ip_vs.h
new file mode 100644
index 000000000..fe82b1e10
--- /dev/null
+++ b/sys-cluster/keepalived/files/keepalived-1.2.1-linux-2.6.35-ip_vs.h
@@ -0,0 +1,950 @@
+/*
+ * IP Virtual Server
+ * data structure and functionality definitions
+ */
+
+#ifndef _NET_IP_VS_H
+#define _NET_IP_VS_H
+
+#include <linux/ip_vs.h> /* definitions shared with userland */
+
+/* old ipvsadm versions still include this file directly */
+#ifdef __KERNEL__
+
+#include <asm/types.h> /* for __uXX types */
+
+#include <linux/sysctl.h> /* for ctl_path */
+#include <linux/list.h> /* for struct list_head */
+#include <linux/spinlock.h> /* for struct rwlock_t */
+#include <asm/atomic.h> /* for struct atomic_t */
+#include <linux/compiler.h>
+#include <linux/timer.h>
+
+#include <net/checksum.h>
+#include <linux/netfilter.h> /* for union nf_inet_addr */
+#include <linux/ip.h>
+#include <linux/ipv6.h> /* for struct ipv6hdr */
+#include <net/ipv6.h> /* for ipv6_addr_copy */
+
+
+/* Connections' size value needed by ip_vs_ctl.c */
+extern int ip_vs_conn_tab_size;
+
+
+struct ip_vs_iphdr {
+ int len;
+ __u8 protocol;
+ union nf_inet_addr saddr;
+ union nf_inet_addr daddr;
+};
+
+static inline void
+ip_vs_fill_iphdr(int af, const void *nh, struct ip_vs_iphdr *iphdr)
+{
+#ifdef CONFIG_IP_VS_IPV6
+ if (af == AF_INET6) {
+ const struct ipv6hdr *iph = nh;
+ iphdr->len = sizeof(struct ipv6hdr);
+ iphdr->protocol = iph->nexthdr;
+ ipv6_addr_copy(&iphdr->saddr.in6, &iph->saddr);
+ ipv6_addr_copy(&iphdr->daddr.in6, &iph->daddr);
+ } else
+#endif
+ {
+ const struct iphdr *iph = nh;
+ iphdr->len = iph->ihl * 4;
+ iphdr->protocol = iph->protocol;
+ iphdr->saddr.ip = iph->saddr;
+ iphdr->daddr.ip = iph->daddr;
+ }
+}
+
+static inline void ip_vs_addr_copy(int af, union nf_inet_addr *dst,
+ const union nf_inet_addr *src)
+{
+#ifdef CONFIG_IP_VS_IPV6
+ if (af == AF_INET6)
+ ipv6_addr_copy(&dst->in6, &src->in6);
+ else
+#endif
+ dst->ip = src->ip;
+}
+
+static inline int ip_vs_addr_equal(int af, const union nf_inet_addr *a,
+ const union nf_inet_addr *b)
+{
+#ifdef CONFIG_IP_VS_IPV6
+ if (af == AF_INET6)
+ return ipv6_addr_equal(&a->in6, &b->in6);
+#endif
+ return a->ip == b->ip;
+}
+
+#ifdef CONFIG_IP_VS_DEBUG
+#include <linux/net.h>
+
+extern int ip_vs_get_debug_level(void);
+
+static inline const char *ip_vs_dbg_addr(int af, char *buf, size_t buf_len,
+ const union nf_inet_addr *addr,
+ int *idx)
+{
+ int len;
+#ifdef CONFIG_IP_VS_IPV6
+ if (af == AF_INET6)
+ len = snprintf(&buf[*idx], buf_len - *idx, "[%pI6]",
+ &addr->in6) + 1;
+ else
+#endif
+ len = snprintf(&buf[*idx], buf_len - *idx, "%pI4",
+ &addr->ip) + 1;
+
+ *idx += len;
+ BUG_ON(*idx > buf_len + 1);
+ return &buf[*idx - len];
+}
+
+#define IP_VS_DBG_BUF(level, msg, ...) \
+ do { \
+ char ip_vs_dbg_buf[160]; \
+ int ip_vs_dbg_idx = 0; \
+ if (level <= ip_vs_get_debug_level()) \
+ printk(KERN_DEBUG pr_fmt(msg), ##__VA_ARGS__); \
+ } while (0)
+#define IP_VS_ERR_BUF(msg...) \
+ do { \
+ char ip_vs_dbg_buf[160]; \
+ int ip_vs_dbg_idx = 0; \
+ pr_err(msg); \
+ } while (0)
+
+/* Only use from within IP_VS_DBG_BUF() or IP_VS_ERR_BUF macros */
+#define IP_VS_DBG_ADDR(af, addr) \
+ ip_vs_dbg_addr(af, ip_vs_dbg_buf, \
+ sizeof(ip_vs_dbg_buf), addr, \
+ &ip_vs_dbg_idx)
+
+#define IP_VS_DBG(level, msg, ...) \
+ do { \
+ if (level <= ip_vs_get_debug_level()) \
+ printk(KERN_DEBUG pr_fmt(msg), ##__VA_ARGS__); \
+ } while (0)
+#define IP_VS_DBG_RL(msg, ...) \
+ do { \
+ if (net_ratelimit()) \
+ printk(KERN_DEBUG pr_fmt(msg), ##__VA_ARGS__); \
+ } while (0)
+#define IP_VS_DBG_PKT(level, pp, skb, ofs, msg) \
+ do { \
+ if (level <= ip_vs_get_debug_level()) \
+ pp->debug_packet(pp, skb, ofs, msg); \
+ } while (0)
+#define IP_VS_DBG_RL_PKT(level, pp, skb, ofs, msg) \
+ do { \
+ if (level <= ip_vs_get_debug_level() && \
+ net_ratelimit()) \
+ pp->debug_packet(pp, skb, ofs, msg); \
+ } while (0)
+#else /* NO DEBUGGING at ALL */
+#define IP_VS_DBG_BUF(level, msg...) do {} while (0)
+#define IP_VS_ERR_BUF(msg...) do {} while (0)
+#define IP_VS_DBG(level, msg...) do {} while (0)
+#define IP_VS_DBG_RL(msg...) do {} while (0)
+#define IP_VS_DBG_PKT(level, pp, skb, ofs, msg) do {} while (0)
+#define IP_VS_DBG_RL_PKT(level, pp, skb, ofs, msg) do {} while (0)
+#endif
+
+#define IP_VS_BUG() BUG()
+#define IP_VS_ERR_RL(msg, ...) \
+ do { \
+ if (net_ratelimit()) \
+ pr_err(msg, ##__VA_ARGS__); \
+ } while (0)
+
+#ifdef CONFIG_IP_VS_DEBUG
+#define EnterFunction(level) \
+ do { \
+ if (level <= ip_vs_get_debug_level()) \
+ printk(KERN_DEBUG \
+ pr_fmt("Enter: %s, %s line %i\n"), \
+ __func__, __FILE__, __LINE__); \
+ } while (0)
+#define LeaveFunction(level) \
+ do { \
+ if (level <= ip_vs_get_debug_level()) \
+ printk(KERN_DEBUG \
+ pr_fmt("Leave: %s, %s line %i\n"), \
+ __func__, __FILE__, __LINE__); \
+ } while (0)
+#else
+#define EnterFunction(level) do {} while (0)
+#define LeaveFunction(level) do {} while (0)
+#endif
+
+#define IP_VS_WAIT_WHILE(expr) while (expr) { cpu_relax(); }
+
+
+/*
+ * The port number of FTP service (in network order).
+ */
+#define FTPPORT cpu_to_be16(21)
+#define FTPDATA cpu_to_be16(20)
+
+/*
+ * TCP State Values
+ */
+enum {
+ IP_VS_TCP_S_NONE = 0,
+ IP_VS_TCP_S_ESTABLISHED,
+ IP_VS_TCP_S_SYN_SENT,
+ IP_VS_TCP_S_SYN_RECV,
+ IP_VS_TCP_S_FIN_WAIT,
+ IP_VS_TCP_S_TIME_WAIT,
+ IP_VS_TCP_S_CLOSE,
+ IP_VS_TCP_S_CLOSE_WAIT,
+ IP_VS_TCP_S_LAST_ACK,
+ IP_VS_TCP_S_LISTEN,
+ IP_VS_TCP_S_SYNACK,
+ IP_VS_TCP_S_LAST
+};
+
+/*
+ * UDP State Values
+ */
+enum {
+ IP_VS_UDP_S_NORMAL,
+ IP_VS_UDP_S_LAST,
+};
+
+/*
+ * ICMP State Values
+ */
+enum {
+ IP_VS_ICMP_S_NORMAL,
+ IP_VS_ICMP_S_LAST,
+};
+
+/*
+ * SCTP State Values
+ */
+enum ip_vs_sctp_states {
+ IP_VS_SCTP_S_NONE,
+ IP_VS_SCTP_S_INIT_CLI,
+ IP_VS_SCTP_S_INIT_SER,
+ IP_VS_SCTP_S_INIT_ACK_CLI,
+ IP_VS_SCTP_S_INIT_ACK_SER,
+ IP_VS_SCTP_S_ECHO_CLI,
+ IP_VS_SCTP_S_ECHO_SER,
+ IP_VS_SCTP_S_ESTABLISHED,
+ IP_VS_SCTP_S_SHUT_CLI,
+ IP_VS_SCTP_S_SHUT_SER,
+ IP_VS_SCTP_S_SHUT_ACK_CLI,
+ IP_VS_SCTP_S_SHUT_ACK_SER,
+ IP_VS_SCTP_S_CLOSED,
+ IP_VS_SCTP_S_LAST
+};
+
+/*
+ * Delta sequence info structure
+ * Each ip_vs_conn has 2 (output AND input seq. changes).
+ * Only used in the VS/NAT.
+ */
+struct ip_vs_seq {
+ __u32 init_seq; /* Add delta from this seq */
+ __u32 delta; /* Delta in sequence numbers */
+ __u32 previous_delta; /* Delta in sequence numbers
+ before last resized pkt */
+};
+
+
+/*
+ * IPVS statistics objects
+ */
+struct ip_vs_estimator {
+ struct list_head list;
+
+ u64 last_inbytes;
+ u64 last_outbytes;
+ u32 last_conns;
+ u32 last_inpkts;
+ u32 last_outpkts;
+
+ u32 cps;
+ u32 inpps;
+ u32 outpps;
+ u32 inbps;
+ u32 outbps;
+};
+
+struct ip_vs_stats {
+ struct ip_vs_stats_user ustats; /* statistics */
+ struct ip_vs_estimator est; /* estimator */
+
+ spinlock_t lock; /* spin lock */
+};
+
+struct dst_entry;
+struct iphdr;
+struct ip_vs_conn;
+struct ip_vs_app;
+struct sk_buff;
+
+struct ip_vs_protocol {
+ struct ip_vs_protocol *next;
+ char *name;
+ u16 protocol;
+ u16 num_states;
+ int dont_defrag;
+ atomic_t appcnt; /* counter of proto app incs */
+ int *timeout_table; /* protocol timeout table */
+
+ void (*init)(struct ip_vs_protocol *pp);
+
+ void (*exit)(struct ip_vs_protocol *pp);
+
+ int (*conn_schedule)(int af, struct sk_buff *skb,
+ struct ip_vs_protocol *pp,
+ int *verdict, struct ip_vs_conn **cpp);
+
+ struct ip_vs_conn *
+ (*conn_in_get)(int af,
+ const struct sk_buff *skb,
+ struct ip_vs_protocol *pp,
+ const struct ip_vs_iphdr *iph,
+ unsigned int proto_off,
+ int inverse);
+
+ struct ip_vs_conn *
+ (*conn_out_get)(int af,
+ const struct sk_buff *skb,
+ struct ip_vs_protocol *pp,
+ const struct ip_vs_iphdr *iph,
+ unsigned int proto_off,
+ int inverse);
+
+ int (*snat_handler)(struct sk_buff *skb,
+ struct ip_vs_protocol *pp, struct ip_vs_conn *cp);
+
+ int (*dnat_handler)(struct sk_buff *skb,
+ struct ip_vs_protocol *pp, struct ip_vs_conn *cp);
+
+ int (*csum_check)(int af, struct sk_buff *skb,
+ struct ip_vs_protocol *pp);
+
+ const char *(*state_name)(int state);
+
+ int (*state_transition)(struct ip_vs_conn *cp, int direction,
+ const struct sk_buff *skb,
+ struct ip_vs_protocol *pp);
+
+ int (*register_app)(struct ip_vs_app *inc);
+
+ void (*unregister_app)(struct ip_vs_app *inc);
+
+ int (*app_conn_bind)(struct ip_vs_conn *cp);
+
+ void (*debug_packet)(struct ip_vs_protocol *pp,
+ const struct sk_buff *skb,
+ int offset,
+ const char *msg);
+
+ void (*timeout_change)(struct ip_vs_protocol *pp, int flags);
+
+ int (*set_state_timeout)(struct ip_vs_protocol *pp, char *sname, int to);
+};
+
+extern struct ip_vs_protocol * ip_vs_proto_get(unsigned short proto);
+
+/*
+ * IP_VS structure allocated for each dynamically scheduled connection
+ */
+struct ip_vs_conn {
+ struct list_head c_list; /* hashed list heads */
+
+ /* Protocol, addresses and port numbers */
+ u16 af; /* address family */
+ union nf_inet_addr caddr; /* client address */
+ union nf_inet_addr vaddr; /* virtual address */
+ union nf_inet_addr daddr; /* destination address */
+ __be16 cport;
+ __be16 vport;
+ __be16 dport;
+ __u16 protocol; /* Which protocol (TCP/UDP) */
+
+ /* counter and timer */
+ atomic_t refcnt; /* reference count */
+ struct timer_list timer; /* Expiration timer */
+ volatile unsigned long timeout; /* timeout */
+
+ /* Flags and state transition */
+ spinlock_t lock; /* lock for state transition */
+ volatile __u16 flags; /* status flags */
+ volatile __u16 state; /* state info */
+ volatile __u16 old_state; /* old state, to be used for
+ * state transition triggerd
+ * synchronization
+ */
+
+ /* Control members */
+ struct ip_vs_conn *control; /* Master control connection */
+ atomic_t n_control; /* Number of controlled ones */
+ struct ip_vs_dest *dest; /* real server */
+ atomic_t in_pkts; /* incoming packet counter */
+
+ /* packet transmitter for different forwarding methods. If it
+ mangles the packet, it must return NF_DROP or better NF_STOLEN,
+ otherwise this must be changed to a sk_buff **.
+ */
+ int (*packet_xmit)(struct sk_buff *skb, struct ip_vs_conn *cp,
+ struct ip_vs_protocol *pp);
+
+ /* Note: we can group the following members into a structure,
+ in order to save more space, and the following members are
+ only used in VS/NAT anyway */
+ struct ip_vs_app *app; /* bound ip_vs_app object */
+ void *app_data; /* Application private data */
+ struct ip_vs_seq in_seq; /* incoming seq. struct */
+ struct ip_vs_seq out_seq; /* outgoing seq. struct */
+};
+
+
+/*
+ * Extended internal versions of struct ip_vs_service_user and
+ * ip_vs_dest_user for IPv6 support.
+ *
+ * We need these to conveniently pass around service and destination
+ * options, but unfortunately, we also need to keep the old definitions to
+ * maintain userspace backwards compatibility for the setsockopt interface.
+ */
+struct ip_vs_service_user_kern {
+ /* virtual service addresses */
+ u16 af;
+ u16 protocol;
+ union nf_inet_addr addr; /* virtual ip address */
+ u16 port;
+ u32 fwmark; /* firwall mark of service */
+
+ /* virtual service options */
+ char *sched_name;
+ unsigned flags; /* virtual service flags */
+ unsigned timeout; /* persistent timeout in sec */
+ u32 netmask; /* persistent netmask */
+};
+
+
+struct ip_vs_dest_user_kern {
+ /* destination server address */
+ union nf_inet_addr addr;
+ u16 port;
+
+ /* real server options */
+ unsigned conn_flags; /* connection flags */
+ int weight; /* destination weight */
+
+ /* thresholds for active connections */
+ u32 u_threshold; /* upper threshold */
+ u32 l_threshold; /* lower threshold */
+};
+
+
+/*
+ * The information about the virtual service offered to the net
+ * and the forwarding entries
+ */
+struct ip_vs_service {
+ struct list_head s_list; /* for normal service table */
+ struct list_head f_list; /* for fwmark-based service table */
+ atomic_t refcnt; /* reference counter */
+ atomic_t usecnt; /* use counter */
+
+ u16 af; /* address family */
+ __u16 protocol; /* which protocol (TCP/UDP) */
+ union nf_inet_addr addr; /* IP address for virtual service */
+ __be16 port; /* port number for the service */
+ __u32 fwmark; /* firewall mark of the service */
+ unsigned flags; /* service status flags */
+ unsigned timeout; /* persistent timeout in ticks */
+ __be32 netmask; /* grouping granularity */
+
+ struct list_head destinations; /* real server d-linked list */
+ __u32 num_dests; /* number of servers */
+ struct ip_vs_stats stats; /* statistics for the service */
+ struct ip_vs_app *inc; /* bind conns to this app inc */
+
+ /* for scheduling */
+ struct ip_vs_scheduler *scheduler; /* bound scheduler object */
+ rwlock_t sched_lock; /* lock sched_data */
+ void *sched_data; /* scheduler application data */
+};
+
+
+/*
+ * The real server destination forwarding entry
+ * with ip address, port number, and so on.
+ */
+struct ip_vs_dest {
+ struct list_head n_list; /* for the dests in the service */
+ struct list_head d_list; /* for table with all the dests */
+
+ u16 af; /* address family */
+ union nf_inet_addr addr; /* IP address of the server */
+ __be16 port; /* port number of the server */
+ volatile unsigned flags; /* dest status flags */
+ atomic_t conn_flags; /* flags to copy to conn */
+ atomic_t weight; /* server weight */
+
+ atomic_t refcnt; /* reference counter */
+ struct ip_vs_stats stats; /* statistics */
+
+ /* connection counters and thresholds */
+ atomic_t activeconns; /* active connections */
+ atomic_t inactconns; /* inactive connections */
+ atomic_t persistconns; /* persistent connections */
+ __u32 u_threshold; /* upper threshold */
+ __u32 l_threshold; /* lower threshold */
+
+ /* for destination cache */
+ spinlock_t dst_lock; /* lock of dst_cache */
+ struct dst_entry *dst_cache; /* destination cache entry */
+ u32 dst_rtos; /* RT_TOS(tos) for dst */
+
+ /* for virtual service */
+ struct ip_vs_service *svc; /* service it belongs to */
+ __u16 protocol; /* which protocol (TCP/UDP) */
+ union nf_inet_addr vaddr; /* virtual IP address */
+ __be16 vport; /* virtual port number */
+ __u32 vfwmark; /* firewall mark of service */
+};
+
+
+/*
+ * The scheduler object
+ */
+struct ip_vs_scheduler {
+ struct list_head n_list; /* d-linked list head */
+ char *name; /* scheduler name */
+ atomic_t refcnt; /* reference counter */
+ struct module *module; /* THIS_MODULE/NULL */
+
+ /* scheduler initializing service */
+ int (*init_service)(struct ip_vs_service *svc);
+ /* scheduling service finish */
+ int (*done_service)(struct ip_vs_service *svc);
+ /* scheduler updating service */
+ int (*update_service)(struct ip_vs_service *svc);
+
+ /* selecting a server from the given service */
+ struct ip_vs_dest* (*schedule)(struct ip_vs_service *svc,
+ const struct sk_buff *skb);
+};
+
+
+/*
+ * The application module object (a.k.a. app incarnation)
+ */
+struct ip_vs_app {
+ struct list_head a_list; /* member in app list */
+ int type; /* IP_VS_APP_TYPE_xxx */
+ char *name; /* application module name */
+ __u16 protocol;
+ struct module *module; /* THIS_MODULE/NULL */
+ struct list_head incs_list; /* list of incarnations */
+
+ /* members for application incarnations */
+ struct list_head p_list; /* member in proto app list */
+ struct ip_vs_app *app; /* its real application */
+ __be16 port; /* port number in net order */
+ atomic_t usecnt; /* usage counter */
+
+ /* output hook: return false if can't linearize. diff set for TCP. */
+ int (*pkt_out)(struct ip_vs_app *, struct ip_vs_conn *,
+ struct sk_buff *, int *diff);
+
+ /* input hook: return false if can't linearize. diff set for TCP. */
+ int (*pkt_in)(struct ip_vs_app *, struct ip_vs_conn *,
+ struct sk_buff *, int *diff);
+
+ /* ip_vs_app initializer */
+ int (*init_conn)(struct ip_vs_app *, struct ip_vs_conn *);
+
+ /* ip_vs_app finish */
+ int (*done_conn)(struct ip_vs_app *, struct ip_vs_conn *);
+
+
+ /* not used now */
+ int (*bind_conn)(struct ip_vs_app *, struct ip_vs_conn *,
+ struct ip_vs_protocol *);
+
+ void (*unbind_conn)(struct ip_vs_app *, struct ip_vs_conn *);
+
+ int * timeout_table;
+ int * timeouts;
+ int timeouts_size;
+
+ int (*conn_schedule)(struct sk_buff *skb, struct ip_vs_app *app,
+ int *verdict, struct ip_vs_conn **cpp);
+
+ struct ip_vs_conn *
+ (*conn_in_get)(const struct sk_buff *skb, struct ip_vs_app *app,
+ const struct iphdr *iph, unsigned int proto_off,
+ int inverse);
+
+ struct ip_vs_conn *
+ (*conn_out_get)(const struct sk_buff *skb, struct ip_vs_app *app,
+ const struct iphdr *iph, unsigned int proto_off,
+ int inverse);
+
+ int (*state_transition)(struct ip_vs_conn *cp, int direction,
+ const struct sk_buff *skb,
+ struct ip_vs_app *app);
+
+ void (*timeout_change)(struct ip_vs_app *app, int flags);
+};
+
+
+/*
+ * IPVS core functions
+ * (from ip_vs_core.c)
+ */
+extern const char *ip_vs_proto_name(unsigned proto);
+extern void ip_vs_init_hash_table(struct list_head *table, int rows);
+#define IP_VS_INIT_HASH_TABLE(t) ip_vs_init_hash_table((t), ARRAY_SIZE((t)))
+
+#define IP_VS_APP_TYPE_FTP 1
+
+/*
+ * ip_vs_conn handling functions
+ * (from ip_vs_conn.c)
+ */
+
+enum {
+ IP_VS_DIR_INPUT = 0,
+ IP_VS_DIR_OUTPUT,
+ IP_VS_DIR_INPUT_ONLY,
+ IP_VS_DIR_LAST,
+};
+
+extern struct ip_vs_conn *ip_vs_conn_in_get
+(int af, int protocol, const union nf_inet_addr *s_addr, __be16 s_port,
+ const union nf_inet_addr *d_addr, __be16 d_port);
+
+extern struct ip_vs_conn *ip_vs_ct_in_get
+(int af, int protocol, const union nf_inet_addr *s_addr, __be16 s_port,
+ const union nf_inet_addr *d_addr, __be16 d_port);
+
+extern struct ip_vs_conn *ip_vs_conn_out_get
+(int af, int protocol, const union nf_inet_addr *s_addr, __be16 s_port,
+ const union nf_inet_addr *d_addr, __be16 d_port);
+
+/* put back the conn without restarting its timer */
+static inline void __ip_vs_conn_put(struct ip_vs_conn *cp)
+{
+ atomic_dec(&cp->refcnt);
+}
+extern void ip_vs_conn_put(struct ip_vs_conn *cp);
+extern void ip_vs_conn_fill_cport(struct ip_vs_conn *cp, __be16 cport);
+
+extern struct ip_vs_conn *
+ip_vs_conn_new(int af, int proto, const union nf_inet_addr *caddr, __be16 cport,
+ const union nf_inet_addr *vaddr, __be16 vport,
+ const union nf_inet_addr *daddr, __be16 dport, unsigned flags,
+ struct ip_vs_dest *dest);
+extern void ip_vs_conn_expire_now(struct ip_vs_conn *cp);
+
+extern const char * ip_vs_state_name(__u16 proto, int state);
+
+extern void ip_vs_tcp_conn_listen(struct ip_vs_conn *cp);
+extern int ip_vs_check_template(struct ip_vs_conn *ct);
+extern void ip_vs_random_dropentry(void);
+extern int ip_vs_conn_init(void);
+extern void ip_vs_conn_cleanup(void);
+
+static inline void ip_vs_control_del(struct ip_vs_conn *cp)
+{
+ struct ip_vs_conn *ctl_cp = cp->control;
+ if (!ctl_cp) {
+ IP_VS_ERR_BUF("request control DEL for uncontrolled: "
+ "%s:%d to %s:%d\n",
+ IP_VS_DBG_ADDR(cp->af, &cp->caddr),
+ ntohs(cp->cport),
+ IP_VS_DBG_ADDR(cp->af, &cp->vaddr),
+ ntohs(cp->vport));
+
+ return;
+ }
+
+ IP_VS_DBG_BUF(7, "DELeting control for: "
+ "cp.dst=%s:%d ctl_cp.dst=%s:%d\n",
+ IP_VS_DBG_ADDR(cp->af, &cp->caddr),
+ ntohs(cp->cport),
+ IP_VS_DBG_ADDR(cp->af, &ctl_cp->caddr),
+ ntohs(ctl_cp->cport));
+
+ cp->control = NULL;
+ if (atomic_read(&ctl_cp->n_control) == 0) {
+ IP_VS_ERR_BUF("BUG control DEL with n=0 : "
+ "%s:%d to %s:%d\n",
+ IP_VS_DBG_ADDR(cp->af, &cp->caddr),
+ ntohs(cp->cport),
+ IP_VS_DBG_ADDR(cp->af, &cp->vaddr),
+ ntohs(cp->vport));
+
+ return;
+ }
+ atomic_dec(&ctl_cp->n_control);
+}
+
+static inline void
+ip_vs_control_add(struct ip_vs_conn *cp, struct ip_vs_conn *ctl_cp)
+{
+ if (cp->control) {
+ IP_VS_ERR_BUF("request control ADD for already controlled: "
+ "%s:%d to %s:%d\n",
+ IP_VS_DBG_ADDR(cp->af, &cp->caddr),
+ ntohs(cp->cport),
+ IP_VS_DBG_ADDR(cp->af, &cp->vaddr),
+ ntohs(cp->vport));
+
+ ip_vs_control_del(cp);
+ }
+
+ IP_VS_DBG_BUF(7, "ADDing control for: "
+ "cp.dst=%s:%d ctl_cp.dst=%s:%d\n",
+ IP_VS_DBG_ADDR(cp->af, &cp->caddr),
+ ntohs(cp->cport),
+ IP_VS_DBG_ADDR(cp->af, &ctl_cp->caddr),
+ ntohs(ctl_cp->cport));
+
+ cp->control = ctl_cp;
+ atomic_inc(&ctl_cp->n_control);
+}
+
+
+/*
+ * IPVS application functions
+ * (from ip_vs_app.c)
+ */
+#define IP_VS_APP_MAX_PORTS 8
+extern int register_ip_vs_app(struct ip_vs_app *app);
+extern void unregister_ip_vs_app(struct ip_vs_app *app);
+extern int ip_vs_bind_app(struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
+extern void ip_vs_unbind_app(struct ip_vs_conn *cp);
+extern int
+register_ip_vs_app_inc(struct ip_vs_app *app, __u16 proto, __u16 port);
+extern int ip_vs_app_inc_get(struct ip_vs_app *inc);
+extern void ip_vs_app_inc_put(struct ip_vs_app *inc);
+
+extern int ip_vs_app_pkt_out(struct ip_vs_conn *, struct sk_buff *skb);
+extern int ip_vs_app_pkt_in(struct ip_vs_conn *, struct sk_buff *skb);
+extern int ip_vs_skb_replace(struct sk_buff *skb, gfp_t pri,
+ char *o_buf, int o_len, char *n_buf, int n_len);
+extern int ip_vs_app_init(void);
+extern void ip_vs_app_cleanup(void);
+
+
+/*
+ * IPVS protocol functions (from ip_vs_proto.c)
+ */
+extern int ip_vs_protocol_init(void);
+extern void ip_vs_protocol_cleanup(void);
+extern void ip_vs_protocol_timeout_change(int flags);
+extern int *ip_vs_create_timeout_table(int *table, int size);
+extern int
+ip_vs_set_state_timeout(int *table, int num, const char *const *names,
+ const char *name, int to);
+extern void
+ip_vs_tcpudp_debug_packet(struct ip_vs_protocol *pp, const struct sk_buff *skb,
+ int offset, const char *msg);
+
+extern struct ip_vs_protocol ip_vs_protocol_tcp;
+extern struct ip_vs_protocol ip_vs_protocol_udp;
+extern struct ip_vs_protocol ip_vs_protocol_icmp;
+extern struct ip_vs_protocol ip_vs_protocol_esp;
+extern struct ip_vs_protocol ip_vs_protocol_ah;
+extern struct ip_vs_protocol ip_vs_protocol_sctp;
+
+/*
+ * Registering/unregistering scheduler functions
+ * (from ip_vs_sched.c)
+ */
+extern int register_ip_vs_scheduler(struct ip_vs_scheduler *scheduler);
+extern int unregister_ip_vs_scheduler(struct ip_vs_scheduler *scheduler);
+extern int ip_vs_bind_scheduler(struct ip_vs_service *svc,
+ struct ip_vs_scheduler *scheduler);
+extern int ip_vs_unbind_scheduler(struct ip_vs_service *svc);
+extern struct ip_vs_scheduler *ip_vs_scheduler_get(const char *sched_name);
+extern void ip_vs_scheduler_put(struct ip_vs_scheduler *scheduler);
+extern struct ip_vs_conn *
+ip_vs_schedule(struct ip_vs_service *svc, const struct sk_buff *skb);
+extern int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
+ struct ip_vs_protocol *pp);
+
+
+/*
+ * IPVS control data and functions (from ip_vs_ctl.c)
+ */
+extern int sysctl_ip_vs_cache_bypass;
+extern int sysctl_ip_vs_expire_nodest_conn;
+extern int sysctl_ip_vs_expire_quiescent_template;
+extern int sysctl_ip_vs_sync_threshold[2];
+extern int sysctl_ip_vs_nat_icmp_send;
+extern struct ip_vs_stats ip_vs_stats;
+extern const struct ctl_path net_vs_ctl_path[];
+
+extern struct ip_vs_service *
+ip_vs_service_get(int af, __u32 fwmark, __u16 protocol,
+ const union nf_inet_addr *vaddr, __be16 vport);
+
+static inline void ip_vs_service_put(struct ip_vs_service *svc)
+{
+ atomic_dec(&svc->usecnt);
+}
+
+extern struct ip_vs_dest *
+ip_vs_lookup_real_service(int af, __u16 protocol,
+ const union nf_inet_addr *daddr, __be16 dport);
+
+extern int ip_vs_use_count_inc(void);
+extern void ip_vs_use_count_dec(void);
+extern int ip_vs_control_init(void);
+extern void ip_vs_control_cleanup(void);
+extern struct ip_vs_dest *
+ip_vs_find_dest(int af, const union nf_inet_addr *daddr, __be16 dport,
+ const union nf_inet_addr *vaddr, __be16 vport, __u16 protocol);
+extern struct ip_vs_dest *ip_vs_try_bind_dest(struct ip_vs_conn *cp);
+
+
+/*
+ * IPVS sync daemon data and function prototypes
+ * (from ip_vs_sync.c)
+ */
+extern volatile int ip_vs_sync_state;
+extern volatile int ip_vs_master_syncid;
+extern volatile int ip_vs_backup_syncid;
+extern char ip_vs_master_mcast_ifn[IP_VS_IFNAME_MAXLEN];
+extern char ip_vs_backup_mcast_ifn[IP_VS_IFNAME_MAXLEN];
+extern int start_sync_thread(int state, char *mcast_ifn, __u8 syncid);
+extern int stop_sync_thread(int state);
+extern void ip_vs_sync_conn(struct ip_vs_conn *cp);
+
+
+/*
+ * IPVS rate estimator prototypes (from ip_vs_est.c)
+ */
+extern int ip_vs_estimator_init(void);
+extern void ip_vs_estimator_cleanup(void);
+extern void ip_vs_new_estimator(struct ip_vs_stats *stats);
+extern void ip_vs_kill_estimator(struct ip_vs_stats *stats);
+extern void ip_vs_zero_estimator(struct ip_vs_stats *stats);
+
+/*
+ * Various IPVS packet transmitters (from ip_vs_xmit.c)
+ */
+extern int ip_vs_null_xmit
+(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
+extern int ip_vs_bypass_xmit
+(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
+extern int ip_vs_nat_xmit
+(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
+extern int ip_vs_tunnel_xmit
+(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
+extern int ip_vs_dr_xmit
+(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
+extern int ip_vs_icmp_xmit
+(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp, int offset);
+extern void ip_vs_dst_reset(struct ip_vs_dest *dest);
+
+#ifdef CONFIG_IP_VS_IPV6
+extern int ip_vs_bypass_xmit_v6
+(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
+extern int ip_vs_nat_xmit_v6
+(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
+extern int ip_vs_tunnel_xmit_v6
+(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
+extern int ip_vs_dr_xmit_v6
+(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
+extern int ip_vs_icmp_xmit_v6
+(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp,
+ int offset);
+#endif
+
+/*
+ * This is a simple mechanism to ignore packets when
+ * we are loaded. Just set ip_vs_drop_rate to 'n' and
+ * we start to drop 1/rate of the packets
+ */
+extern int ip_vs_drop_rate;
+extern int ip_vs_drop_counter;
+
+static __inline__ int ip_vs_todrop(void)
+{
+ if (!ip_vs_drop_rate) return 0;
+ if (--ip_vs_drop_counter > 0) return 0;
+ ip_vs_drop_counter = ip_vs_drop_rate;
+ return 1;
+}
+
+/*
+ * ip_vs_fwd_tag returns the forwarding tag of the connection
+ */
+#define IP_VS_FWD_METHOD(cp) (cp->flags & IP_VS_CONN_F_FWD_MASK)
+
+static inline char ip_vs_fwd_tag(struct ip_vs_conn *cp)
+{
+ char fwd;
+
+ switch (IP_VS_FWD_METHOD(cp)) {
+ case IP_VS_CONN_F_MASQ:
+ fwd = 'M'; break;
+ case IP_VS_CONN_F_LOCALNODE:
+ fwd = 'L'; break;
+ case IP_VS_CONN_F_TUNNEL:
+ fwd = 'T'; break;
+ case IP_VS_CONN_F_DROUTE:
+ fwd = 'R'; break;
+ case IP_VS_CONN_F_BYPASS:
+ fwd = 'B'; break;
+ default:
+ fwd = '?'; break;
+ }
+ return fwd;
+}
+
+extern void ip_vs_nat_icmp(struct sk_buff *skb, struct ip_vs_protocol *pp,
+ struct ip_vs_conn *cp, int dir);
+
+#ifdef CONFIG_IP_VS_IPV6
+extern void ip_vs_nat_icmp_v6(struct sk_buff *skb, struct ip_vs_protocol *pp,
+ struct ip_vs_conn *cp, int dir);
+#endif
+
+extern __sum16 ip_vs_checksum_complete(struct sk_buff *skb, int offset);
+
+static inline __wsum ip_vs_check_diff4(__be32 old, __be32 new, __wsum oldsum)
+{
+ __be32 diff[2] = { ~old, new };
+
+ return csum_partial(diff, sizeof(diff), oldsum);
+}
+
+#ifdef CONFIG_IP_VS_IPV6
+static inline __wsum ip_vs_check_diff16(const __be32 *old, const __be32 *new,
+ __wsum oldsum)
+{
+ __be32 diff[8] = { ~old[3], ~old[2], ~old[1], ~old[0],
+ new[3], new[2], new[1], new[0] };
+
+ return csum_partial(diff, sizeof(diff), oldsum);
+}
+#endif
+
+static inline __wsum ip_vs_check_diff2(__be16 old, __be16 new, __wsum oldsum)
+{
+ __be16 diff[2] = { ~old, new };
+
+ return csum_partial(diff, sizeof(diff), oldsum);
+}
+
+#endif /* __KERNEL__ */
+
+#endif /* _NET_IP_VS_H */
diff --git a/sys-cluster/keepalived/keepalived-1.2.1.ebuild b/sys-cluster/keepalived/keepalived-1.2.1.ebuild
new file mode 100644
index 000000000..815970186
--- /dev/null
+++ b/sys-cluster/keepalived/keepalived-1.2.1.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=3
+
+inherit flag-o-matic autotools base
+
+DESCRIPTION="A strong & robust keepalive facility to the Linux Virtual Server project"
+HOMEPAGE="http://www.keepalived.org/"
+SRC_URI="http://www.keepalived.org/software/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~s390 ~sparc ~x86"
+IUSE="debug +lvs"
+
+RDEPEND="dev-libs/popt
+ sys-apps/iproute2
+ dev-libs/openssl
+ lvs? ( sys-cluster/ipvsadm )"
+DEPEND="${RDEPEND}
+ =sys-kernel/linux-headers-2.6*"
+
+use lvs && PATCHES=( "${FILESDIR}/${P}-do-not-need-kernel-sources.patch" )
+
+src_prepare() {
+ base_src_prepare
+
+ if use lvs; then
+ # Prepare a suitable copy of the IPVS headers
+ # So that we don't need kernel sources at all!
+ mkdir -p "${S}"/include/net || die "Failed to prepare ipvs header directory"
+ cp -f "${FILESDIR}"/${PN}-1.2.1-linux-2.6.35-ip_vs.h \
+ "${S}"/include/net/ip_vs.h || die "Failed to add ipvs header"
+
+ # Ensure that keepalived can find the header that we are injecting
+ append-flags -I"${S}"/include
+
+ eautoreconf
+ fi
+}
+
+src_configure() {
+ STRIP=/bin/true \
+ econf \
+ --enable-vrrp \
+ $(use_enable lvs) \
+ $(use_enable lvs lvs-syncd) \
+ $(use_enable debug)
+}
+
+src_install() {
+ base_src_install
+
+ newinitd "${FILESDIR}"/init-keepalived keepalived || die
+
+ dodoc doc/keepalived.conf.SYNOPSIS || die
+ dodoc README CONTRIBUTORS INSTALL VERSION ChangeLog AUTHOR TODO || die
+
+ docinto genhash
+ dodoc genhash/README genhash/AUTHOR genhash/ChangeLog genhash/VERSION || die
+ # This was badly named by upstream, it's more HOWTO than anything else.
+ newdoc INSTALL INSTALL+HOWTO || die
+
+ # Security risk to bundle SSL certs
+ rm -f "${D}"/etc/keepalived/samples/*.pem
+ # Clean up sysvinit files
+ rm -rf "${D}"/etc/sysconfig "${D}"/etc/rc.d/
+}
diff --git a/sys-cluster/pacemaker-gui/Manifest b/sys-cluster/pacemaker-gui/Manifest
index d2941b068..5e4908a78 100644
--- a/sys-cluster/pacemaker-gui/Manifest
+++ b/sys-cluster/pacemaker-gui/Manifest
@@ -1,8 +1,7 @@
AUX mgmtd.init 810 RMD160 14942aa1fc5dd6dbc49de1dc1c7b6120a5c88da3 SHA1 7e44d69ce08e0d4f06df36347f1fa68674a11559 SHA256 bf5cb45a8ea9cdd6807c489b711bf3e9a3f75e15ad7d20c61ce41608448276af
AUX pacemaker-gui-2.0.0-doc.patch 427 RMD160 9db55433397f25884e255cf19c0062fd24a19b2d SHA1 148f8cde46ff165fe76f1dfd8a56a05fbd284ff9 SHA256 8aa4602f9ceb3e426293f0f660b3e54dd1cd651f776319a4bc65f5b91186ed56
AUX pacemaker-gui-2.0.0-gnutls.patch 1554 RMD160 474d03b50b3dc09b2495dd7c70962e0bdfe02802 SHA1 f6d810037195b5c72fcd2b677d4b2749b2c0fccf SHA256 aadc022cfdd5f04660fb4051a80b4921baa36761ae4c72ac5ecbeccf811f8677
-AUX pacemaker-gui-2.0.0-mgmt_crm.patch 842 RMD160 0f5612ee211d1b82f13ef9bf9f4f0ac5a1cc42b8 SHA1 3e3bb6438508cf1ed9a13b1377d12cf3c0915284 SHA256 c81187b4e9aa2686c5ad7dd78c6d5100bb4f4115bc22eac9a01b4bac75abcfc8
-DIST 0f1490eaa8d8.tar.bz2 335025 RMD160 1dc6817f12b84bdbb5977c9e795050105f36ea33 SHA1 54811e73b592c79616323df77ef10f9458e379fd SHA256 726fc64ba47cca418499f92e1bcf1f948965d5cd9b1723a419ade8e99396365c
-EBUILD pacemaker-gui-2.0.0.ebuild 1998 RMD160 bdb983b56b15c2ad4264d2c433ca791d5ddb4fa6 SHA1 0aa7fb4ff0663ad388a649cdffa7e763dd082b5e SHA256 8306776371e257100006ae99c0e8299f85c3a1935a54587778fc3f23e21ab9ed
+DIST 45aced6962a9.tar.bz2 338063 RMD160 240c76c91afb9c07ee439eaa22c8e9af29a078df SHA1 a72b6ebbb7ab3a8a8ae7541445b6caef7699856b SHA256 7f07fa6e939ff6ed60713442f85ed97723ca62bd7daf6ad3a9207e96d64b0347
+EBUILD pacemaker-gui-2.0.0.ebuild 2000 RMD160 ad046b21415dee2b97b1f68dd00c971e6e383079 SHA1 a78a11824ea5a9d1d5b6294cbcb38cfad333017a SHA256 591ea6e6ecd7bb8f274b3a44686b997ebe510c68d517025f6baff53a70b949a3
MISC ChangeLog 460 RMD160 41ae0d000c27b150642724e4d8e7ef10c7518656 SHA1 74fa7fe3e5da0a4c97f39abe447c8d0431869068 SHA256 d274c42ae55e6ec81a7b61bdf128e20d3f450648e04b2164335dce9d915f6b9c
MISC metadata.xml 490 RMD160 925cc48d5b7b6c419375955d855d1622045e1d7b SHA1 40ba30b9e241c2d664e22613410d4d033f01120d SHA256 dfe28f44ad8e1d85e6bdcb98a03d7302635deceedfd88968c12405cd77695105
diff --git a/sys-cluster/pacemaker-gui/files/pacemaker-gui-2.0.0-mgmt_crm.patch b/sys-cluster/pacemaker-gui/files/pacemaker-gui-2.0.0-mgmt_crm.patch
deleted file mode 100644
index 037f1eace..000000000
--- a/sys-cluster/pacemaker-gui/files/pacemaker-gui-2.0.0-mgmt_crm.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/mgmt/daemon/mgmt_crm.c 2010-06-28 17:48:35.209806899 +0000
-+++ b/mgmt/daemon/mgmt_crm.c 2010-06-28 17:50:16.779798538 +0000
-@@ -1304,7 +1304,7 @@
- } else {
- buffer = crm_concat("fail-count", argv[2], '-');
- delete_attr(cib_conn, cib_sync_call, XML_CIB_TAG_STATUS, dest_node, NULL, NULL,
-- NULL, buffer, NULL, FALSE);
-+ NULL, buffer, FALSE);
- crm_free(dest_node);
- crm_free(buffer);
- mgmt_log(LOG_INFO, "Delete fail-count for %s from %s", argv[2], argv[1]);
-@@ -1313,7 +1313,7 @@
- sleep(2); /* wait for the refresh */
- now_s = crm_itoa(now);
- update_attr(cib_conn, cib_sync_call,
-- XML_CIB_TAG_CRMCONFIG, NULL, NULL, NULL, NULL, "last-lrm-refresh", now_s, FALSE);
-+ XML_CIB_TAG_CRMCONFIG, NULL, NULL, NULL, "last-lrm-refresh", now_s, FALSE);
- crm_free(now_s);
-
- crmd_channel->ops->destroy(crmd_channel);
diff --git a/sys-cluster/pacemaker-gui/pacemaker-gui-2.0.0.ebuild b/sys-cluster/pacemaker-gui/pacemaker-gui-2.0.0.ebuild
index e851f90ef..592b5e32f 100644
--- a/sys-cluster/pacemaker-gui/pacemaker-gui-2.0.0.ebuild
+++ b/sys-cluster/pacemaker-gui/pacemaker-gui-2.0.0.ebuild
@@ -9,7 +9,7 @@ inherit python base autotools
DESCRIPTION="Pacemaker client GUI and management daemon"
HOMEPAGE="http://hg.clusterlabs.org/pacemaker/pygui/"
-SRC_URI="http://hg.clusterlabs.org/pacemaker/pygui/archive/0f1490eaa8d8.tar.bz2"
+SRC_URI="http://hg.clusterlabs.org/pacemaker/pygui/archive/45aced6962a9.tar.bz2"
LICENSE="GPL-2 LGPL-2.1"
KEYWORDS="~amd64 ~x86"
@@ -41,11 +41,11 @@ DEPEND="${CDEPEND}
sys-devel/gettext
)"
-S="${WORKDIR}/Pacemaker-Python-GUI-0f1490eaa8d8/"
+S="${WORKDIR}/Pacemaker-Python-GUI-45aced6962a9/"
PATCHES=(
- "${FILESDIR}"/${P}-gnutls.patch
- "${FILESDIR}"/${P}-doc.patch
+ "${FILESDIR}/${P}-gnutls.patch"
+ "${FILESDIR}/${P}-doc.patch"
)
pkg_setup() {
diff --git a/sys-cluster/pacemaker/Manifest b/sys-cluster/pacemaker/Manifest
index 97ec4a635..641285fb1 100644
--- a/sys-cluster/pacemaker/Manifest
+++ b/sys-cluster/pacemaker/Manifest
@@ -1,5 +1,5 @@
-AUX pacemaker-1.1.4-installpaths.patch 200 RMD160 d2b3bdae8d6f982b64af5f83375497df74fadbc0 SHA1 69a1b9a2c7415a0e0d10c982ecb64474da358fb3 SHA256 4b8d82244123f88491b7deecb99b2d36d6317ada5aa6c6339e95dbcdc73dbbee
+AUX pacemaker-1.1.4-autotools-r2.patch 9080 RMD160 a1151afb2902929f227ca71e8e86f126da6fd00e SHA1 d791f3071ff384d94a5a406cf2335ad4df625b40 SHA256 c572c181b9cd0aee420202593f4be32453a9d46993caa21a66b59edf59ee9893
AUX pacemaker.initd 815 RMD160 f9c28c5d5a9a4f720954dc93966dcb8a04623173 SHA1 bc4a951e670144d6ff137f09b2beef9102634457 SHA256 adf97c7fe78cadc5390ac30f32377bf1afb67afd55e89ec93ffa742d4e2d0017
AUX pacemaker.service 105 RMD160 e743788acefa97f879ea67b5b3bbbff715c71bce SHA1 42739d9a111a25a643d8f5f8b9fdd2cf1267853a SHA256 43034635a3a92ef55bf638ea3e29c2285240228283a70fbd88fe5e28c0d57c8c
DIST Pacemaker-1.1.4.tar.bz2 23444765 RMD160 ca2635622e2a63258d7dc9933541eb2e3b728679 SHA1 382a4cbd80ef8f1c303f1c5c02d60390e808397f SHA256 922e2929cf9f2efa2e2d9b3185a7ac826a96e86cd8d9f4c4eae177f88f1f03b1
-EBUILD pacemaker-1.1.4.ebuild 2132 RMD160 191f1aeea43ba7ab69e95a92946a295c9a2a973b SHA1 f6c13b4f3985637d56ebbe820cac9d1405c682e6 SHA256 db9608e51751fa29c8c2ea3041d691aeeed50159ecffc41a6719f4bfc58e0bf6
+EBUILD pacemaker-1.1.4-r4.ebuild 2038 RMD160 84a820c0027273fd63eba00d0e0fa9f3a3043ac1 SHA1 01181f8d2c4fdf31b1223320d4aefb4aa32a66fb SHA256 a97f8b5f3a9a183a5b37013329682398d024d87adc76a45cf7b561ccbc099f42
diff --git a/sys-cluster/pacemaker/files/pacemaker-1.1.4-autotools-r2.patch b/sys-cluster/pacemaker/files/pacemaker-1.1.4-autotools-r2.patch
new file mode 100644
index 000000000..e2c8b4f51
--- /dev/null
+++ b/sys-cluster/pacemaker/files/pacemaker-1.1.4-autotools-r2.patch
@@ -0,0 +1,256 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -1354,6 +1354,7 @@
+ if
+ $PKGCONFIG --exists $SERVICELOG
+ then
++ PKG_CHECK_MODULES([SERVICELOG], [servicelog-1])
+ SERVICELOG_EXISTS="yes"
+ fi
+ AC_MSG_RESULT($SERVICELOG_EXISTS)
+@@ -1366,6 +1367,7 @@
+ if
+ $PKGCONFIG --exists $OPENIPMI $SERVICELOG
+ then
++ PKG_CHECK_MODULES([OPENIPMI_SERVICELOG],[OpenIPMI OpenIPMIposix])
+ OPENIPMI_SERVICELOG_EXISTS="yes"
+ fi
+ AC_MSG_RESULT($OPENIPMI_SERVICELOG_EXISTS)
+--- a/fencing/Makefile.am
++++ b/fencing/Makefile.am
+@@ -36,21 +36,20 @@
+
+ stonith_test_SOURCES = test.c
+
+-stonith_test_LDADD = $(CRYPTOLIB) $(CLUSTERLIBS) \
+- $(top_builddir)/lib/common/libcrmcommon.la \
++stonith_test_LDADD = $(top_builddir)/lib/common/libcrmcommon.la \
+ $(top_builddir)/lib/common/libcrmcluster.la \
+- $(top_builddir)/lib/fencing/libstonithd.la
++ $(top_builddir)/lib/fencing/libstonithd.la \
++ $(CRYPTOLIB) $(CLUSTERLIBS)
+
+ stonith_admin_SOURCES = admin.c
+
+-stonith_admin_LDADD = $(CRYPTOLIB) $(CLUSTERLIBS) \
+- $(top_builddir)/lib/common/libcrmcommon.la \
++stonith_admin_LDADD = $(top_builddir)/lib/common/libcrmcommon.la \
+ $(top_builddir)/lib/common/libcrmcluster.la \
+- $(top_builddir)/lib/fencing/libstonithd.la
+-
++ $(top_builddir)/lib/fencing/libstonithd.la \
++ $(CRYPTOLIB) $(CLUSTERLIBS)
+ stonithd_SOURCES = main.c commands.c remote.c
+
+-stonithd_LDADD = $(CRYPTOLIB) $(CLUSTERLIBS) \
+- $(top_builddir)/lib/common/libcrmcommon.la \
++stonithd_LDADD = $(top_builddir)/lib/common/libcrmcommon.la \
+ $(top_builddir)/lib/common/libcrmcluster.la \
+- $(top_builddir)/lib/fencing/libstonithd.la
++ $(top_builddir)/lib/fencing/libstonithd.la \
++ $(CRYPTOLIB) $(CLUSTERLIBS)
+--- a/mcp/Makefile.am
++++ b/mcp/Makefile.am
+@@ -34,7 +34,7 @@
+ noinst_HEADERS =
+
+ pacemakerd_SOURCES = pacemaker.c corosync.c
+-pacemakerd_LDADD = $(CLUSTERLIBS) $(top_builddir)/lib/common/libcrmcommon.la -lcfg -lconfdb
++pacemakerd_LDADD = $(top_builddir)/lib/common/libcrmcommon.la $(CLUSTERLIBS) -lcfg -lconfdb
+
+ %.8: %
+ echo Creating $@
+--- a/crmd/Makefile.am
++++ b/crmd/Makefile.am
+@@ -41,14 +41,13 @@
+ cib.c pengine.c tengine.c lrm.c \
+ utils.c misc.c te_events.c te_actions.c te_utils.c te_callbacks.c
+
+-crmd_LDADD = $(CLUSTERLIBS) -llrm \
+- $(top_builddir)/lib/fencing/libstonithd.la \
++crmd_LDADD = $(top_builddir)/lib/fencing/libstonithd.la \
+ $(top_builddir)/lib/transition/libtransitioner.la \
+ $(top_builddir)/lib/pengine/libpe_rules.la \
+ $(top_builddir)/lib/cib/libcib.la \
+ $(top_builddir)/lib/common/libcrmcluster.la \
+- $(top_builddir)/lib/common/libcrmcommon.la
+-
++ $(top_builddir)/lib/common/libcrmcommon.la \
++ $(CLUSTERLIBS) -llrm
+ if BUILD_XML_HELP
+ man8_MANS = crmd.8
+
+--- a/pengine/Makefile.am
++++ b/pengine/Makefile.am
+@@ -73,14 +73,14 @@
+ libpengine_la_LIBADD = $(top_builddir)/lib/pengine/libpe_status.la
+
+ pengine_SOURCES = main.c
+-pengine_LDADD = $(COMMONLIBS) $(top_builddir)/lib/cib/libcib.la
++pengine_LDADD = $(top_builddir)/lib/cib/libcib.la $(COMMONLIBS)
+ # libcib for get_object_root()
+ # $(top_builddir)/lib/hbclient/libhbclient.la
+
+ ptest_SOURCES = ptest.c
+-ptest_LDADD = $(COMMONLIBS) \
+- $(top_builddir)/lib/cib/libcib.la \
+- $(top_builddir)/lib/transition/libtransitioner.la
++ptest_LDADD = $(top_builddir)/lib/cib/libcib.la \
++ $(top_builddir)/lib/transition/libtransitioner.la \
++ $(COMMONLIBS)
+
+ install-exec-local:
+ $(mkinstalldirs) $(DESTDIR)/$(PE_STATE_DIR)
+--- a/lib/common/Makefile.am
++++ b/lib/common/Makefile.am
+@@ -38,7 +38,7 @@
+ endif
+
+ libcrmcluster_la_LDFLAGS = -version-info 1:0:0
+-libcrmcluster_la_LIBADD = $(CLUSTERLIBS) libcrmcommon.la
++libcrmcluster_la_LIBADD = libcrmcommon.la $(CLUSTERLIBS)
+ libcrmcluster_la_DEPENDENCIES = libcrmcommon.la
+
+ # Can't use -Wcast-qual here because glib insists on pretending things are const
+@@ -51,7 +51,8 @@
+
+ libcrmcommon_la_SOURCES = ipc.c utils.c xml.c iso8601.c iso8601_fields.c remote.c mainloop.c
+
+-libcrmcommon_la_LDFLAGS = -version-info 2:0:0 $(GNUTLSLIBS)
++libcrmcommon_la_LDFLAGS = -version-info 2:0:0
++libcrmcommon_la_LIBADD = $(GNUTLSLIBS)
+
+ clean-generic:
+ rm -f *.log *.debug *.xml *~
+--- a/lib/plugins/lrm/Makefile.am
++++ b/lib/plugins/lrm/Makefile.am
+@@ -29,8 +29,8 @@
+ plugin_LTLIBRARIES = stonith.la
+
+ stonith_la_SOURCES = raexecstonith.c
+-stonith_la_LDFLAGS = -lpils -export-dynamic -module -avoid-version \
+- $(top_builddir)/lib/fencing/libstonithd.la -llrm
++stonith_la_LDFLAGS = -export-dynamic -module -avoid-version
++stonith_la_LIBADD = $(top_builddir)/lib/fencing/libstonithd.la -lpils -llrm
+
+ install-exec-local:
+ $(mkinstalldirs) $(DESTDIR)$(lrmdir)
+--- a/lib/fencing/Makefile.am
++++ b/lib/fencing/Makefile.am
+@@ -25,8 +25,8 @@
+ lib_LTLIBRARIES = libstonithd.la
+
+ libstonithd_la_SOURCES = st_client.c
+-libstonithd_la_LDFLAGS = -version-info 1:0:0 \
+- -lplumb -lstonith $(CLUSTERLIBS) \
+- $(top_builddir)/lib/common/libcrmcommon.la
++libstonithd_la_LDFLAGS = -version-info 1:0:0
++libstonithd_la_LIBADD = $(top_builddir)/lib/common/libcrmcommon.la \
++ -lplumb -lstonith $(CLUSTERLIBS)
+
+ AM_CFLAGS = $(INCLUDES)
+--- a/cib/Makefile.am
++++ b/cib/Makefile.am
+@@ -47,8 +47,8 @@
+ cib_SOURCES = io.c messages.c notify.c \
+ callbacks.c main.c remote.c common.c
+
+-cib_LDADD = $(COMMONLIBS) $(CRYPTOLIB) $(CLUSTERLIBS) \
+- $(top_builddir)/lib/common/libcrmcluster.la
++cib_LDADD = $(top_builddir)/lib/common/libcrmcluster.la \
++ $(COMMONLIBS) $(CRYPTOLIB) $(CLUSTERLIBS)
+
+ cibmon_SOURCES = cibmon.c
+ cibmon_LDADD = $(COMMONLIBS)
+--- a/tools/Makefile.am
++++ b/tools/Makefile.am
+@@ -62,8 +62,8 @@
+ noinst_HEADERS =
+
+ crmadmin_SOURCES = crmadmin.c
+-crmadmin_LDADD = $(COMMONLIBS) $(CLUSTERLIBS) \
+- $(top_builddir)/lib/pengine/libpe_status.la
++crmadmin_LDADD = $(top_builddir)/lib/pengine/libpe_status.la \
++ $(COMMONLIBS) $(CLUSTERLIBS)
+
+ crm_uuid_SOURCES = crm_uuid.c
+ crm_uuid_LDADD = $(top_builddir)/lib/common/libcrmcluster.la
+@@ -75,45 +75,45 @@
+ crm_shadow_LDADD = $(COMMONLIBS)
+
+ crm_node_SOURCES = ccm_epoche.c
+-crm_node_LDADD = $(COMMONLIBS) $(CLUSTERLIBS) \
+- $(top_builddir)/lib/common/libcrmcluster.la
++crm_node_LDADD = $(top_builddir)/lib/common/libcrmcluster.la \
++ $(COMMONLIBS) $(CLUSTERLIBS)
+
+ crm_simulate_SOURCES = crm_inject.c
+ crm_simulate_CFLAGS = -I$(top_srcdir)/pengine
+
+-crm_simulate_LDADD = $(COMMONLIBS) \
+- $(top_builddir)/lib/pengine/libpe_status.la \
++crm_simulate_LDADD = $(top_builddir)/lib/pengine/libpe_status.la \
+ $(top_builddir)/pengine/libpengine.la \
+ $(top_builddir)/lib/cib/libcib.la \
+- $(top_builddir)/lib/transition/libtransitioner.la
++ $(top_builddir)/lib/transition/libtransitioner.la \
++ $(COMMONLIBS)
+
+ crm_diff_SOURCES = xml_diff.c
+ crm_diff_LDADD = $(COMMONLIBS)
+
+ crm_mon_SOURCES = crm_mon.c
+-crm_mon_LDADD = $(COMMONLIBS) $(SNMPLIBS) $(ESMTPLIBS) -llrm \
+- $(top_builddir)/lib/pengine/libpe_status.la
++crm_mon_LDADD = $(top_builddir)/lib/pengine/libpe_status.la \
++ $(COMMONLIBS) $(SNMPLIBS) $(ESMTPLIBS) -llrm
+
+ # Arguments could be made that this should live in crm/pengine
+ crm_verify_SOURCES = crm_verify.c
+-crm_verify_LDADD = $(COMMONLIBS) \
+- $(top_builddir)/lib/pengine/libpe_status.la \
+- $(top_builddir)/pengine/libpengine.la
++crm_verify_LDADD = $(top_builddir)/lib/pengine/libpe_status.la \
++ $(top_builddir)/pengine/libpengine.la \
++ $(COMMONLIBS)
+
+ crm_attribute_SOURCES = crm_attribute.c
+ crm_attribute_LDADD = $(COMMONLIBS)
+
+ crm_resource_SOURCES = crm_resource.c
+-crm_resource_LDADD = $(COMMONLIBS) \
+- $(top_builddir)/lib/pengine/libpe_rules.la \
++crm_resource_LDADD = $(top_builddir)/lib/pengine/libpe_rules.la \
+ $(top_builddir)/lib/pengine/libpe_status.la \
+- $(top_builddir)/pengine/libpengine.la
++ $(top_builddir)/pengine/libpengine.la \
++ $(COMMONLIBS)
+
+ iso8601_SOURCES = test.iso8601.c
+ iso8601_LDADD = $(COMMONLIBS)
+
+ attrd_SOURCES = attrd.c
+-attrd_LDADD = $(COMMONLIBS) $(top_builddir)/lib/common/libcrmcluster.la
++attrd_LDADD = $(top_builddir)/lib/common/libcrmcluster.la $(COMMONLIBS)
+
+ #pingd_SOURCES = pingd.c
+ #pingd_LDADD = $(COMMONLIBS)
+@@ -123,14 +123,14 @@
+
+ if BUILD_SERVICELOG
+ notifyServicelogEvent_SOURCES = notifyServicelogEvent.c
+-notifyServicelogEvent_CFLAGS = `pkg-config --cflags servicelog-1`
+-notifyServicelogEvent_LDFLAGS = `pkg-config --libs servicelog-1` $(top_builddir)/lib/common/libcrmcommon.la
++notifyServicelogEvent_CFLAGS = $(SERVICELOG_CFLAGS)
++notifyServicelogEvent_LDADD = $(top_builddir)/lib/common/libcrmcommon.la $(SERVICELOG_LIBS)
+ endif
+
+ if BUILD_OPENIPMI_SERVICELOG
+ ipmiservicelogd_SOURCES = ipmiservicelogd.c
+-ipmiservicelogd_CFLAGS = `pkg-config --cflags OpenIPMI OpenIPMIposix servicelog-1`
+-ipmiservicelogd_LDFLAGS = `pkg-config --libs OpenIPMI OpenIPMIposix servicelog-1` $(top_builddir)/lib/common/libcrmcommon.la
++ipmiservicelogd_CFLAGS = $(OPENIPMI_SERVICELOG_CFLAGS) $(SERVICELOG_CFLAGS)
++ipmiservicelogd_LDFLAGS = $(top_builddir)/lib/common/libcrmcommon.la $(OPENIPMI_SERVICELOG_LIBS) $(SERVICELOG_LIBS)
+ endif
+
+ %.8: % crm_attribute
diff --git a/sys-cluster/pacemaker/files/pacemaker-1.1.4-installpaths.patch b/sys-cluster/pacemaker/files/pacemaker-1.1.4-installpaths.patch
deleted file mode 100644
index 5187b7967..000000000
--- a/sys-cluster/pacemaker/files/pacemaker-1.1.4-installpaths.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- extra/Makefile.am
-+++ extra/Makefile.am
-@@ -20,5 +20,5 @@
-
- SUBDIRS = resources
-
--mibdir = $(datadir)/snmp/mibs
-+mibdir = $(datadir)/$(PACKAGE)/snmp/mibs
- mib_DATA = PCMK-MIB.txt
diff --git a/sys-cluster/pacemaker/pacemaker-1.1.4.ebuild b/sys-cluster/pacemaker/pacemaker-1.1.4-r4.ebuild
index 3e90a316d..d95597b98 100644
--- a/sys-cluster/pacemaker/pacemaker-1.1.4.ebuild
+++ b/sys-cluster/pacemaker/pacemaker-1.1.4-r4.ebuild
@@ -16,31 +16,26 @@ SRC_URI="http://hg.clusterlabs.org/${PN}/1.1/archive/${MY_P}.tar.bz2"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"
-IUSE="+ais heartbeat smtp snmp static-libs"
+IUSE="heartbeat smtp snmp static-libs"
RDEPEND="
dev-libs/libxslt
+ sys-cluster/corosync
sys-cluster/cluster-glue
sys-cluster/resource-agents
- ais? ( sys-cluster/openais )
heartbeat? ( >=sys-cluster/heartbeat-3.0.0 )
- !heartbeat? ( !ais? ( sys-cluster/openais ) )
smtp? ( net-libs/libesmtp )
snmp? ( net-analyzer/net-snmp )
"
DEPEND="${RDEPEND}"
PATCHES=(
- "${FILESDIR}/${P}-installpaths.patch"
+ "${FILESDIR}/${P}-autotools-r2.patch"
)
-S="${WORKDIR}/${MY_PN}-1-1-${MY_P}"
+S=${WORKDIR}/${MY_PN}-1-1-${MY_P}
pkg_setup() {
- if ! use ais && ! use heartbeat; then
- ewarn "You disabled both cluster implementations"
- ewarn "Silently enabling OpenAIS/CoroSync support."
- fi
python_set_active_version 2
python_pkg_setup
}
@@ -53,7 +48,7 @@ src_prepare() {
src_configure() {
local myopts=""
- use heartbeat || use ais || myopts="--with-ais"
+ use heartbeat || myopts="--with-ais"
# appends lib to localstatedir automatically
econf \
--localstatedir=/var \
@@ -62,7 +57,6 @@ src_configure() {
--with-cs-quorum \
--without-cman \
$(use_with smtp esmtp) \
- $(use_with ais) \
$(use_with heartbeat) \
$(use_with snmp) \
$(use_enable static-libs static) \
@@ -84,4 +78,7 @@ pkg_postinst() {
elog "/etc/init.d/pacemaker start"
elog
elog "[1] http://theclusterguy.clusterlabs.org/post/907043024/introducing-the-pacemaker-master-control-process-for"
-} \ No newline at end of file
+ elog
+ elog "Note: sys-cluster/openais is no longer a hard dependency of ${P},"
+ elog "so you may need to install it yourself to suit your needs."
+}