* keepalived-1.1.11 released.
* Asier Llano Palacios, <a.llano@usyscom.com> extended
autoconf script to support cross-compilation.
* Kevin Lindsay, <kevinl@netnation.com> and I fixed a
missing bitwise negation while removing signal from
global signal mask. Set this operation before handler
is called. This assume that bitwise negation is an
atomic code generated from compiler. Since gcc 3.3
this is true.
* VRRP : extended ipaddress and iproutes code to return
if vip or vroutes is referencing an unknown interface.
+2005-03-01 Alexandre Cassen <acassen@linux-vs.org>
+ * keepalived-1.1.11 released.
+ * Asier Llano Palacios, <a.llano@usyscom.com> extended
+ autoconf script to support cross-compilation.
+ * Kevin Lindsay, <kevinl@netnation.com> and I fixed a
+ missing bitwise negation while removing signal from
+ global signal mask. Set this operation before handler
+ is called. This assume that bitwise negation is an
+ atomic code generated from compiler. Since gcc 3.3
+ this is true.
+ * VRRP : extended ipaddress and iproutes code to return
+ if vip or vroutes is referencing an unknown interface.
+
2005-02-15 Alexandre Cassen <acassen@linux-vs.org>
* keepalived-1.1.10 released.
* VRRP : While restoring interface, release iproutes
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CPP EGREP LINKWATCH_SUPPORT KERN IPVS_SYNCD DFLAGS VERSION VERSION_DATE IPVS_SUPPORT VRRP_SUPPORT LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA STRIP ac_ct_STRIP CPP EGREP LINKWATCH_SUPPORT KERN IPVS_SYNCD DFLAGS VERSION VERSION_DATE IPVS_SUPPORT VRRP_SUPPORT LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$STRIP"; then
+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+ echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+ ac_ct_STRIP=$STRIP
+ # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_STRIP"; then
+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_STRIP="strip"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ STRIP=$ac_ct_STRIP
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
# Check whether --enable-lvs-syncd or --disable-lvs-syncd was given.
if test "${enable_lvs_syncd+set}" = set; then
# Check whether --with-kernel-dir or --without-kernel-dir was given.
if test "${with_kernel_dir+set}" = set; then
withval="$with_kernel_dir"
- kernelinc="$withval/include"
+ kernelinc="$withval/include" kernelpath="$withval"
else
- kernelinc="/usr/src/linux/include"
+ kernelinc="/usr/src/linux/include" kernelpath="/usr/src/linux"
fi;
# Check whether --enable-debug or --disable-debug was given.
if test "${enable_debug+set}" = set; then
echo "$as_me: WARNING: Cannot determine Linux Kernel version." >&2;}
fi
-echo "$as_me:$LINENO: checking for /usr/src/linux/net/core/link_watch.c" >&5
-echo $ECHO_N "checking for /usr/src/linux/net/core/link_watch.c... $ECHO_C" >&6
-if test "${ac_cv_file__usr_src_linux_net_core_link_watch_c+set}" = set; then
+as_ac_File=`echo "ac_cv_file_$kernelpath/net/core/link_watch.c" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $kernelpath/net/core/link_watch.c" >&5
+echo $ECHO_N "checking for $kernelpath/net/core/link_watch.c... $ECHO_C" >&6
+if eval "test \"\${$as_ac_File+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
test "$cross_compiling" = yes &&
{ { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
{ (exit 1); exit 1; }; }
-if test -r "/usr/src/linux/net/core/link_watch.c"; then
- ac_cv_file__usr_src_linux_net_core_link_watch_c=yes
+if test -r "$kernelpath/net/core/link_watch.c"; then
+ eval "$as_ac_File=yes"
else
- ac_cv_file__usr_src_linux_net_core_link_watch_c=no
+ eval "$as_ac_File=no"
fi
fi
-echo "$as_me:$LINENO: result: $ac_cv_file__usr_src_linux_net_core_link_watch_c" >&5
-echo "${ECHO_T}$ac_cv_file__usr_src_linux_net_core_link_watch_c" >&6
-if test $ac_cv_file__usr_src_linux_net_core_link_watch_c = yes; then
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6
+if test `eval echo '${'$as_ac_File'}'` = yes; then
LINKWATCH_SUPPORT="_WITH_LINKWATCH_"
s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
s,@INSTALL_DATA@,$INSTALL_DATA,;t t
+s,@STRIP@,$STRIP,;t t
+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t
s,@CPP@,$CPP,;t t
s,@EGREP@,$EGREP,;t t
s,@LINKWATCH_SUPPORT@,$LINKWATCH_SUPPORT,;t t
dnl ----[ Checks for programs ]----
AC_PROG_CC
AC_PROG_INSTALL
+AC_CHECK_TOOL(STRIP,strip)
dnl ----[ Keepalived specific configure options ]----
AC_ARG_ENABLE(lvs-syncd,
[ --disable-vrrp do not use the VRRP framework])
AC_ARG_WITH(kernel-dir,
[ --with-kernel-dir=DIR path to linux kernel source directory],
- [kernelinc="$withval/include"],
- [kernelinc="/usr/src/linux/include"])
+ [kernelinc="$withval/include" kernelpath="$withval"],
+ [kernelinc="/usr/src/linux/include" kernelpath="/usr/src/linux"])
AC_ARG_ENABLE(debug,
[ --enable-debug compile with debugging flags])
AC_ARG_ENABLE(profile,
AC_MSG_WARN([Cannot determine Linux Kernel version.])
fi
-AC_CHECK_FILE(/usr/src/linux/net/core/link_watch.c, [
+AC_CHECK_FILE($kernelpath/net/core/link_watch.c, [
LINKWATCH_SUPPORT="_WITH_LINKWATCH_"
], [
LINKWATCH_SUPPORT="_WITHOUT_LINKWATCH_"
+++ /dev/null
-keepalived (1.1.10) unstable; urgency=low
-
- * Cf ChangeLog
-
- -- Alexandre Cassen <acassen@linux-vs.org> Tue, 14 Feb 2005 22:15:23 +0200
-
-keepalived (1.1.9) unstable; urgency=low
-
- * Cf ChangeLog
-
- -- Alexandre Cassen <acassen@linux-vs.org> Tue, 07 Feb 2005 03:17:15 +0200
-
-keepalived (1.1.8) unstable; urgency=low
-
- * Cf ChangeLog
-
- -- Alexandre Cassen <acassen@linux-vs.org> Tue, 25 Jan 2005 21:15:22 +0200
-
-keepalived (1.1.7-2) unstable; urgency=low
-
- * New Maintainer: Alexander Wirt <formorer@debian.org>
- No Bugs, no problems with this package. Thanks for the good
- work Andres, I'm happy to take this package
-
- -- Alexander Wirt <formorer@debian.org> Wed, 19 May 2004 20:32:03 +0200
-
-keepalived (1.1.7-1) unstable; urgency=low
-
- * New upstream release.
- * 003-genhash_8.patch: drop genhash manpage, as it's been merged upstream.
- * 001-genhash_1.patch: add new manpage location fix; should be genhash(1).
-
- -- Andres Salomon <dilinger@voxel.net> Sun, 02 May 2004 23:44:39 -0400
-
-keepalived (1.1.6-1) unstable; urgency=low
-
- * New upstream release.
- * Drop 001-really_distclean.patch and 002-use_destdir.patch; merged
- upstream.
- * 003-genhash_8.patch: add genhash manpage.
- * Update ip_vs.h to version from 2.6.4-1. Keepalived now compiles
- using 2.6 headers. Update description accordingly.
- * Update copyright file.
- * Make init script not check if kernel has IPVS support (closes: #237141).
-
- -- Andres Salomon <dilinger@voxel.net> Tue, 30 Mar 2004 22:05:24 -0500
-
-keepalived (1.1.5-2) unstable; urgency=low
-
- * Can't use kernel-headers package, not all arch have it. Revert
- back to storing headers in debian/ subdir.
-
- -- Andres Salomon <dilinger@voxel.net> Tue, 10 Feb 2004 02:38:14 -0500
-
-keepalived (1.1.5-1) unstable; urgency=low
-
- * New upstream release. (Closes: #231418)
- * Now that ipvs is in 2.4, use kernel-headers package instead of storing
- kernel headers in debian/ subdir. Add appropriate build-dep.
- * Convert buildsys to cdbs and update standards-version.
- * 001-really_distclean.patch: clean binaries out of ./bin.
- * 002-use_destdir.patch: add DESTDIR to makefiles.
- * Upstream now has manpages for keepalived and keepalived.conf.
-
- -- Andres Salomon <dilinger@voxel.net> Fri, 30 Jan 2004 02:51:47 -0500
-
-keepalived (1.0.3-1) unstable; urgency=low
-
- * New upstream release; I'm going to wait for this release to enter
- testing before allowing the 1.1.x series into unstable. (Closes: #199437)
- * Update maintainer email address.
- * Update standards-version.
- * Update kernel headers and scripts.
-
- -- Andres Salomon <dilinger@voxel.net> Sat, 26 Jul 2003 01:03:19 -0400
-
-keepalived (1.0.2-1) unstable; urgency=low
-
- * New upstream release.
- * Fixed previous changelog entry's year (2002 -> 2003), so it doesn's appear
- that I time travel. At the very least, I wouldn't want people discovering
- my secret, and risk my time machine falling into the wrong hands.
- * Upstream docs changed location; updated.
- * Dropped dh_undocumented usage.
- * Added reload support to the init script.
-
- -- Andres Salomon <dilinger@mp3revolution.net> Thu, 17 Apr 2003 00:38:48 -0500
-
-keepalived (1.0.0-1) unstable; urgency=low
-
- * New upstream release.
- * Update standards-version to 3.5.8.0.
- * Update kernel headers for ipvs-1.0.7.
-
- -- Andres Salomon <dilinger@mp3revolution.net> Fri, 17 Jan 2003 15:26:38 -0400
-
-keepalived (0.7.6-1) unstable; urgency=low
-
- * New upstream release.
- * Several minor description/copyright changes to make new lintian happy.
- * Add removal of config.log to clean target in debian/rules.
-
- -- Andres Salomon <dilinger@mp3revolution.net> Sun, 8 Dec 2002 23:59:17 -0400
-
-keepalived (0.7.1-1) unstable; urgency=low
-
- * New upstream release.
- * Update kernel headers for ipvs-1.0.6.
- * Remove dependance upon gcc-3.0; upstream says 2.95 works fine now,
- and we should be transitioning to gcc-3.2 soon, anyways (hopefully).
-
- -- Andres Salomon <dilinger@mp3revolution.net> Sat, 21 Sep 2002 16:05:52 -0400
-
-keepalived (0.6.10-2) unstable; urgency=low
-
- * Add OpenSSL exception clause to the copyright file.
-
- -- Andres Salomon <dilinger@mp3revolution.net> Thu, 22 Aug 2002 11:48:16 -0400
-
-keepalived (0.6.10-1) unstable; urgency=low
-
- * New upstream release.
- * Update kernel headers to 2.4.19 and ipvs-1.0.4.
-
- -- Andres Salomon <dilinger@mp3revolution.net> Wed, 14 Aug 2002 23:42:48 -0400
-
-keepalived (0.6.8-1) unstable; urgency=low
-
- * New upstream release.
- * Updated description to mention VRRPv2.
- * Depend upon gcc-3.0, since gcc-2.95 and keepalived have, uh, issues.
- * Updated various paths to reflect changed build system/layout.
-
- -- Andres Salomon <dilinger@mp3revolution.net> Thu, 18 Jul 2002 01:47:42 -0500
-
-keepalived (0.6.2-1) unstable; urgency=low
-
- * New upstream release, upload to archive. (Closes: #144100)
- * Autoconf sanity upstream, remove configure.in/Makefile.in patches.
- * Fix typo in top level Makefile.in.
- * Updated URL for keepalived (keepalived.sf.net -> www.keepalived.org).
- * For easier maintenance of kernel header files, grab scripts from my
- devmapper package.
-
- -- Andres Salomon <dilinger@mp3revolution.net> Sun, 16 Jun 2002 15:47:39 -0500
-
-keepalived (0.5.8-1) unstable; urgency=low
-
- * New upstream release.
- * Note the OpenSSL exception clause in the README.
-
- -- Andres Salomon <dilinger@mp3revolution.net> Tue, 21 May 2002 15:18:02 -0500
-
-keepalived (0.5.7-1) unstable; urgency=low
-
- * New upstream release (w/ SSL_GET fixes!).
- * Moved sample configs to doc directory.
-
- -- Andres Salomon <dilinger@mp3revolution.net> Thu, 2 May 2002 20:14:38 -0500
-
-keepalived (0.5.6-1) unstable; urgency=low
-
- * New upstream release.
-
- -- Andres Salomon <dilinger@mp3revolution.net> Thu, 11 Apr 2002 01:38:19 -0500
-
-keepalived (0.5.5-1) unstable; urgency=low
-
- * Initial Release.
-
- -- Andres Salomon <dilinger@mp3revolution.net> Thu, 11 Apr 2002 01:38:19 -0500
-
+++ /dev/null
-Source: keepalived
-Section: admin
-Priority: optional
-Maintainer: Alexander Wirt <formorer@debian.org>
-Build-Depends: debhelper (>> 4.1.0), libssl-dev, libpopt-dev, textutils, cdbs
-Standards-Version: 3.6.1
-
-Package: keepalived
-Section: admin
-Architecture: any
-Depends: ${shlibs:Depends}, ipvsadm
-Description: Failover and monitoring daemon for LVS clusters
- keepalived is used for monitoring real servers within a Linux
- Virtual Server (LVS) cluster. keepalived can be configured to
- remove real servers from the cluster pool if it stops responding,
- as well as send a notification email to make the admin aware of
- the service failure.
- .
- In addition, keepalived implements an independent Virtual Router
- Redundancy Protocol (VRRPv2; see rfc2338 for additional info)
- framework for director failover.
- .
- Note that keepalived is compiled with the expectations of being
- used on a Linux 2.4.x or 2.6.x system.
+++ /dev/null
-This package was debianized by Andres Salomon <dilinger@voxel.net> on
-Thu, 11 Apr 2002 01:38:19 -0400.
-
-And is now maintained from Alexander Wirt <formorer@debian.org> on
-Do Mai 20 00:51:09 CEST 2004
-
-It was downloaded from http://www.keepalived.org/
-
-Upstream Author: Alexandre Cassen <acassen@linux-vs.org>
-
-Copyright (C) 2001-2004 Alexandre Cassen <acassen@linux-vs.org>
-
-keepalived 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 of the License, or
-(at your option) any later version.
-
-keepalived 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, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-
-On Debian systems, the full text of the GPL can be found in
-/usr/share/common-licenses/GPL
-
-Additionally, the following clause applies:
-
-In addition, as the copyright holder of Keepalived,
-I, Alexandre Cassen, <acassen@linux-vs.org>,
-grant the following special exception:
-
- I, Alexandre Cassen, <acassen@linux-vs.org>, explicitly allow
- the compilation and distribution of the Keepalived software with
- the OpenSSL Toolkit.
+++ /dev/null
-usr/bin
-usr/sbin
-etc/keepalived
-usr/share/doc/keepalived/samples
+++ /dev/null
-AUTHOR
-CONTRIBUTORS
-TODO
-README
-doc/keepalived.conf*
-doc/samples
+++ /dev/null
-/*
- * IP Virtual Server
- * data structure and functionality definitions
- */
-
-#ifndef _IP_VS_H
-#define _IP_VS_H
-
-#include <asm/types.h> /* For __uXX types */
-
-#define IP_VS_VERSION_CODE 0x010200
-#define NVERSION(version) \
- (version >> 16) & 0xFF, \
- (version >> 8) & 0xFF, \
- version & 0xFF
-
-/*
- * Virtual Service Flags
- */
-#define IP_VS_SVC_F_PERSISTENT 0x0001 /* persistent port */
-#define IP_VS_SVC_F_HASHED 0x0002 /* hashed entry */
-
-/*
- * Destination Server Flags
- */
-#define IP_VS_DEST_F_AVAILABLE 0x0001 /* server is available */
-#define IP_VS_DEST_F_OVERLOAD 0x0002 /* server is overloaded */
-
-/*
- * IPVS sync daemon states
- */
-#define IP_VS_STATE_NONE 0x0000 /* daemon is stopped */
-#define IP_VS_STATE_MASTER 0x0001 /* started as master */
-#define IP_VS_STATE_BACKUP 0x0002 /* started as backup */
-
-/*
- * IPVS socket options
- */
-#define IP_VS_BASE_CTL (64+1024+64) /* base */
-
-#define IP_VS_SO_SET_NONE IP_VS_BASE_CTL /* just peek */
-#define IP_VS_SO_SET_INSERT (IP_VS_BASE_CTL+1)
-#define IP_VS_SO_SET_ADD (IP_VS_BASE_CTL+2)
-#define IP_VS_SO_SET_EDIT (IP_VS_BASE_CTL+3)
-#define IP_VS_SO_SET_DEL (IP_VS_BASE_CTL+4)
-#define IP_VS_SO_SET_FLUSH (IP_VS_BASE_CTL+5)
-#define IP_VS_SO_SET_LIST (IP_VS_BASE_CTL+6)
-#define IP_VS_SO_SET_ADDDEST (IP_VS_BASE_CTL+7)
-#define IP_VS_SO_SET_DELDEST (IP_VS_BASE_CTL+8)
-#define IP_VS_SO_SET_EDITDEST (IP_VS_BASE_CTL+9)
-#define IP_VS_SO_SET_TIMEOUT (IP_VS_BASE_CTL+10)
-#define IP_VS_SO_SET_STARTDAEMON (IP_VS_BASE_CTL+11)
-#define IP_VS_SO_SET_STOPDAEMON (IP_VS_BASE_CTL+12)
-#define IP_VS_SO_SET_RESTORE (IP_VS_BASE_CTL+13)
-#define IP_VS_SO_SET_SAVE (IP_VS_BASE_CTL+14)
-#define IP_VS_SO_SET_ZERO (IP_VS_BASE_CTL+15)
-#define IP_VS_SO_SET_MAX IP_VS_SO_SET_ZERO
-
-#define IP_VS_SO_GET_VERSION IP_VS_BASE_CTL
-#define IP_VS_SO_GET_INFO (IP_VS_BASE_CTL+1)
-#define IP_VS_SO_GET_SERVICES (IP_VS_BASE_CTL+2)
-#define IP_VS_SO_GET_SERVICE (IP_VS_BASE_CTL+3)
-#define IP_VS_SO_GET_DESTS (IP_VS_BASE_CTL+4)
-#define IP_VS_SO_GET_DEST (IP_VS_BASE_CTL+5) /* not used now */
-#define IP_VS_SO_GET_TIMEOUT (IP_VS_BASE_CTL+6)
-#define IP_VS_SO_GET_DAEMON (IP_VS_BASE_CTL+7)
-#define IP_VS_SO_GET_MAX IP_VS_SO_GET_DAEMON
-
-
-/*
- * IPVS Connection Flags
- */
-#define IP_VS_CONN_F_FWD_MASK 0x0007 /* mask for the fwd methods */
-#define IP_VS_CONN_F_MASQ 0x0000 /* masquerading/NAT */
-#define IP_VS_CONN_F_LOCALNODE 0x0001 /* local node */
-#define IP_VS_CONN_F_TUNNEL 0x0002 /* tunneling */
-#define IP_VS_CONN_F_DROUTE 0x0003 /* direct routing */
-#define IP_VS_CONN_F_BYPASS 0x0004 /* cache bypass */
-#define IP_VS_CONN_F_SYNC 0x0020 /* entry created by sync */
-#define IP_VS_CONN_F_HASHED 0x0040 /* hashed entry */
-#define IP_VS_CONN_F_NOOUTPUT 0x0080 /* no output packets */
-#define IP_VS_CONN_F_INACTIVE 0x0100 /* not established */
-#define IP_VS_CONN_F_OUT_SEQ 0x0200 /* must do output seq adjust */
-#define IP_VS_CONN_F_IN_SEQ 0x0400 /* must do input seq adjust */
-#define IP_VS_CONN_F_SEQ_MASK 0x0600 /* in/out sequence mask */
-#define IP_VS_CONN_F_NO_CPORT 0x0800 /* no client port set yet */
-
-/* Move it to better place one day, for now keep it unique */
-#define NFC_IPVS_PROPERTY 0x10000
-
-#define IP_VS_SCHEDNAME_MAXLEN 16
-#define IP_VS_IFNAME_MAXLEN 16
-
-
-/*
- * The struct ip_vs_service_user and struct ip_vs_dest_user are
- * used to set IPVS rules through setsockopt.
- */
-struct ip_vs_service_user {
- /* virtual service addresses */
- u_int16_t protocol;
- u_int32_t addr; /* virtual ip address */
- u_int16_t port;
- u_int32_t fwmark; /* firwall mark of service */
-
- /* virtual service options */
- char sched_name[IP_VS_SCHEDNAME_MAXLEN];
- unsigned flags; /* virtual service flags */
- unsigned timeout; /* persistent timeout in sec */
- u_int32_t netmask; /* persistent netmask */
-};
-
-
-struct ip_vs_dest_user {
- /* destination server address */
- u_int32_t addr;
- u_int16_t port;
-
- /* real server options */
- unsigned conn_flags; /* connection flags */
- int weight; /* destination weight */
-
- /* thresholds for active connections */
- u_int32_t u_threshold; /* upper threshold */
- u_int32_t l_threshold; /* lower threshold */
-};
-
-
-/*
- * IPVS statistics object (for user space)
- */
-struct ip_vs_stats_user
-{
- __u32 conns; /* connections scheduled */
- __u32 inpkts; /* incoming packets */
- __u32 outpkts; /* outgoing packets */
- __u64 inbytes; /* incoming bytes */
- __u64 outbytes; /* outgoing bytes */
-
- __u32 cps; /* current connection rate */
- __u32 inpps; /* current in packet rate */
- __u32 outpps; /* current out packet rate */
- __u32 inbps; /* current in byte rate */
- __u32 outbps; /* current out byte rate */
-};
-
-
-/* The argument to IP_VS_SO_GET_INFO */
-struct ip_vs_getinfo {
- /* version number */
- unsigned int version;
-
- /* size of connection hash table */
- unsigned int size;
-
- /* number of virtual services */
- unsigned int num_services;
-};
-
-
-/* The argument to IP_VS_SO_GET_SERVICE */
-struct ip_vs_service_entry {
- /* which service: user fills in these */
- u_int16_t protocol;
- u_int32_t addr; /* virtual address */
- u_int16_t port;
- u_int32_t fwmark; /* firwall mark of service */
-
- /* service options */
- char sched_name[IP_VS_SCHEDNAME_MAXLEN];
- unsigned flags; /* virtual service flags */
- unsigned timeout; /* persistent timeout */
- u_int32_t netmask; /* persistent netmask */
-
- /* number of real servers */
- unsigned int num_dests;
-
- /* statistics */
- struct ip_vs_stats_user stats;
-};
-
-
-struct ip_vs_dest_entry {
- u_int32_t addr; /* destination address */
- u_int16_t port;
- unsigned conn_flags; /* connection flags */
- int weight; /* destination weight */
-
- u_int32_t u_threshold; /* upper threshold */
- u_int32_t l_threshold; /* lower threshold */
-
- u_int32_t activeconns; /* active connections */
- u_int32_t inactconns; /* inactive connections */
- u_int32_t persistconns; /* persistent connections */
-
- /* statistics */
- struct ip_vs_stats_user stats;
-};
-
-
-/* The argument to IP_VS_SO_GET_DESTS */
-struct ip_vs_get_dests {
- /* which service: user fills in these */
- u_int16_t protocol;
- u_int32_t addr; /* virtual address */
- u_int16_t port;
- u_int32_t fwmark; /* firwall mark of service */
-
- /* number of real servers */
- unsigned int num_dests;
-
- /* the real servers */
- struct ip_vs_dest_entry entrytable[0];
-};
-
-
-/* The argument to IP_VS_SO_GET_SERVICES */
-struct ip_vs_get_services {
- /* number of virtual services */
- unsigned int num_services;
-
- /* service table */
- struct ip_vs_service_entry entrytable[0];
-};
-
-
-/* The argument to IP_VS_SO_GET_TIMEOUT */
-struct ip_vs_timeout_user {
- int tcp_timeout;
- int tcp_fin_timeout;
- int udp_timeout;
-};
-
-
-/* The argument to IP_VS_SO_GET_DAEMON */
-struct ip_vs_daemon_user {
- /* sync daemon state (master/backup) */
- int state;
-
- /* multicast interface name */
- char mcast_ifn[IP_VS_IFNAME_MAXLEN];
-
- /* SyncID we belong to */
- int syncid;
-};
-
-
-#ifdef __KERNEL__
-
-#include <linux/config.h>
-#include <linux/list.h> /* for struct list_head */
-#include <linux/spinlock.h> /* for struct rwlock_t */
-#include <linux/skbuff.h> /* for struct sk_buff */
-#include <linux/ip.h> /* for struct iphdr */
-#include <asm/atomic.h> /* for struct atomic_t */
-#include <linux/netdevice.h> /* for struct neighbour */
-#include <net/dst.h> /* for struct dst_entry */
-#include <net/tcp.h>
-#include <net/udp.h>
-#include <linux/compiler.h>
-
-
-#ifdef CONFIG_IP_VS_DEBUG
-extern int ip_vs_get_debug_level(void);
-#define IP_VS_DBG(level, msg...) \
- do { \
- if (level <= ip_vs_get_debug_level()) \
- printk(KERN_DEBUG "IPVS: " msg); \
- } while (0)
-#define IP_VS_DBG_RL(msg...) \
- do { \
- if (net_ratelimit()) \
- printk(KERN_DEBUG "IPVS: " msg); \
- } while (0)
-#define IP_VS_DBG_PKT(level, pp, skb, ofs, msg) \
- do { \
- if (level <= ip_vs_get_debug_level()) \
- pp->debug_packet(pp, skb, ofs, msg); \
- } while (0)
-#define IP_VS_DBG_RL_PKT(level, pp, skb, ofs, msg) \
- do { \
- if (level <= ip_vs_get_debug_level() && \
- net_ratelimit()) \
- pp->debug_packet(pp, skb, ofs, msg); \
- } while (0)
-#else /* NO DEBUGGING at ALL */
-#define IP_VS_DBG(level, msg...) do {} while (0)
-#define IP_VS_DBG_RL(msg...) do {} while (0)
-#define IP_VS_DBG_PKT(level, pp, skb, ofs, msg) do {} while (0)
-#define IP_VS_DBG_RL_PKT(level, pp, skb, ofs, msg) do {} while (0)
-#endif
-
-#define IP_VS_BUG() BUG()
-#define IP_VS_ERR(msg...) printk(KERN_ERR "IPVS: " msg)
-#define IP_VS_INFO(msg...) printk(KERN_INFO "IPVS: " msg)
-#define IP_VS_WARNING(msg...) \
- printk(KERN_WARNING "IPVS: " msg)
-#define IP_VS_ERR_RL(msg...) \
- do { \
- if (net_ratelimit()) \
- printk(KERN_ERR "IPVS: " msg); \
- } while (0)
-
-#ifdef CONFIG_IP_VS_DEBUG
-#define EnterFunction(level) \
- do { \
- if (level <= ip_vs_get_debug_level()) \
- printk(KERN_DEBUG "Enter: %s, %s line %i\n", \
- __FUNCTION__, __FILE__, __LINE__); \
- } while (0)
-#define LeaveFunction(level) \
- do { \
- if (level <= ip_vs_get_debug_level()) \
- printk(KERN_DEBUG "Leave: %s, %s line %i\n", \
- __FUNCTION__, __FILE__, __LINE__); \
- } while (0)
-#else
-#define EnterFunction(level) do {} while (0)
-#define LeaveFunction(level) do {} while (0)
-#endif
-
-#define IP_VS_WAIT_WHILE(expr) while (expr) { cpu_relax(); }
-
-
-/*
- * The port number of FTP service (in network order).
- */
-#define FTPPORT __constant_htons(21)
-#define FTPDATA __constant_htons(20)
-
-/*
- * IPVS sysctl variables under the /proc/sys/net/ipv4/vs/
- */
-#define NET_IPV4_VS 21
-
-enum {
- NET_IPV4_VS_DEBUG_LEVEL=1,
- NET_IPV4_VS_AMEMTHRESH=2,
- NET_IPV4_VS_AMDROPRATE=3,
- NET_IPV4_VS_DROP_ENTRY=4,
- NET_IPV4_VS_DROP_PACKET=5,
- NET_IPV4_VS_SECURE_TCP=6,
- NET_IPV4_VS_TO_ES=7,
- NET_IPV4_VS_TO_SS=8,
- NET_IPV4_VS_TO_SR=9,
- NET_IPV4_VS_TO_FW=10,
- NET_IPV4_VS_TO_TW=11,
- NET_IPV4_VS_TO_CL=12,
- NET_IPV4_VS_TO_CW=13,
- NET_IPV4_VS_TO_LA=14,
- NET_IPV4_VS_TO_LI=15,
- NET_IPV4_VS_TO_SA=16,
- NET_IPV4_VS_TO_UDP=17,
- NET_IPV4_VS_TO_ICMP=18,
- NET_IPV4_VS_LBLC_EXPIRE=19,
- NET_IPV4_VS_LBLCR_EXPIRE=20,
- NET_IPV4_VS_CACHE_BYPASS=22,
- NET_IPV4_VS_EXPIRE_NODEST_CONN=23,
- NET_IPV4_VS_SYNC_THRESHOLD=24,
- NET_IPV4_VS_NAT_ICMP_SEND=25,
- NET_IPV4_VS_LAST
-};
-
-/*
- * TCP State Values
- */
-enum {
- IP_VS_TCP_S_NONE = 0,
- IP_VS_TCP_S_ESTABLISHED,
- IP_VS_TCP_S_SYN_SENT,
- IP_VS_TCP_S_SYN_RECV,
- IP_VS_TCP_S_FIN_WAIT,
- IP_VS_TCP_S_TIME_WAIT,
- IP_VS_TCP_S_CLOSE,
- IP_VS_TCP_S_CLOSE_WAIT,
- IP_VS_TCP_S_LAST_ACK,
- IP_VS_TCP_S_LISTEN,
- IP_VS_TCP_S_SYNACK,
- IP_VS_TCP_S_LAST
-};
-
-/*
- * UDP State Values
- */
-enum {
- IP_VS_UDP_S_NORMAL,
- IP_VS_UDP_S_LAST,
-};
-
-/*
- * ICMP State Values
- */
-enum {
- IP_VS_ICMP_S_NORMAL,
- IP_VS_ICMP_S_LAST,
-};
-
-/*
- * Delta sequence info structure
- * Each ip_vs_conn has 2 (output AND input seq. changes).
- * Only used in the VS/NAT.
- */
-struct ip_vs_seq {
- __u32 init_seq; /* Add delta from this seq */
- __u32 delta; /* Delta in sequence numbers */
- __u32 previous_delta; /* Delta in sequence numbers
- before last resized pkt */
-};
-
-
-/*
- * IPVS statistics object
- */
-struct ip_vs_stats
-{
- __u32 conns; /* connections scheduled */
- __u32 inpkts; /* incoming packets */
- __u32 outpkts; /* outgoing packets */
- __u64 inbytes; /* incoming bytes */
- __u64 outbytes; /* outgoing bytes */
-
- __u32 cps; /* current connection rate */
- __u32 inpps; /* current in packet rate */
- __u32 outpps; /* current out packet rate */
- __u32 inbps; /* current in byte rate */
- __u32 outbps; /* current out byte rate */
-
- spinlock_t lock; /* spin lock */
-};
-
-struct ip_vs_conn;
-struct ip_vs_app;
-
-struct ip_vs_protocol {
- struct ip_vs_protocol *next;
- char *name;
- __u16 protocol;
- int dont_defrag;
- atomic_t appcnt; /* counter of proto app incs */
- int *timeout_table; /* protocol timeout table */
-
- void (*init)(struct ip_vs_protocol *pp);
-
- void (*exit)(struct ip_vs_protocol *pp);
-
- int (*conn_schedule)(struct sk_buff *skb,
- struct ip_vs_protocol *pp,
- int *verdict, struct ip_vs_conn **cpp);
-
- struct ip_vs_conn *
- (*conn_in_get)(const struct sk_buff *skb,
- struct ip_vs_protocol *pp,
- const struct iphdr *iph,
- unsigned int proto_off,
- int inverse);
-
- struct ip_vs_conn *
- (*conn_out_get)(const struct sk_buff *skb,
- struct ip_vs_protocol *pp,
- const struct iphdr *iph,
- unsigned int proto_off,
- int inverse);
-
- int (*snat_handler)(struct sk_buff **pskb,
- struct ip_vs_protocol *pp, struct ip_vs_conn *cp);
-
- int (*dnat_handler)(struct sk_buff **pskb,
- struct ip_vs_protocol *pp, struct ip_vs_conn *cp);
-
- int (*csum_check)(struct sk_buff *skb, struct ip_vs_protocol *pp);
-
- const char *(*state_name)(int state);
-
- int (*state_transition)(struct ip_vs_conn *cp, int direction,
- const struct sk_buff *skb,
- struct ip_vs_protocol *pp);
-
- int (*register_app)(struct ip_vs_app *inc);
-
- void (*unregister_app)(struct ip_vs_app *inc);
-
- int (*app_conn_bind)(struct ip_vs_conn *cp);
-
- void (*debug_packet)(struct ip_vs_protocol *pp,
- const struct sk_buff *skb,
- int offset,
- const char *msg);
-
- void (*timeout_change)(struct ip_vs_protocol *pp, int flags);
-
- int (*set_state_timeout)(struct ip_vs_protocol *pp, char *sname, int to);
-};
-
-extern struct ip_vs_protocol * ip_vs_proto_get(unsigned short proto);
-
-/*
- * IP_VS structure allocated for each dynamically scheduled connection
- */
-struct ip_vs_conn {
- struct list_head c_list; /* hashed list heads */
-
- /* Protocol, addresses and port numbers */
- __u32 caddr; /* client address */
- __u32 vaddr; /* virtual address */
- __u32 daddr; /* destination address */
- __u16 cport;
- __u16 vport;
- __u16 dport;
- __u16 protocol; /* Which protocol (TCP/UDP) */
-
- /* counter and timer */
- atomic_t refcnt; /* reference count */
- struct timer_list timer; /* Expiration timer */
- volatile unsigned long timeout; /* timeout */
-
- /* Flags and state transition */
- spinlock_t lock; /* lock for state transition */
- volatile __u16 flags; /* status flags */
- volatile __u16 state; /* state info */
-
- /* Control members */
- struct ip_vs_conn *control; /* Master control connection */
- atomic_t n_control; /* Number of controlled ones */
- struct ip_vs_dest *dest; /* real server */
- atomic_t in_pkts; /* incoming packet counter */
-
- /* packet transmitter for different forwarding methods. If it
- mangles the packet, it must return NF_DROP or better NF_STOLEN,
- otherwise this must be changed to a sk_buff **.
- */
- int (*packet_xmit)(struct sk_buff *skb, struct ip_vs_conn *cp,
- struct ip_vs_protocol *pp);
-
- /* Note: we can group the following members into a structure,
- in order to save more space, and the following members are
- only used in VS/NAT anyway */
- struct ip_vs_app *app; /* bound ip_vs_app object */
- void *app_data; /* Application private data */
- struct ip_vs_seq in_seq; /* incoming seq. struct */
- struct ip_vs_seq out_seq; /* outgoing seq. struct */
-};
-
-
-/*
- * The information about the virtual service offered to the net
- * and the forwarding entries
- */
-struct ip_vs_service {
- struct list_head s_list; /* for normal service table */
- struct list_head f_list; /* for fwmark-based service table */
- atomic_t refcnt; /* reference counter */
- atomic_t usecnt; /* use counter */
-
- __u16 protocol; /* which protocol (TCP/UDP) */
- __u32 addr; /* IP address for virtual service */
- __u16 port; /* port number for the service */
- __u32 fwmark; /* firewall mark of the service */
- unsigned flags; /* service status flags */
- unsigned timeout; /* persistent timeout in ticks */
- __u32 netmask; /* grouping granularity */
-
- struct list_head destinations; /* real server d-linked list */
- __u32 num_dests; /* number of servers */
- struct ip_vs_stats stats; /* statistics for the service */
- struct ip_vs_app *inc; /* bind conns to this app inc */
-
- /* for scheduling */
- struct ip_vs_scheduler *scheduler; /* bound scheduler object */
- rwlock_t sched_lock; /* lock sched_data */
- void *sched_data; /* scheduler application data */
-};
-
-
-/*
- * The real server destination forwarding entry
- * with ip address, port number, and so on.
- */
-struct ip_vs_dest {
- struct list_head n_list; /* for the dests in the service */
- struct list_head d_list; /* for table with all the dests */
-
- __u32 addr; /* IP address of the server */
- __u16 port; /* port number of the server */
- volatile unsigned flags; /* dest status flags */
- atomic_t conn_flags; /* flags to copy to conn */
- atomic_t weight; /* server weight */
-
- atomic_t refcnt; /* reference counter */
- struct ip_vs_stats stats; /* statistics */
-
- /* connection counters and thresholds */
- atomic_t activeconns; /* active connections */
- atomic_t inactconns; /* inactive connections */
- atomic_t persistconns; /* persistent connections */
- __u32 u_threshold; /* upper threshold */
- __u32 l_threshold; /* lower threshold */
-
- /* for destination cache */
- spinlock_t dst_lock; /* lock of dst_cache */
- struct dst_entry *dst_cache; /* destination cache entry */
- u32 dst_rtos; /* RT_TOS(tos) for dst */
-
- /* for virtual service */
- struct ip_vs_service *svc; /* service it belongs to */
- __u16 protocol; /* which protocol (TCP/UDP) */
- __u32 vaddr; /* virtual IP address */
- __u16 vport; /* virtual port number */
- __u32 vfwmark; /* firewall mark of service */
-};
-
-
-/*
- * The scheduler object
- */
-struct ip_vs_scheduler {
- struct list_head n_list; /* d-linked list head */
- char *name; /* scheduler name */
- atomic_t refcnt; /* reference counter */
- struct module *module; /* THIS_MODULE/NULL */
-
- /* scheduler initializing service */
- int (*init_service)(struct ip_vs_service *svc);
- /* scheduling service finish */
- int (*done_service)(struct ip_vs_service *svc);
- /* scheduler updating service */
- int (*update_service)(struct ip_vs_service *svc);
-
- /* selecting a server from the given service */
- struct ip_vs_dest* (*schedule)(struct ip_vs_service *svc,
- const struct sk_buff *skb);
-};
-
-
-/*
- * The application module object (a.k.a. app incarnation)
- */
-struct ip_vs_app
-{
- struct list_head a_list; /* member in app list */
- int type; /* IP_VS_APP_TYPE_xxx */
- char *name; /* application module name */
- __u16 protocol;
- struct module *module; /* THIS_MODULE/NULL */
- struct list_head incs_list; /* list of incarnations */
-
- /* members for application incarnations */
- struct list_head p_list; /* member in proto app list */
- struct ip_vs_app *app; /* its real application */
- __u16 port; /* port number in net order */
- atomic_t usecnt; /* usage counter */
-
- /* output hook: return false if can't linearize. diff set for TCP. */
- int (*pkt_out)(struct ip_vs_app *, struct ip_vs_conn *,
- struct sk_buff **, int *diff);
-
- /* input hook: return false if can't linearize. diff set for TCP. */
- int (*pkt_in)(struct ip_vs_app *, struct ip_vs_conn *,
- struct sk_buff **, int *diff);
-
- /* ip_vs_app initializer */
- int (*init_conn)(struct ip_vs_app *, struct ip_vs_conn *);
-
- /* ip_vs_app finish */
- int (*done_conn)(struct ip_vs_app *, struct ip_vs_conn *);
-
-
- /* not used now */
- int (*bind_conn)(struct ip_vs_app *, struct ip_vs_conn *,
- struct ip_vs_protocol *);
-
- void (*unbind_conn)(struct ip_vs_app *, struct ip_vs_conn *);
-
- int * timeout_table;
- int * timeouts;
- int timeouts_size;
-
- int (*conn_schedule)(struct sk_buff *skb, struct ip_vs_app *app,
- int *verdict, struct ip_vs_conn **cpp);
-
- struct ip_vs_conn *
- (*conn_in_get)(const struct sk_buff *skb, struct ip_vs_app *app,
- const struct iphdr *iph, unsigned int proto_off,
- int inverse);
-
- struct ip_vs_conn *
- (*conn_out_get)(const struct sk_buff *skb, struct ip_vs_app *app,
- const struct iphdr *iph, unsigned int proto_off,
- int inverse);
-
- int (*state_transition)(struct ip_vs_conn *cp, int direction,
- const struct sk_buff *skb,
- struct ip_vs_app *app);
-
- void (*timeout_change)(struct ip_vs_app *app, int flags);
-};
-
-
-/*
- * IPVS core functions
- * (from ip_vs_core.c)
- */
-extern const char *ip_vs_proto_name(unsigned proto);
-extern unsigned int check_for_ip_vs_out(struct sk_buff **skb_p,
- int (*okfn)(struct sk_buff *));
-extern void ip_vs_init_hash_table(struct list_head *table, int rows);
-#define IP_VS_INIT_HASH_TABLE(t) ip_vs_init_hash_table(t, sizeof(t)/sizeof(t[0]))
-
-#define IP_VS_APP_TYPE_UNSPEC 0
-#define IP_VS_APP_TYPE_FTP 1
-
-/*
- * ip_vs_conn handling functions
- * (from ip_vs_conn.c)
- */
-
-/*
- * IPVS connection entry hash table
- */
-#ifndef CONFIG_IP_VS_TAB_BITS
-#define CONFIG_IP_VS_TAB_BITS 12
-#endif
-/* make sure that IP_VS_CONN_TAB_BITS is located in [8, 20] */
-#if CONFIG_IP_VS_TAB_BITS < 8
-#define IP_VS_CONN_TAB_BITS 8
-#endif
-#if CONFIG_IP_VS_TAB_BITS > 20
-#define IP_VS_CONN_TAB_BITS 20
-#endif
-#if 8 <= CONFIG_IP_VS_TAB_BITS && CONFIG_IP_VS_TAB_BITS <= 20
-#define IP_VS_CONN_TAB_BITS CONFIG_IP_VS_TAB_BITS
-#endif
-#define IP_VS_CONN_TAB_SIZE (1 << IP_VS_CONN_TAB_BITS)
-#define IP_VS_CONN_TAB_MASK (IP_VS_CONN_TAB_SIZE - 1)
-
-enum {
- IP_VS_DIR_INPUT = 0,
- IP_VS_DIR_OUTPUT,
- IP_VS_DIR_INPUT_ONLY,
- IP_VS_DIR_LAST,
-};
-
-extern struct ip_vs_conn *ip_vs_conn_in_get
-(int protocol, __u32 s_addr, __u16 s_port, __u32 d_addr, __u16 d_port);
-extern struct ip_vs_conn *ip_vs_conn_out_get
-(int protocol, __u32 s_addr, __u16 s_port, __u32 d_addr, __u16 d_port);
-
-/* put back the conn without restarting its timer */
-static inline void __ip_vs_conn_put(struct ip_vs_conn *cp)
-{
- atomic_dec(&cp->refcnt);
-}
-extern void ip_vs_conn_put(struct ip_vs_conn *cp);
-extern void ip_vs_conn_fill_cport(struct ip_vs_conn *cp, __u16 cport);
-
-extern struct ip_vs_conn *
-ip_vs_conn_new(int proto, __u32 caddr, __u16 cport, __u32 vaddr, __u16 vport,
- __u32 daddr, __u16 dport, unsigned flags,
- struct ip_vs_dest *dest);
-extern void ip_vs_conn_expire_now(struct ip_vs_conn *cp);
-
-extern const char * ip_vs_state_name(__u16 proto, int state);
-
-extern void ip_vs_tcp_conn_listen(struct ip_vs_conn *cp);
-extern int ip_vs_check_template(struct ip_vs_conn *ct);
-extern void ip_vs_secure_tcp_set(int on);
-extern void ip_vs_random_dropentry(void);
-extern int ip_vs_conn_init(void);
-extern void ip_vs_conn_cleanup(void);
-
-static inline void ip_vs_control_del(struct ip_vs_conn *cp)
-{
- struct ip_vs_conn *ctl_cp = cp->control;
- if (!ctl_cp) {
- IP_VS_ERR("request control DEL for uncontrolled: "
- "%d.%d.%d.%d:%d to %d.%d.%d.%d:%d\n",
- NIPQUAD(cp->caddr),ntohs(cp->cport),
- NIPQUAD(cp->vaddr),ntohs(cp->vport));
- return;
- }
-
- IP_VS_DBG(7, "DELeting control for: "
- "cp.dst=%d.%d.%d.%d:%d ctl_cp.dst=%d.%d.%d.%d:%d\n",
- NIPQUAD(cp->caddr),ntohs(cp->cport),
- NIPQUAD(ctl_cp->caddr),ntohs(ctl_cp->cport));
-
- cp->control = NULL;
- if (atomic_read(&ctl_cp->n_control) == 0) {
- IP_VS_ERR("BUG control DEL with n=0 : "
- "%d.%d.%d.%d:%d to %d.%d.%d.%d:%d\n",
- NIPQUAD(cp->caddr),ntohs(cp->cport),
- NIPQUAD(cp->vaddr),ntohs(cp->vport));
- return;
- }
- atomic_dec(&ctl_cp->n_control);
-}
-
-static inline void
-ip_vs_control_add(struct ip_vs_conn *cp, struct ip_vs_conn *ctl_cp)
-{
- if (cp->control) {
- IP_VS_ERR("request control ADD for already controlled: "
- "%d.%d.%d.%d:%d to %d.%d.%d.%d:%d\n",
- NIPQUAD(cp->caddr),ntohs(cp->cport),
- NIPQUAD(cp->vaddr),ntohs(cp->vport));
- ip_vs_control_del(cp);
- }
-
- IP_VS_DBG(7, "ADDing control for: "
- "cp.dst=%d.%d.%d.%d:%d ctl_cp.dst=%d.%d.%d.%d:%d\n",
- NIPQUAD(cp->caddr),ntohs(cp->cport),
- NIPQUAD(ctl_cp->caddr),ntohs(ctl_cp->cport));
-
- cp->control = ctl_cp;
- atomic_inc(&ctl_cp->n_control);
-}
-
-
-/*
- * IPVS application functions
- * (from ip_vs_app.c)
- */
-#define IP_VS_APP_MAX_PORTS 8
-extern int register_ip_vs_app(struct ip_vs_app *app);
-extern void unregister_ip_vs_app(struct ip_vs_app *app);
-extern int ip_vs_bind_app(struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
-extern void ip_vs_unbind_app(struct ip_vs_conn *cp);
-extern int
-register_ip_vs_app_inc(struct ip_vs_app *app, __u16 proto, __u16 port);
-extern int ip_vs_app_inc_get(struct ip_vs_app *inc);
-extern void ip_vs_app_inc_put(struct ip_vs_app *inc);
-
-extern int ip_vs_app_pkt_out(struct ip_vs_conn *, struct sk_buff **pskb);
-extern int ip_vs_app_pkt_in(struct ip_vs_conn *, struct sk_buff **pskb);
-extern int ip_vs_skb_replace(struct sk_buff *skb, int pri,
- char *o_buf, int o_len, char *n_buf, int n_len);
-extern int ip_vs_app_init(void);
-extern void ip_vs_app_cleanup(void);
-
-
-/*
- * IPVS protocol functions (from ip_vs_proto.c)
- */
-extern int ip_vs_protocol_init(void);
-extern void ip_vs_protocol_cleanup(void);
-extern void ip_vs_protocol_timeout_change(int flags);
-extern int *ip_vs_create_timeout_table(int *table, int size);
-extern int
-ip_vs_set_state_timeout(int *table, int num, char **names, char *name, int to);
-extern void
-ip_vs_tcpudp_debug_packet(struct ip_vs_protocol *pp, const struct sk_buff *skb,
- int offset, const char *msg);
-
-extern struct ip_vs_protocol ip_vs_protocol_tcp;
-extern struct ip_vs_protocol ip_vs_protocol_udp;
-extern struct ip_vs_protocol ip_vs_protocol_icmp;
-extern struct ip_vs_protocol ip_vs_protocol_esp;
-extern struct ip_vs_protocol ip_vs_protocol_ah;
-
-
-/*
- * Registering/unregistering scheduler functions
- * (from ip_vs_sched.c)
- */
-extern int register_ip_vs_scheduler(struct ip_vs_scheduler *scheduler);
-extern int unregister_ip_vs_scheduler(struct ip_vs_scheduler *scheduler);
-extern int ip_vs_bind_scheduler(struct ip_vs_service *svc,
- struct ip_vs_scheduler *scheduler);
-extern int ip_vs_unbind_scheduler(struct ip_vs_service *svc);
-extern struct ip_vs_scheduler *ip_vs_scheduler_get(const char *sched_name);
-extern void ip_vs_scheduler_put(struct ip_vs_scheduler *scheduler);
-extern struct ip_vs_conn *
-ip_vs_schedule(struct ip_vs_service *svc, const struct sk_buff *skb);
-extern int ip_vs_leave(struct ip_vs_service *svc, struct sk_buff *skb,
- struct ip_vs_protocol *pp);
-
-
-/*
- * IPVS control data and functions (from ip_vs_ctl.c)
- */
-extern int sysctl_ip_vs_cache_bypass;
-extern int sysctl_ip_vs_expire_nodest_conn;
-extern int sysctl_ip_vs_sync_threshold[2];
-extern int sysctl_ip_vs_nat_icmp_send;
-extern struct ip_vs_stats ip_vs_stats;
-
-extern struct ip_vs_service *
-ip_vs_service_get(__u32 fwmark, __u16 protocol, __u32 vaddr, __u16 vport);
-
-static inline void ip_vs_service_put(struct ip_vs_service *svc)
-{
- atomic_dec(&svc->usecnt);
-}
-
-extern struct ip_vs_dest *
-ip_vs_lookup_real_service(__u16 protocol, __u32 daddr, __u16 dport);
-extern int ip_vs_use_count_inc(void);
-extern void ip_vs_use_count_dec(void);
-extern int ip_vs_control_init(void);
-extern void ip_vs_control_cleanup(void);
-
-
-/*
- * IPVS sync daemon data and function prototypes
- * (from ip_vs_sync.c)
- */
-extern volatile int ip_vs_sync_state;
-extern volatile int ip_vs_master_syncid;
-extern volatile int ip_vs_backup_syncid;
-extern char ip_vs_master_mcast_ifn[IP_VS_IFNAME_MAXLEN];
-extern char ip_vs_backup_mcast_ifn[IP_VS_IFNAME_MAXLEN];
-extern int start_sync_thread(int state, char *mcast_ifn, __u8 syncid);
-extern int stop_sync_thread(int state);
-extern void ip_vs_sync_conn(struct ip_vs_conn *cp);
-
-
-/*
- * IPVS rate estimator prototypes (from ip_vs_est.c)
- */
-extern int ip_vs_new_estimator(struct ip_vs_stats *stats);
-extern void ip_vs_kill_estimator(struct ip_vs_stats *stats);
-extern void ip_vs_zero_estimator(struct ip_vs_stats *stats);
-
-/*
- * Various IPVS packet transmitters (from ip_vs_xmit.c)
- */
-extern int ip_vs_null_xmit
-(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
-extern int ip_vs_bypass_xmit
-(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
-extern int ip_vs_nat_xmit
-(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
-extern int ip_vs_tunnel_xmit
-(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
-extern int ip_vs_dr_xmit
-(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp);
-extern int ip_vs_icmp_xmit
-(struct sk_buff *skb, struct ip_vs_conn *cp, struct ip_vs_protocol *pp, int offset);
-extern void ip_vs_dst_reset(struct ip_vs_dest *dest);
-
-
-/*
- * This is a simple mechanism to ignore packets when
- * we are loaded. Just set ip_vs_drop_rate to 'n' and
- * we start to drop 1/rate of the packets
- */
-extern int ip_vs_drop_rate;
-extern int ip_vs_drop_counter;
-
-static __inline__ int ip_vs_todrop(void)
-{
- if (!ip_vs_drop_rate) return 0;
- if (--ip_vs_drop_counter > 0) return 0;
- ip_vs_drop_counter = ip_vs_drop_rate;
- return 1;
-}
-
-/*
- * ip_vs_fwd_tag returns the forwarding tag of the connection
- */
-#define IP_VS_FWD_METHOD(cp) (cp->flags & IP_VS_CONN_F_FWD_MASK)
-
-extern __inline__ char ip_vs_fwd_tag(struct ip_vs_conn *cp)
-{
- char fwd;
-
- switch (IP_VS_FWD_METHOD(cp)) {
- case IP_VS_CONN_F_MASQ:
- fwd = 'M'; break;
- case IP_VS_CONN_F_LOCALNODE:
- fwd = 'L'; break;
- case IP_VS_CONN_F_TUNNEL:
- fwd = 'T'; break;
- case IP_VS_CONN_F_DROUTE:
- fwd = 'R'; break;
- case IP_VS_CONN_F_BYPASS:
- fwd = 'B'; break;
- default:
- fwd = '?'; break;
- }
- return fwd;
-}
-
-extern int ip_vs_make_skb_writable(struct sk_buff **pskb, int len);
-extern void ip_vs_nat_icmp(struct sk_buff *skb, struct ip_vs_protocol *pp,
- struct ip_vs_conn *cp, int dir);
-
-extern u16 ip_vs_checksum_complete(struct sk_buff *skb, int offset);
-
-static inline u16 ip_vs_check_diff(u32 old, u32 new, u16 oldsum)
-{
- u32 diff[2] = { old, new };
-
- return csum_fold(csum_partial((char *) diff, sizeof(diff),
- oldsum ^ 0xFFFF));
-}
-
-#endif /* __KERNEL__ */
-
-#endif /* _IP_VS_H */
+++ /dev/null
-#! /bin/sh
-#
-# keepalived LVS cluster monitor daemon.
-#
-# Written by Andres Salomon <dilinger@voxel.net>
-#
-
-PATH=/sbin:/bin:/usr/sbin:/usr/bin
-DAEMON=/usr/sbin/keepalived
-NAME=keepalived
-DESC=keepalived
-
-set -e
-test -f $DAEMON || exit 0
-
-case "$1" in
- start)
- echo -n "Starting $DESC: "
- start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
- --exec $DAEMON
- echo "$NAME."
- ;;
- stop)
- echo -n "Stopping $DESC: "
- start-stop-daemon --oknodo --stop --quiet --pidfile /var/run/$NAME.pid \
- --exec $DAEMON
- echo "$NAME."
- ;;
- reload|force-reload)
- echo "Reloading $DESC configuration file."
- start-stop-daemon --stop --quiet --signal 1 --pidfile \
- /var/run/$NAME.pid --exec $DAEMON
- ;;
- restart)
- echo -n "Restarting $DESC: "
- start-stop-daemon --stop --quiet --pidfile \
- /var/run/$NAME.pid --exec $DAEMON
- sleep 1
- start-stop-daemon --start --quiet --pidfile \
- /var/run/$NAME.pid --exec $DAEMON
- echo "$NAME."
- ;;
- *)
- echo "Usage: /etc/init.d/$NAME {start|stop|restart|reload|force-reload}" >&2
- exit 1
- ;;
-esac
-
-exit 0
+++ /dev/null
-doc/man/man*/*
+++ /dev/null
-#!/usr/bin/make -f
-
-include /usr/share/cdbs/1/rules/debhelper.mk
-include /usr/share/cdbs/1/rules/simple-patchsys.mk
-include /usr/share/cdbs/1/class/autotools.mk
-
-DEB_CONFIGURE_EXTRA_FLAGS := --with-kernel-dir=$(CURDIR)/debian
-
-binary-install/keepalived::
- rm -rf $(DEB_DESTDIR)/etc/keepalived/samples
- rm -rf $(DEB_DESTDIR)/etc/init.d/keepalived.init
- rm -rf $(DEB_DESTDIR)/usr/man
-
bindir = @bindir@
CC = @CC@
+STRIP = @STRIP@
INCLUDES = -I../lib
CFLAGS = @CFLAGS@ @CPPFLAGS@ $(INCLUDES) \
-Wall -Wunused -Wstrict-prototypes
../lib/html.o ../lib/signals.o
all: $(BIN)/$(EXEC)
- strip $(BIN)/$(EXEC)
+ $(STRIP) $(BIN)/$(EXEC)
@echo ""
@echo "Make complete"
conf_file = etc/keepalived/keepalived.conf
CC = @CC@
+STRIP = @STRIP@
LDFLAGS = @LIBS@ @LDFLAGS@ -ldl
SUBDIRS = core
$(MAKE) -C $$i || exit 1; done && \
echo "Building $(BIN)/$(EXEC)" && \
$(CC) -o $(BIN)/$(EXEC) `find $(SUBDIRS) ../lib -name '*.[oa]'` $(LDFLAGS)
- strip $(BIN)/$(EXEC)
+ $(STRIP) $(BIN)/$(EXEC)
@echo ""
@echo "Make complete"
*
* Part: Checkers registration.
*
- * Version: $Id: check_api.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_api.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Healthcheckrs child process handling.
*
- * Version: $Id: check_daemon.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_daemon.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Healthcheckers dynamic data structure definition.
*
- * Version: $Id: check_data.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_data.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: WEB CHECK. Common HTTP/SSL checker primitives.
*
- * Version: $Id: check_http.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_http.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Authors: Alexandre Cassen, <acassen@linux-vs.org>
* Jan Holmberg, <jan@artech.net>
* Part: MISC CHECK. Perform a system call to run an extra
* system prog or script.
*
- * Version: $Id: check_misc.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_misc.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Authors: Alexandre Cassen, <acassen@linux-vs.org>
* Eric Jarman, <ehj38230@cmsu2.cmsu.edu>
* data structure representation the conf file representing
* the loadbalanced server pool.
*
- * Version: $Id: check_parser.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_parser.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: SMTP CHECK. Check an SMTP-server.
*
- * Version: $Id: check_smtp.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_smtp.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Authors: Jeremy Rumpf, <jrumpf@heavyload.net>
* Alexandre Cassen, <acassen@linux-vs.org>
* url, compute a MD5 over this result and match it to the
* expected value.
*
- * Version: $Id: check_ssl.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_ssl.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Authors: Alexandre Cassen, <acassen@linux-vs.org>
* Jan Holmberg, <jan@artech.net>
*
* Part: TCP checker.
*
- * Version: $Id: check_tcp.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_tcp.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
* library to add/remove server MASQ rules to the kernel
* firewall framework.
*
- * Version: $Id: ipfwwrapper.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: ipfwwrapper.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
* Part: IPVS Kernel wrapper. Use setsockopt call to add/remove
* server to/from the loadbalanced server pool.
*
- * Version: $Id: ipvswrapper.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: ipvswrapper.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Manipulation functions for IPVS & IPFW wrappers.
*
- * Version: $Id: ipwrapper.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: ipwrapper.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Main program structure.
*
- * Version: $Id: main.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: main.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Dynamic data structure definition.
*
- * Version: $Id: global_data.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: global_data.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
* data structure representation the conf file representing
* the loadbalanced server pool.
*
- * Version: $Id: global_parser.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: global_parser.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
* Part: Layer4 checkers handling. Register worker threads &
* upper layer checkers.
*
- * Version: $Id: layer4.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: layer4.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Main program structure.
*
- * Version: $Id: main.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: main.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: pidfile utility.
*
- * Version: $Id: pidfile.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: pidfile.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
* using the smtp protocol according to the RFC 821. A non blocking
* timeouted connection is used to handle smtp protocol.
*
- * Version: $Id: smtp.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: smtp.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Checkers arguments structures definitions.
*
- * Version: $Id: check_api.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_api.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: check_daemon.c include file.
*
- * Version: $Id: check_daemon.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_daemon.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Healthcheckers dynamic data structure definition.
*
- * Version: $Id: check_data.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_data.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: check_http.c include file.
*
- * Version: $Id: check_http.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_http.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Authors: Alexandre Cassen, <acassen@linux-vs.org>
* Jan Holmberg, <jan@artech.net>
*
* Part: check_misc.c include file.
*
- * Version: $Id: check_misc.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_misc.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
* Eric Jarman, <ehj38230@cmsu2.cmsu.edu>
*
* Part: check_parser.c include file.
*
- * Version: $Id: check_parser.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_parser.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: check_smtp.c include file.
*
- * Version: $Id: check_smtp.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_smtp.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
* Jeremy Rumpf, <jrumpf@heavyload.net>
*
* Part: check_http.c include file.
*
- * Version: $Id: check_http.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_http.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Authors: Alexandre Cassen, <acassen@linux-vs.org>
* Jan Holmberg, <jan@artech.net>
*
* Part: check_tcp.c include file.
*
- * Version: $Id: check_tcp.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: check_tcp.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Configuration include file.
*
- * Version: $Id: config.h.in,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: config.h.in,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Jacob Rief, <jacob.rief@tiscover.com>
*
*
* Part: Daemon process handling.
*
- * Version: $Id: daemon.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: daemon.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Dynamic data structure definition.
*
- * Version: $Id: global_data.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: global_data.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_parser.c include file.
*
- * Version: $Id: global_parser.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: global_parser.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: ipfwwrapper.c include file.
*
- * Version: $Id: ipfwwrapper.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: ipfwwrapper.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: ipvswrapper.c include file.
*
- * Version: $Id: ipvswrapper.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: ipvswrapper.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: ipwrapper.c include file.
*
- * Version: $Id: ipwrapper.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: ipwrapper.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: layer4.c include file.
*
- * Version: $Id: layer4.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: layer4.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Main program include file.
*
- * Version: $Id: main.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: main.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: pidfile.c include file.
*
- * Version: $Id: pidfile.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: pidfile.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: smtp.c include file.
*
- * Version: $Id: smtp.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: smtp.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp.c program include file.
*
- * Version: $Id: vrrp.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_arp.c include file.
*
- * Version: $Id: vrrp_arp.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_arp.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_daemon.c include file.
*
- * Version: $Id: vrrp_daemon.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_daemon.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Dynamic data structure definition.
*
- * Version: $Id: vrrp_data.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_data.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_if.c include file.
*
- * Version: $Id: vrrp_if.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_if.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_index.c include file.
*
- * Version: $Id: vrrp_index.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_index.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_ipaddress.c include file.
*
- * Version: $Id: vrrp_ipaddress.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_ipaddress.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_iproute.c include file.
*
- * Version: $Id: vrrp_iproute.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_iproute.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_ipsecah.c include file.
*
- * Version: $Id: vrrp_ipsecah.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_ipsecah.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_netlink.c include file.
*
- * Version: $Id: vrrp_netlink.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_netlink.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_notify.c include file.
*
- * Version: $Id: vrrp_notify.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_notify.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_parser.c include file.
*
- * Version: $Id: vrrp_parser.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_parser.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_scheduler.c include file.
*
- * Version: $Id: vrrp_scheduler.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_scheduler.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_sync.c include file.
*
- * Version: $Id: vrrp_sync.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_sync.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vrrp_track.c include file.
*
- * Version: $Id: vrrp_track.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_track.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
* master fails, a backup server takes over.
* The original implementation has been made by jerome etienne.
*
- * Version: $Id: vrrp.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: ARP primitives.
*
- * Version: $Id: vrrp_arp.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_arp.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: VRRP child process handling.
*
- * Version: $Id: vrrp_daemon.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_daemon.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Dynamic data structure definition.
*
- * Version: $Id: vrrp_data.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_data.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Interfaces manipulation.
*
- * Version: $Id: vrrp_if.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_if.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: VRRP instance index table.
*
- * Version: $Id: vrrp_index.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_index.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: NETLINK IPv4 address manipulation.
*
- * Version: $Id: vrrp_ipaddress.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_ipaddress.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
/* cmd parsing */
if (!strcmp(str, "dev")) {
new->ifp = if_get_by_ifname(VECTOR_SLOT(strvec, ++i));
+ if (!new->ifp) {
+ syslog(LOG_INFO, "VRRP is trying to assign VIP to unknown %s"
+ " interface !!! go out and fixe your conf !!!",
+ (char *)VECTOR_SLOT(strvec, i));
+ FREE(new);
+ return;
+ }
new->ifindex = IF_INDEX(new->ifp);
} else if (!strcmp(str, "scope")) {
new->scope = netlink_scope_a2n(VECTOR_SLOT(strvec, ++i));
*
* Part: NETLINK IPv4 routes manipulation.
*
- * Version: $Id: vrrp_iproute.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_iproute.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
{
ip_route *new;
uint32_t ipaddr = 0;
+ interface *ifp;
char *str;
int i = 0;
} else if (!strcmp(str, "src")) {
inet_ston(VECTOR_SLOT(strvec, ++i), &new->src);
} else if (!strcmp(str, "dev") || !strcmp(str, "oif")) {
- new->index = IF_INDEX(if_get_by_ifname(VECTOR_SLOT(strvec, ++i)));
+ ifp = if_get_by_ifname(VECTOR_SLOT(strvec, ++i));
+ if (!ifp) {
+ syslog(LOG_INFO, "VRRP is trying to assign VROUTE to unknown "
+ "%s interface !!! go out and fixe your conf !!!",
+ (char *)VECTOR_SLOT(strvec, i));
+ FREE(new);
+ return;
+ }
+ new->index = IF_INDEX(ifp);
} else if (!strcmp(str, "table")) {
new->table = atoi(VECTOR_SLOT(strvec, ++i));
} else if (!strcmp(str, "scope")) {
* authentication data encryption using HMAC MD5 according to
* RFCs 2085 & 2104.
*
- * Version: $Id: vrrp_ipsecah.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_ipsecah.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: NETLINK kernel command channel.
*
- * Version: $Id: vrrp_netlink.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_netlink.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: VRRP state transition notification scripts handling.
*
- * Version: $Id: vrrp_notify.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_notify.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
* data structure representation the conf file representing
* the loadbalanced server pool.
*
- * Version: $Id: vrrp_parser.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_parser.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Sheduling framework for vrrp code.
*
- * Version: $Id: vrrp_scheduler.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_scheduler.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: VRRP synchronization framework.
*
- * Version: $Id: vrrp_sync.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_sync.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Interface tracking framework.
*
- * Version: $Id: vrrp_track.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vrrp_track.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: HTML stream parser utility functions.
*
- * Version: $Id: html.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: html.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Authors: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: parser.c include file.
*
- * Version: $Id: html.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: html.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Authors: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: List structure manipulation.
*
- * Version: $Id: list.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: list.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: list.c include file.
*
- * Version: $Id: list.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: list.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
* Part: Memory management framework. This framework is used to
* find any memory leak.
*
- * Version: $Id: memory.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: memory.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Authors: Alexandre Cassen, <acassen@linux-vs.org>
* Jan Holmberg, <jan@artech.net>
*
* Part: memory.c include file.
*
- * Version: $Id: memory.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: memory.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Authors: Alexandre Cassen, <acassen@linux-vs.org>
* Jan Holmberg, <jan@artech.net>
*
* Part: Forked system call to launch an extra script.
*
- * Version: $Id: notify.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: notify.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: notify.c include file.
*
- * Version: $Id: notify.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: notify.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
* data structure representation the conf file representing
* the loadbalanced server pool.
*
- * Version: $Id: parser.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: parser.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: cfreader.c include file.
*
- * Version: $Id: parser.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: parser.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
* the thread management routine (thread.c) present in the
* very nice zebra project (http://www.zebra.org).
*
- * Version: $Id: scheduler.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: scheduler.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: scheduler.c include file.
*
- * Version: $Id: scheduler.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: scheduler.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Signals framework.
*
- * Version: $Id: signals.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: signals.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Kevin Lindsay, <kevinl@netnation.com>
* Alexandre Cassen, <acassen@linux-vs.org>
signal_run_callback(void)
{
if (SIGNAL_SIGHUP & signal_mask) {
+ signal_mask &= ~SIGNAL_SIGHUP;
if (signal_SIGHUP_handler)
signal_SIGHUP_handler(SIGHUP);
- signal_mask &= SIGNAL_SIGHUP;
}
if (SIGNAL_SIGINT & signal_mask) {
+ signal_mask &= ~SIGNAL_SIGINT;
if (signal_SIGINT_handler)
signal_SIGINT_handler(SIGINT);
- signal_mask &= SIGNAL_SIGINT;
}
if (SIGNAL_SIGTERM & signal_mask) {
+ signal_mask &= ~SIGNAL_SIGTERM;
if (signal_SIGTERM_handler)
signal_SIGTERM_handler(SIGTERM);
- signal_mask &= SIGNAL_SIGTERM;
}
if (SIGNAL_SIGCHLD & signal_mask) {
+ signal_mask &= ~SIGNAL_SIGCHLD;
if (signal_SIGCHLD_handler)
signal_SIGCHLD_handler(SIGCHLD);
- signal_mask &= SIGNAL_SIGCHLD;
}
}
*
* Part: signals.c include file.
*
- * Version: $Id: signals.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: signals.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Kevin Lindsay, <kevinl@netnation.com>
* Alexandre Cassen, <acassen@linux-vs.org>
*
* Part: Timer manipulations.
*
- * Version: $Id: timer.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: timer.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: timer.c include file.
*
- * Version: $Id: timer.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: timer.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: General program utils.
*
- * Version: $Id: utils.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: utils.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: utils.h include file.
*
- * Version: $Id: utils.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: utils.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: Vector structure manipulation.
*
- * Version: $Id: vector.c,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vector.c,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*
*
* Part: vector.c include file.
*
- * Version: $Id: vector.h,v 1.1.10 2005/02/15 01:15:22 acassen Exp $
+ * Version: $Id: vector.h,v 1.1.11 2005/03/01 01:22:13 acassen Exp $
*
* Author: Alexandre Cassen, <acassen@linux-vs.org>
*