keepalived-2.0.19/0000775000175000017500000000000013552633326010727 500000000000000keepalived-2.0.19/install-sh0000755000175000017500000003546313256032133012652 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2014-09-12.12; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # 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. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # $RANDOM is not portable (e.g. dash); use it when possible to # lower collision chance tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # As "mkdir -p" follows symlinks and we work in /tmp possibly; so # create the $tmpdir first (and fail if unsuccessful) to make sure # that nobody tries to guess the $tmpdir name. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # 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 $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # 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-2.0.19/missing0000755000175000017500000001533013256032133012234 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2013-10-28.13; # UTC # Copyright (C) 1996-2014 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-2.0.19/compile0000755000175000017500000001624513256032133012221 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2012-10-14.11; # UTC # Copyright (C) 1999-2014 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-2.0.19/Makefile.in0000664000175000017500000007040113552633314012713 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 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-2017 Alexandre Cassen, VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } 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 = . 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) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) 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 \ $(top_builddir)/lib/config_warnings.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 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; }; \ } am__installdirs = "$(DESTDIR)$(docdir)" DATA = $(doc_DATA) 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 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/keepalived.spec.in \ COPYING ChangeLog INSTALL README TODO ar-lib compile depcomp \ install-sh missing 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@ DEFAULT_CONFIG_FILE = @DEFAULT_CONFIG_FILE@ 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_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ 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@ LDD = @LDD@ 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@ PID_DIR = @PID_DIR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SNMP_SERVICE = @SNMP_SERVICE@ 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@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdsystemunitdir = @systemdsystemunitdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ edit = echo " EDIT $@"; \ sed -e "/^\[\!\[/d" SUBDIRS = lib keepalived doc $(am__append_1) bin_install EXTRA_DIST = AUTHOR CONTRIBUTORS snap README.md build_setup doc_DATA = README MOSTLYCLEANFILES = README AM_DISTCHECK_CONFIGURE_FLAGS = \ --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir) 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 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 $@ install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || 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)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) # 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 $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -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) | eval GZIP= gzip $(GZIP_ENV) -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 distribution archives compressed with" \ "legacy program 'compress' 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 shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -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*) \ eval GZIP= gzip $(GZIP_ENV) -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*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(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/sub \ && ../../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 $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done 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: -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) 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 clean-local 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-docDATA 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: uninstall-docDATA .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 \ clean-local cscope cscopelist-am ctags ctags-am dist dist-all \ dist-bzip2 dist-gzip dist-hook 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-docDATA 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 \ uninstall-docDATA .PRECIOUS: Makefile export DEBUG_CFLAGS export DEBUG_CPPFLAGS export DEBUG_LDFLAGS README: $(srcdir)/README.md @$(edit) '$(srcdir)/$@.md' >$@ distclean-local: @rm -f aclocal.m4 ar-lib compile depcomp install-sh missing keepalived-$(VERSION).tar.gz config.log config.status @rm -rf autom4te.cache dist-hook: @rm -f $(distdir)/README .PHONY: docker docker: docker build -t keepalived . # 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 git-clean: @$(MAKE) autoclean clean-local: clean-local-snap # clean files that are generated by snapcraft .PHONY: clean-local-snap clean-local-snap: -rm -rf parts/ prime/ stage/ keepalived_*.snap # Added targets to maintain compatibility with keepalived releases 1.2.22 and earlier .PHONY: tarball rpm debug profile mrproper tarball: dist @RPM_TRUE@rpm: @RPM_TRUE@ @$(MAKE) dist @RPM_TRUE@ @cp -p keepalived-$(VERSION).tar.gz `rpm --eval "%{_sourcedir}"` @RPM_TRUE@@RPM_BIP_TRUE@ rpmbuild -ba --build-in-place keepalived.spec @RPM_TRUE@@RPM_BIP_FALSE@ rpmbuild -ba 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-2.0.19/bin_install/0000775000175000017500000000000013552633326013225 500000000000000keepalived-2.0.19/bin_install/Makefile.in0000664000175000017500000003134513552633314015215 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 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 = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } 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 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) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/lib/config.h \ $(top_builddir)/lib/config_warnings.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) am__DIST_COMMON = $(srcdir)/Makefile.in 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@ DEFAULT_CONFIG_FILE = @DEFAULT_CONFIG_FILE@ 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_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ 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@ LDD = @LDD@ 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@ PID_DIR = @PID_DIR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SNMP_SERVICE = @SNMP_SERVICE@ 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@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdsystemunitdir = @systemdsystemunitdir@ 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 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 .PRECIOUS: Makefile .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-2.0.19/bin_install/Makefile.am0000664000175000017500000000225413335175214015200 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-2.0.19/keepalived.spec.in0000664000175000017500000002322613450715653014247 00000000000000# 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: 1 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-headers BuildRequires: autoconf automake pkgconfig @SNMP_TRUE@BuildRequires: net-snmp-devel @WITH_DBUS_TRUE@BuildRequires: glib2-devel @LIBIPTC_TRUE@BuildRequires: iptables-devel @LIBIPSET_TRUE@BuildRequires: ipset-devel @LIBNL1_TRUE@BuildRequires: libnl-devel @LIBNL3_TRUE@BuildRequires: libnl3-devel @NFTABLES_TRUE@BuildRequires: libnftnl-devel libmnl-devel @INIT_SYSV_TRUE@Requires(post): /sbin/chkconfig @INIT_SYSV_TRUE@Requires(preun): /sbin/service, /sbin/chkconfig @INIT_SYSV_TRUE@Requires(postun): /sbin/service @INIT_SYSTEMD_TRUE@BuildRequires: systemd-units @WITH_REGEX_TRUE@BuildRequires: pcre2-devel @REQUIRE_IPTABLES_LIBS_TRUE@%if 0%{?rhel} <= 7 @REQUIRE_IPTABLES_LIBS_TRUE@Requires: iptables @REQUIRE_IPTABLES_LIBS_TRUE@%else @REQUIRE_IPTABLES_LIBS_TRUE@Requires: iptables-libs @REQUIRE_IPTABLES_LIBS_TRUE@%endif @LIBIPSET_DYNAMIC_TRUE@Requires: ipset-libs @LIBNL_DYNAMIC_TRUE@@LIBNL1_TRUE@Require: libnl @LIBNL_DYNAMIC_TRUE@@LIBNL3_TRUE@Require: libnl3 %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 CONFIG_OPTS= @DEBUG_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-debug" @PROFILE_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-profile" @WITH_VRRP_FALSE@CONFIG_OPTS="$CONFIG_OPTS --disable-vrrp" @WITH_IPVS_FALSE@CONFIG_OPTS="$CONFIG_OPTS --disable-lvs" @NFTABLES_FALSE@CONFIG_OPTS="$CONFIG_OPTS --disable-nftables" @IPTABLES_FALSE@CONFIG_OPTS="$CONFIG_OPTS --disable-iptables" @IPTABLES_TRUE@@LIBIPTC_FALSE@CONFIG_OPTS="$CONFIG_OPTS --disable-libiptc" @IPTABLES_TRUE@@LIBIPSET_FALSE@CONFIG_OPTS="$CONFIG_OPTS --disable-libipset" @LIBIPTC_DYNAMIC_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-libiptc-dynamic" @LIBXTABLES_DYNAMIC_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-libxtables-dynamic" @LIBIPSET_DYNAMIC_FALSE@CONFIG_OPTS="$CONFIG_OPTS --disable-libipset-dynamic" @LIBNL_DYNAMIC_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-libnl-dynamic" @SNMP_KEEPALIVED_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-snmp" @SNMP_KEEPALIVED_FALSE@@SNMP_VRRP_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-snmp-vrrp" @SNMP_KEEPALIVED_FALSE@@SNMP_CHECKER_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-snmp-checker" @SNMP_RFC_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-snmp-rfc" @SNMP_RFC_FALSE@@SNMP_RFCV2_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-snmp-rfcv2" @SNMP_RFC_FALSE@@SNMP_RFCV3_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-snmp-rfcv3" @SNMP_REPLY_V3_FOR_V2_FALSE@CONFIG_OPTS="$CONFIG_OPTS --disable-snmp-reply-v3-for-v2" @WITH_SHA1_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-sha1" @WITH_DBUS_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-dbus" @INIT_UPSTART_TRUE@CONFIG_OPTS="$CONFIG_OPTS --with-init=upstart" @INIT_SYSTEMD_TRUE@CONFIG_OPTS="$CONFIG_OPTS --with-init=systemd" @INIT_SYSV_TRUE@CONFIG_OPTS="$CONFIG_OPTS --with-init=SYSV" @INIT_SUSE_TRUE@CONFIG_OPTS="$CONFIG_OPTS --with-init=SUSE" @INIT_OPENRC_TRUE@CONFIG_OPTS="$CONFIG_OPTS --with-init=openrc" @WITH_REGEX_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-regex" @WITH_BFD_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-bfd" @WITH_STRICT_CONFIG_CHECKS_TRUE@CONFIG_OPTS="$CONFIG_OPTS --enable-strict-config-checks" autoreconf -f -i %configure $CONFIG_OPTS %{__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/ # Likewise remove README %{__rm} -f %{buildroot}%{_docdir}/%{name}/README %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 "#define _WITH_LVS_ *1" lib/config.h; then %{__echo} "ERROR: We do not want keepalived lacking LVS support." exit 1 fi %clean %{__rm} -rf %{buildroot} %post if [ $1 -eq 1 ]; then # Enable (but don't start) the units by default @INIT_SYSV_TRUE@ /sbin/chkconfig --add keepalived @INIT_SYSTEMD_TRUE@ /bin/systemctl enable keepalived.service >/dev/null 2>&1 || : : fi %preun if [ $1 -eq 0 ]; then # Disable and stop the units @INIT_SYSV_TRUE@ /sbin/service keepalived stop &>/dev/null || : @INIT_SYSV_TRUE@ /sbin/chkconfig --del keepalived @INIT_SYSTEMD_TRUE@ /bin/systemctl disable keepalived.service >/dev/null 2>&1 || : @INIT_SYSTEMD_TRUE@ /bin/systemctl stop keepalived.service >/dev/null 2>&1 || : @INIT_UPSTART_TRUE@ /sbin/stop keepalived >/dev/null 2>&1 || : : fi %postun if [ $1 -ge 1 ]; then @INIT_SYSV_TRUE@ /sbin/service keepalived condrestart &>/dev/null || : # On upgrade, reload init system configuration if we changed unit files # and restart the daemon @INIT_SYSTEMD_TRUE@ /bin/systemctl daemon-reload >/dev/null 2>&1 || : @INIT_SYSTEMD_TRUE@ /bin/systemctl try-restart keepalived.service >/dev/null 2>&1 || : : fi %files %defattr(-, root, root, -) %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 @INIT_SYSTEMD_TRUE@%{_unitdir}/keepalived.service @INIT_SYSV_TRUE@%{_initdir}/keepalived @INIT_UPSTART_TRUE@%{_sysconfdir}/init/keepalived.conf @SNMP_TRUE@%{_datadir}/snmp/mibs/KEEPALIVED-MIB.txt @SNMP_RFCV2_TRUE@%{_datadir}/snmp/mibs/VRRP-MIB.txt @SNMP_RFCV3_TRUE@%{_datadir}/snmp/mibs/VRRPv3-MIB.txt %{_bindir}/genhash %attr(0755,root,root) %{_sbindir}/keepalived %{_mandir}/man1/genhash.1* %{_mandir}/man5/keepalived.conf.5* %{_mandir}/man8/keepalived.8* @WITH_DBUS_TRUE@%attr(0644,root,root) %{_sysconfdir}/dbus-1/system.d/org.keepalived.Vrrp1.conf @WITH_DBUS_TRUE@%attr(0644,root,root) %{_datarootdir}/dbus-1/interfaces/org.keepalived.Vrrp1.Instance.xml @WITH_DBUS_TRUE@%attr(0644,root,root) %{_datarootdir}/dbus-1/interfaces/org.keepalived.Vrrp1.Vrrp.xml %changelog * Wed Nov 1 2017 Quentin Armitage 1.3.9-1 - Fix installation of keepalived.service * Tue Oct 17 2017 Quentin Armitage 1.3.8-1 - Handle Fedora and CentOS differences for %{_docdir_fmt} * Fri Sep 16 2016 Quentin Armitage 1.2.24-2 - Fixes to allow building on a systemd based system * Wed Sep 14 2016 Quentin Armitage 1.2.24-1 - Add more BuildRequires * Tue Sep 13 2016 Quentin Armitage 1.2.24 - Update for changed format due of config.log due to using automake - Add support for systemd and upstart based systems * 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-2.0.19/snap/0000775000175000017500000000000013464635115011670 500000000000000keepalived-2.0.19/snap/snapcraft.yaml0000664000175000017500000003157713464635115014472 00000000000000name: keepalived adopt-info: keepalived summary: High availability VRRP and load-balancing for Linux description: | Keepalived provides simple and robust loadbalancing and high-availability to Linux based infrastructures using VRRP and the well-known Linux Virtual Server (IPVS) kernel module. grade: stable confinement: classic apps: daemon: daemon: forking command: bin/keepalived-wrapper keepalived: command: bin/keepalived-wrapper "500": command: usr/sbin/keepalived-500 "418": command: usr/sbin/keepalived-418 "415": command: usr/sbin/keepalived-415 # "413": # command: usr/sbin/keepalived-413 "404": command: usr/sbin/keepalived-404 "313": command: usr/sbin/keepalived-313 "310": command: usr/sbin/keepalived-310 genhash: command: usr/bin/genhash parts: keepalived: plugin: autotools source: . source-type: git configflags: - --prefix=/usr - --enable-bfd - --enable-dbus - --enable-json - --enable-regex - --enable-snmp - --enable-snmp-rfc - --disable-libipset-dynamic override-build: | snapcraftctl build VER=$(grep GIT_COMMIT lib/git-commit.h | cut -d'"' -f2) snapcraftctl set-version $VER build-packages: - iptables-dev - libipset-dev - libjson-c-dev - libglib2.0-dev - libmagic-dev - libmnl-dev - libnftnl-dev - libnl-3-dev - libnl-genl-3-dev - libnfnetlink-dev - libpcre2-dev - libsnmp-dev - libssl-dev stage-packages: - libnfnetlink0 - libipset3 - libjson-c2 - libglib2.0-0 - libmagic1 - libmnl0 - libnftnl4 - libnl-3-200 - libnl-genl-3-200 - libpcre2-8-0 - libsnmp30 organize: 'usr/sbin/keepalived': usr/sbin/keepalived-404 linux-headers-500: plugin: nil build-packages: - dpkg - dpkg-dev - wget after: - keepalived override-pull: | KERNEL_VER="5.0.0" ARCH=$(dpkg-architecture -q DEB_BUILD_ARCH) if [ $ARCH = amd64 ] || [ $ARCH = i386 ]; then ARCHIVE_URL="http://security.ubuntu.com/ubuntu/pool/main/l/linux/" else ARCHIVE_URL="http://ports.ubuntu.com/pool/main/l/linux/" fi DEB_SUFFIX=$(wget ${ARCHIVE_URL} -O - | grep linux-libc-dev | cut -d'_' -f2-3 | cut -d'"' -f1 | grep ${ARCH} | grep ${KERNEL_VER} | tail -n1) wget --quiet ${ARCHIVE_URL}/linux-libc-dev_${DEB_SUFFIX} -O ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb echo "Unpacking kernel headers..." dpkg -x ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb ${SNAPCRAFT_PART_INSTALL} cat ${SNAPCRAFT_PART_INSTALL}/usr/include/linux/version.h rm -f ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb override-build: | snapcraftctl build # Move the headers on the host out of the way echo -n "Host kernel:" cat /usr/include/linux/version.h rm -rf /usr/include/linux || true # Move header from the part to the host mv ${SNAPCRAFT_PART_INSTALL}/usr/include/linux /usr/include/ || true echo -n "Build kernel:" cat /usr/include/linux/version.h stage: - -* prime: - -* keepalived-500: plugin: autotools source: . source-type: git after: - linux-headers-500 configflags: - --prefix=/usr - --enable-bfd - --enable-dbus - --enable-json - --enable-regex - --enable-snmp - --enable-snmp-rfc - --disable-libipset-dynamic organize: 'usr/sbin/keepalived': usr/sbin/keepalived-500 stage: - usr/sbin/keepalived-500 prime: - usr/sbin/keepalived-500 linux-headers-418: plugin: nil build-packages: - dpkg - dpkg-dev - wget after: - keepalived-500 override-pull: | KERNEL_VER="4.18.0" ARCH=$(dpkg-architecture -q DEB_BUILD_ARCH) if [ $ARCH = amd64 ] || [ $ARCH = i386 ]; then ARCHIVE_URL="http://security.ubuntu.com/ubuntu/pool/main/l/linux/" else ARCHIVE_URL="http://ports.ubuntu.com/pool/main/l/linux/" fi DEB_SUFFIX=$(wget ${ARCHIVE_URL} -O - | grep linux-libc-dev | cut -d'_' -f2-3 | cut -d'"' -f1 | grep ${ARCH} | grep ${KERNEL_VER} | tail -n1) wget --quiet ${ARCHIVE_URL}/linux-libc-dev_${DEB_SUFFIX} -O ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb echo "Unpacking kernel headers..." dpkg -x ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb ${SNAPCRAFT_PART_INSTALL} cat ${SNAPCRAFT_PART_INSTALL}/usr/include/linux/version.h rm -f ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb override-build: | snapcraftctl build # Move the headers on the host out of the way echo -n "Host kernel:" cat /usr/include/linux/version.h rm -rf /usr/include/linux || true # Move header from the part to the host mv ${SNAPCRAFT_PART_INSTALL}/usr/include/linux /usr/include/ || true echo -n "Build kernel:" cat /usr/include/linux/version.h stage: - -* prime: - -* keepalived-418: plugin: autotools source: . source-type: git after: - linux-headers-418 configflags: - --prefix=/usr - --enable-bfd - --enable-dbus - --enable-json - --enable-regex - --enable-snmp - --enable-snmp-rfc - --disable-libipset-dynamic organize: 'usr/sbin/keepalived': usr/sbin/keepalived-418 stage: - usr/sbin/keepalived-418 prime: - usr/sbin/keepalived-418 linux-headers-415: plugin: nil build-packages: - dpkg - dpkg-dev - wget after: - keepalived-418 override-pull: | KERNEL_VER="4.15.0" ARCH=$(dpkg-architecture -q DEB_BUILD_ARCH) if [ $ARCH = amd64 ] || [ $ARCH = i386 ]; then ARCHIVE_URL="http://security.ubuntu.com/ubuntu/pool/main/l/linux/" else ARCHIVE_URL="http://ports.ubuntu.com/pool/main/l/linux/" fi DEB_SUFFIX=$(wget ${ARCHIVE_URL} -O - | grep linux-libc-dev | cut -d'_' -f2-3 | cut -d'"' -f1 | grep ${ARCH} | grep ${KERNEL_VER} | tail -n1) wget --quiet ${ARCHIVE_URL}/linux-libc-dev_${DEB_SUFFIX} -O ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb echo "Unpacking kernel headers..." dpkg -x ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb ${SNAPCRAFT_PART_INSTALL} cat ${SNAPCRAFT_PART_INSTALL}/usr/include/linux/version.h rm -f ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb override-build: | snapcraftctl build # Move the headers on the host out of the way echo -n "Host kernel:" cat /usr/include/linux/version.h rm -rf /usr/include/linux || true # Move header from the part to the host mv ${SNAPCRAFT_PART_INSTALL}/usr/include/linux /usr/include/ || true echo -n "Build kernel:" cat /usr/include/linux/version.h stage: - -* prime: - -* keepalived-415: plugin: autotools source: . source-type: git after: - linux-headers-415 configflags: - --prefix=/usr - --enable-bfd - --enable-dbus - --enable-json - --enable-regex - --enable-snmp - --enable-snmp-rfc - --disable-libipset-dynamic organize: 'usr/sbin/keepalived': usr/sbin/keepalived-415 stage: - usr/sbin/keepalived-415 prime: - usr/sbin/keepalived-415 # linux-headers-413: # plugin: nil # build-packages: # - dpkg # - dpkg-dev # - wget # after: # - keepalived-415 # override-pull: | # KERNEL_VER="4.13.0" # ARCH=$(dpkg-architecture -q DEB_BUILD_ARCH) # ARCHIVE_URL="http://old-releases.ubuntu.com/ubuntu/pool/main/l/linux/" # DEB_SUFFIX=$(wget ${ARCHIVE_URL} -O - | grep linux-libc-dev | cut -d'_' -f2-3 | cut -d'"' -f1 | grep ${ARCH} | grep ${KERNEL_VER} | tail -n1) # wget --quiet ${ARCHIVE_URL}/linux-libc-dev_${DEB_SUFFIX} -O ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb # echo "Unpacking kernel headers..." # dpkg -x ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb ${SNAPCRAFT_PART_INSTALL} # cat ${SNAPCRAFT_PART_INSTALL}/usr/include/linux/version.h # rm -f ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb # override-build: | # snapcraftctl build # # Move the headers on the host out of the way # echo -n "Host kernel:" # cat /usr/include/linux/version.h # rm -rf /usr/include/linux || true # # Move header from the part to the host # mv ${SNAPCRAFT_PART_INSTALL}/usr/include/linux /usr/include/ || true # echo -n "Build kernel:" # cat /usr/include/linux/version.h # stage: # - -* # prime: # - -* # keepalived-413: # plugin: autotools # source: . # source-type: git # after: # - linux-headers-413 # configflags: # - --prefix=/usr # - --enable-bfd # - --enable-dbus # - --enable-json # - --enable-regex # - --enable-snmp # - --enable-snmp-rfc # - --disable-libipset-dynamic # organize: # 'usr/sbin/keepalived': usr/sbin/keepalived-413 # stage: # - usr/sbin/keepalived-413 # prime: # - usr/sbin/keepalived-413 linux-headers-313: plugin: nil build-packages: - dpkg - dpkg-dev - wget after: - keepalived-415 # - keepalived-413 override-pull: | KERNEL_VER="3.13.0" ARCH=$(dpkg-architecture -q DEB_BUILD_ARCH) if [ $ARCH = amd64 ] || [ $ARCH = i386 ]; then ARCHIVE_URL="http://security.ubuntu.com/ubuntu/pool/main/l/linux/" else ARCHIVE_URL="http://ports.ubuntu.com/pool/main/l/linux/" fi DEB_SUFFIX=$(wget ${ARCHIVE_URL} -O - | grep linux-libc-dev | cut -d'_' -f2-3 | cut -d'"' -f1 | grep ${ARCH} | grep ${KERNEL_VER} | tail -n1) wget --quiet ${ARCHIVE_URL}/linux-libc-dev_${DEB_SUFFIX} -O ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb echo "Unpacking kernel headers..." dpkg -x ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb ${SNAPCRAFT_PART_INSTALL} cat ${SNAPCRAFT_PART_INSTALL}/usr/include/linux/version.h rm -f ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb override-build: | snapcraftctl build # Move the headers on the host out of the way echo -n "Host kernel:" cat /usr/include/linux/version.h rm -rf /usr/include/linux || true # Move header from the part to the host mv ${SNAPCRAFT_PART_INSTALL}/usr/include/linux /usr/include/ || true echo -n "Build kernel:" cat /usr/include/linux/version.h stage: - -* prime: - -* keepalived-313: plugin: autotools source: . source-type: git after: - linux-headers-313 configflags: - --prefix=/usr - --enable-bfd - --enable-dbus - --enable-json - --enable-regex - --enable-snmp - --enable-snmp-rfc - --disable-libipset-dynamic organize: 'usr/sbin/keepalived': usr/sbin/keepalived-313 stage: - usr/sbin/keepalived-313 prime: - usr/sbin/keepalived-313 linux-headers-310: plugin: nil build-packages: - dpkg - dpkg-dev - wget after: - keepalived-313 override-pull: | ARCH=$(dpkg-architecture -q DEB_BUILD_ARCH) if [ $ARCH = amd64 ] || [ $ARCH = ppc64el ] || [ $ARCH = arm64 ]; then DEB_URL="http://launchpadlibrarian.net/144719237/linux-libc-dev_3.10.0-2.11_amd64.deb" elif [ $ARCH = i386 ]; then DEB_URL="http://launchpadlibrarian.net/144720155/linux-libc-dev_3.10.0-2.11_i386.deb" elif [ $ARCH = armhf ]; then DEB_URL="http://launchpadlibrarian.net/144753483/linux-libc-dev_3.10.0-2.11_armhf.deb" fi wget --quiet ${DEB_URL} -O ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb echo "Unpacking kernel headers..." dpkg -x ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb ${SNAPCRAFT_PART_INSTALL} cat ${SNAPCRAFT_PART_INSTALL}/usr/include/linux/version.h rm -f ${SNAPCRAFT_PART_INSTALL}/linux-libc-dev.deb override-build: | snapcraftctl build # Move the headers on the host out of the way echo -n "Host kernel:" cat /usr/include/linux/version.h rm -rf /usr/include/linux || true # Move header from the part to the host mv ${SNAPCRAFT_PART_INSTALL}/usr/include/linux /usr/include/ || true echo -n "Build kernel:" cat /usr/include/linux/version.h stage: - -* prime: - -* keepalived-310: plugin: autotools source: . source-type: git after: - linux-headers-310 configflags: - --prefix=/usr - --enable-bfd - --enable-dbus - --enable-json - --enable-regex - --enable-snmp - --enable-snmp-rfc - --disable-libipset-dynamic organize: 'usr/sbin/keepalived': usr/sbin/keepalived-310 stage: - usr/sbin/keepalived-310 prime: - usr/sbin/keepalived-310 keepalived-wrapper: plugin: dump source: snap-tools organize: 'keepalived-wrapper': bin/keepalived-2.0.19/snap/hooks/0000775000175000017500000000000013371107613013005 500000000000000keepalived-2.0.19/snap/hooks/post-refresh0000775000175000017500000000020313371107613015267 00000000000000#!/bin/sh if [ ! -f /etc/keepalived/keepalived.conf ]; then mkdir -p /etc/keepalived touch /etc/keepalived/keepalived.conf fi keepalived-2.0.19/snap/hooks/install0000775000175000017500000000000013371107613023654 1keepalived-2.0.19/snap/hooks/post-refresh00000000000000keepalived-2.0.19/INSTALL0000664000175000017500000002003213513700244011664 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, Linux flavours ============== RedHat based systems (RedHat Enterprise/CentOS/Fedora) ------------------------------------------------------ The following build packages are needed: make autoconf automake (to build from git source tree rather than tarball) The following libraries need to be installed: openssl-devel libnl3-devel ipset-devel iptables-devel For magic file identification support: file-devel For SNMP support: net-snmp-devel For DBUS support: glib2-devel For JSON support: json-c-devel For PCRE support pcre2-devel For nftables support libnftnl-devel libmnl-devel For building the documentation, the following packages need to be installed: Fedora: python-sphinx (will pull in: python2-sphinx_rtd_theme) CentOS-and-friends: python-sphinx epel-release python-sphinx_rtd_theme For latex or pdf files, the following are also needed: Fedora: latexmk python-sphinx-latex CentOS-and-friends: latexmk texlive texlive-titlesec texlive-framed texlive-threeparttable texlive-wrapfig texlive-multirow Debian/Ubuntu ------------- On Debian, install: pkg-config On Ubuntu, install: build-essential pkg-config, and to build from git repo automake autoconf The following libraries need to be installed: iptables-dev libipset-dev libnl-3-dev libnl-genl-3-dev libssl-dev For magic file identification support: libmagic-dev For SNMP support: libsnmp-dev For DBUS support: libglib2.0-dev For JSON support: libjson-c-dev For PCRE support: libpcre2-dev For nftables support libnftnl-dev libmnl-dev For building the documentation, the following packages need to be installed: python-sphinx python-sphinx-rtd-theme For latex or pdf files, the following are also needed: texlive-latex-base texlive-generic-extra texlive-latex-recommended texlive-fonts-recommended texlive-latex-extra Alpine Linux ------------ The following libraries need to be installed: iptables-dev ipset-dev libnl3-dev musl-dev libnftnl-dev and openssl-dev or libressl-dev For magic file identification support: file-dev For SNMP support: net-snmp-dev (requires libressl-dev and not openssl-dev) For PCRE support pcre2-dev For building the documentation, the following packages need to be installed: py-sphinx py3-sphinx_rtd_theme For latex or pdf files, you'll need texlive or similar, which is not yet available as a distro package. Archlinux --------- Run the following to install the required libraries: pacman -S ipset libnl1 For magic file identification support: TDB For SNMP support: pacman -S net-snmp for PCRE support: pcre-2 (may be installed by default) For building the documentation, the following packages need to be installed: python-sphinx python-sphinx_rtd_theme For latex or pdf files, the following are also needed: texlive-core texlive-bin texlive-latexextra Kernel configuration requirements --------------------------------- The following list is probably incomplete, and will be updated as other options become known. BPF EPOLL SIGNALFD TIMERFD SYSCTL PROC_FS INET IP_MULTICAST IPV6 IP_VS (unless --disable-lvs is specified) IP_VS suboptions to match the real_server/virtual_server configuration NETFILTER_XTABLES - if strict_mode or no_accept. NETFILTER_XT options and IP_SET NF_TABLES and associated components - to use nftables for strict_mode or no_accept IP_ADVANCED_ROUTER and various associated options if static/dynamic routes specified FIB_RULES if static or dynamic rules are specified Installing from a git repo ========================== To install from a git repo, execute: 1. Ensure you have autoconf and automake installed 2. git clone http://github.com/acassen/keepalived 3. cd keepalived 4. ./build_setup # generate the autoconf and automake environment 5. Follow the instructions below for Installation, omitting the first two steps. Installation ============ 1. tar -xf TARFILE 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/' Building RPM files ================== If building from tarball: 1a. tar -xf TARFILE 1b. cd into the directory If building from git clone: 1. ./build_setup For tarball and git 2. ./configure 3. make rpm The .rpm files will be created in directory `rpm --eval "%{_rpmdir}"`/ARCH 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. 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 Creating a docker container =========================== There is a very useful github project maintained by osixia for building a docker container with keepalived. To use, run the following: git clone https://github.com/osixia/docker-keepalived.git cd docker-keepalived make build docker run --name keepalived --cap-add=NET_ADMIN --net=host \ --env KEEPALIVED_INTERFACE=eth0 -d osixia/keepalived:1.3.5 \ # or whatever version of keepalived you have To update the keepalived source code, put a new tarball in the image directory (the Dockerfile may need updating with a new version). Useful docker commands are: docker logs keepalvied 2>&1 | lessa # view system logs of container docker exec it keepalived bash # execute shell in container docker rm -f keepalived # Remove the container keepalived is unable to load the ip_tables, ip6_tables, xt_set and ip_vs modules from within the container, so ensure they are already loaded in the host system. To generate a core file in the root filesystem of the container, /proc/sys/kernel/core_pattern needs to be updated in the host system, and not from the container (or in other words the -M option to keepalived does not work within a container. Installing gdb in the container (edit the image/Dockerfile to add it before make build) may be helpful if you need to examine core files in the container. Running in an AWS container =========================== The VRRP protocol is not enabled in AWS security groups. If you are using AWS, create a rule in the AWS security group. The rule should be "Custom Protocol" and value should be "112" (the VRRP protocol number). All ports should be opened. Running with SElinux ==================== If the system running keepalived has SElinux enabled in enforcing mode, keepalived may have difficulty running scripts, accessing configuration files, etc, especially if keepalived is being started by systemd. By default, scripts should be located in /usr/libexec/keepalived, or alternatively, to set the necessary security context for a script, execute: chcon -t keepalived_unconfined_script_exec_t PATH_TO_SCRIPT See https://www.mankier.com/8/keepalived_selinux and https://www.mankier.com/8/keepalived_unconfined_script_selinux for further details of SElinux and keepalived. Have fun with it ! Alexandre, keepalived-2.0.19/doc/0000775000175000017500000000000013552633326011474 500000000000000keepalived-2.0.19/doc/Makefile.in0000664000175000017500000010375613552633314013472 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 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 = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } 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_KEEPALIVED_TRUE@am__append_1 = KEEPALIVED-MIB.txt @SNMP_RFCV2_TRUE@am__append_2 = VRRP-MIB.txt @SNMP_RFCV3_TRUE@am__append_3 = VRRPv3-MIB.txt subdir = doc 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) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/lib/config.h \ $(top_builddir)/lib/config_warnings.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 = 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 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)$(mibsdir)" "$(DESTDIR)$(sampledir)" man5dir = $(mandir)/man5 NROFF = nroff MANS = $(dist_man1_MANS) $(dist_man5_MANS) DATA = $(mibs_DATA) $(sample_DATA) 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 \ distdir 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 DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(dist_man1_MANS) $(dist_man5_MANS) \ $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 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" 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@ DEFAULT_CONFIG_FILE = @DEFAULT_CONFIG_FILE@ 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_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ 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@ LDD = @LDD@ 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@ PID_DIR = @PID_DIR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SNMP_SERVICE = @SNMP_SERVICE@ 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@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdsystemunitdir = @systemdsystemunitdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = man/man8 @BUILD_GENHASH_TRUE@dist_man1_MANS = man/man1/genhash.1 dist_man5_MANS = man/man5/keepalived.conf.5 EXTRA_DIST = source samples keepalived.conf.SYNOPSIS NOTE_vrrp_vmac.txt KEEPALIVED-MIB.txt VRRP-MIB.txt VRRPv3-MIB.txt 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-recursive .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 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-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) # 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" 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 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 @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 $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook check-am: all-am check: check-recursive all-am: Makefile $(MANS) $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(mibsdir)" "$(DESTDIR)$(sampledir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done 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) @BUILD_DOCS_FALSE@clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: @BUILD_DOCS_FALSE@html: html-recursive html-am: @BUILD_DOCS_FALSE@info: info-recursive info-am: install-data-am: install-man install-mibsDATA install-sampleDATA 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-man1 install-man5 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 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: uninstall-man uninstall-mibsDATA uninstall-sampleDATA uninstall-man: uninstall-man1 uninstall-man5 .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ check-am clean clean-generic cscopelist-am ctags ctags-am \ dist-hook distclean distclean-generic distclean-tags 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-mibsDATA install-pdf install-pdf-am \ install-ps install-ps-am install-sampleDATA 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 uninstall-man uninstall-man1 uninstall-man5 \ uninstall-mibsDATA uninstall-sampleDATA .PRECIOUS: Makefile 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-2.0.19/doc/man/0000775000175000017500000000000013552633326012247 500000000000000keepalived-2.0.19/doc/man/man8/0000775000175000017500000000000013552633326013112 500000000000000keepalived-2.0.19/doc/man/man8/Makefile.in0000664000175000017500000003576713552633314015116 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 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-2017 Alexandre Cassen, VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } 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 = doc/man/man8 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) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/lib/config.h \ $(top_builddir)/lib/config_warnings.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; }; \ } man8dir = $(mandir)/man8 am__installdirs = "$(DESTDIR)$(man8dir)" NROFF = nroff MANS = $(dist_man8_MANS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(dist_man8_MANS) $(srcdir)/Makefile.in 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@ DEFAULT_CONFIG_FILE = @DEFAULT_CONFIG_FILE@ 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_RPM = @HAVE_RPM@ HAVE_RPMBUILD = @HAVE_RPMBUILD@ 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@ LDD = @LDD@ 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@ PID_DIR = @PID_DIR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SNMP_SERVICE = @SNMP_SERVICE@ 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@ runstatedir = @runstatedir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ systemdsystemunitdir = @systemdsystemunitdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ edit = echo " EDIT $@"; \ sed \ -e 's|@DEFAULT_CONFIG_FILE[@]|$(DEFAULT_CONFIG_FILE)|g' dist_man8_MANS = keepalived.8 EXTRA_DIST = keepalived.8.in MOSTLYCLEANFILES = keepalived.8 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/man/man8/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign doc/man/man8/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-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) 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 $(MANS) installdirs: for dir in "$(DESTDIR)$(man8dir)"; 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: -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) 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 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-man 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-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-man: uninstall-man8 .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic 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-man8 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 uninstall-man \ uninstall-man8 .PRECIOUS: Makefile keepalived.8: Makefile @$(edit) '$(srcdir)/$@.in' >$@ keepalived.8: $(srcdir)/keepalived.8.in # 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-2.0.19/doc/man/man8/Makefile.am0000664000175000017500000000062513371107613015063 00000000000000# Makefile.am # # Keepalived OpenSource project. # # Copyright (C) 2001-2017 Alexandre Cassen, edit = echo " EDIT $@"; \ sed \ -e 's|@DEFAULT_CONFIG_FILE[@]|$(DEFAULT_CONFIG_FILE)|g' dist_man8_MANS = keepalived.8 keepalived.8: Makefile @$(edit) '$(srcdir)/$@.in' >$@ keepalived.8: $(srcdir)/keepalived.8.in EXTRA_DIST = keepalived.8.in MOSTLYCLEANFILES = keepalived.8 keepalived-2.0.19/doc/man/man8/keepalived.8.in0000664000175000017500000002421113462115414015632 00000000000000.TH KEEPALIVED "8" "July 2018" .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\-B\fP|\fB\-\-no_bfd\fP] [\fB\-\-all\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\-g\fP|\fB\-\-log\-file\fP=FILE] [\fB\-\-flush\-log\-file\fP] [\fB\-G\fP|\fB\-\-no\-syslog\fP] [\fB\-X\fP|\fB\-\-release\-vips\fP] [\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\-a\fP|\fB\-\-address-monitoring\fP] [\fB\-b\fP|\fB\-\-bfd_pid\fP=FILE] [\fB\-s\fP|\fB\-\-namespace\fP=NAME] [\fB\-i\fP|\fB\-\-config-id\fP id] [\fB\-x\fP|\fB\-\-snmp\fP] [\fB\-A\fP|\fB\-\-snmp-agent-socket\fP=FILE] [\fB\-u\fP|\fB\-\-umask\fP=NUMBER] [\fB\-m\fP|\fB\-\-core\-dump\fP] [\fB\-M\fP|\fB\-\-core\-dump\-pattern\fP[=PATTERN]] [\fB\-\-signum\fP=SIGFUNC] [\fB\-t\fP|\fB\-\-config\-test\fP[=FILE]] [\fB\-\-perf\fP[={all|run|end}]] [\fB\-\-debug\fP[=debug-options]] [\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 "@DEFAULT_CONFIG_FILE@". .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 -B, --no_bfd\fP Don't run the BFD subsystem. .TP \fB --all\fP Run all subsystems, even if they have no configuration. .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 -g, --log-file\fP=FILE Write log entries to FILE. FILE will have _vrrp, _healthcheckers, and _bfd inserted before the last '.' in FILE for the log output for those processes. .TP \fB --flush-log-file\fP If using the -g option, the log file stream will be flushed after each write. .TP \fB -G, --no-syslog\fP Do not write log entries to syslog. This can be useful if the rate of writing log entries is sufficiently high that syslog will rate limit them, and the -g option is used instead. .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 -a, --address-monitoring\fP Log all address additions/deletions reported by netlink. .TP \fB -b, --bfd_pid\fP=FILE Use the specified pidfile for the BFD child process. The default pidfile for the BFD child process is "/var/run/keepalived_bfd.pid" unless a network namespace is being used. .TP \fB -s, --namespace\fP=NAME Run keepalived in network namespace NAME. See .B NAMESPACES below for more details. .TP \fB -i, --config-id ID Use configuration id ID, for conditional configuration (defaults to hostname without the domain name). .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 -u, --umask\fP=NUMBER The umask specified in the usual numeric way - see man umask(2) .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 --signum\fP=PATTERN Returns the signal number to use for STOP, RELOAD, DATA, STATS and JSON. For example, to stop keepalived running, execute: .IP .nf kill -s $(keepalived --signum=STOP) $(cat /var/run/keepalived.pid) .fi .TP \fB -t, --config-test\fP[=FILE] Keepalived will check the configuration file and exit with non-zero exit status if there are errors in the configuration, otherwise it exits with exit status 0 (see \fBExit status\fP below for details). Rather that writing to syslog, it will write diagnostic messages to stderr unless file is specified, in which case it will write to the file. .TP \fB --perf\fP[={all|run|end}] Record perf data for vrrp process. Data will be written to /perf_vrrp.data. The data recorded is for use with the perf tool. .TP \fB --debug\fP[=debug-options]] Enables debug options if they have been compiled into keepalived. \fIdebug-options\fP is made up of a sequence of strings of the form Ulll. .br The upper case letter specifies the debug option, and the lower case letters specify for which processes the option is to be enabled. .br If a debug option is not followed by any lower case letters, the debug option is enabled for all processes. .PP .RS The characters to identify the processes are: .TS tab(@); c l c l. Chr@Process _ p@Parent process b@BFD process c@Checker process v@VRRP process .TE .PP The characters used to identify the debug options are: .TS tab(@); c l. Chr@Debug option _ D@Epoll thread dump E@Epoll debug F@VRRP fd debug N@Netlink timers P@Network timestamp X@Regex timers M@Email alert debug T@Timer debug S@TSM debug R@Regex debug .TE .PP \fBExample:\fP --debug=DvEcvNR .RE .TP \fB -v, --version\fP Display the version and exit. .TP \fB -h, --help\fP Display this help message and exit. .SS "Exit status:" .TP 0 if OK .TP 1 if unable to malloc memory .TP 2 if cannot initialise subsystems .TP 3 if running with --config-test and configuration cannot be run .TP 4 if running with --config-test and there are configuration errors but keepalived will run after modifying the configuration .TP 5 if running with --config-test and script security hasn't been enabled but scripts are configured. .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 or better: .IP .nf kill -s $(keepalived --signum=SIGFUNC) $(cat /var/run/keepalived.pid) .fi .PP Note that if the first option is used, -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 Signals other than for STOP, RELOAD, DATA and STATS may change depending on the kernel, and also what functionality is included in the version of the keepalived depending on the build options used. .PP .TP .B HUP\fP or \fBSIGFUNC=RELOAD This causes .B keepalived to close down all interfaces, reload its configuration, and start up with the new configuration. .TP .B TERM\fP, \fBINT\fP or \fBSIGFUNC=STOP .B keepalived will shut down. .TP .B USR1\fP or \fBSIGFUNC=DATA Write configuration data to .B /tmp/keepalived.data .TP .B USR2\fP or \fBSIGFUNC=STATS Write statistics info to .B /tmp/keepalived.stats .LP .TP .B SIGFUNC=JSON Write configuration data in JSON format to .B /tmp/keepalived.json .LP .SH "SEE ALSO" \fBkeepalived.conf\fP(5), \fBipvsadm\fP(8) .SH "AUTHOR" This man page was written by Ryan O'Hara keepalived-2.0.19/doc/man/man8/keepalived.80000664000175000017500000002422313552633326015237 00000000000000.TH KEEPALIVED "8" "July 2018" .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\-B\fP|\fB\-\-no_bfd\fP] [\fB\-\-all\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\-g\fP|\fB\-\-log\-file\fP=FILE] [\fB\-\-flush\-log\-file\fP] [\fB\-G\fP|\fB\-\-no\-syslog\fP] [\fB\-X\fP|\fB\-\-release\-vips\fP] [\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\-a\fP|\fB\-\-address-monitoring\fP] [\fB\-b\fP|\fB\-\-bfd_pid\fP=FILE] [\fB\-s\fP|\fB\-\-namespace\fP=NAME] [\fB\-i\fP|\fB\-\-config-id\fP id] [\fB\-x\fP|\fB\-\-snmp\fP] [\fB\-A\fP|\fB\-\-snmp-agent-socket\fP=FILE] [\fB\-u\fP|\fB\-\-umask\fP=NUMBER] [\fB\-m\fP|\fB\-\-core\-dump\fP] [\fB\-M\fP|\fB\-\-core\-dump\-pattern\fP[=PATTERN]] [\fB\-\-signum\fP=SIGFUNC] [\fB\-t\fP|\fB\-\-config\-test\fP[=FILE]] [\fB\-\-perf\fP[={all|run|end}]] [\fB\-\-debug\fP[=debug-options]] [\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 -B, --no_bfd\fP Don't run the BFD subsystem. .TP \fB --all\fP Run all subsystems, even if they have no configuration. .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 -g, --log-file\fP=FILE Write log entries to FILE. FILE will have _vrrp, _healthcheckers, and _bfd inserted before the last '.' in FILE for the log output for those processes. .TP \fB --flush-log-file\fP If using the -g option, the log file stream will be flushed after each write. .TP \fB -G, --no-syslog\fP Do not write log entries to syslog. This can be useful if the rate of writing log entries is sufficiently high that syslog will rate limit them, and the -g option is used instead. .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 -a, --address-monitoring\fP Log all address additions/deletions reported by netlink. .TP \fB -b, --bfd_pid\fP=FILE Use the specified pidfile for the BFD child process. The default pidfile for the BFD child process is "/var/run/keepalived_bfd.pid" unless a network namespace is being used. .TP \fB -s, --namespace\fP=NAME Run keepalived in network namespace NAME. See .B NAMESPACES below for more details. .TP \fB -i, --config-id ID Use configuration id ID, for conditional configuration (defaults to hostname without the domain name). .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 -u, --umask\fP=NUMBER The umask specified in the usual numeric way - see man umask(2) .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 --signum\fP=PATTERN Returns the signal number to use for STOP, RELOAD, DATA, STATS and JSON. For example, to stop keepalived running, execute: .IP .nf kill -s $(keepalived --signum=STOP) $(cat /var/run/keepalived.pid) .fi .TP \fB -t, --config-test\fP[=FILE] Keepalived will check the configuration file and exit with non-zero exit status if there are errors in the configuration, otherwise it exits with exit status 0 (see \fBExit status\fP below for details). Rather that writing to syslog, it will write diagnostic messages to stderr unless file is specified, in which case it will write to the file. .TP \fB --perf\fP[={all|run|end}] Record perf data for vrrp process. Data will be written to /perf_vrrp.data. The data recorded is for use with the perf tool. .TP \fB --debug\fP[=debug-options]] Enables debug options if they have been compiled into keepalived. \fIdebug-options\fP is made up of a sequence of strings of the form Ulll. .br The upper case letter specifies the debug option, and the lower case letters specify for which processes the option is to be enabled. .br If a debug option is not followed by any lower case letters, the debug option is enabled for all processes. .PP .RS The characters to identify the processes are: .TS tab(@); c l c l. Chr@Process _ p@Parent process b@BFD process c@Checker process v@VRRP process .TE .PP The characters used to identify the debug options are: .TS tab(@); c l. Chr@Debug option _ D@Epoll thread dump E@Epoll debug F@VRRP fd debug N@Netlink timers P@Network timestamp X@Regex timers M@Email alert debug T@Timer debug S@TSM debug R@Regex debug .TE .PP \fBExample:\fP --debug=DvEcvNR .RE .TP \fB -v, --version\fP Display the version and exit. .TP \fB -h, --help\fP Display this help message and exit. .SS "Exit status:" .TP 0 if OK .TP 1 if unable to malloc memory .TP 2 if cannot initialise subsystems .TP 3 if running with --config-test and configuration cannot be run .TP 4 if running with --config-test and there are configuration errors but keepalived will run after modifying the configuration .TP 5 if running with --config-test and script security hasn't been enabled but scripts are configured. .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 or better: .IP .nf kill -s $(keepalived --signum=SIGFUNC) $(cat /var/run/keepalived.pid) .fi .PP Note that if the first option is used, -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 Signals other than for STOP, RELOAD, DATA and STATS may change depending on the kernel, and also what functionality is included in the version of the keepalived depending on the build options used. .PP .TP .B HUP\fP or \fBSIGFUNC=RELOAD This causes .B keepalived to close down all interfaces, reload its configuration, and start up with the new configuration. .TP .B TERM\fP, \fBINT\fP or \fBSIGFUNC=STOP .B keepalived will shut down. .TP .B USR1\fP or \fBSIGFUNC=DATA Write configuration data to .B /tmp/keepalived.data .TP .B USR2\fP or \fBSIGFUNC=STATS Write statistics info to .B /tmp/keepalived.stats .LP .TP .B SIGFUNC=JSON Write configuration data in JSON format to .B /tmp/keepalived.json .LP .SH "SEE ALSO" \fBkeepalived.conf\fP(5), \fBipvsadm\fP(8) .SH "AUTHOR" This man page was written by Ryan O'Hara keepalived-2.0.19/doc/man/man1/0000775000175000017500000000000013552633326013103 500000000000000keepalived-2.0.19/doc/man/man1/genhash.10000664000175000017500000000364513467770640014540 00000000000000.\" .\" genhash(1) .\" .\" Copyright (C) 2004 Andres Salomon .\" Copyright (C) 2010-2013 Alexandre Cassen, .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 --protocol , -P Specify the HTTP protocol version to use. protocol_version can be 1.0, 1.1 or 1.0c. 1.0c means protocol version 1.0 but with a "Connection: close" line; this is included in version 1.1 by default. .TP .B --timeout , -t Specify the connection timeout in seconds. .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-2.0.19/doc/man/man5/0000775000175000017500000000000013552633326013107 500000000000000keepalived-2.0.19/doc/man/man5/keepalived.conf.50000664000175000017500000025711113552554107016160 00000000000000.TH keepalived.conf 5 2019-03-24 "Keepalived" "Keepalived Configuration's Manual" .SH NAME keepalived.conf - configuration file for Keepalived .br .SH DESCRIPTION \fBkeepalived.conf\fR 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, or from subsequently included files. .PP The format of the include directive is: \fBinclude\fR FILENAME .PP FILENAME can be a fully qualified or relative pathname, and can include wildcards, including csh style brace expressions such as "{foo/{,cat,dog},bar}" if glob() supports them. .PP After opening an included file, the current directory is set to the directory of the file itself, so any relative paths included from a file are relative to the directory of the including file itself. .PP \fBNote:\fR This documentation MUST be considered as THE exhaustive source of information in order to configure Keepalived. This documenation is supported and maintained by Keepalived Core-Team. .PP .SH PARAMETER SYNTAX \fB\fR is one of on|off|true|false|yes|no .br \fB\fR is a time value in seconds, including fractional seconds, e.g. 2.71828 or 3; resolution of timer is micro-seconds. .SH SCRIPTS There are three classes of scripts can be configured to be executed. (a) Notify scripts that are run when a vrrp instance or vrrp group changes state, or a virtual server quorum changes between up and down. (b) vrrp tracking scripts that will cause vrrp instances to go down it they exit a non-zero exist status, or if a weight is specified will add or subtract the weight to/from the priority of that vrrp instance. (c) LVS checker misc scripts that will cause a real server to be configured down if they exit with a non-zero status. By default the scripts will be executed by user keepalived_script if that user exists, or if not by root, but for each script the user/group under which it is to be executed can be specified. There are significant security implications if scripts are executed with root privileges, especially if the scripts themselves are modifiable or replaceable by a non root user. Consequently, security checks are made at startup to ensure that if a script is executed by root, then it cannot be modified or replaced by a non root user. All scripts should be written so that they will terminate on receipt of a SIGTERM signal. Scripts will be sent SIGTERM if their parent terminates, or it is a script the keepalived is awaiting its exit status and it has run for too long. .PP .SH Quoted strings Quoted strings are specified between " characters; more specifically a string will only end after a quoted string if there is whitespace afterwards. For example: .nf .RS "abcd" efg h jkl "mnop" .RE .fi will be the single string "abcd efg h jkl mnop", i.e. the embedded " characters are removed. .PP Quoted strings can also have escaped characters, like the shell. \\a, \\b, \\E, \\f, \\n, \\r, \\t, \\v, \\nnn and \\xXX (where nnn is up to 3 octal digits, and XX is any sequence of hex digits) and \\cC (which produces the control version of character C) are all supported. \\C for any other character C is just treated as an escaped version of character C, so \\\\ is a \\ character and \\" will be a " character, but it won't start or terminate a quoted string. .PP For specifying scripts with parameters, unquoted spaces will separate the parameters. If it is required for a parameter to contain a space, it should be enclosed in single quotes ('). .PP .SH CONFIGURATION PARSER Traditionally the configuration file parser has not been one of the strengths of keepalived. Lot of efforts have been put to correct this even if this is not the primal goal of the project. .SH TOP HIERACHY .PP Keepalived configuration file is articulated around a set of configuration blocks. Each block is focusing and targetting a specific daemon family feature. These features are: .PP \fBGLOBAL CONFIGURATION\fR .PP \fBBFD CONFIGURATION\fR .PP \fBVRRPD CONFIGURATION\fR .PP \fBLVS CONFIGURATION\fR .SH GLOBAL CONFIGURATION contains subblocks of \fBGlobal definitions, Linkbeat interfaces, Static track groups, Static addresses, Static routes,\fR and \fBStatic rules\fR .PP .SH Global definitions .PP .nf # Following are global daemon facilities for running # keepalived in a separate network namespace: # -- # 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. \fBnet_namespace \fRNAME # ipsets wasn't network namespace aware until Linux 3.13, and so # if running with # an earlier version of the kernel, by default # use of ipsets is disabled if using a namespace and vrrp_ipsets # has not been specified. This options overrides the default and # allows ipsets to be used with a namespace on kernels prior to 3.13. \fBnamespace_with_ipsets\fR # 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 \fBinstance \fRNAME # Create pid files in /var/run/keepalived \fBuse_pid_dir\fR # Poll to detect media link failure using ETHTOOL, MII or ioctl interface # otherwise uses netlink interface. \fBlinkbeat_use_polling\fR # Time for main process to allow for child processes to exit on termination # in seconds. This can be needed for very large configurations. # (default: 5) \fBchild_wait_time \fRSECS # Global definitions configuration block \fBglobal_defs \fR{ # Set the process names of the keepalived processes to the default values: # keepalived, keepalived_vrrp, keepalived_ipvs, keepalived_bfd \fBprocess_names\fR # Specify the individual process names \fBprocess_name\fR NAME \fBvrrp_process_name\fR NAME \fBipvs_process_name\fR NAME \fBbfd_process_name\fR NAME # Set of email To: notify \fBnotification_email \fR{ admin@example1.com ... } # email from address that will be in the header # (default: keepalived@) \fBnotification_email_from \fRadmin@example.com # Remote SMTP server used to send notification email. # IP address or domain name with optional port number. # (default port number: 25) \fBsmtp_server \fR127.0.0.1 [] # Name to use in HELO messages. # (default: local host name) \fBsmtp_helo_name \fR # SMTP server connection timeout in seconds. \fBsmtp_connect_timeout \fR30 # Sets default state for all smtp_alerts \fBsmtp_alert \fR # Sets default state for vrrp smtp_alerts \fBsmtp_alert_vrrp \fR # Sets default state for checker smtp_alerts \fBsmtp_alert_checker \fR # Sets logging all checker failes while checker up \fBchecker_log_all_failures \fR # Don't send smtp alerts for fault conditions \fBno_email_faults\fR # String identifying the machine (doesn't have to be hostname). # (default: local host name) \fBrouter_id \fR # Multicast Group to use for IPv4 VRRP adverts # (default: 224.0.0.18) \fBvrrp_mcast_group4 \fR224.0.0.18 # Multicast Group to use for IPv6 VRRP adverts # (default: ff02::12) \fBvrrp_mcast_group6 \fRff02::12 # sets the default interface for static addresses. # (default: eth0) \fBdefault_interface \fRp33p1.3 # Sync daemon as provided by IPVS kernel code only support # a single daemon instance at a time to synchronize connection table. # 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. \fBlvs_sync_daemon \fR [id ] [maxlen ] \e [port ] [ttl ] [group ] # flush any existing LVS configuration at startup \fBlvs_flush\fR # flush remaining LVS configuration at shutdown # If VS is specified, remove each keepalived managed virtual # server without explicitly removing the real servers (the kernel will # remove them). \fBlvs_flush_onstop [VS]\fR # delay for second set of gratuitous ARPs after transition to MASTER. # in seconds, 0 for no second set. # (default: 5) \fBvrrp_garp_master_delay \fR10 # number of gratuitous ARP messages to send at a time after # transition to MASTER. # (default: 5) \fBvrrp_garp_master_repeat \fR1 # delay for second set of gratuitous ARPs after lower priority # advert received when MASTER. \fBvrrp_garp_lower_prio_delay \fR10 # number of gratuitous ARP messages to send at a time after # lower priority advert received when MASTER. \fBvrrp_garp_lower_prio_repeat \fR1 # minimum time interval for refreshing gratuitous ARPs while MASTER. # in seconds. # (default: 0 (no refreshing)) \fBvrrp_garp_master_refresh \fR60 # number of gratuitous ARP messages to send at a time while MASTER # (default: 1) \fBvrrp_garp_master_refresh_repeat \fR2 # Delay in ms between gratuitous ARP messages sent on an interface # decimal, seconds (resolution usecs). # (default: 0) \fBvrrp_garp_interval \fR0.001 # Delay in ms between unsolicited NA messages sent on an interface # decimal, seconds (resolution usecs). # (default: 0) \fBvrrp_gna_interval \fR0.000001 # By default keepalived sends 5 gratuitions ARP/NA messages at a # time, and after transitioning to MASTER sends a second block of # 5 messages 5 seconds later. # With modern switches this is unnecessary, so setting vrrp_min_garp # causes only one ARP/NA message to be sent, with no repeat 5 seconds # later. \fBvrrp_min_garp \fR[] # 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. \fBvrrp_lower_prio_no_advert \fR[] # If we are master and receive a higher priority advert, send an advert # (which will be lower priority than the other master), before we # transition to backup. This means that if the other master has # garp_lower_priority_repeat set, it will resend garp messages. # This is to get around the problem of their having been two simultaneous # masters, and the last GARP messages seen were from us. \fBvrrp_higher_prio_send_advert \fR[] # Set the default VRRP version to use # (default: 2, but IPv6 instances will use version 3) \fBvrrp_version \fR<2 or 3> # 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. # (default: INPUT) \fBvrrp_iptables \fRkeepalived # 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. \fBvrrp_iptables \fRkeepalived_in keepalived_out # or to not add any iptables rules: \fBvrrp_iptables\fR # 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" and _igmp/_mld to previously specified names. \fBvrrp_ipsets \fR[keepalived [keepalived6 [keepalived_if6 [keepalived_igmp [keepalived_mld]]]]] # Use nftables to implement no_accept mode and only send IGMP/MLD # messages on the parent interface of a VMAC. # TABLENAME must not exist, and must be different for each # instance of keepalived running in the same network namespace. # Default tablename is keepalived, and priority is -1. # keepalived will create base chains in the table. # counters means counters are added to the rules (primarily for # debugging purposes). # ifindex means create IPv6 link local sets using ifindex rather # than ifnames. This is the default unless the vrrp_instance has # set dont_track_primary. The alternative is to use interface names # as part of the set key, but the nft utility prior to v0.8.3 will # then not output interface names properly. \fBnftables \fR[TABLENAME] \fBnftables_priority \fRPRIORITY \fBnftables_counters\fR \fBnftables_ifindex\fR # The following enables checking that when in unicast mode, the # source address of a VRRP packet is one of our unicast peers. \fBvrrp_check_unicast_src\fR # 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. # (default: don't skip) \fBvrrp_skip_check_adv_addr\fR # Enforce strict VRRP protocol compliance. This will prohibit: # 0 VIPs # unicast peers # IPv6 addresses in VRRP version 2 \fBvrrp_strict\fR # Send vrrp instance priority notifications on notify FIFOs. \fBvrrp_notify_priority_changes\fR # The following options can be used if vrrp, checker or bfd 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. # -- # Set the vrrp child process priority (Negative values increase priority) \fBvrrp_priority \fR<-20 to 19> # Set the checker child process priority \fBchecker_priority \fR<-20 to 19> # Set the BFD child process priority \fBbfd_priority \fR<-20 to 19> # Set the vrrp child process non swappable \fBvrrp_no_swap\fR # Set the checker child process non swappable \fBchecker_no_swap\fR # Set the BFD child process non swappable \fBbfd_no_swap\fR # The following options can be used to force vrrp, checker and bfd # processes to run on a restricted CPU set. # You can either bind processes to a single CPU or define a set of # cpu. In that last case Linux kernel will be restricted to that cpu # set during scheduling. Forcing process binding to single CPU can # increase performances on heavy loaded box. # INTEGER following configuration keyword are representing cpu_id # as shown in /proc/cpuinfo on line "processor:" # -- # Set CPU Affinity for the vrrp child process \fBvrrp_cpu_affinity\fR []...[] # Set CPU Affinity for the checker child process \fBchecker_cpu_affinity\fR []...[] # Set CPU Affinity for the bfd child process \fBbfd_cpu_affinity\fR []...[] # Set the vrrp child process to use real-time scheduling # at the specified priority \fBvrrp_rt_priority \fR<1..99> # Set the checker child process to use real-time scheduling # at the specified priority \fBchecker_rt_priority \fR<1..99> # Set the BFD child process to use real-time scheduling # at the specified priority \fBbfd_rt_priority \fR<1..99> # Set the limit on CPU time between blocking system calls, # in microseconds # (default: 1000) \fBvrrp_rlimit_rtime \fR>=1 \fBchecker_rlimit_rtime \fR>=1 \fBbfd_rlimit_rtime \fR>=1 # If Keepalived has been build with SNMP support, the following # keywords are available. # Note: Keepalived, checker and RFC support can be individually # enabled/disabled # -- # Specify socket to use for connecting to SNMP master agent # (see source module keepalived/vrrp/vrrp_snmp.c for more details) # (default: unix:/var/agentx/master) \fBsnmp_socket \fRudp:1.2.3.4:705 # enable SNMP handling of vrrp element of KEEPALIVED MIB \fBenable_snmp_vrrp\fR # enable SNMP handling of checker element of KEEPALIVED MIB \fBenable_snmp_checker\fR # enable SNMP handling of RFC2787 and RFC6527 VRRP MIBs \fBenable_snmp_rfc\fR # enable SNMP handling of RFC2787 VRRP MIB \fBenable_snmp_rfcv2\fR # enable SNMP handling of RFC6527 VRRP MIB \fBenable_snmp_rfcv3\fR # enable SNMP traps \fBenable_traps\fR # If Keepalived has been build with DBus support, the following # keywords are available. # -- # Enable the DBus interface \fBenable_dbus\fR # Name of DBus service # Useful if you want to run multiple keepalived processes with DBus enabled # (default: org.keepalived.Vrrp1) \fBdbus_service_name \fRSERVICE_NAME # Specify the default username/groupname to run scripts under. # If this option is not specified, the user defaults to keepalived_script # if that user exists, otherwise root. # If groupname is not specified, it defaults to the user's group. \fBscript_user \fRusername [groupname] # Don't run scripts configured to be run as root if any part of the path # is writable by a non-root user. \fBenable_script_security\fR # Rather than using notify scripts, specifying a fifo allows more # efficient processing of notify events, and guarantees that they # will be delivered in the correct sequence. # NOTE: the FIFO names must all be different # -- # FIFO to write notify events to # See vrrp_notify_fifo and lvs_notify_fifo for format of output # For further details, see the description under vrrp_sync_group. # see doc/samples/sample_notify_fifo.sh for sample usage. \fBnotify_fifo \fRFIFO_NAME [username [groupname]] # script to be run by keepalived to process notify events # The FIFO name will be passed to the script as the last parameter \fBnotify_fifo_script \fRSTRING|QUOTED_STRING [username [groupname]] # FIFO to write vrrp notify events to. # The string written will be a line of the form: INSTANCE "VI_1" MASTER 100 # and will be terminated with a new line character. # For further details of the output, see the description under vrrp_sync_group # and doc/samples/sample_notify_fifo.sh for sample usage. \fBvrrp_notify_fifo \fRFIFO_NAME [username [groupname]] # script to be run by keepalived to process vrrp notify events # The FIFO name will be passed to the script as the last parameter \fBvrrp_notify_fifo_script \fRSTRING|QUOTED_STRING [username [groupname]] # FIFO to write notify healthchecker events to # The string written will be a line of the form: # VS [192.168.201.15]:tcp:80 {UP|DOWN} # RS [1.2.3.4]:tcp:80 [192.168.201.15]:tcp:80 {UP|DOWN} # and will be terminated with a new line character. \fBlvs_notify_fifo \fRFIFO_NAME [username [groupname]] # script to be run by keepalived to process healthchecher notify events # The FIFO name will be passed to the script as the last parameter \fBlvs_notify_fifo_script \fRSTRING|QUOTED_STRING [username [groupname]] # Allow configuration to include interfaces that don't exist at startup. # This allows keepalived to work with interfaces that may be deleted and restored # and also allows virtual and static routes and rules on VMAC interfaces. # allow_if_changes allows an interface to be deleted and recreated with a # different type or underlying interface, eg changing from vlan to macvlan # or changing a macvlan from eth1 to eth2. This is predominantly used for # reporting duplicate VRID errors at startup if allow_if_changes is not set. \fBdynamic_interfaces [allow_if_changes]\fR # The following options are only needed for large configurations, where either # keepalived creates a large number of interface, or the system has a large # number of interface. These options only need using if # "Netlink: Receive buffer overrun" messages are seen in the system logs. # If the buffer size needed exceeds the value in /proc/sys/net/core/rmem_max # the corresponding force option will need to be set. # -- # Set netlink receive buffer size. This is useful for # very large configurations where a large number of interfaces exist, and # the initial read of the interfaces on the system causes a netlink buffer # overrun. \fBvrrp_netlink_cmd_rcv_bufs \fRBYTES \fBvrrp_netlink_cmd_rcv_bufs_force \fR \fBvrrp_netlink_monitor_rcv_bufs \fRBYTES \fBvrrp_netlink_monitor_rcv_bufs_force \fR # The vrrp netlink command and monitor socket the checker command and # and monitor socket and process monitor buffer sizes can be independently set. # The force flag means to use SO_RCVBUFFORCE, so that the buffer size # can exceed /proc/sys/net/core/rmem_max. \fBlvs_netlink_cmd_rcv_bufs \fRBYTES \fBlvs_netlink_cmd_rcv_bufs_force \fR \fBlvs_netlink_monitor_rcv_bufs \fRBYTES \fBlvs_netlink_monitor_rcv_bufs_force \fR # As a guide for process_monitor_rcv_bufs for 1400 processes terminating # simultaneously, 212992 (the default on some systems) is insufficient, whereas # 500000 is sufficient. \fBprocess_monitor_rcv_bufs \fRBYTES \fBprocess_monitor_rcv_bufs_force \fR # When a socket is opened, the kernel configures the max rx buffer size for # the socket to /proc/sys/net/core/rmem_default. On some systems this can be # very large, and even generally this can be much larger than necessary. # This isn't a problem so long as keepalived is reading all queued data from # it's sockets, but if rmem_default was set sufficiently large, and if for # some reason keepalived stopped reading, it could consume all system memory. # The vrrp_rx_bufs_policy allows configuring of the rx bufs size when the # sockets are opened. If the policy is MTU, the rx buf size is configured # to the total of interface's MTU * vrrp_rx_bufs_multiplier for each vrrp # instance using the socket. Likewise, if the policy is ADVERT, then it is # the total of each vrrp instances advert packet size * multiplier. # (default: use system default) \fBvrrp_rx_bufs_policy \fR[MTU|ADVERT|NUMBER] # (default: 3) \fBvrrp_rx_bufs_multiplier \fRNUMBER # Send notifies at startup for real servers that are starting up \fBrs_init_notifies\fR # Don't send an email every time a real server checker changes state; # only send email when a real server is added or removed \fBno_checker_emails\fR # The umask to use for creating files. The number can be specified in hex, octal # or decimal. BITS are I{R|W|X}{USR|GRP|OTH}, e.g. IRGRP, separated by '|'s. # The default umask is IWGRP | IWOTH. This option cannot override the # command-line option. \fBumask \fR[NUMBER|BITS] # On some systems when bond interfaces are created, they can start passing traffic # and then have a several second gap when they stop passing traffic inbound. This # can mean that if keepalived is started at boot time, i.e. at the same time as # bond interfaces are being created, keepalived doesn't receive adverts and hence # can become master despite an instance with higher priority sending adverts. # This option specifies a delay in seconds before vrrp instances start up after # keepalived starts, \fBvrrp_startup_delay \fR5.5 # The following will cause logging of receipt of VRRP adverts for VRIDs not configured # on the interface on which they are received. \fBlog_unknown_vrids\fR # Specify random seed for ${_RANDOM}, to make configurations repeatable (default # is to use a seed based on the time, so that each time a different configuration # will be generated). \fBrandom_seed \fRUNSIGNED_INT } .fi .SH Linkbeat interfaces .PP The linkbeat_interfaces block allows specifying which interfaces should use polling via MII, Ethtool or ioctl status rather than rely on netlink status updates. This allows more granular control of global definition \fBlinkbeat_use_polling\fR. .PP This option is preferred over the deprecated use of \fBlinkbeat_use_polling\fR in a vrrp_instance block, since the latter only allows using linkbeat on the interface of the vrrp_instance itself, whereas \fRtrack_interface\fR and virtual_ipaddresses and virtual_iproutes may require monitoring other interfaces, which may need to use linkbeat polling. .PP The default polling type to use is MII, unless that isn't supported in which case ETHTOOL is used, and if that isn't supported then ioctl polling. The preferred type of polling to use can be specified with MII or ETHTOOL or IOCTL after the interface name, but if that type isn't supported, a supported type will be used. .PP The synfax for linkbeat_interfaces is: .nf \fBlinkbeat_interfaces\fR { eth2 enp2s0 ETHTOOL } .fi .SH Static track groups .PP Static track groups are used to allow vrrp instances to track static addresses, routes and rules. If a static address/route/rule specifies a track group, then if the address/route/rule is deleted and cannot be restored, the vrrp instance will transition to fault state. .PP The syntax for a track group is: .nf \fBtrack_group \fRGROUP1 { \fBgroup \fR{ VI_1 VI_2 } } .fi .SH Static routes/addresses/rules .PP Keepalived can configure static addresses, routes, and rules. These addresses are \fBNOT\fR 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 (except shorted option names aren't supported due to ambiguities). The track_group specification refers to a named track_group which lists the vrrp instances which will track the address, i.e. if the address is deleted the vrrp instances will transition to backup. NOTE: since rules without preferences can be added in different orders due to vrrp instances transitioning from master to backup etc, rules need to have a preference. If a preference is not specified, keepalived will assign one, but it will probably not be what you want. .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). Note: the broadcast address may be specified as '-' or '+' to clear or set the host bits of the address. .PP If a route or rule could apply to either IPv4 or IPv6 it will default to IPv4. To force a route/rule to be IPv6, add the keyword "inet6". .PP .nf \fBstatic_ipaddress \fR{ [/] [brd ] [dev ] [scope ] [label