keepalived-1.2.24/0000775000175000017500000000000012765310731010721 500000000000000keepalived-1.2.24/README0000664000175000017500000000175712765305203011531 00000000000000The main goal of the keepalived project is to add a strong & robust keepalive facility to the Linux Virtual Server project. It implements a multilayer TCP/IP stack checks. Keepalived implements a framework based on three family checks : Layer3, Layer4 & Layer5. This framework gives the daemon the ability of checking a LVS server pool states. Keepalived can be sumarize as a LVS driving daemon. Keepalived implementation is based on an I/O multiplexer to handle a strong multi-threading framework. All the events process use this I/O multiplexer. Keepalived is free software, Copyright (C) Alexandre Cassen. See the file COPYING for copying conditions. OPENSSL TOOLKIT LICENCE EXCEPTION In addition, as the copyright holder of Keepalived, I, Alexandre Cassen, , grant the following special exception: I, Alexandre Cassen, , explicitly allow the compilation and distribution of the Keepalived software with the OpenSSL Toolkit. keepalived-1.2.24/install-sh0000775000175000017500000001273612765305203012654 00000000000000#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 keepalived-1.2.24/missing0000755000175000017500000001533012261335263012236 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: keepalived-1.2.24/compile0000755000175000017500000001624512261335263012223 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2013 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: keepalived-1.2.24/Makefile.in0000664000175000017500000006107412765310676012726 00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile.am # # Keepalived OpenSource project. # # Copyright (C) 2001-2016 Alexandre Cassen, VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : @BUILD_GENHASH_TRUE@am__append_1 = genhash subdir = . DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/keepalived.spec.in COPYING ChangeLog INSTALL README \ TODO ar-lib compile depcomp install-sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/lib/config.h CONFIG_CLEAN_FILES = keepalived.spec CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = lib keepalived doc genhash bin_install DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ARFLAGS = @ARFLAGS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GENHASH_LIBS = @GENHASH_LIBS@ GREP = @GREP@ HAVE_SPHINX_BUILD = @HAVE_SPHINX_BUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KA_CFLAGS = @KA_CFLAGS@ KA_CPPFLAGS = @KA_CPPFLAGS@ KA_LDFLAGS = @KA_LDFLAGS@ KA_LIBS = @KA_LIBS@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINTAINERCLEANFILES = @MAINTAINERCLEANFILES@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NETSNMP_CONFIG = @NETSNMP_CONFIG@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SPHINXBUILDNAME = @SPHINXBUILDNAME@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = lib keepalived doc $(am__append_1) bin_install EXTRA_DIST = AUTHOR CONTRIBUTORS all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): keepalived.spec: $(top_builddir)/config.status $(srcdir)/keepalived.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-local \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-generic distclean-local \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am export DEBUG_CFLAGS export DEBUG_CPPFLAGS export DEBUG_LDFLAGS distclean-local: @rm -f aclocal.m4 ar-lib compile depcomp missing keepalived-$(VERSION).tar.gz config.log config.status @rm -rf autom4te.cache # clean all files that are generated by automake/autoconf etc autoclean: @$(MAKE) distclean @rm -f configure `find . -name Makefile.in` lib/config.h.in lib/git-commit.h # Added targets to maintain compatibility with keepalived releases 1.2.22 and earlier .PHONY: tarball rpm debug profile mrproper tarball: dist rpm: rpmbuild -ba --build-in-place keepalived.spec debug: @$(MAKE) DEBUG_LDFLAGS=-ggdb profile: @$(MAKE) DEBUG_CFLAGS=-pg mrproper: @echo Please use `make distclean` # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: keepalived-1.2.24/bin_install/0000775000175000017500000000000012765310731013217 500000000000000keepalived-1.2.24/bin_install/Makefile.in0000664000175000017500000003025012765310673015211 00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile.am # # Keepalived OpenSource project. # # Copyright (C) 2001-2016 Alexandre Cassen, VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : subdir = bin_install DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/lib/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ARFLAGS = @ARFLAGS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GENHASH_LIBS = @GENHASH_LIBS@ GREP = @GREP@ HAVE_SPHINX_BUILD = @HAVE_SPHINX_BUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KA_CFLAGS = @KA_CFLAGS@ KA_CPPFLAGS = @KA_CPPFLAGS@ KA_LDFLAGS = @KA_LDFLAGS@ KA_LIBS = @KA_LIBS@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINTAINERCLEANFILES = @MAINTAINERCLEANFILES@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NETSNMP_CONFIG = @NETSNMP_CONFIG@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SPHINXBUILDNAME = @SPHINXBUILDNAME@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign bin_install/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign bin_install/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-local \ cscopelist-am ctags-am distclean distclean-generic distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags-am uninstall uninstall-am .PHONY: all debug profile all debug profile: $(top_builddir)/bin/keepalived $(top_builddir)/bin/genhash $(top_builddir)/bin/keepalived: $(top_builddir)/keepalived/keepalived @$(MKDIR_P) $(top_builddir)/bin @(if test -f $(top_builddir)/keepalived/keepalived; then \ if test -z "$(DEBUG_LDFLAGS)$(DEBUG_CFLAGS)$(DEBUG_CPPFLAGS)"; then \ @STRIP@ -o $(top_builddir)/bin/keepalived $(top_builddir)/keepalived/keepalived; \ else \ cp -p $(top_builddir)/keepalived/keepalived $(top_builddir)/bin; \ fi; \ else \ rm -f $(top_builddir)/bin/keepalived; \ fi) $(top_builddir)/bin/genhash: $(top_builddir)/genhash/genhash @$(MKDIR_P) $(top_builddir)/bin @(if test -f $(top_builddir)/genhash/genhash; then \ if test -z "$(DEBUG_LDFLAGS)$(DEBUG_CFLAGS)$(DEBUG_CPPFLAGS)"; then \ @STRIP@ -o $(top_builddir)/bin/genhash $(top_builddir)/genhash/genhash; \ else \ cp -p $(top_builddir)/genhash/genhash $(top_builddir)/bin; \ fi; \ else \ rm -f $(top_builddir)/bin/genhash; \ fi) clean-local: rm -f $(top_builddir)/bin/keepalived $(top_builddir)/bin/genhash # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: keepalived-1.2.24/bin_install/Makefile.am0000664000175000017500000000225412765305203015174 00000000000000# Makefile.am # # Keepalived OpenSource project. # # Copyright (C) 2001-2016 Alexandre Cassen, .PHONY: all debug profile all debug profile: $(top_builddir)/bin/keepalived $(top_builddir)/bin/genhash $(top_builddir)/bin/keepalived: $(top_builddir)/keepalived/keepalived @$(MKDIR_P) $(top_builddir)/bin @(if test -f $(top_builddir)/keepalived/keepalived; then \ if test -z "$(DEBUG_LDFLAGS)$(DEBUG_CFLAGS)$(DEBUG_CPPFLAGS)"; then \ @STRIP@ -o $(top_builddir)/bin/keepalived $(top_builddir)/keepalived/keepalived; \ else \ cp -p $(top_builddir)/keepalived/keepalived $(top_builddir)/bin; \ fi; \ else \ rm -f $(top_builddir)/bin/keepalived; \ fi) $(top_builddir)/bin/genhash: $(top_builddir)/genhash/genhash @$(MKDIR_P) $(top_builddir)/bin @(if test -f $(top_builddir)/genhash/genhash; then \ if test -z "$(DEBUG_LDFLAGS)$(DEBUG_CFLAGS)$(DEBUG_CPPFLAGS)"; then \ @STRIP@ -o $(top_builddir)/bin/genhash $(top_builddir)/genhash/genhash; \ else \ cp -p $(top_builddir)/genhash/genhash $(top_builddir)/bin; \ fi; \ else \ rm -f $(top_builddir)/bin/genhash; \ fi) clean-local: rm -f $(top_builddir)/bin/keepalived $(top_builddir)/bin/genhash keepalived-1.2.24/keepalived.spec.in0000664000175000017500000001216112765305203014232 00000000000000# $Id$ # Authority: dag # Ugly, but we need headers from a kernel to rebuild against %define kernel %(rpm -q kernel-devel --qf '%{RPMTAG_VERSION}-%{RPMTAG_RELEASE}\\n' 2>/dev/null | head -1) Summary: HA monitor built upon LVS, VRRP and services poller Name: keepalived Version: @VERSION@ Release: 5 License: GPL Group: Applications/System URL: http://www.keepalived.org/ Source0: http://www.keepalived.org/software/keepalived-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: openssl-devel # We need both of these for proper LVS support BuildRequires: kernel, kernel-devel Requires(post): /sbin/chkconfig Requires(preun): /sbin/service, /sbin/chkconfig Requires(postun): /sbin/service %description The main goal of the keepalived project is to add a strong & robust keepalive facility to the Linux Virtual Server project. This project is written in C with multilayer TCP/IP stack checks. Keepalived implements a framework based on three family checks : Layer3, Layer4 & Layer5/7. This framework gives the daemon the ability to check the state of an LVS server pool. When one of the servers of the LVS server pool is down, keepalived informs the linux kernel via a setsockopt call to remove this server entry from the LVS topology. In addition keepalived implements an independent VRRPv2 stack to handle director failover. So in short keepalived is a userspace daemon for LVS cluster nodes healthchecks and LVS directors failover. %prep %setup %build %{?el3:export CPPFLAGS="-I/usr/kerberos/include"} %{?rh9:export CPPFLAGS="-I/usr/kerberos/include"} %configure \ %{?el3:--includedir="/usr/kerberos/include"} \ %{?rh9:--includedir="/usr/kerberos/include"} \ --with-kernel-dir="/lib/modules/%{kernel}/build" %{__make} %{?_smp_mflags} STRIP=/bin/true %install %{__rm} -rf %{buildroot} %{__make} install DESTDIR=%{buildroot} # Remove "samples", as we include them in %%doc %{__rm} -rf %{buildroot}%{_sysconfdir}/keepalived/samples/ %check # A build could silently have LVS support disabled if the kernel includes can't # be properly found, we need to avoid that. if ! grep -q "IPVS_SUPPORT='_WITH_LVS_'" config.log; then echo "ERROR: We do not want keeepalived lacking LVS support." exit 1 fi %clean %{__rm} -rf %{buildroot} %post /sbin/chkconfig --add keepalived %preun if [ $1 -eq 0 ]; then /sbin/service keepalived stop &>/dev/null || : /sbin/chkconfig --del keepalived fi %postun if [ $1 -ge 1 ]; then /sbin/service keepalived condrestart &>/dev/null || : fi %files %defattr(-, root, root, 0755) %doc AUTHOR ChangeLog CONTRIBUTORS COPYING README TODO %doc doc/keepalived.conf.SYNOPSIS doc/samples/ %dir %{_sysconfdir}/keepalived/ %attr(0600, root, root) %config(noreplace) %{_sysconfdir}/keepalived/keepalived.conf %attr(0600, root, root) %config(noreplace) %{_sysconfdir}/sysconfig/keepalived %{_sysconfdir}/rc.d/init.d/keepalived %{_bindir}/genhash %{_sbindir}/keepalived %{_mandir}/man1/genhash.1* %{_mandir}/man5/keepalived.conf.5* %{_mandir}/man8/keepalived.8* %changelog * Thu Sep 13 2007 Alexandre Cassen 1.1.14 - Merge work done by freshrpms.net... Thanks guys !!! ;) * Wed Feb 14 2007 Matthias Saou 1.1.13-5 - Add missing scriplet requirements. * Tue Feb 13 2007 Matthias Saou 1.1.13-4 - Add missing \n to the kernel define, for when multiple kernels are installed. - Pass STRIP=/bin/true to "make" in order to get a useful debuginfo package. * Tue Feb 13 2007 Matthias Saou 1.1.13-3 - Add %%check section to make sure any build without LVS support will fail. * Mon Feb 5 2007 Matthias Saou 1.1.13-2 - Use our own init script, include a sysconfig entry used by it for options. * Thu Jan 25 2007 Matthias Saou 1.1.13-1 - Update to 1.1.13. - Change mode of configuration file to 0600. - Don't include all of "doc" since it meant re-including all man pages. - Don't include samples in the main configuration path, they're in %%doc. - Include patch to add an optional label to interfaces. * Sat Apr 08 2006 Dries Verachtert - 1.1.12-1.2 - Rebuild for Fedora Core 5. * Sun Mar 12 2006 Dag Wieers - 1.1.12-1 - Updated to release 1.1.12. * Fri Mar 04 2005 Dag Wieers - 1.1.11-1 - Updated to release 1.1.11. * Wed Feb 23 2005 Dag Wieers - 1.1.10-2 - Fixed IPVS/LVS support. (Joe Sauer) * Tue Feb 15 2005 Dag Wieers - 1.1.10-1 - Updated to release 1.1.10. * Mon Feb 07 2005 Dag Wieers - 1.1.9-1 - Updated to release 1.1.9. * Sun Oct 17 2004 Dag Wieers - 1.1.7-2 - Fixes to build with kernel IPVS support. (Tim Verhoeven) * Fri Sep 24 2004 Dag Wieers - 1.1.7-1 - Updated to release 1.1.7. (Mathieu Lubrano) * Mon Feb 23 2004 Dag Wieers - 1.1.6-0 - Updated to release 1.1.6. * Mon Jan 26 2004 Dag Wieers - 1.1.5-0 - Updated to release 1.1.5. * Mon Dec 29 2003 Dag Wieers - 1.1.4-0 - Updated to release 1.1.4. * Fri Jun 06 2003 Dag Wieers - 1.0.3-0 - Initial package. (using DAR) keepalived-1.2.24/INSTALL0000664000175000017500000000433012765305203011670 00000000000000Kernel needs ============== Compile a kernel with the following options : Kernel/User netlink socket LinuxVirtualServer Keepalived supports all LVS code. Library dependencies ==================== In order to compile Keepalived needs the following libraries : * OpenSSL, Installation ============ 1. uncompress the tarball 2. cd into the directory 3. './configure' 4. 'make' 5. 'make install'. This will install keepalived on your system, binaries and configuration file : * keepalived : The keepalived daemon program. * genhash : The MD5 url digest generator. You need it to configure HTTP GET check and SSL GET check in order to compute MD5SUM digest etalon. * /etc/keepalived/keepalived.conf 6. link keepalived.init into your runlevel directory. On Red Hat systems : ln -s /etc/rc.d/init.d/keepalived.init /etc/rc.d/rc3.d/S99keepalived By default the configure script uses /usr/local as base directory. You can change this value to your own by passing it the --prefix value. eg: './configure --prefix=/usr/' Modifying source code ===================== If you modify the source code, especially configure.ac or any Makefile.am file, you will need to regenerate the build files. Keepalived uses automake and so you will need to have automake and autoconf installed. To regenerate the build environment, you will need to run the following commands before following the instuctions under 'Installation' above: 1. 'aclocal' 2. 'autoheader' 3. 'automake --add-missing' 4. 'autoreconf' If you are attempting to build keepalived after cloning https://github.com/acassen/keepalived and you don't have automake available, you may find it useful first to run 'find . -exec touch -r configure {} +'. Configuration ============= Just take a look at the /etc/keepalived/keepalived.conf file installed. It will give you all the information needed. Alternativley, run 'man keepalived.conf' or look at doc/keepalived.conf.SYNOPSIS. If you want more information about keepalived, please refer to the keepalived homepage into the documentation section. http://www.keepalived.org Have fun with it ! Alexandre, keepalived-1.2.24/doc/0000775000175000017500000000000012765310731011466 500000000000000keepalived-1.2.24/doc/Makefile.in0000664000175000017500000007154412765310673013473 00000000000000# Makefile.in generated by automake 1.14.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2013 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # Makefile.am # # Keepalived OpenSource project. VPATH = @srcdir@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : @SNMP_TRUE@am__append_1 = KEEPALIVED-MIB @SNMP_RFCV2_TRUE@am__append_2 = VRRP-MIB @SNMP_RFCV3_TRUE@am__append_3 = VRRPv3-MIB subdir = doc DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(dist_man1_MANS) $(dist_man5_MANS) $(dist_man8_MANS) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/lib/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" \ "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(mibsdir)" \ "$(DESTDIR)$(sampledir)" man5dir = $(mandir)/man5 man8dir = $(mandir)/man8 NROFF = nroff MANS = $(dist_man1_MANS) $(dist_man5_MANS) $(dist_man8_MANS) DATA = $(mibs_DATA) $(sample_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ ARFLAGS = @ARFLAGS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GENHASH_LIBS = @GENHASH_LIBS@ GREP = @GREP@ HAVE_SPHINX_BUILD = @HAVE_SPHINX_BUILD@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ KA_CFLAGS = @KA_CFLAGS@ KA_CPPFLAGS = @KA_CPPFLAGS@ KA_LDFLAGS = @KA_LDFLAGS@ KA_LIBS = @KA_LIBS@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINTAINERCLEANFILES = @MAINTAINERCLEANFILES@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ NETSNMP_CONFIG = @NETSNMP_CONFIG@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SPHINXBUILDNAME = @SPHINXBUILDNAME@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build_alias = @build_alias@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host_alias = @host_alias@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @BUILD_GENHASH_TRUE@dist_man1_MANS = man/man1/genhash.1 dist_man5_MANS = man/man5/keepalived.conf.5 dist_man8_MANS = man/man8/keepalived.8 EXTRA_DIST = source samples keepalived.conf.SYNOPSIS NOTE_vrrp_vmac.txt KEEPALIVED-MIB VRRP-MIB VRRPv3-MIB sampledir = $(sysconfdir)/@PACKAGE@/samples sample_DATA = $(srcdir)/samples/* mibsdir = $(datarootdir)/snmp/mibs mibs_DATA = $(am__append_1) $(am__append_2) $(am__append_3) # You can set these variables from the command line. @BUILD_DOCS_TRUE@SPHINXOPTS = @BUILD_DOCS_TRUE@SPHINXBUILD = @SPHINXBUILDNAME@ @BUILD_DOCS_TRUE@PAPER = a4 @BUILD_DOCS_TRUE@BUILDDIR = build # Internal variables. @BUILD_DOCS_TRUE@PAPEROPT = -D latex_paper_size=$(PAPER) @BUILD_DOCS_TRUE@ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT) $(SPHINXOPTS) source # the i18n builder cannot share the environment and doctrees with the others @BUILD_DOCS_TRUE@I18NSPHINXOPTS = $(PAPEROPT) $(SPHINXOPTS) source all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-man1: $(dist_man1_MANS) @$(NORMAL_INSTALL) @list1='$(dist_man1_MANS)'; \ list2=''; \ test -n "$(man1dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.1[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) install-man5: $(dist_man5_MANS) @$(NORMAL_INSTALL) @list1='$(dist_man5_MANS)'; \ list2=''; \ test -n "$(man5dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man5dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man5dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.5[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man5dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man5dir)" || exit $$?; }; \ done; } uninstall-man5: @$(NORMAL_UNINSTALL) @list='$(dist_man5_MANS)'; test -n "$(man5dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^5][0-9a-z]*$$,5,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man5dir)'; $(am__uninstall_files_from_dir) install-man8: $(dist_man8_MANS) @$(NORMAL_INSTALL) @list1='$(dist_man8_MANS)'; \ list2=''; \ test -n "$(man8dir)" \ && test -n "`echo $$list1$$list2`" \ || exit 0; \ echo " $(MKDIR_P) '$(DESTDIR)$(man8dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man8dir)" || exit 1; \ { for i in $$list1; do echo "$$i"; done; \ if test -n "$$list2"; then \ for i in $$list2; do echo "$$i"; done \ | sed -n '/\.8[a-z]*$$/p'; \ fi; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man8dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man8dir)" || exit $$?; }; \ done; } uninstall-man8: @$(NORMAL_UNINSTALL) @list='$(dist_man8_MANS)'; test -n "$(man8dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^8][0-9a-z]*$$,8,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man8dir)'; $(am__uninstall_files_from_dir) install-mibsDATA: $(mibs_DATA) @$(NORMAL_INSTALL) @list='$(mibs_DATA)'; test -n "$(mibsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(mibsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(mibsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(mibsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(mibsdir)" || exit $$?; \ done uninstall-mibsDATA: @$(NORMAL_UNINSTALL) @list='$(mibs_DATA)'; test -n "$(mibsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(mibsdir)'; $(am__uninstall_files_from_dir) install-sampleDATA: $(sample_DATA) @$(NORMAL_INSTALL) @list='$(sample_DATA)'; test -n "$(sampledir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(sampledir)'"; \ $(MKDIR_P) "$(DESTDIR)$(sampledir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sampledir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(sampledir)" || exit $$?; \ done uninstall-sampleDATA: @$(NORMAL_UNINSTALL) @list='$(sample_DATA)'; test -n "$(sampledir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(sampledir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-am all-am: Makefile $(MANS) $(DATA) installdirs: for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(man8dir)" "$(DESTDIR)$(mibsdir)" "$(DESTDIR)$(sampledir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) @BUILD_DOCS_FALSE@clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: @BUILD_DOCS_FALSE@html: html-am html-am: @BUILD_DOCS_FALSE@info: info-am info-am: install-data-am: install-man install-mibsDATA install-sampleDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-man5 install-man8 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-man uninstall-mibsDATA uninstall-sampleDATA uninstall-man: uninstall-man1 uninstall-man5 uninstall-man8 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic cscopelist-am \ ctags-am dist-hook distclean distclean-generic distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-man1 \ install-man5 install-man8 install-mibsDATA install-pdf \ install-pdf-am install-ps install-ps-am install-sampleDATA \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-man uninstall-man1 uninstall-man5 \ uninstall-man8 uninstall-mibsDATA uninstall-sampleDATA dist-hook: rm -rf `find $(distdir)/doc -type d -name ".git*"` @BUILD_DOCS_FALSE@.PHONY: all help @BUILD_DOCS_FALSE@all: @BUILD_DOCS_FALSE@ @true @BUILD_DOCS_FALSE@help: @BUILD_DOCS_FALSE@ @echo "To build the documentation, make sure you have Sphinx installed, then" @BUILD_DOCS_FALSE@ @echo "run configure with the SPHINXBUILD environment variable pointing to" @BUILD_DOCS_FALSE@ @echo "the path of the 'sphinx-build' executable. Alternatively you can add" @BUILD_DOCS_FALSE@ @echo "the directory with the executable to your PATH. If you don't have" @BUILD_DOCS_FALSE@ @echo "Sphinx installed, either try installing package python-sphinx or" @BUILD_DOCS_FALSE@ @echo "equivalent, or grab it from http://sphinx-doc.org/." @BUILD_DOCS_TRUE@.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext @BUILD_DOCS_TRUE@default: man @BUILD_DOCS_TRUE@help: @BUILD_DOCS_TRUE@ @echo "Please use \`make ' where is one of" @BUILD_DOCS_TRUE@ @echo " html to make standalone HTML files" @BUILD_DOCS_TRUE@ @echo " singlehtml to make a single large HTML file" @BUILD_DOCS_TRUE@ @echo " pickle to make pickle files" @BUILD_DOCS_TRUE@ @echo " json to make JSON files" @BUILD_DOCS_TRUE@ @echo " htmlhelp to make HTML files and a HTML help project" @BUILD_DOCS_TRUE@ @echo " qthelp to make HTML files and a qthelp project" @BUILD_DOCS_TRUE@ @echo " devhelp to make HTML files and a Devhelp project" @BUILD_DOCS_TRUE@ @echo " epub to make an epub" @BUILD_DOCS_TRUE@ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @BUILD_DOCS_TRUE@ @echo " latexpdf to make LaTeX files and run them through pdflatex" @BUILD_DOCS_TRUE@ @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" @BUILD_DOCS_TRUE@ @echo " text to make text files" @BUILD_DOCS_TRUE@ @echo " man to make manual pages" @BUILD_DOCS_TRUE@ @echo " texinfo to make Texinfo files" @BUILD_DOCS_TRUE@ @echo " info to make Texinfo files and run them through makeinfo" @BUILD_DOCS_TRUE@ @echo " gettext to make PO message catalogs" @BUILD_DOCS_TRUE@ @echo " changes to make an overview of all changed/added/deprecated items" @BUILD_DOCS_TRUE@ @echo " xml to make Docutils-native XML files" @BUILD_DOCS_TRUE@ @echo " pseudoxml to make pseudoxml-XML files for display purposes" @BUILD_DOCS_TRUE@ @echo " linkcheck to check all external links for integrity" @BUILD_DOCS_TRUE@ @echo " doctest to run all doctests embedded in the documentation (if enabled)" @BUILD_DOCS_TRUE@clean: @BUILD_DOCS_TRUE@ rm -rf $(BUILDDIR) @BUILD_DOCS_TRUE@html: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." @BUILD_DOCS_TRUE@dirhtml: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." @BUILD_DOCS_TRUE@singlehtml: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." @BUILD_DOCS_TRUE@pickle: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished; now you can process the pickle files." @BUILD_DOCS_TRUE@json: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished; now you can process the JSON files." @BUILD_DOCS_TRUE@htmlhelp: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished; now you can run HTML Help Workshop with the" \ @BUILD_DOCS_TRUE@ ".hhp project file in $(BUILDDIR)/htmlhelp." @BUILD_DOCS_TRUE@qthelp: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished; now you can run "qcollectiongenerator" with the" \ @BUILD_DOCS_TRUE@ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @BUILD_DOCS_TRUE@ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Keepalived.qhcp" @BUILD_DOCS_TRUE@ @echo "To view the help file:" @BUILD_DOCS_TRUE@ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Keepalived.qhc" @BUILD_DOCS_TRUE@devhelp: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished." @BUILD_DOCS_TRUE@ @echo "To view the help file:" @BUILD_DOCS_TRUE@ @echo "# mkdir -p $$HOME/.local/share/devhelp/Keepalived" @BUILD_DOCS_TRUE@ @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Keepalived" @BUILD_DOCS_TRUE@ @echo "# devhelp" @BUILD_DOCS_TRUE@epub: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished. The epub file is in $(BUILDDIR)/epub." @BUILD_DOCS_TRUE@latex: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @BUILD_DOCS_TRUE@ @echo "Run \`make' in that directory to run these through (pdf)latex" \ @BUILD_DOCS_TRUE@ "(use \`make latexpdf' here to do that automatically)." @BUILD_DOCS_TRUE@latexpdf: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @BUILD_DOCS_TRUE@ @echo "Running LaTeX files through pdflatex..." @BUILD_DOCS_TRUE@ $(MAKE) -C $(BUILDDIR)/latex all-pdf @BUILD_DOCS_TRUE@ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." @BUILD_DOCS_TRUE@latexpdfja: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @BUILD_DOCS_TRUE@ @echo "Running LaTeX files through platex and dvipdfmx..." @BUILD_DOCS_TRUE@ $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja @BUILD_DOCS_TRUE@ @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." @BUILD_DOCS_TRUE@text: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished. The text files are in $(BUILDDIR)/text." @BUILD_DOCS_TRUE@man: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished. The manual pages are in $(BUILDDIR)/man." @BUILD_DOCS_TRUE@texinfo: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @BUILD_DOCS_TRUE@ @echo "Run \`make' in that directory to run these through makeinfo" \ @BUILD_DOCS_TRUE@ "(use \`make info' here to do that automatically)." @BUILD_DOCS_TRUE@info: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @BUILD_DOCS_TRUE@ @echo "Running Texinfo files through makeinfo..." @BUILD_DOCS_TRUE@ make -C $(BUILDDIR)/texinfo info @BUILD_DOCS_TRUE@ @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." @BUILD_DOCS_TRUE@gettext: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." @BUILD_DOCS_TRUE@changes: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "The overview file is in $(BUILDDIR)/changes." @BUILD_DOCS_TRUE@linkcheck: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Link check complete; look for any errors in the above output " \ @BUILD_DOCS_TRUE@ "or in $(BUILDDIR)/linkcheck/output.txt." @BUILD_DOCS_TRUE@doctest: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @BUILD_DOCS_TRUE@ @echo "Testing of doctests in the sources finished, look at the " \ @BUILD_DOCS_TRUE@ "results in $(BUILDDIR)/doctest/output.txt." @BUILD_DOCS_TRUE@xml: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished. The XML files are in $(BUILDDIR)/xml." @BUILD_DOCS_TRUE@pseudoxml: @BUILD_DOCS_TRUE@ $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml @BUILD_DOCS_TRUE@ @echo @BUILD_DOCS_TRUE@ @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: keepalived-1.2.24/doc/man/0000775000175000017500000000000012765310731012241 500000000000000keepalived-1.2.24/doc/man/man8/0000775000175000017500000000000012765310731013104 500000000000000keepalived-1.2.24/doc/man/man8/keepalived.80000664000175000017500000001365212765305203015233 00000000000000.TH KEEPALIVED "8" "April 2016" .na .nh .SH "NAME" keepalived \- load\-balancing and high\-availability service .SH "SYNOPSIS" \fBkeepalived\fP [\fB\-f\fP|\fB\-\-use\-file\fP=FILE] [\fB\-P\fP|\fB\-\-vrrp\fP] [\fB\-C\fP|\fB\-\-check\fP] [\fB\-l\fP|\fB\-\-log\-console\fP] [\fB\-D\fP|\fB\-\-log\-detail\fP] [\fB\-S\fP|\fB\-\-log\-facility\fP={0-7}] [\fB\-V\fP|\fB\-\-dont\-release\-vrrp\fP] [\fB\-I\fP|\fB\-\-dont\-release\-ipvs\fP] [\fB\-R\fP|\fB\-\-dont\-respawn\fP] [\fB\-n\fP|\fB\-\-dont\-fork\fP] [\fB\-d\fP|\fB\-\-dump\-conf\fP] [\fB\-p\fP|\fB\-\-pid\fP=FILE] [\fB\-r\fP|\fB\-\-vrrp_pid\fP=FILE] [\fB\-c\fP|\fB\-\-checkers_pid\fP=FILE] [\fB\-x\fP|\fB\-\-snmp\fP] [\fB\-A\fP|\fB\-\-snmp-agent-socket\fP=FILE] [\fB\-m\fP|\fB\-\-core\-dump\fP] [\fB\-M\fP|\fB\-\-core\-dump\-format\fP[=PATTERN]] [\fB\-v\fP|\fB\-\-version\fP] [\fB\-h\fP|\fB\-\-help\fP] .SH "DESCRIPTION" Keepalived provides simple and robust facilities for load\-balancing and high\-availability. The load\-balancing framework relies on the well\-known and widely used Linux Virtual Server (IPVS) kernel module providing Layer4 load\-balancing. Keepalived implements a set of checkers to dynamically and adaptively maintain and manage a load\-balanced server pool according to their health. Keepalived also implements the VRRPv2 and VRRPv3 protocols to achieve high\-availability with director failover. .SH "OPTIONS" .TP \fB -f, --use-file\fP=FILE Use the specified configuration file. The default configuration file is "/etc/keepalived/keepalived.conf". .TP \fB -P, --vrrp\fP Only run the VRRP subsystem. This is useful for configurations that do not use the IPVS load balancer. .TP \fB -C, --check\fP Only run the healthcheck subsystem. This is useful for configurations that use the IPVS load balancer with a single director with no failover. .TP \fB -l, --log-console\fP Log messages to the local console. The default behavior is to log messages to syslog. .TP \fB -D, --log-detail\fP Detailed log messages. .TP \fB -S, --log-facility\fP=[0-7] Set syslog facility to LOG_LOCAL[0-7]. The default syslog facility is LOG_DAEMON. .TP \fB -X, --release-vips\fP Drop VIP on transition from signal. .TP \fB -V, --dont-release-vrrp\fP Don't remove VRRP VIPs and VROUTEs on daemon stop. The default behavior is to remove all VIPs and VROUTEs when keepalived exits. .TP \fB -I, --dont-release-ipvs\fP Don't remove IPVS topology on daemon stop. The default behavior it to remove all entries from the IPVS virtual server table when keepalived exits. .TP \fB -R, --dont-respawn\fP Don't respawn child processes. The default behavior is to restart the VRRP and checker processes if either process exits. .TP \fB -n, --dont-fork\fP Don't fork the daemon process. This option will cause keepalived to run in the foreground. .TP \fB -d, --dump-conf\fP Dump the configuration data. .TP \fB -p, --pid\fP=FILE Use the specified pidfile for the parent keepalived process. The default pidfile for keepalived is "/var/run/keepalived.pid", unless a network namespace is being used. See .B NAMESPACES below for more details. .TP \fB -r, --vrrp_pid\fP=FILE Use the specified pidfile for the VRRP child process. The default pidfile for the VRRP child process is "/var/run/keepalived_vrrp.pid", unless a network namespace is being used. .TP \fB -c, --checkers_pid\fP=FILE Use the specified pidfile for checkers child process. The default pidfile for the checker child process is "/var/run/keepalived_checkers.pid" unless a network namespace is being used. .TP \fB -x, --snmp\fP Enable the SNMP subsystem. .TP \fB -A, --snmp-agent-socket\fP=FILE Use the specified socket for connection to SNMP master agent. .TP \fB -m, --core-dump\fP Override the RLIMIT_CORE hard and soft limits to enable keepalived to produce a coredump in the event of a segfault or other failure. This is most useful if keepalived has been built with 'make debug'. Core dumps will be created in /, unless keepalived is run with the --dont-fork option, in which case they will be created in the directory from which keepalived was run, or they will be created in the directory of a configuraton file if the fault occurs while reading the file. .TP \fB -M, --core-dump-pattern\fP[=PATTERN] Sets option --core-dump, and also updates /proc/sys/kernel/core_pattern to the pattern specified, or 'core' if none specified. Provided the parent process doesn't terminate abnormally, it will restore /proc/sys/kernel/core_pattern to its original value on exit. \fBNote:\fP This will also affect any other process producing a core dump while keepalived is running. .TP \fB -v, --version\fP Display the version and exit. .TP \fB -h, --help\fP Display this help message and exit. .SH NAMESPACES .B keepalived can be run in a network namespace (see \fBkeepalived.conf\fP(5) for configuration details). When run in a network namespace, a local mount namespace is also created, and /var/run/keepalived/keepalived_NamespaceName is mounted on /var/run/keepalived. By default, pid files with the usual default names are then created in /var/run/keepalived from the perspective of a process in the mount namespace, and they will be visible in /var/run/keepalived/keepalived_NamespaceName for a process running in the default mount namespace. .SH SIGNALS .B keepalived reacts to a set of signals. You can send a signal to the parent .B keepalived process using the following: .IP .nf kill -SIGNAL $(cat /var/run/keepalived.pid) .fi .PP Note that -SIGNAL must be replaced with the actual signal you are trying to send, e.g. with HUP. So it then becomes: .IP .nf kill -HUP $(cat /var/run/keepalived.pid) .fi .PP .TP .B HUP This causes .B keepalived to close down all interfaces, reload its configuration, and start up with the new configuration. .TP .B TERM, INT .B keepalived will shut down. .TP .B USR1 Write configuration data to .B /tmp/keepalived.data .TP .B USR2 Write statistics info to .B /tmp/keepalived.stats .LP .SH "SEE ALSO" \fBkeepalived.conf\fP(5), \fBipvsadm\fP(8) .SH "AUTHOR" This man page was written by Ryan O'Hara keepalived-1.2.24/doc/man/man1/0000775000175000017500000000000012765310731013075 500000000000000keepalived-1.2.24/doc/man/man1/genhash.10000664000175000017500000000305312765305203014513 00000000000000.\" .\" genhash(1) .\" .\" Copyright (C) 2004 Andres Salomon .TH genhash 1 "Feb 2004" .SH NAME genhash \- md5 hash generation tool for remote web pages .SH SYNOPSIS .B "genhash [options] [-s server-address] [-p port] [-u url]" .SH DESCRIPTION .B genhash is a tool used for generating md5sum hashes of remote web pages. .B genhash can use HTTP or HTTPS to connect to the web page. The output by this utility includes the HTTP header, page data, and the md5sum of the data. This md5sum can then be used within the .B keepalived(8) program, for monitoring HTTP and HTTPS services. .SH OPTIONS .TP .B --use-ssl, -S Use SSL to connect to the server. .TP .B --server , -s Specify the ip address to connect to. .TP .B --port , -p Specify the port to connect to. .TP .B --url , -u Specify the path to the file you want to generate the hash of. .TP .B --use-virtualhost , -V Specify the virtual host to send along with the HTTP headers. .TP .B --hash , -H Specify the hash algorithm to make a digest of the target page. Consult the help screen for list of available ones with a mark of the default one. .TP .B --verbose, -v Be verbose with the output. .TP .B --help, -h Display the program help screen and exit. .TP .B --release, -r Display the release number (version) and exit. .TP .BR .SH SEE ALSO .BR keepalived (8), .BR keepalived.conf (5) .SH AUTHOR .br .B genhash was written by Alexandre Cassen . This man page was contributed by Andres Salomon for the Debian GNU/Linux system (but may be used by others). keepalived-1.2.24/doc/man/man5/0000775000175000017500000000000012765310731013101 500000000000000keepalived-1.2.24/doc/man/man5/keepalived.conf.50000664000175000017500000007620312765305203016152 00000000000000.TH KEEPALIVED.CONF 5 "Apr 2016" V1.0 .UC 4 .SH NAME keepalived.conf - configuration file for Keepalived .br .SH DESCRIPTION .B keepalived.conf is the configuration file which describes all the Keepalived keywords. Keywords are placed in hierarchies of blocks and subblocks, each layer being delimited by '{' and '}' pairs. .PP Comments start with '#' or '!' to the end of the line and can start anywhere in a line. .PP The keyword 'include' allows inclusion of other configuration files from within the main configuration file. .SH PARAMETER SYNTAX .B is one of on|off|true|false|yes|no .SH TOP HIERACHY .PP .B GLOBAL CONFIGURATION .PP .B VRRPD CONFIGURATION .PP .B LVS CONFIGURATION .PP .SH GLOBAL CONFIGURATION contains subblocks of .B Global definitions, .B Static routes, and .B Static rules .PP .SH Global definitions .PP global_defs # Block id { notification_email # To: { admin@example1.com ... } # From: from address that will be in the header (default keepalived@) notification_email_from admin@example.com smtp_server 127.0.0.1 [] # IP address or domain name # with optional port number (default 25) smtp_helo_name # name to use in HELO messages # defaults to local host name smtp_connect_timeout 30 # integer, seconds router_id my_hostname # string identifying the machine, # (doesn't have to be hostname). # default: local host name vrrp_mcast_group4 224.0.0.18 # optional, default 224.0.0.18 vrrp_mcast_group6 ff02::12 # optional, default ff02::12 default_interface p33p1.3 # sets the default interface for static addresses, default eth0 lvs_sync_daemon [id ] [maxlen ] [port ] [ttl ] [group ] # Binding interface, vrrp instance and optional # syncid for lvs syncd # syncid (0 to 255) for lvs syncd # maxlen (1..65507) maximum packet length # port (1..65535) UDP port number to use # ttl (1..255) # group - multicast group address (IPv4 or IPv6) # NOTE: maxlen, port, ttl and group are only available on Linux 4.3 or later. lvs_flush # flush any existing LVS configuration at startup # delay for second set of gratuitous ARPs after transition to MASTER vrrp_garp_master_delay 10 # seconds, default 5, 0 for no second set # number of gratuitous ARP messages to send at a time after transition to MASTER vrrp_garp_master_repeat 1 # default 5 # delay for second set of gratuitous ARPs after lower priority advert received when MASTER vrrp_garp_lower_prio_delay 10 # number of gratuitous ARP messages to send at a time after lower priority advert received when MASTER vrrp_garp_lower_prio_repeat 1 # minimum time interval for refreshing gratuitous ARPs while MASTER vrrp_garp_master_refresh 60 # secs, default 0 (no refreshing) # number of gratuitous ARP messages to send at a time while MASTER vrrp_garp_master_refresh_repeat 2 # default 1 # Delay in ms between gratuitous ARP messages sent on an interface vrrp_garp_interval 0.001 # decimal, seconds (resolution usecs). Default 0. # Delay in ms between unsolicited NA messages sent on an interface vrrp_gna_interval 0.000001 # decimal, seconds (resolution usecs). Default 0. # If a lower priority advert is received, don't send another advert. This causes # adherence to the RFCs. Defaults to false, unless strict_mode is set. vrrp_lower_prio_no_advert [] # Set the default VRRP version to use vrrp_version <2 or 3> # default version 2 # Specify the iptables chain for ensuring a version 3 instance # doesn't respond on addresses that it doesn't own. # Note: it is necessary for the specified chain to exist in # the iptables and/or ip6tables configuration, and for the chain # to be called from an appropriate point in the iptables configuration. # It will probably be necessary to have this filtering after accepting # any ESTABLISHED,RELATED packets, because IPv4 might select the VIP as # the source address for outgoing connections. vrrp_iptables keepalived # default INPUT # or for outbound filtering as well # Note, outbound filtering won't work with IPv4, since the VIP can be selected as the source address # for an outgoing connection. With IPv6 this is unlikely since the addresses are deprecated. vrrp_iptables keepalived_in keepalived_out # or to not add any iptables rules: vrrp_iptables # Keepalived may have the option to use ipsets in conjunction with iptables. # If so, then the ipset names can be specified, defaults as below. # If no names are specified, ipsets will not be used, otherwise any omitted # names will be constructed by adding "_if" and/or "6" to previously specified # names. vrrp_ipset [keepalived [keepalived_if [keepalived6 [keepalived_if6]]]] # The following enables checking that when in unicast mode, the source # address of a VRRP packet is one of our unicast peers. vrrp_check_unicast_src # Checking all the addresses in a received VRRP advert can be time consuming. # Setting this flag means the check won't be carried out if the advert is # from the same master router as the previous advert received. vrrp_skip_check_adv_addr # Default - don't skip # Enforce strict VRRP protocol compliance. This will prohibit: # 0 VIPs # unicast peers # IPv6 addresses in VRRP version 2 vrrp_strict # The following 4 options can be used if vrrp or checker processes # are timing out. This can be seen by a backup vrrp instance becoming # master even when the master is still running because the master or # backup system is too busy to process vrrp packets. vrrp_priority <-20 to 19> # Set the vrrp child process priority # Negative values increase priority. checker_priority <-20 to 19> # Set the checker child process priority vrrp_no_swap # Set the vrrp child process non swappable checker_no_swap # Set the checker child process non swappable # If Keepalived has been build with SNMP support, the following keywords are available # Note: Keepalived, checker and RFC support can be individually enabled/disabled snmp_socket udp:1.2.3.4:705 # specify socket to use for connecting to SNMP master agent (default unix:/var/agentx/master) # unless using a network namespace, when the default is udp:localhost:705 enable_snmp_keepalived # enable SNMP handling of vrrp element of KEEPALIVED MIB enable_snmp_checker # enable SNMP handling of checker element of KEEPALIVED MIB enable_snmp_rfc # enable SNMP handling of RFC2787 and RFC6527 VRRP MIBs enable_snmp_rfcv2 # enable SNMP handling of RFC2787 VRRP MIB enable_snmp_rfcv3 # enable SNMP handling of RFC6527 VRRP MIB enable_traps # enable SNMP traps } # For running keepalived in a separate network namespace net_namespace NAME # Set the network namespace to run in # The directory /var/run/keepalived will be created as an unshared mount point, # for example for pid files. # syslog entries will have _NAME appended to the ident. # Note: the namespace cannot be changed on a configuration reload instance NAME # If multiple instances of keepalived are run in the same namespace, this will # create pid files with NAME as part of the file names, in /var/run/keepalived. # Note: the instance name cannot be changed on a configuration reload use_pid_dir # Create pid files in /var/run/keepalived linkbeat_use_polling # Poll to detect media link failure otherwise attempt to use ETHTOOL or MII interface .SH Static routes/addresses/rules .PP Keepalived can configure static addresses, routes, and rules. These addresses are .B NOT moved by vrrpd, they stay on the machine. If you already have IPs and routes on your machines and your machines can ping each other, you don't need this section. The syntax for rules and routes is that same as for ip rule add/ip route add. .PP The syntax is the same for virtual addresses and virtual routes. If no dev element is specified, it defaults to default_interface (default eth0). .PP static_ipaddress { 192.168.1.1/24 dev eth0 scope global ... } .PP static_routes { 192.168.2.0/24 via 192.168.1.100 dev eth0 192.168.100.0/24 table 6909 nexthop via 192.168.101.1 dev wlan0 onlink weight 1 nexthop via 192.168.101.2 dev wlan0 onlink weight 2 192.168.200.0/24 dev p33p1.2 table 6909 tos 0x04 protocol bird scope link priority 12 mtu 1000 hoplimit 100 advmss 101 rtt 102 rttvar 103 reordering 104 window 105 cwnd 106 ssthresh lock 107 realms PQA/0x14 rto_min 108 initcwnd 109 initrwnd 110 features ecn 2001:470:69e9:1:2::4 dev p33p1.2 table 6909 tos 0x04 protocol bird scope link priority 12 mtu 1000 hoplimit 100 advmss 101 rtt 102 rttvar 103 reordering 104 window 105 cwnd 106 ssthresh lock 107 rto_min 108 initcwnd 109 initrwnd 110 features ecn ... } .PP static_rules { from 192.168.2.0/24 table 1 to 192.168.2.0/24 table 1 from 192.168.28.0/24 to 192.168.29.0/26 table small iif p33p1 oif wlan0 tos 22 fwmark 24/12 preference 39 realms 30/20 goto 40 to 1:2:3:4:5:6:7:0/112 from 7:6:5:4:3:2::/96 table 6908 ... } .PP .SH VRRPD CONFIGURATION contains subblocks of .B VRRP script(s), .B VRRP synchronization group(s), .B VRRP gratuitous ARP and unsolicited neighbour advert delay group(s) and .B VRRP instance(s) .PP .SH VRRP script(s) .PP # Adds a script to be executed periodically. Its exit code will be # recorded for all VRRP instances which are monitoring it with # non-zero weight. vrrp_script { script | # path of the script to execute interval # seconds between script invocations, default 1 second timeout # seconds after which script is considered to have failed weight # adjust priority by this weight, default 2 rise # required number of successes for OK transition fall # required number of successes for KO transition } .PP .SH VRRP synchronization group(s) .PP #string, name of group of IPs that failover together vrrp_sync_group VG_1 { group { inside_network # name of the vrrp_instance (see below) outside_network # One for each movable IP ... } # notify scripts and alerts are optional # # filenames of scripts to run on transitions # can be unquoted (if just filename) # or quoted (if it has parameters) # to MASTER transition notify_master /path/to_master.sh # to BACKUP transition notify_backup /path/to_backup.sh # FAULT transition notify_fault "/path/fault.sh VG_1" # for ANY state transition. # "notify" script is called AFTER the # notify_* script(s) and is executed # with 3 arguments provided by Keepalived # (so don't include parameters in the notify line). # arguments # $1 = "GROUP"|"INSTANCE" # $2 = name of the group or instance # $3 = target state of transition # ("MASTER"|"BACKUP"|"FAULT") notify /path/notify.sh # Send email notification during state transition, # using addresses in global_defs above. smtp_alert global_tracking # All VRRP share the same tracking config } .SH VRRP gratuitous ARP and unsolicited neighbour advert delay group(s) .PP specifies the setting of delays between sending gratuitous ARPs and unsolicited neighbour advertisements. This is intended for when an upstream switch is unable to handle being flooded with ARPs/NAs. Use interface when the limits apply on the single physical interface. Use interfaces when a group of interfaces are linked to the same switch and the limits apply to the switch as a whole. .BNote.B: Only one of interface or interfaces should be used per block. If the global vrrp_garp_interval and/or vrrp_gna_interval are set, any interfaces that aren't specified in a garp_group will inherit the global settings. .PP garp_group { # Sets the interval between Gratuitous ARP (in seconds, resolution microseconds) garp_interval # Sets the default interval between unsolicited NA (in seconds, resolution microseconds) gna_interval # The physical interface to which the intervals apply interface # A list of interfaces accross which the delays are aggregated. interfaces { ... } } .SH VRRP instance(s) .PP describes the movable IP for each instance of a group in vrrp_sync_group. Here are described two IPs (on inside_network and on outside_network), on machine "my_hostname", which belong to the group VG_1 and which will transition together on any state change. .PP #You will need to write another block for outside_network. vrrp_instance inside_network { # Initial state, MASTER|BACKUP # As soon as the other machine(s) come up, # an election will be held and the machine # with the highest priority will become MASTER. # So the entry here doesn't matter a whole lot. state MASTER # interface for inside_network, bound by vrrp interface eth0 # Use VRRP Virtual MAC. use_vmac [] # Send/Recv VRRP messages from base interface instead of # VMAC interface vmac_xmit_base native_ipv6 # force instance to use IPv6 (when mixed IPv4 and IPv6 config). # Ignore VRRP interface faults (default unset) dont_track_primary # optional, monitor these as well. # go to FAULT state if any of these go down. track_interface { eth0 eth1 eth2 weight <-254..254> ... } # add a tracking script to the interface ( is the name of the vrrp_script entry) track_script { weight <-254..254> } # default IP for binding vrrpd is the primary IP # on interface. If you want to hide the location of vrrpd, # use this IP as src_addr for multicast or unicast vrrp # packets. (since it's multicast, vrrpd will get the reply # packet no matter what src_addr is used). # optional mcast_src_ip unicast_src_ip version <2 or 3> # VRRP version to run on interface # default is global parameter vrrp_version. # Do not send VRRP adverts over a VRRP multicast group. # Instead it sends adverts to the following list of # ip addresses using unicast. It can be cool to use # the VRRP FSM and features in a networking # environment where multicast is not supported! # IP addresses specified can be IPv4 as well as IPv6. unicast_peer { ... } # interface specific settings, same as global parameters; default to global parameters garp_master_delay 10 garp_master_repeat 1 garp_lower_prio_delay 10 garp_lower_prio_repeat 1 garp_master_refresh 60 garp_master_refresh_repeat 2 garp_interval 100 gna_interval 100 lower_prio_no_advert [] # arbitrary unique number from 0 to 255 # used to differentiate multiple instances of vrrpd # running on the same NIC (and hence same socket). virtual_router_id 51 # for electing MASTER, highest priority wins. # to be MASTER, make this 50 more than on other machines. priority 100 # VRRP Advert interval in seconds (e.g. 0.92) (use default) advert_int 1 # Note: authentication was removed from the VRRPv2 specification by RFC3768 in 2004. # Use of this option is non-compliant and can cause problems; avoid using if possible, # except when using unicast, where it can be helpful. authentication { # Authentication block # PASS||AH # PASS - Simple password (suggested) # AH - IPSEC (not recommended)) auth_type PASS # Password for accessing vrrpd. # should be the same on all machines. # Only the first eight (8) characters are used. auth_pass 1234 } #addresses add|del on change to MASTER, to BACKUP. #With the same entries on other machines, #the opposite transition will be occurring. virtual_ipaddress { / brd dev scope label