--- ipvsadm-1.26.orig/debian/ipvsadm.manpages +++ ipvsadm-1.26/debian/ipvsadm.manpages @@ -0,0 +1,3 @@ +ipvsadm.8 +ipvsadm-save.8 +ipvsadm-restore.8 --- ipvsadm-1.26.orig/debian/ipvsadm.default +++ ipvsadm-1.26/debian/ipvsadm.default @@ -0,0 +1,14 @@ +# ipvsadm + +# if you want to start ipvsadm on boot set this to true +AUTO="false" + +# daemon method (none|master|backup) +DAEMON="none" + +# use interface (eth0,eth1...) +IFACE="eth0" + +# syncid to use +SYNCID="1" + --- ipvsadm-1.26.orig/debian/README.source +++ ipvsadm-1.26/debian/README.source @@ -0,0 +1,2 @@ +We use dpatch for patch handling in the ipvsadm package. Please see +/usr/share/doc/dpatch/README.source.gz (if you have installed dpatch) for documentation about dpatch. --- ipvsadm-1.26.orig/debian/rules +++ ipvsadm-1.26/debian/rules @@ -1,64 +1,14 @@ #!/usr/bin/make -f -# Sample debian/rules that uses debhelper. -# GNU copyright 1997 to 1999 by Joey Hess. -export DH_COMPAT=2 +CFLAGS += -Wall -Wunused -Wstrict-prototypes -g -fPIC -DLIBIPVS_USE_NL -pwd:=$(shell pwd) -cfg:= +include /usr/share/dpatch/dpatch.make -build: build-stamp -build-stamp: - dh_testdir +%: + dh $@ --with dpatch - #test -x autogen.sh && ./autogen.sh $(cfg) || ./configure $(cfg) - - $(MAKE) +override_dh_auto_install:: - touch build-stamp - -clean: - dh_testdir - dh_testroot - rm -f build-stamp - - -$(MAKE) distclean - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - BUILD_ROOT=$(pwd)/debian/tmp make install - - [ ! -d $(pwd)/debian/tmp/etc/init.d/ ] && \ - mkdir -p $(pwd)/debian/tmp/etc/init.d/ - install -c -m 755 ipvsadm.sh $(pwd)/debian/tmp/etc/init.d/ipvsadm - - dh_movefiles --source=debian/tmp - -binary-indep: build install - -binary-arch: build install - dh_testversion 2.0 - dh_testdir - dh_testroot - dh_installdocs - dh_installchangelogs - dh_link - dh_strip - dh_compress - dh_fixperms - dh_suidregister - dh_makeshlibs - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install +override_dh_auto_clean: + dh_auto_clean + -rm debian/files --- ipvsadm-1.26.orig/debian/ipvsadm.install +++ ipvsadm-1.26/debian/ipvsadm.install @@ -0,0 +1,4 @@ +debian/ipvsadm.rules etc/ +ipvsadm sbin/ +ipvsadm-restore sbin/ +ipvsadm-save sbin/ --- ipvsadm-1.26.orig/debian/copyright +++ ipvsadm-1.26/debian/copyright @@ -1,51 +1,27 @@ --------------------------------------------------------------------------- +This package was debianized by Alexander Wirt +based on work by KiHyeon Seo . -ipvsadm - Version 1.14 - 11th January 2001 +It was downloaded from http://www.linux-vs.org/software/index.html -This is free software. See below for details. +Upstream Author: Wensong Zhang +Copyright (c) 1998 Wensong Zhang -ipvsadm is a utility to administer the IP virtual server services -offered by the Linux kernel with IP virtual server support. +Copyright: + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + MA 02110-1301 USA. -This version of ipvsadm requires IPVS module v0.0.5 for kernel 2.4 or -later. Check out the Linux Virtual Server Project home page on the -World Wide Web: - http://www.LinuxVirtualServer.org/ - or - http://www.Linux-VS.org/ -for the most recent information and original sources about ipvsadm. - -To make, make sure your Linux kernel is already patched with IPVS and -"make menuconfig" or "make xconfig" to setup the right compiling options, -see the README of the virtual server patch for detail, then simply type - make -in the source directory. - -Install to your liking. We suggest the following pathnames: - /sbin/ipvsadm - /usr/man/man8/ipvsadm.8 -This will be done automatically when calling - make install -in the source directory. - - -Wensong Zhang - - --------------------------------------------------------------------------- - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - --------------------------------------------------------------------- +On Debian GNU/Linux systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. --- ipvsadm-1.26.orig/debian/ipvsadm.init +++ ipvsadm-1.26/debian/ipvsadm.init @@ -0,0 +1,157 @@ +#!/bin/sh + +# ipvsadm Manageѕ ipvsadm daemon +# +### BEGIN INIT INFO +# Provides: ipvsadm +# Required-Start: $network +# Required-Stop: $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Description: Starts ipvsadm daemon +# short-description: ipvsadm daemon +### END INIT INFO + +#includes lsb functions +. /lib/lsb/init-functions + +IPVSADM="/sbin/ipvsadm" +IPVSADM_RULES="/etc/ipvsadm.rules" +IPVSADM_CONFIG="/etc/default/ipvsadm" +SYNCID="1" + +AUTO="false" +DAEMON="none" # none|master|backup|both +IFACE="eth0" +FAILURE=0 + +start () { + case $DAEMON in + master|backup) + log_daemon_msg "Starting IPVS Connection Synchronization Daemon" "$DAEMON" + $IPVSADM --start-daemon $DAEMON --mcast-interface $IFACE || log_end_msg 1 + log_end_msg 0 + ;; + both) + log_daemon_msg "Starting IPVS Connection Synchronization Daemon" "master" + $IPVSADM --start-daemon master --mcast-interface $IFACE || FAILURE=1 + log_progress_msg "backup" + $IPVSADM --start-daemon backup --mcast-interface $IFACE || FAILURE=1 + if [ "$FAILURE" -eq 1 ] + then + log_end_msg 1 + else + log_end_msg 0 + fi + ;; + *) + log_action_msg "ipvsadm is not configured to run. Please edit /etc/default/ipvsadm" + ;; + esac +} + +stop () { + case $DAEMON in + master|backup) + log_daemon_msg "Stopping IPVS Connection Synchronization Daemon" "$DAEMON" + $IPVSADM --stop-daemon $DAEMON || log_end_msg 1 + log_end_msg 0 + ;; + both) + log_daemon_msg "Stopping IPVS Connection Synchronization Daemon" "master" + $IPVSADM --stop-daemon master || FAILURE=1 + log_progress_msg "backup" + $IPVSADM --stop-daemon backup || FAILURE=1 + if [ "$FAILURE" -eq 1 ] + then + log_end_msg 1 + else + log_end_msg 0 + fi + ;; + *) + log_action_msg "ipvsadm is not configured to run. Please run dpkg-reconfigure ipvsadm" + ;; + esac +} + +flush () { + log_action_begin_msg "Clearing the current IPVS table" + ipvsadm -C || log_action_end_msg 1 + log_action_end_msg 0 +} + +load () { + log_action_begin_msg "Loading IPVS configuration" + grep -v "^#" $IPVSADM_RULES | $IPVSADM -R || log_action_end_msg 1 + log_action_end_msg 0 +} + +save () { + log_action_begin_msg "Saving IPVS configuration" + echo "# ipvsadm.rules" > $IPVSADM_RULES + $IPVSADM -S -n >> $IPVSADM_RULES + log_action_end_msg 0 +} + +if [ -f $IPVSADM_CONFIG ]; then + . $IPVSADM_CONFIG +fi + +if [ ! -x $IPVSADM ]; then + exit 0 +fi + +if [ ! -f $IPVSADM_RULES ]; then + echo "# ipvsadm.rules" > $IPVSADM_RULES +fi + +case "$1" in + start) + if [ "$AUTO" = "true" ]; then + flush + load + fi + start + ;; + stop) + stop + if [ "$AUTO" = "true" ]; then + flush + fi + ;; + restart) + stop + if [ "$AUTO" = "true" ]; then + flush + load + fi + start + ;; + reload|force-reload) + if [ "$AUTO" = "true" ]; then + flush + load + fi + ;; + status) + ipvsadm -L -n + ;; + rate) + ipvsadm -L --rate -n + ;; + load) + flush + load + ;; + save) + save + ;; + *) + echo "Usage: $0 + {start|stop|restart|status|rate|load|save|reload|force-reload}" + exit 1 + ;; +esac + +exit 0 --- ipvsadm-1.26.orig/debian/ipvsadm.docs +++ ipvsadm-1.26/debian/ipvsadm.docs @@ -0,0 +1,2 @@ +README +SCHEDULERS --- ipvsadm-1.26.orig/debian/watch +++ ipvsadm-1.26/debian/watch @@ -0,0 +1,3 @@ +version=2 +http://www.linux-vs.org/software/kernel-2.6/ipvsadm-(.*)\.tar\.gz + --- ipvsadm-1.26.orig/debian/ipvsadm.rules +++ ipvsadm-1.26/debian/ipvsadm.rules @@ -0,0 +1 @@ +# emtpy rules file for ipvsadm --- ipvsadm-1.26.orig/debian/docs +++ ipvsadm-1.26/debian/docs @@ -0,0 +1 @@ +README --- ipvsadm-1.26.orig/debian/ipvsadm.postrm +++ ipvsadm-1.26/debian/ipvsadm.postrm @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +if [ "$1" = "purge" ]; then + rm -f /etc/ipvsadm.rules +fi + +#DEBHELPER# --- ipvsadm-1.26.orig/debian/ipvsadm.templates +++ ipvsadm-1.26/debian/ipvsadm.templates @@ -0,0 +1,42 @@ +# These templates have been reviewed by the debian-l10n-english +# team +# +# If modifications/additions/rewording are needed, please ask +# debian-l10n-english@lists.debian.org for advice. +# +# Even minor modifications require translation updates and such +# changes should be coordinated with translators and reviewers. + +Template: ipvsadm/daemon_method +Type: select +__Choices: none, master, backup, both +Default: none +_Description: Daemon method: + ipvsadm can activate the IPVS synchronization daemon. "master" starts this + daemon in master mode, "backup" starts it in backup mode, and "both" uses + master and backup modes at the same time. "none" disables the daemon. + . + See the ipvsadm(8) man page for more details. + +Template: ipvsadm/kernel_does_not_support_ipvs +Type: error +_Description: Kernel does not support IPVS + ipvsadm is useless with this kernel, since it has been built with CONFIG_IP_VS=n. + Please use a kernel compiled with IPVS support. + +Template: ipvsadm/auto_load_rules +Type: boolean +Default: false +_Description: Do you want to automatically load IPVS rules on boot? + If you choose this option, IPVS rules will be loaded from + /etc/ipvsadm.rules automatically on boot. + +Template: ipvsadm/daemon_multicast_interface +Type: string +Default: eth0 +#flag:translate!:3 +_Description: Multicast interface for ipvsadm: + Please specify the multicast interface to be used by the synchronization + daemon. + . + ${interface_error} --- ipvsadm-1.26.orig/debian/control +++ ipvsadm-1.26/debian/control @@ -1,12 +1,22 @@ Source: ipvsadm Section: net -Priority: optional -Maintainer: Horms -Standards-Version: 3.1.1 +Priority: extra +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Alexander Wirt +Standards-Version: 3.9.2 +Build-Depends: debhelper (>= 7.0.50~), libpopt-dev, po-debconf, libnl-3-dev, libnl-genl-3-dev, pkg-config, dpatch (>= 2.0.32~) Package: ipvsadm Architecture: any -Depends: ${shlibs:Depends} -Description: - ipvsadm is a utility to administer the IP virtual server services - offered by the Linux kernel augmented with the virtual server patch. +Depends: ${shlibs:Depends}, ${misc:Depends}, lsb-base (>= 3.0-6) +Conflicts: lvs +Replaces: lvs +Suggests: heartbeat, keepalived, ldirectord +Description: Linux Virtual Server support programs + The Linux Virtual Server (lvs or IPVS) is a highly scalable and highly + available server built on a cluster of real servers. The architecture of the + cluster is transparent to end users, who see only a single virtual server. + . + This package provides some support programs necessary to implement a virtual + server under Linux. With the addition of the mon and heartbeat packages it is + possible to implement a complete high-availability solution for Linux. --- ipvsadm-1.26.orig/debian/NEWS +++ ipvsadm-1.26/debian/NEWS @@ -0,0 +1,20 @@ +ipvsadm (1:1.26-1) unstable; urgency=low + + This version removes automatic configuration of ipvsadm via debconf to + simplify the package. In most cases the approach is to naive to be useful. + + If you want to run ipvsadm on boot, or change bootoption just modify + /etc/default/ipvsadm. + + -- Alexander Wirt Wed, 22 Feb 2012 21:23:03 +0100 + +ipvsadm (1:1.24-1) unstable; urgency=low + + - This update removes support for kernels 2.2 and 2.4 as they aren't supported + on Debian anymore. + - Since autosaving of rules is harmfull if you remove nodes on the fly at + the commandline (see #275986 and #337207) I decided to disable this + feature. If you want your rules to be saved please execute + "/etc/init.d/ipvsadm save". + + -- Alexander Wirt Sun, 30 Mar 2008 17:59:33 +0200 --- ipvsadm-1.26.orig/debian/compat +++ ipvsadm-1.26/debian/compat @@ -0,0 +1 @@ +5 --- ipvsadm-1.26.orig/debian/changelog +++ ipvsadm-1.26/debian/changelog @@ -1,41 +1,344 @@ -ipvsadm (1.25-nl-5) hardy; urgency=low +ipvsadm (1:1.26-2ubuntu1) raring; urgency=low - * use strtoul to convert ip addresses from hex - from Simon Horman + * Merge from Debian unstable (LP: #1077874). Remaining changes: + - debian/control: + + Add Build-Depends on pkg-config. + + Update Build-Depends libnl3-dev -> libnl-3-dev, libnl-genl-3-dev. + - debian/patches/99_ubuntu_libnl-3-linking.dpatch: Fix linking (and + cflags) to properly build against libnl3 now that the modules are split. - -- Vince Busam Wed, 20 Aug 2008 10:34:58 -0700 + -- Logan Rosen Mon, 25 Mar 2013 15:40:20 -0400 -ipvsadm (1.25-nl-4) unstable; urgency=low +ipvsadm (1:1.26-2) unstable; urgency=low - * Fixed sorting of IPv6 addresses + [ Christian Perrier ] + * Debconf templates and debian/control reviewed by the debian-l10n- + english team as part of the Smith review project. Closes: #685577 + * [Debconf translation updates] + * Russian (Yuri Kozlov). Closes: #687432 + * Polish (Michał Kułach). Closes: #687551 + * Italian (Beatrice Torracca). Closes: #687655 + * Portuguese (Rui Branco). Closes: #687706 + * Czech (Michal Simunek). Closes: #687741 + * Danish (Joe Hansen). Closes: #656652 + * Danish (Joe Hansen). Closes: #687989 + * German (Chris Leick). Closes: #688032 + * Swedish (Martin Bagge / brother). Closes: #688432 + * French (Christian Perrier). Closes: #688457 + * Spanish; (Javier Fernández-Sanguino). Closes: #688926 - -- Vince Busam Fri, 15 Aug 2008 13:15:06 -0700 + -- Alexander Wirt Sat, 16 Mar 2013 07:45:29 +0100 -ipvsadm (1.25-nl-2) hardy; urgency=low +ipvsadm (1:1.26-1ubuntu1) quantal; urgency=low - * Code cleanups + * Merge from Debian testing (LP: #1007160). Remaining changes: + - Build-depend on pkg-config. + - Port to libnl3. + + debian/control: update Build-Depends libnl3-dev -> libnl-3-dev, + libnl-genl-3-dev. + * debian/patches/99_ubuntu_libnl-3-linking.dpatch: Convert quilt patch + 'libnl-3-linking.patch' to dpatch. - -- Vince Busam Wed, 23 Jul 2008 13:17:46 -0700 + -- Andres Rodriguez Thu, 31 May 2012 18:05:42 -0400 -ipvsadm (1.25-nl-1) hardy; urgency=low +ipvsadm (1:1.26-1) unstable; urgency=low - * Add support for experimental netlink interface + * [084f2b6] Imported Upstream version 1.26 + - Fix display of active connections (Closes: #574587) + * [3a0f1e2] Use source format 1.0 + * [d5ca6cd] Remove debconf configuration (Closes: #656652) + * [c9ac6fd] Update NEWS entry + * [4759bff] Update default file with new options + * [ee63b63] Add support for specifying syncid in /etc/default/ipvsadm + (Closes: #649106) + * [6a47317] Cleanup upstream provided debian/files + * [028471c] Update disabled message of initscript + * fix runlevels of initscript (Closes: #582821) + * [5481cda] Add ipvs and IPVS to description (Closes: #572315) + * [8b71ffc] Apply patch for startup options of ipvsadm (Closes: #504001) - -- Vince Busam Tue, 22 Jul 2008 15:50:38 -0700 + -- Alexander Wirt Wed, 22 Feb 2012 22:03:47 +0100 -ipvsadm (1.25-ipv6-1) nstable; urgency=low +ipvsadm (1:1.25.clean-1ubuntu5) precise; urgency=low - * Add IPv6 support + * debian/control: update Build-Depends: libnl3-dev -> libnl-3-dev, + libnl-genl-3-dev. + * debian/patches/libnl-3-linking.patch: fix linking (and cflags) to properly + build against libnl3 now that the modules are split. - -- "Vince Busam" Wed, 21 May 2008 15:12:42 +0200 + -- Mathieu Trudel-Lapierre Wed, 21 Dec 2011 15:26:24 -0500 -ipvsadm (1.13-1) nstable; urgency=low +ipvsadm (1:1.25.clean-1ubuntu4) precise; urgency=low - * A release + * Makefile: test for poptGetContext by piping some test C code using + poptGetContext to $(CC) -include popt.h rather than searching for + libpopt.a in a set of hardcoded directories as that didn't work with + multiarch anymore and caused the package to FTBFS. + + -- Loïc Minier Thu, 01 Dec 2011 17:21:44 +0100 + +ipvsadm (1:1.25.clean-1ubuntu3) oneiric; urgency=low + + * Build-depend on pkg-config. + + -- Colin Watson Tue, 09 Aug 2011 14:16:09 +0100 + +ipvsadm (1:1.25.clean-1ubuntu2) oneiric; urgency=low + + * Port to libnl3. + + -- Colin Watson Mon, 08 Aug 2011 17:23:22 +0100 + +ipvsadm (1:1.25.clean-1ubuntu1) natty; urgency=low + + * libipvs/libipvs.c: upstream patch (r64) to fix incorrect activeconns, + (Debian bug 574587), (LP: #663564) + + -- Clint Byrum Tue, 16 Nov 2010 15:25:39 -0800 + +ipvsadm (1:1.25.clean-1) unstable; urgency=low + + * New upstream version (Closes: #540423) + - Build depend on libnl-dev + * Fix pending l10n issues. Debconf translations: + * Vietnamese (Clytie Siddall). Closes: #513582 + * Spanish (Francisco Javier Cuadrado). Closes: #529727 + * Arabic (Ossama M. Khayat). Closes: #552384 + * Japanese (Hideki Yamane (Debian-JP)). Closes: #553028 + + -- Alexander Wirt Tue, 10 Nov 2009 07:35:04 +0100 + +ipvsadm (1:1.25) unstable; urgency=low + + * New upstream version (Closes: #540423) + * Fix pending l10n issues. Debconf translations: + * Vietnamese (Clytie Siddall). Closes: #513582 + * Spanish (Francisco Javier Cuadrado). Closes: #529727 + * Arabic (Ossama M. Khayat). Closes: #552384 + * Japanese (Hideki Yamane (Debian-JP)). Closes: #553028 + + -- Alexander Wirt Sun, 08 Nov 2009 14:16:20 +0100 + +ipvsadm (1:1.24-2.1) unstable; urgency=low + + * Non-maintainer upload. + * Fix pending l10n issues. Debconf translations: + - Swedish. Closes: #491945 + + -- Christian Perrier Tue, 21 Oct 2008 05:47:28 +0200 + +ipvsadm (1:1.24-2) unstable; urgency=low + + * Update german debconf translation (Closes: #485451) + + -- Alexander Wirt Tue, 10 Jun 2008 08:47:02 +0200 + +ipvsadm (1:1.24-1) unstable; urgency=low + + * New maintainer + * Remove support for 2.2 and 2.4 kernels + * Move from cdbs to debhelper + * Make initscript LSB conform (Closes: #466256) + * Bump standards version + * Don't mark default as translateable + * Don't limit names of interfaces. This is useless in days where interfaces + can be renamed and so on. (Closes: #298375) + * Remove bashism in postinst (Closes: #411253) + * Fix /etc/init.d/ipvsadm stop (Closes: #296668) + * Don't use a shellwrapper anymore for ipvsadm (Closes: #402207) + * Disable autosaving of rules (see NEWS.Debian) (Closes: #337207, #275986) + * Use consistent versioning (Closes: #402728) + * + * Allow daemon to be in master and backup mode simultaneously + (Closes: #401013) + * After translation round update translations. + (Closes: #473717, #473723, #473789, #473887, #474359, #474376, #474437) + alse Closes: #475307, #476791, #477820, #480206 + + -- Alexander Wirt Sun, 30 Mar 2008 15:15:17 +0200 + +ipvsadm (1.24+1.21-1.4) unstable; urgency=high + + * Non-maintainer upload. + + [ Pierre Habouzit ] + * Move ipvs detection into the postinst, so that we can rely on the ipvsadm + tool, guard that call to avoid any problems. (Closes: #408245). + + [ Mohammed Adnène Trojette ] + * High urgency for RC bug fixing. + * Update FSF address in debian/copyright. + + -- Mohammed Adnène Trojette Tue, 13 Feb 2007 19:12:11 +0100 + +ipvsadm (1.24+1.21-1.3) unstable; urgency=low + + * Non-maintainer upload + - Run ipvsadm before checking for /proc/net/ip_vs_conn + to avoid falsely reporting that ipvs is unavailable when + it is built as a module + (closes: 329482) + + -- Simon Horman Thu, 30 Nov 2006 15:45:51 +0900 + +ipvsadm (1.24+1.21-1.2) unstable; urgency=low + + * Non-maintainer upload to fix pending l10n-related issues + * Depend on debconf | debconf-2.0 to allow the cdebconf transition + Closes: #331864 + * Updated debconf tranlations: + - Vietnamese. Closes: #312032 + - Updated Brazilian Portuguese. Closes: #295103 + - Added Dutch. Closes: #295665 + - Added Czech. Closes: #316998, #317002 + - Added Swedish. Closes: #336737 + - Added Polish. Sent during the NMU campaign. + - Added Italian. Sent during the NMU campaign. + - Added Russian. Sent during the NMU campaign. + - Added Norwegian Bokmål. Sent during the NMU campaign. + Closes: #396103 + + -- Christian Perrier Tue, 17 Oct 2006 09:04:57 +0200 + +ipvsadm (1.24+1.21-1.1) unstable; urgency=low + + * Non-maintainer upload as requested by Joerg Wendland + * Remove bogus check for ip_vs proc file, which + typically won't exist on systems with a modular kernel. + (closes: Bug#329482) + + -- Simon Horman Sat, 24 Sep 2005 14:45:53 +0900 + +ipvsadm (1.24+1.21-1) unstable; urgency=low + + * Pack upstream version 1.24 (for 2.6 kernels), 1.21 (for 2.4 kernels) + and 1.21-11 (for kernels >= 2.4.29) together and provide a wrapper + script that chooses the correct binary to run depending on the kernel + version. + (closes: Bug#270774) + * Include new french debconf translation. + (closes: Bug#269105) + + -- Joerg Wendland Tue, 8 Feb 2005 11:09:24 +0100 + +ipvsadm (1.24-1) unstable; urgency=low + + * New upstream version. + (closes: Bug#240195) + * New maintainer. Thanks to nefsall maintaining this package + until now. This is a package hijacking. + (closes: Bug#262221) + * debian/rules: + Change build system to CDBS. + * debian/watch: + Added. + * Rework debconf templates and use po-debconf. + (closes: Bug#258719) + * debian/control: + - Remove Suggests: kernel-patch-2.4-ipvs since IPVS is included + in current 2.4 and 2.6 kernels. + - Add Suggests: keepalived for this is an alternative to heartbeat + and features IPVS support. + - Add Build-Depends: po-debconf. + - Bump Standards-Version to 3.6.1.0, no changes required. + * po/de.po: + Add German debconf templates. + * Use newer version of ip_vs.h from 2.6 kernels. + + -- Joerg Wendland Wed, 25 Aug 2004 03:30:24 +0200 + +ipvsadm (1.21release6-1) unstable; urgency=low + + * New Upstream Release. + * Sync header file (ip_vs.h) to IPVS version 1.0.9 (Kernel 2.4.20). + * Added two scheduling algorithms (SED and NQ) to SCHEDULERS. + + -- KiHyeon Seo Fri, 13 Jun 2003 13:09:50 +0900 + +ipvsadm (1.21release4-1) unstable; urgency=low + + * New Upstream Release. + * Sync header file (ip_vs.h) to IPVS version 1.0.8 (Kernel 2.4.20). + + -- KiHyeon Seo Mon, 21 Apr 2003 13:10:20 +0900 + +ipvsadm (1.21release3-1) unstable; urgency=low + + * New Upstream Release. + * Sync header file (ip_vs.h) to IPVS version 1.0.7 (Kernel 2.4.19). + * debian/ipvsadm.templates: Updated. (Thanks, ??? , + closes: #163353) + + -- KiHyeon Seo Thu, 12 Dec 2002 03:11:35 +0900 + +ipvsadm (1.21release2-1) unstable; urgency=low + + * New Upstream Release. + * Sync header file (ip_vs.h) to IPVS version 1.0.5 (Kernel 2.4.19). + + -- KiHyeon Seo Sat, 17 Aug 2002 13:27:49 +0900 + +ipvsadm (1.21release1-1) unstable; urgency=low + + * New Upstream Release. + * Sync header file (ip_vs.h) to IPVS version 1.0.4 (Kernel 2.4.18). + + -- KiHyeon Seo Wed, 24 Jul 2002 01:35:59 +0900 + +ipvsadm (1.20release6-2) unstable; urgency=low + + * debian/ipvsadm.templates: Added Brazilian Portuguese (pt_BR) + translation. (Andre Luis Lopes ) + (closes: #141534) + * Sync header file (ip_vs.h) to IPVS version 1.0.2 (Kernel 2.4.18). + + -- KiHyeon Seo Tue, 9 Apr 2002 12:04:45 +0900 + +ipvsadm (1.20release6-1) unstable; urgency=low + + * New Upstream Release. + * Sync header file (ip_vs.h) to IPVS version 1.0.1 (Kernel 2.4.18). + + -- KiHyeon Seo Thu, 28 Mar 2002 03:14:00 +0900 + +ipvsadm (1.20release5-2) unstable; urgency=low + + * Fixed debian/control, debian/ipvsadm.templates. (Because, Merged + kernel-patch-2.4.*-ipvs to kernel-patch-2.4-ipvs.) + * Sync header file (ip_vs.h) to IPVS version 1.0.0 (Kernel 2.4.18). + + -- KiHyeon Seo Mon, 18 Mar 2002 01:20:13 +0900 + +ipvsadm (1.20release5-1) unstable; urgency=low + + * New Upstream Release. (closes: #71792) + * New Maintainer. (closes: #125779) + * Renamed to ipvsadm. + * Moved patch file to kernel-patch-2.4.x-ipvs. + * Added init script. + * Used debconf. + * Sync header file (ip_vs.h) to IPVS version 0.9.9 (Kernel 2.4.17). + + -- KiHyeon Seo Mon, 4 Mar 2002 03:23:34 +0900 + +lvs (0.9.7-2) unstable; urgency=low + + * Package is orphaned (see bug #114113). Setting maintainer to QA. + * Suggest kernel-source virtual package rather than depending on specific + (now outdated) versions (closes: #71791, #102791). + * debian/copyright: Fix typos and correct upstream URL. + * debian/control: Minor wording improvements to package description. + * Policy version 3.5.6: add build dependencies and implement + DEB_BUILD_OPTIONS. + + -- Colin Watson Mon, 1 Oct 2001 19:43:45 +0100 + +lvs (0.9.7-1) unstable; urgency=low + + * Initial Release. + * Mangled .orig.tar.gz to include patches for both 2.2.13 and 2.2.14 + and gui for ipvsadm (lvs-gui.) + + -- Federico Di Gregorio Wed, 26 Jan 2000 16:12:55 +0100 - -- Horms Thu, 14 Dec 2000 17:00:00 -0800 -Local variables: -mode: debian-changelog -End: -eoch --- ipvsadm-1.26.orig/debian/patches/99_ubuntu_libnl-3-linking.dpatch +++ ipvsadm-1.26/debian/patches/99_ubuntu_libnl-3-linking.dpatch @@ -0,0 +1,76 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 99_ubuntu_libnl-3-linking.dpatch by Andres Rodriguez +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' ipvsadm-1.26~/Makefile ipvsadm-1.26/Makefile +--- ipvsadm-1.26~/Makefile 2012-05-31 18:22:39.000000000 -0400 ++++ ipvsadm-1.26/Makefile 2012-05-31 18:22:39.000000000 -0400 +@@ -82,7 +82,8 @@ + OBJS = ipvsadm.o config_stream.o dynamic_array.o + LIBS = $(POPT_LIB) + ifneq (0,$(HAVE_NL)) +-LIBS += -lnl ++INCLUDE += $(shell pkg-config --cflags libnl-3.0 libnl-genl-3.0) ++LIBS += $(shell pkg-config --libs libnl-3.0 libnl-genl-3.0) + endif + DEFINES = -DVERSION=\"$(VERSION)\" -DSCHEDULERS=\"$(SCHEDULERS)\" \ + -DPE_LIST=\"$(PE_LIST)\" $(POPT_DEFINE) +diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' ipvsadm-1.26~/libipvs/Makefile ipvsadm-1.26/libipvs/Makefile +--- ipvsadm-1.26~/libipvs/Makefile 2008-09-21 06:02:03.000000000 -0400 ++++ ipvsadm-1.26/libipvs/Makefile 2012-05-31 18:22:39.000000000 -0400 +@@ -4,6 +4,7 @@ + CFLAGS = -Wall -Wunused -Wstrict-prototypes -g -fPIC + ifneq (0,$(HAVE_NL)) + CFLAGS += -DLIBIPVS_USE_NL ++INCLUDE += $(shell pkg-config --cflags libnl-3.0 libnl-genl-3.0) + endif + + INCLUDE += $(shell if [ -f ../../ip_vs.h ]; then \ +diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' ipvsadm-1.26~/libipvs/libipvs.c ipvsadm-1.26/libipvs/libipvs.c +--- ipvsadm-1.26~/libipvs/libipvs.c 2011-02-06 21:38:57.000000000 -0500 ++++ ipvsadm-1.26/libipvs/libipvs.c 2012-05-31 18:24:11.176032999 -0400 +@@ -32,7 +32,7 @@ + struct ip_vs_getinfo ipvs_info; + + #ifdef LIBIPVS_USE_NL +-static struct nl_handle *sock = NULL; ++static struct nl_sock *sock = NULL; + static int family, try_nl = 1; + #endif + +@@ -73,7 +73,7 @@ + { + int err = EINVAL; + +- sock = nl_handle_alloc(); ++ sock = nl_socket_alloc(); + if (!sock) { + nlmsg_free(msg); + return -1; +@@ -88,7 +88,7 @@ + + /* To test connections and set the family */ + if (msg == NULL) { +- nl_handle_destroy(sock); ++ nl_socket_free(sock); + sock = NULL; + return 0; + } +@@ -104,12 +104,12 @@ + + nlmsg_free(msg); + +- nl_handle_destroy(sock); ++ nl_socket_free(sock); + + return 0; + + fail_genl: +- nl_handle_destroy(sock); ++ nl_socket_free(sock); + sock = NULL; + nlmsg_free(msg); + errno = err; --- ipvsadm-1.26.orig/debian/patches/01_fix_popt_multiarch.dpatch +++ ipvsadm-1.26/debian/patches/01_fix_popt_multiarch.dpatch @@ -0,0 +1,20 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 01_fix_popt_multiarch.dpatch by Alexander Wirt +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Also lookup popt in the multiarch directorys + +@DPATCH@ +diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' pkg-ipvsadm~/Makefile pkg-ipvsadm/Makefile +--- pkg-ipvsadm~/Makefile 2011-11-10 08:49:00.000000000 +0100 ++++ pkg-ipvsadm/Makefile 2012-01-23 08:48:20.776987515 +0100 +@@ -63,7 +63,8 @@ + fi ) + + ifeq (,$(FORCE_GETOPT)) +-LIB_SEARCH = /lib64 /usr/lib64 /usr/local/lib64 /lib /usr/lib /usr/local/lib ++DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) ++LIB_SEARCH = /lib64 /usr/lib64 /usr/local/lib64 /lib /usr/lib /usr/local/lib /usr/lib/$(DEB_HOST_MULTIARCH) + POPT_LIB = $(shell for i in $(LIB_SEARCH); do \ + if [ -f $$i/libpopt.a ]; then \ + if nm $$i/libpopt.a | fgrep -q poptGetContext; then \ --- ipvsadm-1.26.orig/debian/patches/02_allow_syncid_with_daemon.dpatch +++ ipvsadm-1.26/debian/patches/02_allow_syncid_with_daemon.dpatch @@ -0,0 +1,19 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## 02_allow_syncid_with_daemon.dpatch by Alexander Wirt +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +@DPATCH@ +diff -urNad '--exclude=CVS' '--exclude=.svn' '--exclude=.git' '--exclude=.arch' '--exclude=.hg' '--exclude=_darcs' '--exclude=.bzr' pkg-ipvsadm~/ipvsadm.c pkg-ipvsadm/ipvsadm.c +--- pkg-ipvsadm~/ipvsadm.c 2011-11-10 08:49:00.000000000 +0100 ++++ pkg-ipvsadm/ipvsadm.c 2012-02-22 21:52:21.484434869 +0100 +@@ -230,7 +230,7 @@ + /*DELSRV*/ {'x', 'x', '+', 'x', 'x', 'x', '+', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'}, + /*EDITSRV*/ {'x', 'x', '+', 'x', 'x', 'x', '+', ' ', ' ', ' ', ' ', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'}, + /*TIMEOUT*/ {'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'}, +-/*STARTD*/ {'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', ' ', 'x', 'x', 'x', 'x', 'x', 'x', 'x', ' ', 'x', 'x'}, ++/*STARTD*/ {'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', ' ', 'x', 'x', 'x', 'x', 'x', 'x', 'x', ' ', ' ', 'x'}, + /*STOPD*/ {'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', ' ', 'x', 'x'}, + /*RESTORE*/ {'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'}, + /*SAVE*/ {' ', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'}, --- ipvsadm-1.26.orig/debian/patches/00list +++ ipvsadm-1.26/debian/patches/00list @@ -0,0 +1,3 @@ +01_fix_popt_multiarch +02_allow_syncid_with_daemon +99_ubuntu_libnl-3-linking --- ipvsadm-1.26.orig/debian/po/de.po +++ ipvsadm-1.26/debian/po/de.po @@ -0,0 +1,115 @@ +# Translation of the ipvsadm debconf template to German. +# Copyright (C) 1998 Wensong Zhang. +# This file is distributed under the same license as theipvsadm package. +# Translated by Chris Leick 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: ipvsadm 1:1.26-2\n" +"Report-Msgid-Bugs-To: ipvsadm@packages.debian.org\n" +"POT-Creation-Date: 2012-09-10 07:29+0200\n" +"PO-Revision-Date: 2012-09-10 23:15+0200\n" +"Last-Translator: Chris Leick \n" +"Language-Team: de \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "none" +msgstr "aus" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "master" +msgstr "Master" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "backup" +msgstr "Datensicherung" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "both" +msgstr "beides" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "Daemon method:" +msgstr "Daemon-Methode:" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "" +"ipvsadm can activate the IPVS synchronization daemon. \"master\" starts this " +"daemon in master mode, \"backup\" starts it in backup mode, and \"both\" " +"uses master and backup modes at the same time. \"none\" disables the daemon." +msgstr "" +"Ipvsadm kann den IPVS-Synchronisierungs-Daemon aktivieren. »Master« startet " +"diesen Daemon im Master-Modus. »Datensicherung« startet ihn im " +"Datensicherungsmodus und »beides« verwendet die Modi »Master« und " +"»Datensicherung« zur gleichen Zeit. »aus« deaktiviert den Daemon." + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "See the ipvsadm(8) man page for more details." +msgstr "Weitere Einzelheiten finden Sie in der Handbuchseite ipvsadm(8)." + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "Kernel does not support IPVS" +msgstr "Kernel unterstützt kein IPVS" + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "" +"ipvsadm is useless with this kernel, since it has been built with " +"CONFIG_IP_VS=n. Please use a kernel compiled with IPVS support." +msgstr "" +"Ipvsadm ist mit diesem Kernel nutzlos, da er mit »CONFIG_IP_VS=n« gebaut " +"wurde. Bitte verwenden Sie einen Kernel, der mit IPVS-Unterstützung " +"kompiliert wurde." + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "Do you want to automatically load IPVS rules on boot?" +msgstr "Möchten Sie die IPVS-Regeln automatisch beim Systemstart laden?" + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "" +"If you choose this option, IPVS rules will be loaded from /etc/ipvsadm.rules " +"automatically on boot." +msgstr "" +"Falls Sie diese Option wählen, werden IPVS-Regeln automatisch beim " +"Systemstart aus /etc/ipvsadm.rules geladen." + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "Multicast interface for ipvsadm:" +msgstr "Multicast-Schnittstelle für Ipvsadm:" + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "" +"Please specify the multicast interface to be used by the synchronization " +"daemon." +msgstr "" +"Bitte geben Sie die Multicast-Schnittstelle an, die vom Synchronisierungs-" +"Daemon benutzt wird." --- ipvsadm-1.26.orig/debian/po/fr.po +++ ipvsadm-1.26/debian/po/fr.po @@ -0,0 +1,118 @@ +# Translation of ipvsadm debconf templates to French +# Copyright (C) 2012 Debian French l10n team +# This file is distributed under the same license as the ipvsadm package. +# +# Translators: +# Christian Perrier , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ipvsadm\n" +"Report-Msgid-Bugs-To: ipvsadm@packages.debian.org\n" +"POT-Creation-Date: 2012-09-10 07:29+0200\n" +"PO-Revision-Date: 2012-09-10 07:37+0200\n" +"Last-Translator: Christian Perrier \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Lokalize 1.4\n" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "none" +msgstr "Inactif" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "master" +msgstr "Maître" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "backup" +msgstr "Sauvegarde" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "both" +msgstr "Les deux" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "Daemon method:" +msgstr "Mode de fonctionnement du démon ipvsadm :" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "" +"ipvsadm can activate the IPVS synchronization daemon. \"master\" starts this " +"daemon in master mode, \"backup\" starts it in backup mode, and \"both\" " +"uses master and backup modes at the same time. \"none\" disables the daemon." +msgstr "" +"Le démon de synchronisation d'IPVS peut être activé avec ipvsadm.Le choix " +"« Maître » le lance en mode maître, le choix « Sauvegarde » en mode " +"sauvegarde, « Les deux » utilise les deux modes en même temps. Si vous " +"choisissez « Inactif », le démon est désactivé." + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "See the ipvsadm(8) man page for more details." +msgstr "" +"Veuillez consulter la page de manuel d'ipvsadm(8) pour plus d'informations." + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "Kernel does not support IPVS" +msgstr "Pas de prise en charge d'IPVS dans le noyau" + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "" +"ipvsadm is useless with this kernel, since it has been built with " +"CONFIG_IP_VS=n. Please use a kernel compiled with IPVS support." +msgstr "" +"Il est inutile d'utiliser ipvsadm avec ce noyau car il a été compilé avec " +"« CONFIG_IP_VS=n ». Vous devez utiliser un noyau qui gère IPVS." + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "Do you want to automatically load IPVS rules on boot?" +msgstr "Voulez-vous charger automatiquement les règles IPVS au démarrage ?" + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "" +"If you choose this option, IPVS rules will be loaded from /etc/ipvsadm.rules " +"automatically on boot." +msgstr "" +"Si vous choisissez cette option, les règles IPVS seront chargées depuis /etc/" +"ipvsadm.rules au démarrage du système." + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "Multicast interface for ipvsadm:" +msgstr "Interface multicast pour ipvsadm :" + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "" +"Please specify the multicast interface to be used by the synchronization " +"daemon." +msgstr "" +"Veuillez indiquer l'interface multicast qui doit être utilisée avec le démon " +"de synchronisation." --- ipvsadm-1.26.orig/debian/po/pl.po +++ ipvsadm-1.26/debian/po/pl.po @@ -0,0 +1,117 @@ +# Translation of ipvsadm debconf templates to Polish. +# Copyright (C) 2012 +# This file is distributed under the same license as the ipvsadm package. +# +# Michał Kułach , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ipvsadm\n" +"Report-Msgid-Bugs-To: ipvsadm@packages.debian.org\n" +"POT-Creation-Date: 2012-09-10 07:29+0200\n" +"PO-Revision-Date: 2012-09-10 23:20+0200\n" +"Last-Translator: Michał Kułach \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2);\n" +"X-Generator: Lokalize 1.4\n" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "none" +msgstr "brak" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "master" +msgstr "główna" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "backup" +msgstr "kopia zapasowa" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "both" +msgstr "obie" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "Daemon method:" +msgstr "Metoda demona:" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "" +"ipvsadm can activate the IPVS synchronization daemon. \"master\" starts this " +"daemon in master mode, \"backup\" starts it in backup mode, and \"both\" " +"uses master and backup modes at the same time. \"none\" disables the daemon." +msgstr "" +"ipvsadm może aktywować demona synchronizacji IPVS. Wybranie \"główna\" " +"uruchomi go w trybie głównym, \"kopia zapasowa\" w trybie kopii zapasowej, " +"\"obie\" użyje jednocześnie obu trybów. Opcja \"brak\" wyłączy demona." + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "See the ipvsadm(8) man page for more details." +msgstr "Strona podręcznika ipvsadm(8) zawiera więcej informacji na ten temat." + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "Kernel does not support IPVS" +msgstr "Jądro nie obsługuje IPVS" + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "" +"ipvsadm is useless with this kernel, since it has been built with " +"CONFIG_IP_VS=n. Please use a kernel compiled with IPVS support." +msgstr "" +"ipvs jest bezużyteczny przy korzystaniu z bieżącego jądra, ponieważ zostało " +"ono zbudowane z opcją CONFIG_IP_VS=n. Proszę skorzystać z jądro " +"skompilowanego z obsługą IPVS." + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "Do you want to automatically load IPVS rules on boot?" +msgstr "Ładować automatycznie reguły IPVS w czasie rozruchu?" + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "" +"If you choose this option, IPVS rules will be loaded from /etc/ipvsadm.rules " +"automatically on boot." +msgstr "" +"Po wybraniu tej opcji, IPVS będzie automatycznie ładował reguły z /etc/" +"ipvsadm.rules w trakcie rozruchu systemu." + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "Multicast interface for ipvsadm:" +msgstr "Interfejs multicast do ipvsadm:" + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "" +"Please specify the multicast interface to be used by the synchronization " +"daemon." +msgstr "" +"Proszę podać interfejs multicast, który będzie używany przez demona " +"synchronizacyjnego." --- ipvsadm-1.26.orig/debian/po/sv.po +++ ipvsadm-1.26/debian/po/sv.po @@ -0,0 +1,116 @@ +# Translation of ipvsadm debconf template to Swedish +# Copyright (C) 2012 Martin Bagge +# This file is distributed under the same license as the ipvsadm package. +# +# Martin Bagge , 2012 +msgid "" +msgstr "" +"Project-Id-Version: ipvsadm\n" +"Report-Msgid-Bugs-To: ipvsadm@packages.debian.org\n" +"POT-Creation-Date: 2012-09-10 07:29+0200\n" +"PO-Revision-Date: 2012-09-22 18:20+0100\n" +"Last-Translator: Martin Bagge / brother \n" +"Language-Team: Swedish \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Swedish\n" +"X-Poedit-Country: Sweden\n" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "none" +msgstr "inget" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "master" +msgstr "master" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "backup" +msgstr "backup" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "both" +msgstr "båda" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "Daemon method:" +msgstr "Metod för tjänsten:" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "" +"ipvsadm can activate the IPVS synchronization daemon. \"master\" starts this " +"daemon in master mode, \"backup\" starts it in backup mode, and \"both\" " +"uses master and backup modes at the same time. \"none\" disables the daemon." +msgstr "" +"ipvsadm kan aktivera IPVS-synkroniserings-tjänsten. \"master\" startar " +"tjänsten i \"master\"-läge. \"backup\" startar den i backup-läge och \"båda" +"\" använder både master- och backup-läge samtidigt. \"inget\" avaktiverar " +"tjänsten." + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "See the ipvsadm(8) man page for more details." +msgstr "Läs ipvsadm(8) för ytterligare information." + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "Kernel does not support IPVS" +msgstr "Kärnan har inte stöd för IPVS" + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "" +"ipvsadm is useless with this kernel, since it has been built with " +"CONFIG_IP_VS=n. Please use a kernel compiled with IPVS support." +msgstr "" +"ipvsadm är meningslös med den här kärnan eftersom den har byggts med " +"CONFIG_IP_VS=n. Använd en kärna som är byggd med IPVS-stöd." + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "Do you want to automatically load IPVS rules on boot?" +msgstr "Vill du automatiskt läsa in IPVS-regler vid systemets start?" + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "" +"If you choose this option, IPVS rules will be loaded from /etc/ipvsadm.rules " +"automatically on boot." +msgstr "" +"Om detta alternativ väljs kommer IPVS-regler att automatiskt läsas in från /" +"etc/ipvsadm.rules vid systemets start." + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "Multicast interface for ipvsadm:" +msgstr "Multicast-gränssnitt för ipvsadm:" + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "" +"Please specify the multicast interface to be used by the synchronization " +"daemon." +msgstr "" +"Ange vilket multicast-gränssnitt som ska användas av synkroniserings-" +"tjänsten." --- ipvsadm-1.26.orig/debian/po/ru.po +++ ipvsadm-1.26/debian/po/ru.po @@ -0,0 +1,139 @@ +# translation of ru.po to Russian +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans# +# Developers do not need to manually edit POT or PO files. +# +# Yuri Kozlov , 2006, 2008, 2012. +msgid "" +msgstr "" +"Project-Id-Version: ipvsadm 1:1.26-2\n" +"Report-Msgid-Bugs-To: ipvsadm@packages.debian.org\n" +"POT-Creation-Date: 2012-09-10 07:29+0200\n" +"PO-Revision-Date: 2012-09-12 20:40+0400\n" +"Last-Translator: Yuri Kozlov \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Lokalize 1.4\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "none" +msgstr "не активировать" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "master" +msgstr "основной" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "backup" +msgstr "резервный" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "both" +msgstr "оба" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "Daemon method:" +msgstr "Режим работы службы:" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "" +"ipvsadm can activate the IPVS synchronization daemon. \"master\" starts this " +"daemon in master mode, \"backup\" starts it in backup mode, and \"both\" " +"uses master and backup modes at the same time. \"none\" disables the daemon." +msgstr "" +"ipvsadm может активировать службу синхронизации IPVS. При выборе «основной», " +"служба запускается в режиме ведущего (master), при выборе «резервный» — в " +"режиме ведомого (backup), а при выборе «оба» — в обоих режимах одновременно. " +"Если выбрать «не активировать», то служба запускаться не будет." + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "See the ipvsadm(8) man page for more details." +msgstr "Подробности описаны в справочной странице ipvsadm(8)." + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "Kernel does not support IPVS" +msgstr "Ядро не поддерживает IPVS" + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "" +"ipvsadm is useless with this kernel, since it has been built with " +"CONFIG_IP_VS=n. Please use a kernel compiled with IPVS support." +msgstr "" +"Пакет ipvsadm бесполезен с имеющимся ядром, так как оно собрано с параметром " +"CONFIG_IP_VS=n. Используйте ядро, собранное с поддержкой IPVS." + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "Do you want to automatically load IPVS rules on boot?" +msgstr "Загружать правила IPVS автоматически при включении компьютера?" + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "" +"If you choose this option, IPVS rules will be loaded from /etc/ipvsadm.rules " +"automatically on boot." +msgstr "" +"Если вы ответите утвердительно, то правила IPVS будут сохраняться и " +"загружаться из /etc/ipvsadm.rules автоматически при включении компьютера." + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "Multicast interface for ipvsadm:" +msgstr "Интерфейс многоадресной передачи для ipvsadm:" + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "" +"Please specify the multicast interface to be used by the synchronization " +"daemon." +msgstr "" +"Укажите интерфейс многоадресной передачи, который должна использовать служба " +"синхронизации." + +#~| msgid "none, master, backup" +#~ msgid "none, master, backup, both" +#~ msgstr "не активировать, основной, резервный, оба" + +#~ msgid "" +#~ "ipvsadm requires IPVS support in the kernel. Please use a kernel with " +#~ "IPVS modules, otherwise this software is pretty useless." +#~ msgstr "" +#~ "Для ipvsadm требуется поддержка IPVS в ядре. Используйте ядро с модулями " +#~ "IPVS, так как иначе данное ПО бесполезно." + +#~ msgid "${interface_error}" +#~ msgstr "${interface_error}" --- ipvsadm-1.26.orig/debian/po/es.po +++ ipvsadm-1.26/debian/po/es.po @@ -0,0 +1,152 @@ +# ipvsadm po-debconf translation to Spanish +# Copyright (C) 2005, 2009 Software in the Public Interest +# This file is distributed under the same license as the ipvsadm package. +# +# Changes: +# - Initial translation +# César Gómez Martín , 2005 +# +# - Updates +# Francisco Javier Cuadrado , 2009 +# Javier Fernández-Sanguino , 2012 +# +# Traductores, si no conocen el formato PO, merece la pena leer la +# documentación de gettext, especialmente las secciones dedicadas a este +# formato, por ejemplo ejecutando: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Equipo de traducción al español, por favor, lean antes de traducir +# los siguientes documentos: +# +# - El proyecto de traducción de Debian al español +# http://www.debian.org/intl/spanish/ +# especialmente las notas de traducción en +# http://www.debian.org/intl/spanish/notas +# +# - La guía de traducción de po's de debconf: +# /usr/share/doc/po-debconf/README-trans +# o http://www.debian.org/intl/l10n/po-debconf/README-trans +# +msgid "" +msgstr "" +"Project-Id-Version: ipvsadm 1:1.24-2.1\n" +"Report-Msgid-Bugs-To: ipvsadm@packages.debian.org\n" +"POT-Creation-Date: 2012-09-10 07:29+0200\n" +"PO-Revision-Date: 2012-09-27 03:04+0200\n" +"Last-Translator: Javier Fernández-Sanguino \n" +"Language-Team: Debian l10n Spanish \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "none" +msgstr "ninguno" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "master" +msgstr "maestro" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "backup" +msgstr "copia de seguridad" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "both" +msgstr "ambos" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "Daemon method:" +msgstr "Método del demonio:" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "" +"ipvsadm can activate the IPVS synchronization daemon. \"master\" starts this " +"daemon in master mode, \"backup\" starts it in backup mode, and \"both\" " +"uses master and backup modes at the same time. \"none\" disables the daemon." +msgstr "" +"ipvsadm puede activar el demonio de sincronización IPVS. «Maestro» iniciará " +"este demonio en modo maestro, «copia de seguridad» en el modo copia de " +"seguridad y «ambos» utilizará el modo maestro y copia de seguridad a la vez. " +"«Ninguno» desactivará el demonio." + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "See the ipvsadm(8) man page for more details." +msgstr "Consulte la página de manual para más detalles, ipvsadm(8)." + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "Kernel does not support IPVS" +msgstr "El núcleo no permite utilizar IPVS." + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "" +"ipvsadm is useless with this kernel, since it has been built with " +"CONFIG_IP_VS=n. Please use a kernel compiled with IPVS support." +msgstr "" +"ipvsadm es inútil con este núcleo porque ha sido compilado con " +"CONFIG_IP_VS=n. Debe utilizar un núcleo compilado con soporte de IPVS." + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "Do you want to automatically load IPVS rules on boot?" +msgstr "¿Desea cargar automáticamente las reglas IPVS en el arranque?" + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "" +"If you choose this option, IPVS rules will be loaded from /etc/ipvsadm.rules " +"automatically on boot." +msgstr "" +"Si escoge esta opción sus reglas de IPVS se cargarán automáticamente del " +"archivo «/etc/ipvsadm.rules» al arrancar." + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "Multicast interface for ipvsadm:" +msgstr "Interfaz multidifusión («multicast») de ipvsadm:" + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "" +"Please specify the multicast interface to be used by the synchronization " +"daemon." +msgstr "" +"Escoja la interfaz de multidifusión («multicast») que utilizará el demonio " +"de sincronización" + +#~ msgid "none, master, backup, both" +#~ msgstr "ninguno, maestro, copia de seguridad, ambos" + +#~ msgid "" +#~ "ipvsadm requires IPVS support in the kernel. Please use a kernel with " +#~ "IPVS modules, otherwise this software is pretty useless." +#~ msgstr "" +#~ "ipvsadm necesita que el núcleo pueda utilizar IPVS. Por favor, utilice un " +#~ "núcleo con módulos IPVS, de otro modo este programa no le será útil." + +#~ msgid "${interface_error}" +#~ msgstr "${interface_error}" --- ipvsadm-1.26.orig/debian/po/POTFILES.in +++ ipvsadm-1.26/debian/po/POTFILES.in @@ -0,0 +1 @@ +[type: gettext/rfc822deb] ipvsadm.templates --- ipvsadm-1.26.orig/debian/po/templates.pot +++ ipvsadm-1.26/debian/po/templates.pot @@ -0,0 +1,105 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ipvsadm\n" +"Report-Msgid-Bugs-To: ipvsadm@packages.debian.org\n" +"POT-Creation-Date: 2012-09-10 07:29+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "none" +msgstr "" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "master" +msgstr "" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "backup" +msgstr "" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "both" +msgstr "" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "Daemon method:" +msgstr "" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "" +"ipvsadm can activate the IPVS synchronization daemon. \"master\" starts this " +"daemon in master mode, \"backup\" starts it in backup mode, and \"both\" " +"uses master and backup modes at the same time. \"none\" disables the daemon." +msgstr "" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "See the ipvsadm(8) man page for more details." +msgstr "" + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "Kernel does not support IPVS" +msgstr "" + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "" +"ipvsadm is useless with this kernel, since it has been built with " +"CONFIG_IP_VS=n. Please use a kernel compiled with IPVS support." +msgstr "" + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "Do you want to automatically load IPVS rules on boot?" +msgstr "" + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "" +"If you choose this option, IPVS rules will be loaded from /etc/ipvsadm.rules " +"automatically on boot." +msgstr "" + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "Multicast interface for ipvsadm:" +msgstr "" + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "" +"Please specify the multicast interface to be used by the synchronization " +"daemon." +msgstr "" --- ipvsadm-1.26.orig/debian/po/pt.po +++ ipvsadm-1.26/debian/po/pt.po @@ -0,0 +1,115 @@ +# Portuguese translation for ipvsadm's debconf messages +# Copyright (C) 2012 +# This file is distributed under the same license as the ipvsadm package. +# Rui Branco , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: ipvsadm 1:1.26-2\n" +"Report-Msgid-Bugs-To: ipvsadm@packages.debian.org\n" +"POT-Creation-Date: 2012-09-10 07:29+0200\n" +"PO-Revision-Date: 2012-09-15 11:53+0100\n" +"Last-Translator: Rui Branco \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "none" +msgstr "nenhum" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "master" +msgstr "mestre" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "backup" +msgstr "backup" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "both" +msgstr "ambos" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "Daemon method:" +msgstr "Método para o 'daemon':" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "" +"ipvsadm can activate the IPVS synchronization daemon. \"master\" starts this " +"daemon in master mode, \"backup\" starts it in backup mode, and \"both\" " +"uses master and backup modes at the same time. \"none\" disables the daemon." +msgstr "" +"O ipvsadm pode activar o 'daemon' de sincronização IPVS. O método \"mestre\" " +"inicia o 'daemon' em modo de mestre, \"backup\" em modo de backup, e \"ambos" +"\" utiliza o modo mestre e o de backup ao mesmo tempo, \"none \" desactiva o " +"'daemon'." + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "See the ipvsadm(8) man page for more details." +msgstr "Veja a página man do ipvsadm(8) para mais detalhes." + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "Kernel does not support IPVS" +msgstr "O kernel não suporta IPVS" + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "" +"ipvsadm is useless with this kernel, since it has been built with " +"CONFIG_IP_VS=n. Please use a kernel compiled with IPVS support." +msgstr "" +"O ipvsadm é inútil com este kernel, pelo facto de este ter sido compilado " +"com a opção CONFIG_IP_VS=n. Por favor utilize um kernel compilado com " +"suporte IPVS." + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "Do you want to automatically load IPVS rules on boot?" +msgstr "Deseja carregar automaticamente as regras IPVS durante o arranque?" + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "" +"If you choose this option, IPVS rules will be loaded from /etc/ipvsadm.rules " +"automatically on boot." +msgstr "" +"Se escolher esta opção as suas regras IPVS serão carregadas a partir de /etc/" +"ipvsadm.rules de modo automático durante o arranque do sistema." + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "Multicast interface for ipvsadm:" +msgstr "Interface multicast para o ipvsadm:" + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "" +"Please specify the multicast interface to be used by the synchronization " +"daemon." +msgstr "" +"Por favor seleccione a interface multicast para ser utilizada pelo 'daemon' " +"de sincronização." --- ipvsadm-1.26.orig/debian/po/da.po +++ ipvsadm-1.26/debian/po/da.po @@ -0,0 +1,112 @@ +# Danish translation ipvsadm. +# Copyright (C) 2012 ipvsadm & nedenstående oversættere. +# This file is distributed under the same license as the ipvsadm package. +# Joe Hansen , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: ipvsadm\n" +"Report-Msgid-Bugs-To: ipvsadm@packages.debian.org\n" +"POT-Creation-Date: 2012-09-10 07:29+0200\n" +"PO-Revision-Date: 2012-09-17 17:30+01:00\n" +"Last-Translator: Joe Hansen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "none" +msgstr "ingen" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "master" +msgstr "master" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "backup" +msgstr "sikkerhedskopi" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "both" +msgstr "begge" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "Daemon method:" +msgstr "Dæmonmetode:" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "" +"ipvsadm can activate the IPVS synchronization daemon. \"master\" starts this " +"daemon in master mode, \"backup\" starts it in backup mode, and \"both\" " +"uses master and backup modes at the same time. \"none\" disables the daemon." +msgstr "" +"ipvsadm kan aktivere IPVS-synkroniseringsdæmonen. »master« starter denne " +"dæmon i tilstanden master, »sikkerhedskopi« i tilstanden for sikkerhedskopi " +"og »begge« bruger tilstandene for master og sikkerhedskopi på samme tid. " +"»ingen« deaktiverer dæmonen." + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "See the ipvsadm(8) man page for more details." +msgstr "Se manualsiden ipvsadm(8) for yderligere detaljer." + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "Kernel does not support IPVS" +msgstr "Kerne understøtter ikke IPVS" + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "" +"ipvsadm is useless with this kernel, since it has been built with " +"CONFIG_IP_VS=n. Please use a kernel compiled with IPVS support." +msgstr "" +"ipvsadm er uden værdi med denne kerne, da den er blevet bygget med " +"CONFIG_IP_VS=n. Brug venligst en kerne kompileret med IPVS-understøttelse." + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "Do you want to automatically load IPVS rules on boot?" +msgstr "Ønsker du automatisk at indlæse IPVS-regler ved opstart?" + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "" +"If you choose this option, IPVS rules will be loaded from /etc/ipvsadm.rules " +"automatically on boot." +msgstr "" +"Hvis du vælger denne indstilling, så vil dine IPVS-regler blive indlæst fra /" +"etc/ipvsadm.rules automatisk ved opstart." + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "Multicast interface for ipvsadm:" +msgstr "Multicast-grænseflade for ipvsadm:" + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "" +"Please specify the multicast interface to be used by the synchronization " +"daemon." +msgstr "Vælg multicast-grænsefladen der skal bruges af synkroniseringsdæmonen." --- ipvsadm-1.26.orig/debian/po/cs.po +++ ipvsadm-1.26/debian/po/cs.po @@ -0,0 +1,112 @@ +# Czech PO debconf template translation of ipvsadm. +# Copyright (C) 2012 Michal Simunek +# This file is distributed under the same license as the ipvsadm package. +# Michal Simunek , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: ipvsadm 1:1.26-2\n" +"Report-Msgid-Bugs-To: ipvsadm@packages.debian.org\n" +"POT-Creation-Date: 2012-09-10 07:29+0200\n" +"PO-Revision-Date: 2012-09-15 13:32+0200\n" +"Last-Translator: Michal Simunek \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "none" +msgstr "žádný" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "master" +msgstr "hlavní" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "backup" +msgstr "záložní" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "both" +msgstr "oboje" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "Daemon method:" +msgstr "Režim daemona:" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "" +"ipvsadm can activate the IPVS synchronization daemon. \"master\" starts this " +"daemon in master mode, \"backup\" starts it in backup mode, and \"both\" " +"uses master and backup modes at the same time. \"none\" disables the daemon." +msgstr "" +"ipvsadm může aktivovat synchronizačního daemona pro IPVS. \"hlavní\" tohoto " +"daemona spustí v hlavním režimu, \"záložní\" jej spustí v záložním režimu, " +"\"oboje\" použije současně záložní i hlavní režim. \"žádný\" daemona zakáže." + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "See the ipvsadm(8) man page for more details." +msgstr "Pro další informace se podívejte do manuálové stránky ipvsadm(8)." + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "Kernel does not support IPVS" +msgstr "Jádro nepodporuje IPVS" + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "" +"ipvsadm is useless with this kernel, since it has been built with " +"CONFIG_IP_VS=n. Please use a kernel compiled with IPVS support." +msgstr "" +"ipvsadm je s tímto jádrem k ničemu, protože bylo sestaveno s volbou " +"CONFIG_IP_VS=n. Použijte prosím jádro zkompilované s podporou IPVS." + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "Do you want to automatically load IPVS rules on boot?" +msgstr "Chcete nahrávat IPVS pravidla automaticky při zavedení?" + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "" +"If you choose this option, IPVS rules will be loaded from /etc/ipvsadm.rules " +"automatically on boot." +msgstr "" +"Pokud zvolíte tuto možnost, při zavedení se automaticky nahrají IPVS " +"pravidla ze souboru /etc/ipvsadm.rules." + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "Multicast interface for ipvsadm:" +msgstr "Vícesměrové rozhraní pro ipvsadm:" + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "" +"Please specify the multicast interface to be used by the synchronization " +"daemon." +msgstr "" +"Zadejte prosím vícesměrové rozhraní, které má synchronizační daemon používat." --- ipvsadm-1.26.orig/debian/po/it.po +++ ipvsadm-1.26/debian/po/it.po @@ -0,0 +1,115 @@ +# Italian description of ipvsadm debconf messages. +# Copyright (C) 2012, Beatrice Torracca +# This file is distributed under the same license as the ipvsadm package. +# Beatrice Torracca , 2012. +msgid "" +msgstr "" +"Project-Id-Version: ipvsadm\n" +"Report-Msgid-Bugs-To: ipvsadm@packages.debian.org\n" +"POT-Creation-Date: 2012-09-10 07:29+0200\n" +"PO-Revision-Date: 2012-09-14 20:50+0200\n" +"Last-Translator: Beatrice Torracca \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Virtaal 0.7.1\n" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "none" +msgstr "nessuno" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "master" +msgstr "master" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "backup" +msgstr "backup" + +#. Type: select +#. Choices +#: ../ipvsadm.templates:2001 +msgid "both" +msgstr "entrambi" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "Daemon method:" +msgstr "Metodo per il demone:" + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "" +"ipvsadm can activate the IPVS synchronization daemon. \"master\" starts this " +"daemon in master mode, \"backup\" starts it in backup mode, and \"both\" " +"uses master and backup modes at the same time. \"none\" disables the daemon." +msgstr "" +"ipvsadm può attivare il demone di sincronizzazione IPVS. «master» avvia " +"questo demone in modalità master, «backup» lo avvia in modalità backup e " +"«entrambi» usa contemporaneamente le modalità master e backup. «none» " +"disabilita il demone." + +#. Type: select +#. Description +#: ../ipvsadm.templates:2002 +msgid "See the ipvsadm(8) man page for more details." +msgstr "Vedere la pagina di manuale ipvsadm(8) per ulteriori dettagli." + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "Kernel does not support IPVS" +msgstr "Il kernel non supporta IPVS" + +#. Type: error +#. Description +#: ../ipvsadm.templates:3001 +msgid "" +"ipvsadm is useless with this kernel, since it has been built with " +"CONFIG_IP_VS=n. Please use a kernel compiled with IPVS support." +msgstr "" +"ipvsadm è inutile con questo kernel dato che è stato compilato con " +"CONFIG_IP_VS=n. Usare un kernel compilato con il supporto IPVS." + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "Do you want to automatically load IPVS rules on boot?" +msgstr "Caricare automaticamente le regole IPVS all'avvio?" + +#. Type: boolean +#. Description +#: ../ipvsadm.templates:4001 +msgid "" +"If you choose this option, IPVS rules will be loaded from /etc/ipvsadm.rules " +"automatically on boot." +msgstr "" +"Se si sceglie questa opzione, le regole IPVS verranno caricate " +"automaticamente da /etc/ipvsadm.rules all'avvio." + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "Multicast interface for ipvsadm:" +msgstr "Interfaccia multicast per ipvsadm:" + +#. Type: string +#. Description +#: ../ipvsadm.templates:5001 +msgid "" +"Please specify the multicast interface to be used by the synchronization " +"daemon." +msgstr "" +"Specificare l'interfaccia multicast che deve essere usata dal demone di " +"sincronizzazione." --- ipvsadm-1.26.orig/debian/source/lintian-overrides +++ ipvsadm-1.26/debian/source/lintian-overrides @@ -0,0 +1 @@ +build-depends-on-obsolete-package build-depends: dpatch (>= 2.0.32~) --- ipvsadm-1.26.orig/debian/source/format +++ ipvsadm-1.26/debian/source/format @@ -0,0 +1 @@ +1.0 --- ipvsadm-1.26.orig/debian/include2.6/net/ip_vs.h +++ ipvsadm-1.26/debian/include2.6/net/ip_vs.h @@ -0,0 +1,999 @@ +/* + * IP Virtual Server + * data structure and functionality definitions + */ + +#ifndef _IP_VS_H +#define _IP_VS_H + +#include /* 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 +#include /* for struct list_head */ +#include /* for struct rwlock_t */ +#include /* for struct sk_buff */ +#include /* for struct iphdr */ +#include /* for struct atomic_t */ +#include /* for struct neighbour */ +#include /* for struct dst_entry */ +#include +#include +#include + + +#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 */