###############################################################################
name = keepalived
-version = 1.2.2
-release = 2
+version = 1.2.7
+release = 1
groups = Applications/System
url = http://www.keepalived.org/
build
requires
+ kernel-devel
+ net-snmp-devel >= 5.7.2-2
libnl-devel
openssl-devel
popt-devel
end
configure_options += \
- --sysconfdir=/etc
-
-# --with-kernel-dir=$(ls -1d --sort t /lib/modules/*/build | head 1)
+ --enable-snmp \
+ --enable-vrrp
make_targets += STRIP=/bin/true
+++ /dev/null
-diff -Naupr keepalived-1.1.14.orig/keepalived/Makefile.in keepalived-1.1.14/keepalived/Makefile.in
---- keepalived-1.1.14.orig/keepalived/Makefile.in 2007-09-13 15:44:39.000000000 +0200
-+++ keepalived-1.1.14/keepalived/Makefile.in 2007-09-14 12:38:43.000000000 +0200
-@@ -99,13 +99,13 @@ uninstall:
-
- install:
- install -d $(DESTDIR)$(sbindir)
-- install -m 700 $(BIN)/$(EXEC) $(DESTDIR)$(sbindir)/
-+ install -m 755 $(BIN)/$(EXEC) $(DESTDIR)$(sbindir)/
- install -d $(DESTDIR)$(init_dir)
- install -m 755 etc/init.d/keepalived.init $(DESTDIR)$(init_dir)/keepalived
- install -d $(DESTDIR)$(sysconf_dir)
-- install -m 755 etc/init.d/keepalived.sysconfig $(DESTDIR)$(sysconf_dir)/keepalived
-+ install -m 644 etc/init.d/keepalived.sysconfig $(DESTDIR)$(sysconf_dir)/keepalived
- install -d $(DESTDIR)$(sysconfdir)/keepalived/samples
-- install -m 644 etc/keepalived/keepalived.conf $(DESTDIR)$(sysconfdir)/keepalived/
-+ install -m 640 etc/keepalived/keepalived.conf $(DESTDIR)$(sysconfdir)/keepalived/
- install -m 644 ../doc/samples/* $(DESTDIR)$(sysconfdir)/keepalived/samples/
- install -d $(DESTDIR)$(mandir)/man5
- install -d $(DESTDIR)$(mandir)/man8
+++ /dev/null
-diff -Naupr keepalived-1.1.19.orig/keepalived/check/ipvswrapper.c keepalived-1.1.19/keepalived/check/ipvswrapper.c
---- keepalived-1.1.19.orig/keepalived/check/ipvswrapper.c 2009-09-28 13:03:40.000000000 +0200
-+++ keepalived-1.1.19/keepalived/check/ipvswrapper.c 2009-11-24 22:41:56.220195007 +0100
-@@ -789,7 +789,7 @@ string_to_number(const char *s, int min,
- static int
- modprobe_ipvs(void)
- {
-- char *argv[] = { "/sbin/modprobe", "-s", "-k", "--", "ip_vs", NULL };
-+ char *argv[] = { "/sbin/modprobe", "-s", "--", "ip_vs", NULL };
- int child;
- int status;
- int rc;
+++ /dev/null
-diff -up keepalived-1.2.2/configure.pathfix keepalived-1.2.2/configure
---- keepalived-1.2.2/configure.pathfix 2011-09-19 12:31:19.615258629 -0400
-+++ keepalived-1.2.2/configure 2011-09-19 12:31:38.872000057 -0400
-@@ -3973,7 +3973,7 @@ $as_echo "$as_me: WARNING: Cannot determ
-
- IPVS_SUPPORT="_WITHOUT_LVS_"
- if test "$enable_lvs" != "no"; then
-- ac_fn_c_check_header_mongrel "$LINENO" "net/ip_vs.h" "ac_cv_header_net_ip_vs_h" "$ac_includes_default"
-+ ac_fn_c_check_header_mongrel "$LINENO" "linux/ip_vs.h" "ac_cv_header_net_ip_vs_h" "$ac_includes_default"
- if test "x$ac_cv_header_net_ip_vs_h" = x""yes; then :
- IPVS_SUPPORT="_WITH_LVS_"
- else
--- /dev/null
+From 12e58a6c40b3bfa18f0db5db9e36ed09f68d7a0c Mon Sep 17 00:00:00 2001
+From: Ryan O'Hara <rohara@redhat.com>
+Date: Mon, 29 Oct 2012 14:10:57 -0500
+Subject: [PATCH 01/10] Add option to prevent respawn of child processes.
+
+This patch adds a command-line option (--dont-respawn, -R) that will
+prevent the child processes from respawning. When this option is
+specified, if either the checker or vrrp child processes exit the
+parent process will raise the SIGTERM signal and exit.
+
+Signed-off-by: Ryan O'Hara <rohara@redhat.com>
+---
+ keepalived/check/check_daemon.c | 9 +++++++--
+ keepalived/core/main.c | 10 +++++++++-
+ keepalived/vrrp/vrrp_daemon.c | 9 +++++++--
+ 3 files changed, 23 insertions(+), 5 deletions(-)
+
+diff --git a/keepalived/check/check_daemon.c b/keepalived/check/check_daemon.c
+index 1119075..68759f4 100644
+--- a/keepalived/check/check_daemon.c
++++ b/keepalived/check/check_daemon.c
+@@ -227,8 +227,13 @@ check_respawn_thread(thread_t * thread)
+ }
+
+ /* We catch a SIGCHLD, handle it */
+- log_message(LOG_ALERT, "Healthcheck child process(%d) died: Respawning", pid);
+- start_check_child();
++ if (!(debug & 64)) {
++ log_message(LOG_ALERT, "Healthcheck child process(%d) died: Respawning", pid);
++ start_check_child();
++ } else {
++ log_message(LOG_ALERT, "Healthcheck child process(%d) died: Exiting", pid);
++ raise(SIGTERM);
++ }
+ return 0;
+ }
+
+diff --git a/keepalived/core/main.c b/keepalived/core/main.c
+index 57fa134..9445a4c 100644
+--- a/keepalived/core/main.c
++++ b/keepalived/core/main.c
+@@ -146,6 +146,7 @@ usage(const char *prog)
+ " %s --check -C Only run with Health-checker subsystem.\n"
+ " %s --dont-release-vrrp -V Dont remove VRRP VIPs & VROUTEs on daemon stop.\n"
+ " %s --dont-release-ipvs -I Dont remove IPVS topology on daemon stop.\n"
++ " %s --dont-respawn -R Dont respawn child processes.\n"
+ " %s --dont-fork -n Dont fork the daemon process.\n"
+ " %s --use-file -f Use the specified configuration file.\n"
+ " Default is /etc/keepalived/keepalived.conf.\n"
+@@ -165,7 +166,7 @@ usage(const char *prog)
+ #ifdef _WITH_SNMP_
+ prog,
+ #endif
+- prog, prog, prog, prog, prog, prog, prog);
++ prog, prog, prog, prog, prog, prog, prog, prog);
+ }
+
+ /* Command line parser */
+@@ -184,6 +185,7 @@ parse_cmdline(int argc, char **argv)
+ {"log-facility", 'S', POPT_ARG_STRING, &option_arg, 'S'},
+ {"dont-release-vrrp", 'V', POPT_ARG_NONE, NULL, 'V'},
+ {"dont-release-ipvs", 'I', POPT_ARG_NONE, NULL, 'I'},
++ {"dont-respawn", 'R', POPT_ARG_NONE, NULL, 'R'},
+ {"dont-fork", 'n', POPT_ARG_NONE, NULL, 'n'},
+ {"dump-conf", 'd', POPT_ARG_NONE, NULL, 'd'},
+ {"use-file", 'f', POPT_ARG_STRING, &option_arg, 'f'},
+@@ -232,6 +234,9 @@ parse_cmdline(int argc, char **argv)
+ case 'D':
+ debug |= 32;
+ break;
++ case 'R':
++ debug |= 64;
++ break;
+ case 'S':
+ log_facility = LOG_FACILITY[atoi(option_arg)].facility;
+ break;
+@@ -282,6 +287,9 @@ parse_cmdline(int argc, char **argv)
+ case 'D':
+ debug |= 32;
+ break;
++ case 'R':
++ debug |= 64;
++ break;
+ case 'S':
+ log_facility = LOG_FACILITY[atoi(option_arg)].facility;
+ break;
+diff --git a/keepalived/vrrp/vrrp_daemon.c b/keepalived/vrrp/vrrp_daemon.c
+index 23ff09f..cee6c80 100644
+--- a/keepalived/vrrp/vrrp_daemon.c
++++ b/keepalived/vrrp/vrrp_daemon.c
+@@ -249,8 +249,13 @@ vrrp_respawn_thread(thread_t * thread)
+ }
+
+ /* We catch a SIGCHLD, handle it */
+- log_message(LOG_ALERT, "VRRP child process(%d) died: Respawning", pid);
+- start_vrrp_child();
++ if (!(debug & 64)) {
++ log_message(LOG_ALERT, "VRRP child process(%d) died: Respawning", pid);
++ start_vrrp_child();
++ } else {
++ log_message(LOG_ALERT, "VRRP child process(%d) died: Exiting", pid);
++ raise(SIGTERM);
++ }
+ return 0;
+ }
+
+--
+1.7.1
+
--- /dev/null
+From c04dfcae58d6449980e38ed5a555d1a86f363f71 Mon Sep 17 00:00:00 2001
+From: Ryan O'Hara <rohara@redhat.com>
+Date: Mon, 19 Nov 2012 10:09:11 -0600
+Subject: [PATCH 07/10] Fix typo in error messages.
+
+Signed-off-by: Ryan O'Hara <rohara@redhat.com>
+---
+ keepalived/vrrp/vrrp_ipaddress.c | 2 +-
+ keepalived/vrrp/vrrp_iproute.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/keepalived/vrrp/vrrp_ipaddress.c b/keepalived/vrrp/vrrp_ipaddress.c
+index c003b1a..51cd488 100644
+--- a/keepalived/vrrp/vrrp_ipaddress.c
++++ b/keepalived/vrrp/vrrp_ipaddress.c
+@@ -165,7 +165,7 @@ alloc_ipaddress(list ip_list, vector_t *strvec, interface *ifp)
+ ifp_local = if_get_by_ifname(vector_slot(strvec, ++i));
+ if (!ifp_local) {
+ log_message(LOG_INFO, "VRRP is trying to assign VIP to unknown %s"
+- " interface !!! go out and fixe your conf !!!",
++ " interface !!! go out and fix your conf !!!",
+ (char *)vector_slot(strvec, i));
+ FREE(new);
+ return;
+diff --git a/keepalived/vrrp/vrrp_iproute.c b/keepalived/vrrp/vrrp_iproute.c
+index a8feec4..464259c 100644
+--- a/keepalived/vrrp/vrrp_iproute.c
++++ b/keepalived/vrrp/vrrp_iproute.c
+@@ -203,7 +203,7 @@ alloc_route(list rt_list, vector_t *strvec)
+ ifp = if_get_by_ifname(vector_slot(strvec, ++i));
+ if (!ifp) {
+ log_message(LOG_INFO, "VRRP is trying to assign VROUTE to unknown "
+- "%s interface !!! go out and fixe your conf !!!",
++ "%s interface !!! go out and fix your conf !!!",
+ (char *)vector_slot(strvec, i));
+ FREE(new);
+ return;
+--
+1.7.1
+
--- /dev/null
+From f9264a16d6a651a15731ba43d917f0b311257d47 Mon Sep 17 00:00:00 2001
+From: Ryan O'Hara <rohara@redhat.com>
+Date: Fri, 16 Nov 2012 14:54:37 -0600
+Subject: [PATCH 05/10] Fix pointer arithmetic for VRRP packet
+
+When using IPSEC AH authentication, the pointer arithmetic used to get
+the location of the VRRP packet is incorrect. The address of the IPSEC
+header must be cast as (char *) in order to get correct address of the
+VRRP packet. Without this patch, vrrp_in_chk() will fail to verify
+incoming VRRP packets when IPSEC AH is enabled.
+
+Signed-off-by: Ryan O'Hara <rohara@redhat.com>
+---
+ keepalived/vrrp/vrrp.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/keepalived/vrrp/vrrp.c b/keepalived/vrrp/vrrp.c
+index 1248fb8..0a8bc3f 100644
+--- a/keepalived/vrrp/vrrp.c
++++ b/keepalived/vrrp/vrrp.c
+@@ -238,7 +238,7 @@ vrrp_in_chk(vrrp_rt * vrrp, char *buffer)
+
+ if (vrrp->auth_type == VRRP_AUTH_AH) {
+ ah = (ipsec_ah *) (buffer + ihl);
+- hd = (vrrp_pkt *) (ah + vrrp_ipsecah_len());
++ hd = (vrrp_pkt *) ((char *) ah + vrrp_ipsecah_len());
+ } else {
+ hd = (vrrp_pkt *) (buffer + ihl);
+ }
+--
+1.7.1
+
--- /dev/null
+From 6e52cb884e3cab75ca5597b59027a11d982593ab Mon Sep 17 00:00:00 2001
+From: Boon Ang <boon.s.ang@gmail.com>
+Date: Thu, 6 Dec 2012 11:01:55 -0600
+Subject: [PATCH 09/10] Fix comparison of primary IP addresses.
+
+If a router in the master state receives an advertisement with
+priority equal to the local priority, it must also compare the primary
+IP addresses (RFC 3768, section 6.4.3). The code to handle this was
+comparing two IP addresses with different byte-ordering, resulting in
+multiple routers in the master state. This patches resolves the
+problem by coverting the local primary IP address to network byte
+order for the comparison.
+
+Signed-off-by: Ryan O'Hara <rohara@redhat.com>
+---
+ keepalived/vrrp/vrrp.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/keepalived/vrrp/vrrp.c b/keepalived/vrrp/vrrp.c
+index 0a8bc3f..a88deb3 100644
+--- a/keepalived/vrrp/vrrp.c
++++ b/keepalived/vrrp/vrrp.c
+@@ -923,7 +923,7 @@ vrrp_state_master_rx(vrrp_rt * vrrp, char *buf, int buflen)
+ } else if (vrrp->family == AF_INET) {
+ if (hd->priority > vrrp->effective_priority ||
+ (hd->priority == vrrp->effective_priority &&
+- ntohl(saddr) > VRRP_PKT_SADDR(vrrp))) {
++ ntohl(saddr) > ntohl(VRRP_PKT_SADDR(vrrp)))) {
+ log_message(LOG_INFO, "VRRP_Instance(%s) Received higher prio advert"
+ , vrrp->iname);
+ if (proto == IPPROTO_IPSEC_AH) {
+--
+1.7.1
+
--- /dev/null
+From 3cc70656961f0384b1db030e0697a00af0b30e65 Mon Sep 17 00:00:00 2001
+From: Ryan O'Hara <rohara@redhat.com>
+Date: Mon, 19 Nov 2012 09:51:50 -0600
+Subject: [PATCH 06/10] Load SSL certificate correctly.
+
+This patch fixes a problem where keepalived will attempt to load an
+SSL keyfile as a certificate, resulting in failure to initialize SSL
+context.
+
+Signed-off-by: Ryan O'Hara <rohara@redhat.com>
+---
+ keepalived/check/check_ssl.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/keepalived/check/check_ssl.c b/keepalived/check/check_ssl.c
+index 618d9a4..574ba30 100644
+--- a/keepalived/check/check_ssl.c
++++ b/keepalived/check/check_ssl.c
+@@ -86,10 +86,10 @@ build_ssl_ctx(void)
+ }
+
+ /* Load our keys and certificates */
+- if (check_data->ssl->keyfile)
++ if (check_data->ssl->certfile)
+ if (!
+ (SSL_CTX_use_certificate_chain_file
+- (ssl->ctx, check_data->ssl->keyfile))) {
++ (ssl->ctx, check_data->ssl->certfile))) {
+ log_message(LOG_INFO,
+ "SSL error : Cant load certificate file...");
+ return 0;
+--
+1.7.1
+
--- /dev/null
+From fd8665b424457accfa37703d4c9456be22ab8b53 Mon Sep 17 00:00:00 2001
+From: Ryan O'Hara <rohara@redhat.com>
+Date: Mon, 10 Dec 2012 13:25:01 -0600
+Subject: [PATCH 10/10] Remove log_message calls from if_get_by_ifname.
+
+The if_get_by_ifname function would log a message if either the
+if_queue list was empty or if the interface name was not present in
+the list. Since if_get_by_ifname is called to check for the existence
+of an interface before adding it to the list, the "No such interface"
+message is logged whenever adding a new interface to this list. This
+is normal but can be confusing. Since if_get_by_ifname returns NULL
+when the interface does not exist, the caller should be responsible
+for logging any error messages.
+
+Signed-off-by: Ryan O'Hara <rohara@redhat.com>
+---
+ keepalived/vrrp/vrrp_if.c | 6 +-----
+ 1 files changed, 1 insertions(+), 5 deletions(-)
+
+diff --git a/keepalived/vrrp/vrrp_if.c b/keepalived/vrrp/vrrp_if.c
+index df38d9d..6d5735e 100644
+--- a/keepalived/vrrp/vrrp_if.c
++++ b/keepalived/vrrp/vrrp_if.c
+@@ -85,18 +85,14 @@ if_get_by_ifname(const char *ifname)
+ interface *ifp;
+ element e;
+
+- if (LIST_ISEMPTY(if_queue)) {
+- log_message(LOG_ERR, "Interface queue is empty");
++ if (LIST_ISEMPTY(if_queue))
+ return NULL;
+- }
+
+ for (e = LIST_HEAD(if_queue); e; ELEMENT_NEXT(e)) {
+ ifp = ELEMENT_DATA(e);
+ if (!strcmp(ifp->ifname, ifname))
+ return ifp;
+ }
+-
+- log_message(LOG_ERR, "No such interface, %s", ifname);
+ return NULL;
+ }
+
+--
+1.7.1
+
--- /dev/null
+From a6630f9e2e9d05261a5a6b880c5d452bc49e9808 Mon Sep 17 00:00:00 2001
+From: Ryan O'Hara <rohara@redhat.com>
+Date: Mon, 19 Nov 2012 10:28:40 -0600
+Subject: [PATCH 08/10] Update GPLv2 license.
+
+This GPLv2 license found in COPYING had a couple errors, including an
+incorrect address for the Free Software Foundation. This patch updates
+the GPLv2 license to match the license that can be found at:
+http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
+
+Signed-off-by: Ryan O'Hara <rohara@redhat.com>
+---
+ COPYING | 42 +++++++++++++++++++++---------------------
+ 1 files changed, 21 insertions(+), 21 deletions(-)
+
+diff --git a/COPYING b/COPYING
+index a43ea21..d159169 100644
+--- a/COPYING
++++ b/COPYING
+@@ -1,12 +1,12 @@
+- GNU GENERAL PUBLIC LICENSE
+- Version 2, June 1991
++ GNU GENERAL PUBLIC LICENSE
++ Version 2, June 1991
+
+- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+- 675 Mass Ave, Cambridge, MA 02139, USA
++ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+- Preamble
++ Preamble
+
+ The licenses for most software are designed to take away your
+ freedom to share and change it. By contrast, the GNU General Public
+@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
+ General Public License applies to most of the Free Software
+ Foundation's software and to any other program whose authors commit to
+ using it. (Some other Free Software Foundation software is covered by
+-the GNU Library General Public License instead.) You can apply it to
++the GNU Lesser General Public License instead.) You can apply it to
+ your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+@@ -55,8 +55,8 @@ patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+ modification follow.
+-\f
+- GNU GENERAL PUBLIC LICENSE
++
++ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+-\f
++
+ These requirements apply to the modified work as a whole. If
+ identifiable sections of that work are not derived from the Program,
+ and can be reasonably considered independent and separate works in
+@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
+ access to copy the source code from the same place counts as
+ distribution of the source code, even though third parties are not
+ compelled to copy the source along with the object code.
+-\f
++
+ 4. You may not copy, modify, sublicense, or distribute the Program
+ except as expressly provided under this License. Any attempt
+ otherwise to copy, modify, sublicense or distribute the Program is
+@@ -225,7 +225,7 @@ impose that choice.
+
+ This section is intended to make thoroughly clear what is believed to
+ be a consequence of the rest of this License.
+-\f
++
+ 8. If the distribution and/or use of the Program is restricted in
+ certain countries either by patents or by copyrighted interfaces, the
+ original copyright holder who places the Program under this License
+@@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
+ of preserving the free status of all derivatives of our free software and
+ of promoting the sharing and reuse of software generally.
+
+- NO WARRANTY
++ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+@@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGES.
+
+- END OF TERMS AND CONDITIONS
+-\f
+- Appendix: How to Apply These Terms to Your New Programs
++ END OF TERMS AND CONDITIONS
++
++ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+ possible use to the public, the best way to achieve this is to make it
+@@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least
+ the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+- Copyright (C) 19yy <name of author>
++ Copyright (C) <year> <name of author>
+
+ 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
+@@ -303,16 +303,16 @@ the "copyright" line and a pointer to where the full notice is found.
+ 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, write to the Free Software
+- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ You should have received a copy of the GNU General Public License along
++ with this program; if not, write to the Free Software Foundation, Inc.,
++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+ Also add information on how to contact you by electronic and paper mail.
+
+ If the program is interactive, make it output a short notice like this
+ when it starts in an interactive mode:
+
+- Gnomovision version 69, Copyright (C) 19yy name of author
++ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+@@ -335,5 +335,5 @@ necessary. Here is a sample; alter the names:
+ This General Public License does not permit incorporating your program into
+ proprietary programs. If your program is a subroutine library, you may
+ consider it more useful to permit linking proprietary applications with the
+-library. If this is what you want to do, use the GNU Library General
++library. If this is what you want to do, use the GNU Lesser General
+ Public License instead of this License.
+--
+1.7.1
+
--- /dev/null
+From 3a0a8643450bf9be6920ae857c03377102fdfd40 Mon Sep 17 00:00:00 2001
+From: Ryan O'Hara <rohara@redhat.com>
+Date: Mon, 5 Nov 2012 11:28:21 -0600
+Subject: [PATCH 04/10] Update keepalived man page
+
+The keepalived(8) was out-of-date and, in some cases, inaccurate. This
+patch provides a complete rewrite of the keepalived(8) man page. This
+includes updated synopsis, description, and options.
+
+Signed-off-by: Ryan O'Hara <rohara@redhat.com>
+---
+ doc/man/man8/keepalived.8 | 179 ++++++++++++++++++++++++++-------------------
+ 1 files changed, 104 insertions(+), 75 deletions(-)
+
+diff --git a/doc/man/man8/keepalived.8 b/doc/man/man8/keepalived.8
+index 861045a..94c366a 100644
+--- a/doc/man/man8/keepalived.8
++++ b/doc/man/man8/keepalived.8
+@@ -1,75 +1,104 @@
+-.\"\r
+-.\" keepalived(8)\r
+-.\"\r
+-.\" Copyright (C) 2004 Joseph Mack\r
+-.TH keepalived 8 "Jan 2004"\r
+-.SH NAME\r
+-keepalived. \- keepalive demon\r
+-.SH SYNOPSIS\r
+-.B "/usr/sbin/keepalived [-n] [-f keepalived.conf] [-d] [-h] [-v]"\r
+-.SH DESCRIPTION\r
+-The\r
+-.B keepalived\r
+-The keepalived server implements the vrrpd routing demon \r
+-which enables routing failover for a pair (or set) of routers \r
+-(or LVS directors) \r
+-and the keepalived demon which sets up and does the health checking \r
+-of virtual services in a Linux Virtual Servier.\r
+-.SH OPTIONS\r
+-.TP\r
+-.B --vrrp, -P\r
+-Only run the VRRP subsystem.\r
+-.TP\r
+-.B --check, -C \r
+-Only run the healthchecker subsystem.\r
+-.TP\r
+-.B --dont-release-vrrp, -V \r
+-leave (don't remove) VRRP VIPs & VROUTEs on daemon stop.\r
+-.TP\r
+---dont-release-ipvs, -I \r
+-Dont remove IPVS topology on daemon stop.\r
+-.TP\r
+---dont-fork, -n\r
+-Dont fork the daemon process.\r
+-.TP\r
+---use-file, -f keepalived.conf_file \r
+-Use the specified configuration file.\r
+-.TP\r
+---wdog-vrrp, -R\r
+-Define VRRP watchdog polling delay (default=5s)\r
+-.TP\r
+---wdog-check, -H \r
+-Define healthchecker's watchdog polling delay (default=5s)\r
+-.TP\r
+---dump-conf, -d\r
+-Dump the configuration data.\r
+-.TP\r
+---log-console, -l\r
+-Log messages to local console.\r
+-.TP\r
+---log-detail, -D \r
+-Detailed log messages (the default with the rc script provided).\r
+-.TP\r
+---log-facility, -S \r
+-0-7 Set syslog facility to LOG_LOCAL[0-7] (default=LOG_DAEMON)\r
+-.TP\r
+---snmp, -x\r
+-Enable SNMP support\r
+-.TP\r
+---help, -h\r
+-Display a short inlined help screen.\r
+-.TP\r
+---version, -v \r
+-Display the version number.\r
+-\r
+-.SH FILES\r
+-.BR /etc/keepalived/keepalived.conf\r
+-.SH SEE ALSO\r
+-.BR keepalived.conf(5)\r
+-.SH AUTHORS\r
+-.br\r
+-Joseph Mack\r
+-.br\r
+-from inspection of the output of \r
+-.I keepalived --help \r
+-from keepalived-1.1.4\r
++.TH KEEPALIVED "8" "November 2012"
++
++.na
++.nh
++
++.SH "NAME"
++keepalived \- load\-balancing and high\-availability service
++
++.SH "SYNOPSIS"
++\fBkeepalived\fP
++[\fB\-f\fP|\fB\-\-use\-file\fP=FILE]
++[\fB\-P\fP|\fB\-\-vrrp\fP]
++[\fB\-C\fP|\fB\-\-check\fP]
++[\fB\-l\fP|\fB\-\-log\-console\fP]
++[\fB\-D\fP|\fB\-\-log\-detail\fP]
++[\fB\-S\fP|\fB\-\-log\-facility\fP={0-7}]
++[\fB\-V\fP|\fB\-\-dont\-release\-vrrp\fP]
++[\fB\-I\fP|\fB\-\-dont\-release\-ipvs\fP]
++[\fB\-R\fP|\fB\-\-dont\-respawn\fP]
++[\fB\-n\fP|\fB\-\-dont\-fork\fP]
++[\fB\-d\fP|\fB\-\-dump\-conf\fP]
++[\fB\-p\fP|\fB\-\-pid\fP=FILE]
++[\fB\-r\fP|\fB\-\-vrrp_pid\fP=FILE]
++[\fB\-c\fP|\fB\-\-checkers_pid\fP=FILE]
++[\fB\-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
++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
++load\-balanced server pool according their health. Keepalived also
++implements the VRRPv2 protocol 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 IPVS load balancer.
++.TP
++\fB -C, --check\fP
++Only run the healthcheck subsystem. This is useful for configurations
++that use the IPVS load balancer with a single director with no failover.
++.TP
++\fB -l, --log-console\fP
++Log messages to the local console. The default behavior is to log
++messages to syslog.
++.TP
++\fB -D, --log-detail\fP
++Detailed log messages.
++.TP
++\fB -S, --log-facility\fP=[0-7]
++Set syslog facility to LOG_LOCAL[0-7]. The default syslog facility is LOG_DAEMON.
++.TP
++\fB -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 on 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 specified pidfile for parent keepalived process. The default
++pidfile for keepalived is "/var/run/keepalived.pid".
++.TP
++\fB -r, --vrrp_pid\fP=FILE
++Use specified pidfile for VRRP child process. The default pidfile for
++the VRRP child process is "/var/run/keepalived_vrrp.pid".
++.TP
++\fB -c, --checkers_pid\fP=FILE
++Use specified pidfile for checkers child process. The default pidfile
++for the checker child process is "/var/run/keepalived_checkers.pid".
++.TP
++\fB -v, --version\fP
++Display the version and exit.
++.TP
++\fB -h, --help\fP
++Display this help message and exit.
++
++.SH "SEE ALSO"
++\fBkeepalived.conf\fP(5), \fBipvsadm\fP(8)
++
++.SH "AUTHOR"
++This man page was written by Ryan O'Hara <rohara@redhat.com>
+--
+1.7.1
+
[Service]
Type=forking
+KillMode=process
ExecStart=/usr/sbin/keepalived
+ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target