Import Debian changes 1.0.5-1

tinc (1.0.5-1) unstable; urgency=low

  * New upstream release. Closes: #391610
  * Add an LSB section to the init script.
This commit is contained in:
Guus Sliepen 2006-11-14 16:32:20 +01:00
commit c473eb1653
93 changed files with 7634 additions and 5098 deletions

View file

@ -1,6 +1,6 @@
Main tinc authors: Main tinc authors:
Guus Sliepen <guus@tinc-vpn.org> Guus Sliepen <guus@tinc-vpn.org>
Ivo Timmermans <ivo@tinc-vpn.org> Ivo Timmermans (inactive)
These files are from other sources: These files are from other sources:
* lib/pidfile.h and lib/pidfile.c are by Martin Schulze, taken from * lib/pidfile.h and lib/pidfile.c are by Martin Schulze, taken from

View file

@ -2,7 +2,7 @@
Version 2, June 1991 Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc. Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail. Also add information on how to contact you by electronic and paper mail.

176
ChangeLog
View file

@ -1,3 +1,179 @@
------------------------------------------------------------------------
r1471 | guus | 2006-11-14 13:28:04 +0100 (di, 14 nov 2006) | 2 lines
EWOULDBLOCK does not exist on platforms without O_NONBLOCK
------------------------------------------------------------------------
r1470 | guus | 2006-11-11 23:45:45 +0100 (za, 11 nov 2006) | 2 lines
When deleting an entire tree, start at head, not at root.
------------------------------------------------------------------------
r1469 | guus | 2006-11-11 23:44:15 +0100 (za, 11 nov 2006) | 1 line
Nodes use events, so event system should be initialised first and destroyed last.
------------------------------------------------------------------------
r1468 | guus | 2006-11-11 22:37:22 +0100 (za, 11 nov 2006) | 2 lines
Update Dutch translation.
------------------------------------------------------------------------
r1467 | guus | 2006-11-11 21:37:58 +0100 (za, 11 nov 2006) | 2 lines
Document GraphDumpFile option.
------------------------------------------------------------------------
r1466 | guus | 2006-11-11 21:10:46 +0100 (za, 11 nov 2006) | 2 lines
Support and autodetect LZO version 2.0 and later.
------------------------------------------------------------------------
r1465 | guus | 2006-11-11 21:06:14 +0100 (za, 11 nov 2006) | 2 lines
Support and autodetect LZO version 2.0 and later.
------------------------------------------------------------------------
r1464 | guus | 2006-11-11 15:37:03 +0100 (za, 11 nov 2006) | 2 lines
popen() requires pclose().
------------------------------------------------------------------------
r1463 | guus | 2006-11-11 15:11:16 +0100 (za, 11 nov 2006) | 2 lines
Added graph dumping ability based on Markus Goetz's patch.
------------------------------------------------------------------------
r1462 | guus | 2006-11-11 14:43:00 +0100 (za, 11 nov 2006) | 2 lines
The "active" bit in node.status is not used.
------------------------------------------------------------------------
r1461 | guus | 2006-08-10 00:31:10 +0200 (do, 10 aug 2006) | 3 lines
memcpy() addresses from packet headers before calling the lookup functions.
This probably fixes a problem on the ARM architecture that causes tinc to fail to lookup IPv4 addresses.
------------------------------------------------------------------------
r1460 | guus | 2006-08-08 15:50:58 +0200 (di, 08 aug 2006) | 2 lines
Remove unused variable.
------------------------------------------------------------------------
r1459 | guus | 2006-08-08 15:44:37 +0200 (di, 08 aug 2006) | 2 lines
Remove unused parameter from maskcmp().
------------------------------------------------------------------------
r1458 | guus | 2006-08-08 15:44:19 +0200 (di, 08 aug 2006) | 2 lines
Remove unused variables.
------------------------------------------------------------------------
r1457 | guus | 2006-08-08 15:29:17 +0200 (di, 08 aug 2006) | 2 lines
Fix format string warnings.
------------------------------------------------------------------------
r1456 | guus | 2006-08-08 15:21:08 +0200 (di, 08 aug 2006) | 2 lines
Do not break strict aliasing of status_t structs.
------------------------------------------------------------------------
r1455 | guus | 2006-06-12 23:45:39 +0200 (ma, 12 jun 2006) | 3 lines
Add generic host-up and host-down scripts.
Thanks to Menno Smits for a patch.
------------------------------------------------------------------------
r1454 | guus | 2006-06-11 20:53:27 +0200 (zo, 11 jun 2006) | 3 lines
Use memcpy() to copy sockaddrs returned by getaddrinfo().
Thanks to Miles Nordin for spotting this.
------------------------------------------------------------------------
r1453 | guus | 2006-04-26 18:29:47 +0200 (wo, 26 apr 2006) | 2 lines
Restore length of the original packet in send_udppacket().
------------------------------------------------------------------------
r1452 | guus | 2006-04-26 15:52:58 +0200 (wo, 26 apr 2006) | 2 lines
Update copyright notices, remove Ivo's email address.
------------------------------------------------------------------------
r1451 | guus | 2006-04-12 10:38:35 +0200 (wo, 12 apr 2006) | 3 lines
Fix a bug in handling prefixlengths that are not a multiple of 4.
Thanks to Sven-Haegar Koch for spotting the bug and providing the fix.
------------------------------------------------------------------------
r1450 | guus | 2006-03-19 14:06:21 +0100 (zo, 19 mrt 2006) | 2 lines
Fix signedness compiler warnings.
------------------------------------------------------------------------
r1449 | guus | 2006-03-19 13:43:45 +0100 (zo, 19 mrt 2006) | 2 lines
Export flush_meta().
------------------------------------------------------------------------
r1448 | guus | 2006-03-19 13:43:28 +0100 (zo, 19 mrt 2006) | 2 lines
Missing #include.
------------------------------------------------------------------------
r1447 | guus | 2006-02-06 13:30:51 +0100 (ma, 06 feb 2006) | 2 lines
Make sure $NAME is set correctly when executing tinc-down script.
------------------------------------------------------------------------
r1446 | guus | 2006-01-19 18:13:18 +0100 (do, 19 jan 2006) | 4 lines
Apply patch from Scott Lamb adding an output buffer for the TCP sockets.
This helps coalescing multiple send_meta() commands into one TCP packet.
Also limit the size of the output buffer before dropping PACKETs.
------------------------------------------------------------------------
r1445 | guus | 2006-01-13 12:21:59 +0100 (vr, 13 jan 2006) | 2 lines
Apply patch from Scott Lamb unifying configuration of TCP socket options.
------------------------------------------------------------------------
r1444 | guus | 2006-01-13 12:09:19 +0100 (vr, 13 jan 2006) | 2 lines
EVP_Cleanup() when quitting.
------------------------------------------------------------------------
r1443 | guus | 2005-11-16 11:45:11 +0100 (wo, 16 nov 2005) | 2 lines
Enable OpenSSL ENGINE, so crypto hardware gets used. Thanks to Andreas van Cranenburgh.
------------------------------------------------------------------------
r1442 | guus | 2005-06-03 12:56:02 +0200 (vr, 03 jun 2005) | 2 lines
Add alloca.h to the list of necessary header files.
------------------------------------------------------------------------
r1441 | guus | 2005-06-03 12:16:03 +0200 (vr, 03 jun 2005) | 3 lines
Prevent possible buffer overflows when using very large (>= 8192 bit) RSA keys.
Thanks to Tonnerre Lombard for noticing!
------------------------------------------------------------------------
r1440 | guus | 2005-05-04 21:38:28 +0200 (wo, 04 mei 2005) | 2 lines
Releasing 1.0.4.
------------------------------------------------------------------------
r1439 | guus | 2005-05-04 20:09:30 +0200 (wo, 04 mei 2005) | 2 lines
Update copyright notices.
------------------------------------------------------------------------
r1438 | guus | 2005-05-04 18:53:11 +0200 (wo, 04 mei 2005) | 2 lines
Describe subnet-up/down scripts in documentation.
------------------------------------------------------------------------ ------------------------------------------------------------------------
r1437 | guus | 2005-05-04 17:56:25 +0200 (wo, 04 mei 2005) | 2 lines r1437 | guus | 2005-05-04 17:56:25 +0200 (wo, 04 mei 2005) | 2 lines

16
INSTALL
View file

@ -102,16 +102,16 @@ for another architecture.
Installation Names Installation Names
================== ==================
By default, `make install' will install the package's files in By default, `make install' installs the package's commands under
`/usr/local/bin', `/usr/local/man', etc. You can specify an `/usr/local/bin', include files under `/usr/local/include', etc. You
installation prefix other than `/usr/local' by giving `configure' the can specify an installation prefix other than `/usr/local' by giving
option `--prefix=PREFIX'. `configure' the option `--prefix=PREFIX'.
You can specify separate installation prefixes for You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PREFIX', the package will pass the option `--exec-prefix=PREFIX' to `configure', the package uses
use PREFIX as the prefix for installing programs and libraries. PREFIX as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix. Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular options like `--bindir=DIR' to specify different values for particular
@ -159,7 +159,7 @@ where SYSTEM can have one of these forms:
need to know the machine type. need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should If you are _building_ compiler tools for cross-compiling, you should
use the `--target=TYPE' option to select the type of system they will use the option `--target=TYPE' to select the type of system they will
produce code for. produce code for.
If you want to _use_ a cross compiler, that generates code for a If you want to _use_ a cross compiler, that generates code for a

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am. # Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -44,13 +44,14 @@ subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/aclocal-include.m4 \ am__aclocal_m4_deps = $(top_srcdir)/m4/aclocal-include.m4 \
$(top_srcdir)/m4/attribute.m4 $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/attribute.m4 $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lzo.m4 $(top_srcdir)/m4/malloc.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/lzo.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/openssl.m4 \ $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/nls.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/tuntap.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/realloc.m4 \
$(top_srcdir)/m4/zlib.m4 $(top_srcdir)/configure.in $(top_srcdir)/m4/tuntap.m4 $(top_srcdir)/m4/zlib.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4) $(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
@ -103,6 +104,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@ EGREP = @EGREP@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
GMSGFMT = @GMSGFMT@ GMSGFMT = @GMSGFMT@
GREP = @GREP@
HAVE_TUNTAP = @HAVE_TUNTAP@ HAVE_TUNTAP = @HAVE_TUNTAP@
INCLUDES = @INCLUDES@ INCLUDES = @INCLUDES@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
@ -144,8 +146,6 @@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@
XGETTEXT = @XGETTEXT@ XGETTEXT = @XGETTEXT@
ac_ct_CC = @ac_ct_CC@ ac_ct_CC = @ac_ct_CC@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@ am__include = @am__include@
@ -160,23 +160,30 @@ build_cpu = @build_cpu@
build_os = @build_os@ build_os = @build_os@
build_vendor = @build_vendor@ build_vendor = @build_vendor@
datadir = @datadir@ datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host = @host@ host = @host@
host_alias = @host_alias@ host_alias = @host_alias@
host_cpu = @host_cpu@ host_cpu = @host_cpu@
host_os = @host_os@ host_os = @host_os@
host_vendor = @host_vendor@ host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@ includedir = @includedir@
infodir = @infodir@ infodir = @infodir@
install_sh = @install_sh@ install_sh = @install_sh@
libdir = @libdir@ libdir = @libdir@
libexecdir = @libexecdir@ libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@ localstatedir = @localstatedir@
mandir = @mandir@ mandir = @mandir@
mkdir_p = @mkdir_p@ mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@ oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@ prefix = @prefix@
program_transform_name = @program_transform_name@ program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@ sysconfdir = @sysconfdir@

13
NEWS
View file

@ -1,3 +1,16 @@
version 1.0.5 Nov 14 2006
* Lots of small fixes.
* Broadcast packets no longer grow in size with each hop. This should
fix switch mode (again).
* Generic host-up and host-down scripts.
* Optionally dump graph in graphviz format to a file or a script.
* Support LZO 2.0 and later.
version 1.0.4 May 4 2005 version 1.0.4 May 4 2005
* Fix switch and hub modes. * Fix switch and hub modes.

4
README
View file

@ -1,9 +1,9 @@
This is the README file for tinc version 1.0.4. Installation This is the README file for tinc version 1.0.4. Installation
instructions may be found in the INSTALL file. instructions may be found in the INSTALL file.
tinc is Copyright (C) 1998-2005 by: tinc is Copyright (C) 1998-2006 by:
Ivo Timmermans <ivo@tinc-vpn.org>, Ivo Timmermans,
Guus Sliepen <guus@tinc-vpn.org>, Guus Sliepen <guus@tinc-vpn.org>,
and others. and others.

10
THANKS
View file

@ -2,6 +2,7 @@ We would like to thank the following people for their contributions to tinc:
* Alexander Reil and Gemeinde Berg * Alexander Reil and Gemeinde Berg
* Allesandro Gatti * Allesandro Gatti
* Andreas van Cranenburgh
* Armijn Hemel * Armijn Hemel
* Cris van Pelt * Cris van Pelt
* Enrique Zanardi * Enrique Zanardi
@ -13,20 +14,25 @@ We would like to thank the following people for their contributions to tinc:
* Jason Harper * Jason Harper
* Jeroen Ubbink * Jeroen Ubbink
* Jerome Etienne * Jerome Etienne
* Lubomír Bulej * Lubomír Bulej
* Mads Kiilerich * Mads Kiilerich
* Marc A. Lehmann * Marc A. Lehmann
* Mark Glines * Mark Glines
* Markus Goetz
* Martin Kihlgren * Martin Kihlgren
* Matias Carrasco * Matias Carrasco
* Miles Nordin
* Nick Patavalis * Nick Patavalis
* Paul Littlefield * Paul Littlefield
* Robert van der Meulen * Robert van der Meulen
* Scott Lamb
* Sven-Haegar Koch
* Teemu Kiviniemi * Teemu Kiviniemi
* Tonnerre Lombard
* Wessel Dankers * Wessel Dankers
* Wouter van Heyst * Wouter van Heyst
And everyone we forgot. Thank you guys! And everyone we forgot. Thank you!
Ivo Timmermans Ivo Timmermans
Guus Sliepen Guus Sliepen

5
aclocal.m4 vendored
View file

@ -1,4 +1,4 @@
# generated automatically by aclocal 1.9.5 -*- Autoconf -*- # generated automatically by aclocal 1.9.6 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005 Free Software Foundation, Inc. # 2005 Free Software Foundation, Inc.
@ -28,7 +28,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
# Call AM_AUTOMAKE_VERSION so it can be traced. # Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.9.5])]) [AM_AUTOMAKE_VERSION([1.9.6])])
# AM_AUX_DIR_EXPAND -*- Autoconf -*- # AM_AUX_DIR_EXPAND -*- Autoconf -*-
@ -881,6 +881,7 @@ m4_include([m4/aclocal-include.m4])
m4_include([m4/attribute.m4]) m4_include([m4/attribute.m4])
m4_include([m4/gettext.m4]) m4_include([m4/gettext.m4])
m4_include([m4/iconv.m4]) m4_include([m4/iconv.m4])
m4_include([m4/isc-posix.m4])
m4_include([m4/lib-ld.m4]) m4_include([m4/lib-ld.m4])
m4_include([m4/lib-link.m4]) m4_include([m4/lib-link.m4])
m4_include([m4/lib-prefix.m4]) m4_include([m4/lib-prefix.m4])

575
config.guess vendored

File diff suppressed because it is too large Load diff

View file

@ -113,6 +113,9 @@
/* Define to 1 if you have the <lzo1x.h> header file. */ /* Define to 1 if you have the <lzo1x.h> header file. */
#undef HAVE_LZO1X_H #undef HAVE_LZO1X_H
/* Define to 1 if you have the <lzo/lzo1x.h> header file. */
#undef HAVE_LZO_LZO1X_H
/* Define to 1 if you have the <memory.h> header file. */ /* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H #undef HAVE_MEMORY_H
@ -176,6 +179,9 @@
/* OpenBSD */ /* OpenBSD */
#undef HAVE_OPENBSD #undef HAVE_OPENBSD
/* Define to 1 if you have the <openssl/engine.h> header file. */
#undef HAVE_OPENSSL_ENGINE_H
/* Define to 1 if you have the <openssl/err.h> header file. */ /* Define to 1 if you have the <openssl/err.h> header file. */
#undef HAVE_OPENSSL_ERR_H #undef HAVE_OPENSSL_ERR_H
@ -358,7 +364,7 @@
/* If using the C implementation of alloca, define if you know the /* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be direction of stack growth for your system; otherwise it will be
automatically deduced at run-time. automatically deduced at runtime.
STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */ STACK_DIRECTION = 0 => direction of growth unknown */
@ -397,7 +403,7 @@
/* Replacement realloc() */ /* Replacement realloc() */
#undef realloc #undef realloc
/* Define to `unsigned' if <sys/types.h> does not define. */ /* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t #undef size_t
/* Define to empty if the keyword `volatile' does not work. Warning: valid /* Define to empty if the keyword `volatile' does not work. Warning: valid

121
config.sub vendored
View file

@ -1,9 +1,10 @@
#! /bin/sh #! /bin/sh
# Configuration validation subroutine script. # Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. # 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
# Inc.
timestamp='2005-04-22' timestamp='2006-09-20'
# This file is (in principle) common to ALL GNU software. # This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software # The presence of a machine in this file suggests that SOME GNU software
@ -21,14 +22,15 @@ timestamp='2005-04-22'
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
# Boston, MA 02111-1307, USA. # 02110-1301, USA.
#
# As a special exception to the GNU General Public License, if you # As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a # distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under # configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program. # the same distribution terms that you use for the rest of that program.
# Please send patches to <config-patches@gnu.org>. Submit a context # Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry. # diff and a properly formatted ChangeLog entry.
# #
@ -83,11 +85,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do while test $# -gt 0 ; do
case $1 in case $1 in
--time-stamp | --time* | -t ) --time-stamp | --time* | -t )
echo "$timestamp" ; exit 0 ;; echo "$timestamp" ; exit ;;
--version | -v ) --version | -v )
echo "$version" ; exit 0 ;; echo "$version" ; exit ;;
--help | --h* | -h ) --help | --h* | -h )
echo "$usage"; exit 0 ;; echo "$usage"; exit ;;
-- ) # Stop option processing -- ) # Stop option processing
shift; break ;; shift; break ;;
- ) # Use stdin as input. - ) # Use stdin as input.
@ -99,7 +101,7 @@ while test $# -gt 0 ; do
*local*) *local*)
# First pass through any local machine types. # First pass through any local machine types.
echo $1 echo $1
exit 0;; exit ;;
* ) * )
break ;; break ;;
@ -118,8 +120,9 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations. # Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in case $maybe_os in
nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;; ;;
@ -170,6 +173,10 @@ case $os in
-hiux*) -hiux*)
os=-hiuxwe2 os=-hiuxwe2
;; ;;
-sco6)
os=-sco5v6
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco5) -sco5)
os=-sco3.2v5 os=-sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@ -186,6 +193,10 @@ case $os in
# Don't forget version if it is 3.2v4 or newer. # Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;; ;;
-sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco*) -sco*)
os=-sco3.2v2 os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@ -230,7 +241,7 @@ case $basic_machine in
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \ | am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
| bfin \ | bfin \
| c4x | clipper \ | c4x | clipper \
| d10v | d30v | dlx | dsp16xx \ | d10v | d30v | dlx | dsp16xx \
@ -238,7 +249,8 @@ case $basic_machine in
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \ | i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \ | ip2k | iq2000 \
| m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \ | m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | mcore \
| mips | mipsbe | mipseb | mipsel | mipsle \ | mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \ | mips16 \
| mips64 | mips64el \ | mips64 | mips64el \
@ -247,6 +259,7 @@ case $basic_machine in
| mips64vr4100 | mips64vr4100el \ | mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \ | mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \ | mips64vr5000 | mips64vr5000el \
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \ | mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \ | mipsisa32r2 | mipsisa32r2el \
| mipsisa64 | mipsisa64el \ | mipsisa64 | mipsisa64el \
@ -255,21 +268,24 @@ case $basic_machine in
| mipsisa64sr71k | mipsisa64sr71kel \ | mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \ | mipstx39 | mipstx39el \
| mn10200 | mn10300 \ | mn10200 | mn10300 \
| mt \
| msp430 \ | msp430 \
| nios | nios2 \
| ns16k | ns32k \ | ns16k | ns32k \
| openrisc | or32 \ | or32 \
| pdp10 | pdp11 | pj | pjl \ | pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \ | pyramid \
| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | score \
| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \ | sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| strongarm \ | spu | strongarm \
| tahoe | thumb | tic4x | tic80 | tron \ | tahoe | thumb | tic4x | tic80 | tron \
| v850 | v850e \ | v850 | v850e \
| we32k \ | we32k \
| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k) | z8k)
basic_machine=$basic_machine-unknown basic_machine=$basic_machine-unknown
;; ;;
@ -280,6 +296,9 @@ case $basic_machine in
;; ;;
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
;; ;;
ms1)
basic_machine=mt-unknown
;;
# We use `pc' rather than `unknown' # We use `pc' rather than `unknown'
# because (1) that's what they normally are, and # because (1) that's what they normally are, and
@ -299,7 +318,7 @@ case $basic_machine in
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* \ | avr-* | avr32-* \
| bfin-* | bs2000-* \ | bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
| clipper-* | craynv-* | cydra-* \ | clipper-* | craynv-* | cydra-* \
@ -310,7 +329,7 @@ case $basic_machine in
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \ | i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \ | ip2k-* | iq2000-* \
| m32r-* | m32rle-* \ | m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | maxq-* | mcore-* \ | m88110-* | m88k-* | maxq-* | mcore-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
@ -321,6 +340,7 @@ case $basic_machine in
| mips64vr4100-* | mips64vr4100el-* \ | mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \ | mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \ | mips64vr5000-* | mips64vr5000el-* \
| mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \ | mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa64-* | mipsisa64el-* \ | mipsisa64-* | mipsisa64el-* \
@ -329,24 +349,26 @@ case $basic_machine in
| mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipstx39-* | mipstx39el-* \ | mipstx39-* | mipstx39el-* \
| mmix-* \ | mmix-* \
| mt-* \
| msp430-* \ | msp430-* \
| nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \ | none-* | np1-* | ns16k-* | ns32k-* \
| orion-* \ | orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \ | pyramid-* \
| romp-* | rs6000-* \ | romp-* | rs6000-* \
| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \ | sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \ | tahoe-* | thumb-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tron-* \ | tron-* \
| v850-* | v850e-* | vax-* \ | v850-* | v850e-* | vax-* \
| we32k-* \ | we32k-* \
| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
| xstormy16-* | xtensa-* \ | xstormy16-* | xtensa-* \
| ymp-* \ | ymp-* \
| z8k-*) | z8k-*)
@ -686,6 +708,9 @@ case $basic_machine in
basic_machine=i386-pc basic_machine=i386-pc
os=-msdos os=-msdos
;; ;;
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
mvs) mvs)
basic_machine=i370-ibm basic_machine=i370-ibm
os=-mvs os=-mvs
@ -761,9 +786,8 @@ case $basic_machine in
basic_machine=hppa1.1-oki basic_machine=hppa1.1-oki
os=-proelf os=-proelf
;; ;;
or32 | or32-*) openrisc | openrisc-*)
basic_machine=or32-unknown basic_machine=or32-unknown
os=-coff
;; ;;
os400) os400)
basic_machine=powerpc-ibm basic_machine=powerpc-ibm
@ -794,6 +818,12 @@ case $basic_machine in
pc532 | pc532-*) pc532 | pc532-*)
basic_machine=ns32k-pc532 basic_machine=ns32k-pc532
;; ;;
pc98)
basic_machine=i386-pc
;;
pc98-*)
basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentium | p5 | k5 | k6 | nexgen | viac3) pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc basic_machine=i586-pc
;; ;;
@ -850,6 +880,10 @@ case $basic_machine in
basic_machine=i586-unknown basic_machine=i586-unknown
os=-pw32 os=-pw32
;; ;;
rdos)
basic_machine=i386-pc
os=-rdos
;;
rom68k) rom68k)
basic_machine=m68k-rom68k basic_machine=m68k-rom68k
os=-coff os=-coff
@ -876,6 +910,10 @@ case $basic_machine in
sb1el) sb1el)
basic_machine=mipsisa64sb1el-unknown basic_machine=mipsisa64sb1el-unknown
;; ;;
sde)
basic_machine=mipsisa32-sde
os=-elf
;;
sei) sei)
basic_machine=mips-sei basic_machine=mips-sei
os=-seiux os=-seiux
@ -1089,13 +1127,10 @@ case $basic_machine in
we32k) we32k)
basic_machine=we32k-att basic_machine=we32k-att
;; ;;
sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown basic_machine=sh-unknown
;; ;;
sh64) sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
basic_machine=sh64-unknown
;;
sparc | sparcv8 | sparcv9 | sparcv9b)
basic_machine=sparc-sun basic_machine=sparc-sun
;; ;;
cydra) cydra)
@ -1168,20 +1203,23 @@ case $os in
| -aos* \ | -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
| -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* \ | -chorusos* | -chorusrdb* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers*)
# Remember, each alternative MUST END IN *, to match a version number. # Remember, each alternative MUST END IN *, to match a version number.
;; ;;
-qnx*) -qnx*)
@ -1199,7 +1237,7 @@ case $os in
os=`echo $os | sed -e 's|nto|nto-qnx|'` os=`echo $os | sed -e 's|nto|nto-qnx|'`
;; ;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
| -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
;; ;;
-mac*) -mac*)
@ -1333,6 +1371,12 @@ else
# system, and we'll never get to this point. # system, and we'll never get to this point.
case $basic_machine in case $basic_machine in
score-*)
os=-elf
;;
spu-*)
os=-elf
;;
*-acorn) *-acorn)
os=-riscix1.2 os=-riscix1.2
;; ;;
@ -1388,6 +1432,9 @@ case $basic_machine in
*-be) *-be)
os=-beos os=-beos
;; ;;
*-haiku)
os=-haiku
;;
*-ibm) *-ibm)
os=-aix os=-aix
;; ;;
@ -1559,7 +1606,7 @@ case $basic_machine in
esac esac
echo $basic_machine$os echo $basic_machine$os
exit 0 exit
# Local variables: # Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp) # eval: (add-hook 'write-file-hooks 'time-stamp)

8706
configure vendored

File diff suppressed because it is too large Load diff

View file

@ -5,7 +5,7 @@ dnl $Id: configure.in 1415 2004-11-10 23:20:59Z guus $
AC_PREREQ(2.59) AC_PREREQ(2.59)
AC_INIT AC_INIT
AC_CONFIG_SRCDIR([src/tincd.c]) AC_CONFIG_SRCDIR([src/tincd.c])
AM_INIT_AUTOMAKE(tinc, 1.0.4) AM_INIT_AUTOMAKE(tinc, 1.0.5)
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AM_MAINTAINER_MODE AM_MAINTAINER_MODE

7
debian/changelog vendored
View file

@ -1,3 +1,10 @@
tinc (1.0.5-1) unstable; urgency=low
* New upstream release. Closes: #391610
* Add an LSB section to the init script.
-- Guus Sliepen <guus@debian.org> Tue, 14 Nov 2006 16:32:20 +0100
tinc (1.0.4-4) unstable; urgency=low tinc (1.0.4-4) unstable; urgency=low
* Include swedish debconf translation. Closes: #332963 * Include swedish debconf translation. Closes: #332963

4
debian/control vendored
View file

@ -2,8 +2,8 @@ Source: tinc
Section: net Section: net
Priority: optional Priority: optional
Maintainer: Guus Sliepen <guus@debian.org> Maintainer: Guus Sliepen <guus@debian.org>
Standards-Version: 3.6.2 Standards-Version: 3.7.2
Build-Depends: libssl-dev, debhelper (>= 4.1.16), gettext, texi2html, zlib1g-dev, cdbs, liblzo-dev Build-Depends: libssl-dev, debhelper (>= 4.1.16), gettext, texi2html, zlib1g-dev, cdbs, liblzo2-dev
Package: tinc Package: tinc
Architecture: any Architecture: any

23
debian/init.d vendored
View file

@ -1,15 +1,22 @@
#! /bin/sh #! /bin/sh
# #
# System startup script for tinc ### BEGIN INIT INFO
# $Id: init.d,v 1.14.2.4 2000/12/05 09:03:41 zarq Exp $ # Provides: tinc
# Required-Start: $network
# Required-Stop: $network
# Should-Start: $syslog $named
# Should-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start tinc daemons
# Description: Create a file $NETSFILE (/etc/tinc/nets.boot),
# and put all the names of the networks in there.
# These names must be valid directory names under
# $TCONF (/etc/tinc). Lines starting with a # will be
# ignored in this file.
### END INIT INFO
# #
# Based on Lubomir Bulej's Redhat init script. # Based on Lubomir Bulej's Redhat init script.
#
# Create a file $NETSFILE (/etc/tinc/nets.boot), and put all the names of
# the networks in there. These names must be valid directory names under
# $TCONF (/etc/tinc). Lines starting with a # will be ignored in this
# file.
#
DAEMON="/usr/sbin/tincd" DAEMON="/usr/sbin/tincd"
NAME="tinc" NAME="tinc"

View file

@ -1,7 +1,7 @@
#! /bin/sh #! /bin/sh
# depcomp - compile a program generating dependencies as side-effects # depcomp - compile a program generating dependencies as side-effects
scriptversion=2005-02-09.22 scriptversion=2005-07-09.11
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. # Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
@ -17,8 +17,8 @@ scriptversion=2005-02-09.22
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02111-1307, USA. # 02110-1301, USA.
# As a special exception to the GNU General Public License, if you # As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a # distribute this file as part of a program that contains a
@ -467,7 +467,8 @@ cpp)
done done
"$@" -E | "$@" -E |
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile" sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile" rm -f "$depfile"
echo "$object : \\" > "$depfile" echo "$object : \\" > "$depfile"

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am. # Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -39,13 +39,14 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in texinfo.tex
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/aclocal-include.m4 \ am__aclocal_m4_deps = $(top_srcdir)/m4/aclocal-include.m4 \
$(top_srcdir)/m4/attribute.m4 $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/attribute.m4 $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lzo.m4 $(top_srcdir)/m4/malloc.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/lzo.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/openssl.m4 \ $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/nls.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/tuntap.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/realloc.m4 \
$(top_srcdir)/m4/zlib.m4 $(top_srcdir)/configure.in $(top_srcdir)/m4/tuntap.m4 $(top_srcdir)/m4/zlib.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4) $(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@ -100,6 +101,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@ EGREP = @EGREP@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
GMSGFMT = @GMSGFMT@ GMSGFMT = @GMSGFMT@
GREP = @GREP@
HAVE_TUNTAP = @HAVE_TUNTAP@ HAVE_TUNTAP = @HAVE_TUNTAP@
INCLUDES = @INCLUDES@ INCLUDES = @INCLUDES@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
@ -141,8 +143,6 @@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@
XGETTEXT = @XGETTEXT@ XGETTEXT = @XGETTEXT@
ac_ct_CC = @ac_ct_CC@ ac_ct_CC = @ac_ct_CC@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@ am__include = @am__include@
@ -157,23 +157,30 @@ build_cpu = @build_cpu@
build_os = @build_os@ build_os = @build_os@
build_vendor = @build_vendor@ build_vendor = @build_vendor@
datadir = @datadir@ datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host = @host@ host = @host@
host_alias = @host_alias@ host_alias = @host_alias@
host_cpu = @host_cpu@ host_cpu = @host_cpu@
host_os = @host_os@ host_os = @host_os@
host_vendor = @host_vendor@ host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@ includedir = @includedir@
infodir = @infodir@ infodir = @infodir@
install_sh = @install_sh@ install_sh = @install_sh@
libdir = @libdir@ libdir = @libdir@
libexecdir = @libexecdir@ libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@ localstatedir = @localstatedir@
mandir = @mandir@ mandir = @mandir@
mkdir_p = @mkdir_p@ mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@ oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@ prefix = @prefix@
program_transform_name = @program_transform_name@ program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@ sysconfdir = @sysconfdir@
@ -225,9 +232,11 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
tinc.info: tinc.texi tinc.info: tinc.texi
restore=: && backupdir="$(am__leading_dot)am$$$$" && \ restore=: && backupdir="$(am__leading_dot)am$$$$" && \
rm -rf $$backupdir && mkdir $$backupdir && \ rm -rf $$backupdir && mkdir $$backupdir && \
if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
done; \ done; \
else :; fi && \
if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
-o $@ `test -f 'tinc.texi' || echo '$(srcdir)/'`tinc.texi; \ -o $@ `test -f 'tinc.texi' || echo '$(srcdir)/'`tinc.texi; \
then \ then \
@ -262,6 +271,7 @@ tinc.html: tinc.texi
exit 1; \ exit 1; \
fi fi
.dvi.ps: .dvi.ps:
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
$(DVIPS) -o $@ $< $(DVIPS) -o $@ $<
uninstall-info-am: uninstall-info-am:
@ -294,10 +304,13 @@ dist-info: $(INFO_DEPS)
$(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
esac; \ esac; \
if test -f $$base; then d=.; else d=$(srcdir); fi; \ if test -f $$base; then d=.; else d=$(srcdir); fi; \
for file in $$d/$$base*; do \ base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
if test -f $$file; then \
relfile=`expr "$$file" : "$$d/\(.*\)"`; \ relfile=`expr "$$file" : "$$d/\(.*\)"`; \
test -f $(distdir)/$$relfile || \ test -f $(distdir)/$$relfile || \
cp -p $$file $(distdir)/$$relfile; \ cp -p $$file $(distdir)/$$relfile; \
else :; fi; \
done; \ done; \
done done

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
.Dd 2002-04-09 .Dd 2002-04-09
.Dt TINC.CONF 5 .Dt TINC.CONF 5
.\" Manual page created by: .\" Manual page created by:
.\" Ivo Timmermans <ivo@tinc-vpn.org> .\" Ivo Timmermans
.\" Guus Sliepen <guus@tinc-vpn.org> .\" Guus Sliepen <guus@tinc-vpn.org>
.Sh NAME .Sh NAME
.Nm tinc.conf .Nm tinc.conf
@ -120,13 +120,6 @@ will by default listen on all of them for incoming connections.
It is possible to bind only to a single interface with this variable. It is possible to bind only to a single interface with this variable.
.Pp .Pp
This option may not work on all platforms. This option may not work on all platforms.
.It Va BlockingTCP Li = yes | no Po no Pc Bq experimental
This options selects whether TCP connections, when established, should use blocking writes.
When turned off, tinc will never block when a TCP connection becomes congested, but will have to terminate that connection instead.
If turned on, tinc will not terminate connections but will block, thereby unable to process data to/from other connections.
Turn this option on if you also use
.Va TCPOnly
and tinc terminates connections frequently.
.It Va ConnectTo Li = Ar name .It Va ConnectTo Li = Ar name
Specifies which other tinc daemon to connect to on startup. Specifies which other tinc daemon to connect to on startup.
Multiple Multiple
@ -154,6 +147,18 @@ instead of
.Va Device . .Va Device .
The info pages of the tinc package contain more information The info pages of the tinc package contain more information
about configuring the virtual network device. about configuring the virtual network device.
.It Va GraphDumpFile Li = Ar filename Bq experimental
If this option is present,
.Nm tinc
will dump the current network graph to the file
.Ar filename
every minute, unless there were no changes to the graph.
The file is in a format that can be read by graphviz tools.
If
.Ar filename
starts with a pipe symbol |,
then the rest of the filename is interpreted as a shell command
that is executed, the graph is then sent to stdin.
.It Va Hostnames Li = yes | no Pq no .It Va Hostnames Li = yes | no Pq no
This option selects whether IP addresses (both real and on the VPN) should This option selects whether IP addresses (both real and on the VPN) should
be resolved. Since DNS lookups are blocking, it might affect tinc's be resolved. Since DNS lookups are blocking, it might affect tinc's
@ -206,11 +211,13 @@ while no routing table is managed.
.It Va Name Li = Ar name Bq required .It Va Name Li = Ar name Bq required
This is the name which identifies this tinc daemon. This is the name which identifies this tinc daemon.
It must be unique for the virtual private network this daemon will connect to. It must be unique for the virtual private network this daemon will connect to.
.It Va PingTimeout Li = Ar seconds Pq 60 .It Va PingInterval Li = Ar seconds Pq 60
The number of seconds of inactivity that The number of seconds of inactivity that
.Nm tinc .Nm tinc
will wait before sending a probe to the other end. will wait before sending a probe to the other end.
If that other end doesn't answer within that same amount of time, .It Va PingTimeout Li = Ar seconds Pq 5
The number of seconds to wait for a response to pings or to allow meta
connections to block. If the other end doesn't respond within this time,
the connection is terminated, the connection is terminated,
and the others will be notified of this. and the others will be notified of this.
.It Va PriorityInheritance Li = yes | no Po no Pc Bq experimental .It Va PriorityInheritance Li = yes | no Po no Pc Bq experimental
@ -247,7 +254,7 @@ no secrets are revealed by sending out this information.
.Bl -tag -width indent .Bl -tag -width indent
.It Va Address Li = Ar address Bq recommended .It Va Address Li = Ar address Bq recommended
The IP address or hostname of this tinc daemon on the real network. The IP address or hostname of this tinc daemon on the real network.
This wil only be used when trying to make an outgoing connection to this tinc daemon. This will only be used when trying to make an outgoing connection to this tinc daemon.
Multiple Multiple
.Va Address .Va Address
variables can be specified, in which case each address will be tried until a working variables can be specified, in which case each address will be tried until a working
@ -351,6 +358,10 @@ becomes reachable.
This script is started when the tinc daemon with name This script is started when the tinc daemon with name
.Ar HOST .Ar HOST
becomes unreachable. becomes unreachable.
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /host-up
This script is started when any host becomes reachable.
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /host-down
This script is started when any host becomes unreachable.
.It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /subnet-up .It Pa @sysconfdir@/tinc/ Ns Ar NETNAME Ns Pa /subnet-up
This script is started when a Subnet becomes reachable. This script is started when a Subnet becomes reachable.
The Subnet and the node it belongs to are passed in environment variables. The Subnet and the node it belongs to are passed in environment variables.

View file

@ -1,17 +1,17 @@
This is tinc.info, produced by makeinfo version 4.7 from tinc.texi. This is tinc.info, produced by makeinfo version 4.8 from tinc.texi.
INFO-DIR-SECTION Networking tools INFO-DIR-SECTION Networking tools
START-INFO-DIR-ENTRY START-INFO-DIR-ENTRY
* tinc: (tinc). The tinc Manual. * tinc: (tinc). The tinc Manual.
END-INFO-DIR-ENTRY END-INFO-DIR-ENTRY
This is the info manual for tinc version 1.0.4, a Virtual Private This is the info manual for tinc version 1.0.5, a Virtual Private
Network daemon. Network daemon.
Copyright (C) 1998-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Guus Copyright (C) 1998-2006 Ivo Timmermans, Guus Sliepen
Sliepen <guus@tinc-vpn.org> and Wessel Dankers <wsl@tinc-vpn.org>. <guus@tinc-vpn.org> and Wessel Dankers <wsl@tinc-vpn.org>.
$Id: tinc.texi 1439 2005-05-04 18:09:30Z guus $ $Id: tinc.texi 1467 2006-11-11 20:37:58Z guus $
Permission is granted to make and distribute verbatim copies of this Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are manual provided the copyright notice and this permission notice are
@ -760,15 +760,6 @@ BindToInterface = <INTERFACE> [experimental]
This option may not work on all platforms. This option may not work on all platforms.
BlockingTCP = <yes|no> (no) [experimental]
This options selects whether TCP connections, when established,
should use blocking writes. When turned off, tinc will never
block when a TCP connection becomes congested, but will have to
terminate that connection instead. If turned on, tinc will not
terminate connections but will block, thereby unable to process
data to/from other connections. Turn this option on if you also
use TCPOnly and tinc terminates connections frequently.
ConnectTo = <NAME> ConnectTo = <NAME>
Specifies which other tinc daemon to connect to on startup. Specifies which other tinc daemon to connect to on startup.
Multiple ConnectTo variables may be specified, in which case Multiple ConnectTo variables may be specified, in which case
@ -787,6 +778,14 @@ Device = <DEVICE> (`/dev/tap0', `/dev/net/tun' or other depending on platform)
that you can only use one device per daemon. See also *Note that you can only use one device per daemon. See also *Note
Device files::. Device files::.
GraphDumpFile = <FILENAME> [experimental]
If this option is present, tinc will dump the current network
graph to the file FILENAME every minute, unless there were no
changes to the graph. The file is in a format that can be read by
graphviz tools. If FILENAME starts with a pipe symbol |, then the
rest of the filename is interpreted as a shell command that is
executed, the graph is then sent to stdin.
Hostnames = <yes|no> (no) Hostnames = <yes|no> (no)
This option selects whether IP addresses (both real and on the VPN) This option selects whether IP addresses (both real and on the VPN)
should be resolved. Since DNS lookups are blocking, it might should be resolved. Since DNS lookups are blocking, it might
@ -847,11 +846,15 @@ MACExpire = <SECONDS> (600)
Name = <NAME> [required] Name = <NAME> [required]
This is a symbolic name for this connection. It can be anything This is a symbolic name for this connection. It can be anything
PingTimeout = <SECONDS> (60) PingInterval = <SECONDS> (60)
The number of seconds of inactivity that tinc will wait before The number of seconds of inactivity that tinc will wait before
sending a probe to the other end. If that other end doesn't sending a probe to the other end.
answer within that same amount of seconds, the connection is
terminated, and the others will be notified of this. PingTimeout = <SECONDS> (5)
The number of seconds to wait for a response to pings or to allow
meta connections to block. If the other end doesn't respond within
this time, the connection is terminated, and the others will be
notified of this.
PriorityInheritance = <yes|no> (no) [experimental] PriorityInheritance = <yes|no> (no) [experimental]
When this option is enabled the value of the TOS field of tunneled When this option is enabled the value of the TOS field of tunneled
@ -998,6 +1001,12 @@ scripts should have the extension .bat.
This script is started when the tinc daemon with name HOST becomes This script is started when the tinc daemon with name HOST becomes
unreachable. unreachable.
`/usr/local/etc/tinc/NETNAME/host-up'
This script is started when any host becomes reachable.
`/usr/local/etc/tinc/NETNAME/host-down'
This script is started when any host becomes unreachable.
`/usr/local/etc/tinc/NETNAME/subnet-up' `/usr/local/etc/tinc/NETNAME/subnet-up'
This script is started when a Subnet becomes reachable. The This script is started when a Subnet becomes reachable. The
Subnet and the node it belongs to are passed in environment Subnet and the node it belongs to are passed in environment
@ -2206,8 +2215,6 @@ Concept Index
(line 12) (line 12)
* BindToInterface: Main configuration variables. * BindToInterface: Main configuration variables.
(line 19) (line 19)
* BlockingTCP: Main configuration variables.
(line 27)
* Cabal: Security. (line 6) * Cabal: Security. (line 6)
* CHAL_REPLY: Authentication protocol. * CHAL_REPLY: Authentication protocol.
(line 10) (line 10)
@ -2224,109 +2231,113 @@ Concept Index
(line 17) (line 17)
* connection: The connection. (line 6) * connection: The connection. (line 6)
* ConnectTo: Main configuration variables. * ConnectTo: Main configuration variables.
(line 36) (line 27)
* daemon: Running tinc. (line 11) * daemon: Running tinc. (line 11)
* data-protocol: The meta-connection. (line 18) * data-protocol: The meta-connection. (line 18)
* debug level: Runtime options. (line 17) * debug level: Runtime options. (line 17)
* debug levels: Debug levels. (line 6) * debug levels: Debug levels. (line 6)
* DEL_EDGE: The meta-protocol. (line 47) * DEL_EDGE: The meta-protocol. (line 47)
* DEL_SUBNET: The meta-protocol. (line 47) * DEL_SUBNET: The meta-protocol. (line 47)
* DEVICE: Scripts. (line 49) * DEVICE: Scripts. (line 55)
* Device: Main configuration variables. * Device: Main configuration variables.
(line 47) (line 38)
* device files: Device files. (line 6) * device files: Device files. (line 6)
* Digest: Host configuration variables. * Digest: Host configuration variables.
(line 22) (line 22)
* encapsulating: The UDP tunnel. (line 30) * encapsulating: The UDP tunnel. (line 30)
* encryption: Encryption of network packets. * encryption: Encryption of network packets.
(line 6) (line 6)
* environment variables: Scripts. (line 37) * environment variables: Scripts. (line 43)
* ethertap: Configuration of Linux kernels 2.1.60 up to 2.4.0. * ethertap: Configuration of Linux kernels 2.1.60 up to 2.4.0.
(line 6) (line 6)
* example: Example configuration. * example: Example configuration.
(line 6) (line 6)
* frame type: The UDP tunnel. (line 6) * frame type: The UDP tunnel. (line 6)
* GraphDumpFile: Main configuration variables.
(line 45)
* Hostnames: Main configuration variables. * Hostnames: Main configuration variables.
(line 54) (line 53)
* hub: Main configuration variables. * hub: Main configuration variables.
(line 95) (line 94)
* ID: Authentication protocol. * ID: Authentication protocol.
(line 10) (line 10)
* IndirectData: Host configuration variables. * IndirectData: Host configuration variables.
(line 27) (line 27)
* INTERFACE: Scripts. (line 52) * INTERFACE: Scripts. (line 58)
* Interface: Main configuration variables. * Interface: Main configuration variables.
(line 64) (line 63)
* IRC: Contact information. (line 9) * IRC: Contact information. (line 9)
* key generation: Generating keypairs. (line 6) * key generation: Generating keypairs. (line 6)
* KEY_CHANGED: The meta-protocol. (line 64) * KEY_CHANGED: The meta-protocol. (line 64)
* KeyExpire: Main configuration variables. * KeyExpire: Main configuration variables.
(line 100) (line 99)
* libraries: Libraries. (line 6) * libraries: Libraries. (line 6)
* license: OpenSSL. (line 36) * license: OpenSSL. (line 36)
* lzo: lzo. (line 6) * lzo: lzo. (line 6)
* MACExpire: Main configuration variables. * MACExpire: Main configuration variables.
(line 106) (line 105)
* MACLength: Host configuration variables. * MACLength: Host configuration variables.
(line 35) (line 35)
* meta-protocol: The meta-connection. (line 18) * meta-protocol: The meta-connection. (line 18)
* META_KEY: Authentication protocol. * META_KEY: Authentication protocol.
(line 10) (line 10)
* Mode: Main configuration variables. * Mode: Main configuration variables.
(line 72) (line 71)
* multiple networks: Multiple networks. (line 6) * multiple networks: Multiple networks. (line 6)
* NAME: Scripts. (line 46) * NAME: Scripts. (line 52)
* Name: Main configuration variables. * Name: Main configuration variables.
(line 111) (line 110)
* netmask: Network interfaces. (line 34) * netmask: Network interfaces. (line 34)
* NETNAME: Scripts. (line 43) * NETNAME: Scripts. (line 49)
* netname: Multiple networks. (line 6) * netname: Multiple networks. (line 6)
* Network Administrators Guide: Configuration introduction. * Network Administrators Guide: Configuration introduction.
(line 15) (line 15)
* NODE: Scripts. (line 56) * NODE: Scripts. (line 62)
* OpenSSL: OpenSSL. (line 6) * OpenSSL: OpenSSL. (line 6)
* options: Runtime options. (line 9) * options: Runtime options. (line 9)
* PEM format: Host configuration variables. * PEM format: Host configuration variables.
(line 52) (line 52)
* PING: The meta-protocol. (line 89) * PING: The meta-protocol. (line 89)
* PingInterval: Main configuration variables.
(line 113)
* PingTimeout: Main configuration variables. * PingTimeout: Main configuration variables.
(line 114) (line 117)
* platforms: Supported platforms. (line 6) * platforms: Supported platforms. (line 6)
* PONG: The meta-protocol. (line 89) * PONG: The meta-protocol. (line 89)
* Port: Host configuration variables. * Port: Host configuration variables.
(line 40) (line 40)
* port numbers: Other files. (line 17) * port numbers: Other files. (line 17)
* PriorityInheritance: Main configuration variables. * PriorityInheritance: Main configuration variables.
(line 120) (line 123)
* private: Virtual Private Networks. * private: Virtual Private Networks.
(line 10) (line 10)
* PrivateKey: Main configuration variables. * PrivateKey: Main configuration variables.
(line 125) (line 128)
* PrivateKeyFile: Main configuration variables. * PrivateKeyFile: Main configuration variables.
(line 131) (line 134)
* PublicKey: Host configuration variables. * PublicKey: Host configuration variables.
(line 44) (line 44)
* PublicKeyFile: Host configuration variables. * PublicKeyFile: Host configuration variables.
(line 47) (line 47)
* release: Supported platforms. (line 14) * release: Supported platforms. (line 14)
* REMOTEADDRESS: Scripts. (line 61) * REMOTEADDRESS: Scripts. (line 67)
* REMOTEPORT: Scripts. (line 64) * REMOTEPORT: Scripts. (line 70)
* REQ_KEY: The meta-protocol. (line 64) * REQ_KEY: The meta-protocol. (line 64)
* requirements: Libraries. (line 6) * requirements: Libraries. (line 6)
* router: Main configuration variables. * router: Main configuration variables.
(line 75) (line 74)
* runtime options: Runtime options. (line 9) * runtime options: Runtime options. (line 9)
* scalability: tinc. (line 19) * scalability: tinc. (line 19)
* scripts: Scripts. (line 6) * scripts: Scripts. (line 6)
* server: How connections work. * server: How connections work.
(line 18) (line 18)
* signals: Signals. (line 6) * signals: Signals. (line 6)
* SUBNET: Scripts. (line 68) * SUBNET: Scripts. (line 74)
* Subnet: Host configuration variables. * Subnet: Host configuration variables.
(line 59) (line 59)
* SVPN: Security. (line 11) * SVPN: Security. (line 11)
* switch: Main configuration variables. * switch: Main configuration variables.
(line 84) (line 83)
* TCP: The meta-connection. (line 10) * TCP: The meta-connection. (line 10)
* TCPonly: Host configuration variables. * TCPonly: Host configuration variables.
(line 82) (line 82)
@ -2338,7 +2349,7 @@ Concept Index
* tincd: tinc. (line 14) * tincd: tinc. (line 14)
* traditional VPNs: tinc. (line 19) * traditional VPNs: tinc. (line 19)
* TunnelServer: Main configuration variables. * TunnelServer: Main configuration variables.
(line 139) (line 142)
* UDP <1>: Encryption of network packets. * UDP <1>: Encryption of network packets.
(line 12) (line 12)
* UDP: The UDP tunnel. (line 30) * UDP: The UDP tunnel. (line 30)
@ -2356,67 +2367,67 @@ Concept Index
 
Tag Table: Tag Table:
Node: Top879 Node: Top860
Node: Introduction1178 Node: Introduction1159
Node: Virtual Private Networks1988 Node: Virtual Private Networks1969
Node: tinc3713 Node: tinc3694
Node: Supported platforms5240 Node: Supported platforms5221
Node: Preparations5938 Node: Preparations5919
Node: Configuring the kernel6194 Node: Configuring the kernel6175
Node: Configuration of Linux kernels 2.1.60 up to 2.4.06674 Node: Configuration of Linux kernels 2.1.60 up to 2.4.06655
Node: Configuration of Linux kernels 2.4.0 and higher8046 Node: Configuration of Linux kernels 2.4.0 and higher8027
Node: Configuration of FreeBSD kernels9286 Node: Configuration of FreeBSD kernels9267
Node: Configuration of OpenBSD kernels9693 Node: Configuration of OpenBSD kernels9674
Node: Configuration of NetBSD kernels10185 Node: Configuration of NetBSD kernels10166
Node: Configuration of Solaris kernels10590 Node: Configuration of Solaris kernels10571
Node: Configuration of Darwin (MacOS/X) kernels11251 Node: Configuration of Darwin (MacOS/X) kernels11232
Node: Configuration of Windows11954 Node: Configuration of Windows11935
Node: Libraries12468 Node: Libraries12449
Node: OpenSSL12856 Node: OpenSSL12837
Node: zlib15132 Node: zlib15113
Node: lzo15961 Node: lzo15942
Node: Installation16748 Node: Installation16729
Node: Building and installing tinc17763 Node: Building and installing tinc17744
Node: Darwin (MacOS/X) build environment18422 Node: Darwin (MacOS/X) build environment18403
Node: Cygwin (Windows) build environment18990 Node: Cygwin (Windows) build environment18971
Node: MinGW (Windows) build environment19578 Node: MinGW (Windows) build environment19559
Node: System files20102 Node: System files20083
Node: Device files20367 Node: Device files20348
Node: Other files21553 Node: Other files21534
Node: Configuration22166 Node: Configuration22147
Node: Configuration introduction22477 Node: Configuration introduction22458
Node: Multiple networks23750 Node: Multiple networks23731
Node: How connections work25226 Node: How connections work25207
Node: Configuration files26448 Node: Configuration files26429
Node: Main configuration variables27475 Node: Main configuration variables27456
Node: Host configuration variables33939 Node: Host configuration variables33953
Node: Scripts38235 Node: Scripts38249
Node: How to configure40790 Node: How to configure41008
Node: Generating keypairs42073 Node: Generating keypairs42291
Node: Network interfaces42572 Node: Network interfaces42790
Node: Example configuration44440 Node: Example configuration44658
Node: Running tinc49892 Node: Running tinc50110
Node: Runtime options50482 Node: Runtime options50700
Node: Signals52519 Node: Signals52737
Node: Debug levels53588 Node: Debug levels53806
Node: Solving problems54524 Node: Solving problems54742
Node: Error messages55954 Node: Error messages56172
Node: Sending bug reports60276 Node: Sending bug reports60494
Node: Technical information61228 Node: Technical information61446
Node: The connection61459 Node: The connection61677
Node: The UDP tunnel61771 Node: The UDP tunnel61989
Node: The meta-connection64832 Node: The meta-connection65050
Node: The meta-protocol66301 Node: The meta-protocol66519
Node: Security71310 Node: Security71528
Node: Authentication protocol72440 Node: Authentication protocol72658
Node: Encryption of network packets77444 Node: Encryption of network packets77662
Node: Security issues78817 Node: Security issues79035
Node: Platform specific information80434 Node: Platform specific information80652
Node: Interface configuration80662 Node: Interface configuration80880
Node: Routes82561 Node: Routes82779
Node: About us84477 Node: About us84695
Node: Contact information84652 Node: Contact information84870
Node: Authors85056 Node: Authors85274
Node: Concept Index85482 Node: Concept Index85700
 
End Tag Table End Tag Table

View file

@ -1,5 +1,5 @@
\input texinfo @c -*-texinfo-*- \input texinfo @c -*-texinfo-*-
@c $Id: tinc.texi 1439 2005-05-04 18:09:30Z guus $ @c $Id: tinc.texi 1467 2006-11-11 20:37:58Z guus $
@c %**start of header @c %**start of header
@setfilename tinc.info @setfilename tinc.info
@settitle tinc Manual @settitle tinc Manual
@ -16,11 +16,11 @@
This is the info manual for @value{PACKAGE} version @value{VERSION}, a Virtual Private Network daemon. This is the info manual for @value{PACKAGE} version @value{VERSION}, a Virtual Private Network daemon.
Copyright @copyright{} 1998-2005 Ivo Timmermans Copyright @copyright{} 1998-2006 Ivo Timmermans,
<ivo@@tinc-vpn.org>, Guus Sliepen <guus@@tinc-vpn.org> and Guus Sliepen <guus@@tinc-vpn.org> and
Wessel Dankers <wsl@@tinc-vpn.org>. Wessel Dankers <wsl@@tinc-vpn.org>.
$Id: tinc.texi 1439 2005-05-04 18:09:30Z guus $ $Id: tinc.texi 1467 2006-11-11 20:37:58Z guus $
Permission is granted to make and distribute verbatim copies of this Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are manual provided the copyright notice and this permission notice are
@ -43,11 +43,11 @@ permission notice identical to this one.
@cindex copyright @cindex copyright
This is the info manual for @value{PACKAGE} version @value{VERSION}, a Virtual Private Network daemon. This is the info manual for @value{PACKAGE} version @value{VERSION}, a Virtual Private Network daemon.
Copyright @copyright{} 1998-2005 Ivo Timmermans Copyright @copyright{} 1998-2006 Ivo Timmermans,
<ivo@@tinc-vpn.org>, Guus Sliepen <guus@@tinc-vpn.org> and Guus Sliepen <guus@@tinc-vpn.org> and
Wessel Dankers <wsl@@tinc-vpn.org>. Wessel Dankers <wsl@@tinc-vpn.org>.
$Id: tinc.texi 1439 2005-05-04 18:09:30Z guus $ $Id: tinc.texi 1467 2006-11-11 20:37:58Z guus $
Permission is granted to make and distribute verbatim copies of this Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are manual provided the copyright notice and this permission notice are
@ -841,15 +841,6 @@ variable.
This option may not work on all platforms. This option may not work on all platforms.
@cindex BlockingTCP
@item BlockingTCP = <yes|no> (no) [experimental]
This options selects whether TCP connections, when established, should use blocking writes.
When turned off, tinc will never block when a TCP connection becomes congested,
but will have to terminate that connection instead.
If turned on, tinc will not terminate connections but will block,
thereby unable to process data to/from other connections.
Turn this option on if you also use TCPOnly and tinc terminates connections frequently.
@cindex ConnectTo @cindex ConnectTo
@item ConnectTo = <@var{name}> @item ConnectTo = <@var{name}>
Specifies which other tinc daemon to connect to on startup. Specifies which other tinc daemon to connect to on startup.
@ -871,6 +862,16 @@ Under Windows, use @var{Interface} instead of @var{Device}.
Note that you can only use one device per daemon. Note that you can only use one device per daemon.
See also @ref{Device files}. See also @ref{Device files}.
@cindex GraphDumpFile
@item GraphDumpFile = <@var{filename}> [experimental]
If this option is present,
tinc will dump the current network graph to the file @var{filename}
every minute, unless there were no changes to the graph.
The file is in a format that can be read by graphviz tools.
If @var{filename} starts with a pipe symbol |,
then the rest of the filename is interpreted as a shell command
that is executed, the graph is then sent to stdin.
@cindex Hostnames @cindex Hostnames
@item Hostnames = <yes|no> (no) @item Hostnames = <yes|no> (no)
This option selects whether IP addresses (both real and on the VPN) This option selects whether IP addresses (both real and on the VPN)
@ -933,12 +934,16 @@ This only has effect when Mode is set to "switch".
@item Name = <@var{name}> [required] @item Name = <@var{name}> [required]
This is a symbolic name for this connection. It can be anything This is a symbolic name for this connection. It can be anything
@cindex PingTimeout @cindex PingInterval
@item PingTimeout = <@var{seconds}> (60) @item PingInterval = <@var{seconds}> (60)
The number of seconds of inactivity that tinc will wait before sending a The number of seconds of inactivity that tinc will wait before sending a
probe to the other end. If that other end doesn't answer within that probe to the other end.
same amount of seconds, the connection is terminated, and the others
will be notified of this. @cindex PingTimeout
@item PingTimeout = <@var{seconds}> (5)
The number of seconds to wait for a response to pings or to allow meta
connections to block. If the other end doesn't respond within this time,
the connection is terminated, and the others will be notified of this.
@cindex PriorityInheritance @cindex PriorityInheritance
@item PriorityInheritance = <yes|no> (no) [experimental] @item PriorityInheritance = <yes|no> (no) [experimental]
@ -1101,6 +1106,12 @@ This script is started when the tinc daemon with name @var{host} becomes reachab
@item @value{sysconfdir}/tinc/@var{netname}/hosts/@var{host}-down @item @value{sysconfdir}/tinc/@var{netname}/hosts/@var{host}-down
This script is started when the tinc daemon with name @var{host} becomes unreachable. This script is started when the tinc daemon with name @var{host} becomes unreachable.
@item @value{sysconfdir}/tinc/@var{netname}/host-up
This script is started when any host becomes reachable.
@item @value{sysconfdir}/tinc/@var{netname}/host-down
This script is started when any host becomes unreachable.
@item @value{sysconfdir}/tinc/@var{netname}/subnet-up @item @value{sysconfdir}/tinc/@var{netname}/subnet-up
This script is started when a Subnet becomes reachable. This script is started when a Subnet becomes reachable.
The Subnet and the node it belongs to are passed in environment variables. The Subnet and the node it belongs to are passed in environment variables.

View file

@ -1,7 +1,7 @@
.Dd 2002-03-25 .Dd 2002-03-25
.Dt TINCD 8 .Dt TINCD 8
.\" Manual page created by: .\" Manual page created by:
.\" Ivo Timmermans <ivo@tinc-vpn.org> .\" Ivo Timmermans
.\" Guus Sliepen <guus@tinc-vpn.org> .\" Guus Sliepen <guus@tinc-vpn.org>
.Sh NAME .Sh NAME
.Nm tincd .Nm tincd
@ -181,7 +181,7 @@ tinc comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it under certain conditions; This is free software, and you are welcome to redistribute it under certain conditions;
see the file COPYING for details. see the file COPYING for details.
.Sh AUTHORS .Sh AUTHORS
.An "Ivo Timmermans" Aq ivo@tinc-vpn.org .An "Ivo Timmermans"
.An "Guus Sliepen" Aq guus@tinc-vpn.org .An "Guus Sliepen" Aq guus@tinc-vpn.org
.Pp .Pp
And thanks to many others for their contributions to tinc! And thanks to many others for their contributions to tinc!

8
have.h
View file

@ -1,7 +1,7 @@
/* /*
have.h -- include headers which are known to exist have.h -- include headers which are known to exist
Copyright (C) 1998-2005 Ivo Timmermans <ivo@tinc-vpn.org> Copyright (C) 1998-2005 Ivo Timmermans
2003-2005 Guus Sliepen <guus@tinc-vpn.org> 2003-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -43,6 +43,10 @@
#include <inttypes.h> #include <inttypes.h>
#endif #endif
#ifdef HAVE_ALLOCA_H
#include <alloca.h>
#endif
/* Include system specific headers */ /* Include system specific headers */
#ifdef HAVE_SYSLOG_H #ifdef HAVE_SYSLOG_H

View file

@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# install - install a program, script, or datafile # install - install a program, script, or datafile
scriptversion=2005-02-02.21 scriptversion=2005-05-14.22
# This originates from X11R5 (mit/util/scripts/install.sh), which was # This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the # later released in X11R6 (xc/config/util/install.sh) with the

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am. # Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -17,8 +17,6 @@
# $Id: Makefile.am 1374 2004-03-21 14:21:22Z guus $ # $Id: Makefile.am 1374 2004-03-21 14:21:22Z guus $
SOURCES = $(libvpn_a_SOURCES)
srcdir = @srcdir@ srcdir = @srcdir@
top_srcdir = @top_srcdir@ top_srcdir = @top_srcdir@
VPATH = @srcdir@ VPATH = @srcdir@
@ -47,13 +45,14 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/aclocal-include.m4 \ am__aclocal_m4_deps = $(top_srcdir)/m4/aclocal-include.m4 \
$(top_srcdir)/m4/attribute.m4 $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/attribute.m4 $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lzo.m4 $(top_srcdir)/m4/malloc.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/lzo.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/openssl.m4 \ $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/nls.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/tuntap.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/realloc.m4 \
$(top_srcdir)/m4/zlib.m4 $(top_srcdir)/configure.in $(top_srcdir)/m4/tuntap.m4 $(top_srcdir)/m4/zlib.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4) $(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@ -104,6 +103,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@ EGREP = @EGREP@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
GMSGFMT = @GMSGFMT@ GMSGFMT = @GMSGFMT@
GREP = @GREP@
HAVE_TUNTAP = @HAVE_TUNTAP@ HAVE_TUNTAP = @HAVE_TUNTAP@
INCLUDES = @INCLUDES@ -I. -I$(top_builddir) INCLUDES = @INCLUDES@ -I. -I$(top_builddir)
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
@ -145,8 +145,6 @@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@
XGETTEXT = @XGETTEXT@ XGETTEXT = @XGETTEXT@
ac_ct_CC = @ac_ct_CC@ ac_ct_CC = @ac_ct_CC@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@ am__include = @am__include@
@ -161,23 +159,30 @@ build_cpu = @build_cpu@
build_os = @build_os@ build_os = @build_os@
build_vendor = @build_vendor@ build_vendor = @build_vendor@
datadir = @datadir@ datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host = @host@ host = @host@
host_alias = @host_alias@ host_alias = @host_alias@
host_cpu = @host_cpu@ host_cpu = @host_cpu@
host_os = @host_os@ host_os = @host_os@
host_vendor = @host_vendor@ host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@ includedir = @includedir@
infodir = @infodir@ infodir = @infodir@
install_sh = @install_sh@ install_sh = @install_sh@
libdir = @libdir@ libdir = @libdir@
libexecdir = @libexecdir@ libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@ localstatedir = @localstatedir@
mandir = @mandir@ mandir = @mandir@
mkdir_p = @mkdir_p@ mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@ oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@ prefix = @prefix@
program_transform_name = @program_transform_name@ program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@ sysconfdir = @sysconfdir@

View file

@ -1,8 +1,8 @@
/* /*
avl_tree.c -- avl_ tree and linked list convenience avl_tree.c -- avl_ tree and linked list convenience
Copyright (C) 1998 Michael H. Buselli Copyright (C) 1998 Michael H. Buselli
2000-2005 Ivo Timmermans <ivo@tinc-vpn.org>, 2000-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
2000-2005 Wessel Dankers <wsl@tinc-vpn.org> 2000-2005 Wessel Dankers <wsl@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
@ -29,7 +29,7 @@
library for inclusion into tinc (http://www.tinc-vpn.org/) by library for inclusion into tinc (http://www.tinc-vpn.org/) by
Guus Sliepen <guus@tinc-vpn.org>. Guus Sliepen <guus@tinc-vpn.org>.
$Id: avl_tree.c 1439 2005-05-04 18:09:30Z guus $ $Id: avl_tree.c 1470 2006-11-11 22:45:45Z guus $
*/ */
#include "system.h" #include "system.h"
@ -656,7 +656,7 @@ void avl_delete_tree(avl_tree_t *tree)
{ {
avl_node_t *node, *next; avl_node_t *node, *next;
for(node = tree->root; node; node = next) { for(node = tree->head; node; node = next) {
next = node->next; next = node->next;
avl_free_node(tree, node); avl_free_node(tree, node);
} }

View file

@ -1,8 +1,8 @@
/* /*
avl_tree.h -- header file for avl_tree.c avl_tree.h -- header file for avl_tree.c
Copyright (C) 1998 Michael H. Buselli Copyright (C) 1998 Michael H. Buselli
2000-2005 Ivo Timmermans <ivo@tinc-vpn.org>, 2000-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
2000-2005 Wessel Dankers <wsl@tinc-vpn.org> 2000-2005 Wessel Dankers <wsl@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
@ -29,7 +29,7 @@
library for inclusion into tinc (http://www.tinc-vpn.org/) by library for inclusion into tinc (http://www.tinc-vpn.org/) by
Guus Sliepen <guus@tinc-vpn.org>. Guus Sliepen <guus@tinc-vpn.org>.
$Id: avl_tree.h 1439 2005-05-04 18:09:30Z guus $ $Id: avl_tree.h 1452 2006-04-26 13:52:58Z guus $
*/ */

View file

@ -1,7 +1,7 @@
/* /*
dropin.c -- a set of drop-in replacements for libc functions dropin.c -- a set of drop-in replacements for libc functions
Copyright (C) 2000-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 2000-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: dropin.c 1439 2005-05-04 18:09:30Z guus $ $Id: dropin.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"

View file

@ -1,7 +1,7 @@
/* /*
dropin.h -- header file for dropin.c dropin.h -- header file for dropin.c
Copyright (C) 2000-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 2000-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: dropin.h 1439 2005-05-04 18:09:30Z guus $ $Id: dropin.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __DROPIN_H__ #ifndef __DROPIN_H__

View file

@ -1,7 +1,7 @@
/* /*
ethernet.h -- missing Ethernet related definitions ethernet.h -- missing Ethernet related definitions
Copyright (C) 2005 Ivo Timmermans <ivo@tinc-vpn.org> Copyright (C) 2005 Ivo Timmermans
2005 Guus Sliepen <guus@tinc-vpn.org> 2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: ethernet.h 1439 2005-05-04 18:09:30Z guus $ $Id: ethernet.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_ETHERNET_H__ #ifndef __TINC_ETHERNET_H__

View file

@ -1,7 +1,7 @@
/* /*
ipv4.h -- missing IPv4 related definitions ipv4.h -- missing IPv4 related definitions
Copyright (C) 2005 Ivo Timmermans <ivo@tinc-vpn.org> Copyright (C) 2005 Ivo Timmermans
2005 Guus Sliepen <guus@tinc-vpn.org> 2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: ipv4.h 1439 2005-05-04 18:09:30Z guus $ $Id: ipv4.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_IPV4_H__ #ifndef __TINC_IPV4_H__

View file

@ -1,7 +1,7 @@
/* /*
ipv6.h -- missing IPv6 related definitions ipv6.h -- missing IPv6 related definitions
Copyright (C) 2005 Ivo Timmermans <ivo@tinc-vpn.org> Copyright (C) 2005 Ivo Timmermans
2005 Guus Sliepen <guus@tinc-vpn.org> 2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: ipv6.h 1439 2005-05-04 18:09:30Z guus $ $Id: ipv6.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_IPV6_H__ #ifndef __TINC_IPV6_H__

View file

@ -1,7 +1,7 @@
/* /*
list.c -- functions to deal with double linked lists list.c -- functions to deal with double linked lists
Copyright (C) 2000-2005 Ivo Timmermans <ivo@tinc-vpn.org> Copyright (C) 2000-2005 Ivo Timmermans
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: list.c 1439 2005-05-04 18:09:30Z guus $ $Id: list.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"

View file

@ -1,7 +1,7 @@
/* /*
list.h -- header file for list.c list.h -- header file for list.c
Copyright (C) 2000-2005 Ivo Timmermans <ivo@tinc-vpn.org> Copyright (C) 2000-2005 Ivo Timmermans
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: list.h 1439 2005-05-04 18:09:30Z guus $ $Id: list.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_LIST_H__ #ifndef __TINC_LIST_H__

View file

@ -1,7 +1,7 @@
/* /*
utils.c -- gathering of some stupid small functions utils.c -- gathering of some stupid small functions
Copyright (C) 1999-2005 Ivo Timmermans <zarq@iname.com> Copyright (C) 1999-2005 Ivo Timmermans <zarq@iname.com>
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
utils.h -- header file for utils.c utils.h -- header file for utils.c
Copyright (C) 1999-2005 Ivo Timmermans <zarq@iname.com> Copyright (C) 1999-2005 Ivo Timmermans <zarq@iname.com>
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am. # Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -40,13 +40,14 @@ DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/aclocal-include.m4 \ am__aclocal_m4_deps = $(top_srcdir)/m4/aclocal-include.m4 \
$(top_srcdir)/m4/attribute.m4 $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/attribute.m4 $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lzo.m4 $(top_srcdir)/m4/malloc.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/lzo.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/openssl.m4 \ $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/nls.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/tuntap.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/realloc.m4 \
$(top_srcdir)/m4/zlib.m4 $(top_srcdir)/configure.in $(top_srcdir)/m4/tuntap.m4 $(top_srcdir)/m4/zlib.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4) $(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@ -78,6 +79,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@ EGREP = @EGREP@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
GMSGFMT = @GMSGFMT@ GMSGFMT = @GMSGFMT@
GREP = @GREP@
HAVE_TUNTAP = @HAVE_TUNTAP@ HAVE_TUNTAP = @HAVE_TUNTAP@
INCLUDES = @INCLUDES@ INCLUDES = @INCLUDES@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
@ -119,8 +121,6 @@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@
XGETTEXT = @XGETTEXT@ XGETTEXT = @XGETTEXT@
ac_ct_CC = @ac_ct_CC@ ac_ct_CC = @ac_ct_CC@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@ am__include = @am__include@
@ -135,23 +135,30 @@ build_cpu = @build_cpu@
build_os = @build_os@ build_os = @build_os@
build_vendor = @build_vendor@ build_vendor = @build_vendor@
datadir = @datadir@ datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host = @host@ host = @host@
host_alias = @host_alias@ host_alias = @host_alias@
host_cpu = @host_cpu@ host_cpu = @host_cpu@
host_os = @host_os@ host_os = @host_os@
host_vendor = @host_vendor@ host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@ includedir = @includedir@
infodir = @infodir@ infodir = @infodir@
install_sh = @install_sh@ install_sh = @install_sh@
libdir = @libdir@ libdir = @libdir@
libexecdir = @libexecdir@ libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@ localstatedir = @localstatedir@
mandir = @mandir@ mandir = @mandir@
mkdir_p = @mkdir_p@ mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@ oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@ prefix = @prefix@
program_transform_name = @program_transform_name@ program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@ sysconfdir = @sysconfdir@

View file

@ -21,13 +21,17 @@ AC_DEFUN([tinc_LZO],
LDFLAGS="$LDFLAGS -L$withval"] LDFLAGS="$LDFLAGS -L$withval"]
) )
AC_CHECK_HEADERS(lzo1x.h, AC_CHECK_LIB(lzo2, lzo1x_1_compress,
[], [AC_CHECK_HEADERS(lzo/lzo1x.h,
[AC_MSG_ERROR("lzo header files not found."); break] [LIBS="$LIBS -llzo2"],
) [AC_MSG_ERROR("lzo2 header files not found."); break]
)],
AC_CHECK_LIB(lzo, lzo1x_1_compress, [AC_CHECK_LIB(lzo, lzo1x_1_compress,
[AC_CHECK_HEADERS(lzo1x.h,
[LIBS="$LIBS -llzo"], [LIBS="$LIBS -llzo"],
[AC_MSG_ERROR("lzo libraries not found.")] [AC_MSG_ERROR("lzo1 header files not found."); break]
)],
[AC_MSG_ERROR("lzo libraries not found."); break]
)]
) )
]) ])

View file

@ -21,7 +21,7 @@ AC_DEFUN([tinc_OPENSSL],
LDFLAGS="$LDFLAGS -L$withval"] LDFLAGS="$LDFLAGS -L$withval"]
) )
AC_CHECK_HEADERS(openssl/evp.h openssl/rsa.h openssl/rand.h openssl/err.h openssl/sha.h openssl/pem.h, AC_CHECK_HEADERS(openssl/evp.h openssl/rsa.h openssl/rand.h openssl/err.h openssl/sha.h openssl/pem.h openssl/engine.h,
[], [],
[AC_MSG_ERROR([OpenSSL header files not found.]); break] [AC_MSG_ERROR([OpenSSL header files not found.]); break]
) )

View file

@ -1,7 +1,7 @@
#! /bin/sh #! /bin/sh
# Common stub for a few missing GNU programs while installing. # Common stub for a few missing GNU programs while installing.
scriptversion=2005-02-08.22 scriptversion=2005-06-08.21
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
@ -19,8 +19,8 @@ scriptversion=2005-02-08.22
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02111-1307, USA. # 02110-1301, USA.
# As a special exception to the GNU General Public License, if you # As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a # distribute this file as part of a program that contains a
@ -297,6 +297,9 @@ WARNING: \`$1' is $msg. You should only need it if
# ... or it is derived from the source name (dir/f.texi becomes f.info) # ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi fi
# If the file does not exist, the user really needs makeinfo;
# let's fail without touching anything.
test -f $file || exit 1
touch $file touch $file
;; ;;

View file

@ -1,7 +1,7 @@
#! /bin/sh #! /bin/sh
# mkinstalldirs --- make directory hierarchy # mkinstalldirs --- make directory hierarchy
scriptversion=2005-02-02.21 scriptversion=2005-06-29.22
# Original author: Noah Friedman <friedman@prep.ai.mit.edu> # Original author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16 # Created: 1993-05-16
@ -12,7 +12,7 @@ scriptversion=2005-02-02.21
# <automake-patches@gnu.org>. # <automake-patches@gnu.org>.
errstatus=0 errstatus=0
dirmode="" dirmode=
usage="\ usage="\
Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
@ -103,13 +103,21 @@ esac
for file for file
do do
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` case $file in
/*) pathcomp=/ ;;
*) pathcomp= ;;
esac
oIFS=$IFS
IFS=/
set fnord $file
shift shift
IFS=$oIFS
pathcomp=
for d for d
do do
pathcomp="$pathcomp$d" test "x$d" = x && continue
pathcomp=$pathcomp$d
case $pathcomp in case $pathcomp in
-*) pathcomp=./$pathcomp ;; -*) pathcomp=./$pathcomp ;;
esac esac
@ -124,7 +132,7 @@ do
else else
if test ! -z "$dirmode"; then if test ! -z "$dirmode"; then
echo "chmod $dirmode $pathcomp" echo "chmod $dirmode $pathcomp"
lasterr="" lasterr=
chmod "$dirmode" "$pathcomp" || lasterr=$? chmod "$dirmode" "$pathcomp" || lasterr=$?
if test ! -z "$lasterr"; then if test ! -z "$lasterr"; then
@ -134,7 +142,7 @@ do
fi fi
fi fi
pathcomp="$pathcomp/" pathcomp=$pathcomp/
done done
done done

BIN
po/nl.gmo

Binary file not shown.

361
po/nl.po
View file

@ -1,15 +1,15 @@
# Dutch messages for tinc # Dutch messages for tinc
# Copyright (C) 1999-2004 Ivo Timmermans, Guus Sliepen. # Copyright (C) 1999-2006 Ivo Timmermans, Guus Sliepen.
# Ivo Timmermans <ivo@tinc-vpn.org>, 1999-2004. # Ivo Timmermans <ivo@tinc-vpn.org>, 1999-2006.
# Guus Sliepen <guus@tinc-vpn.org>, 2000-2004. # Guus Sliepen <guus@tinc-vpn.org>, 2000-2006.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: tinc 1.0-svn\n" "Project-Id-Version: tinc 1.0-svn\n"
"Report-Msgid-Bugs-To: tinc-devel@tinc-vpn.org\n" "Report-Msgid-Bugs-To: tinc-devel@tinc-vpn.org\n"
"POT-Creation-Date: 2005-05-04 20:25+0200\n" "POT-Creation-Date: 2006-11-14 13:46+0100\n"
"PO-Revision-Date: 2004-03-15 19:28+0100\n" "PO-Revision-Date: 2006-11-11 16:26+0100\n"
"Last-Translator: Guus Sliepen <guus@tinc-vpn.org>\n" "Last-Translator: Guus Sliepen <guus@tinc-vpn.org>\n"
"Language-Team: Dutch <vertaling@tinc-vpn.org>\n" "Language-Team: Dutch\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
@ -18,30 +18,30 @@ msgstr ""
msgid "(unable to format errormessage)" msgid "(unable to format errormessage)"
msgstr "(kon foutmelding niet samenstellen)" msgstr "(kon foutmelding niet samenstellen)"
#: src/conf.c:159 #: src/conf.c:160
#, c-format #, c-format
msgid "\"yes\" or \"no\" expected for configuration variable %s in %s line %d" msgid "\"yes\" or \"no\" expected for configuration variable %s in %s line %d"
msgstr "" msgstr ""
"\"ja\" of \"nee\" verwacht voor configuratievariabele %s in %s regel %d" "\"ja\" of \"nee\" verwacht voor configuratievariabele %s in %s regel %d"
#: src/conf.c:175 #: src/conf.c:176
#, c-format #, c-format
msgid "Integer expected for configuration variable %s in %s line %d" msgid "Integer expected for configuration variable %s in %s line %d"
msgstr "Geheel getal verwacht voor configuratievariabele %s in %s regel %d" msgstr "Geheel getal verwacht voor configuratievariabele %s in %s regel %d"
#: src/conf.c:209 #: src/conf.c:210
#, c-format #, c-format
msgid "" msgid ""
"Hostname or IP address expected for configuration variable %s in %s line %d" "Hostname or IP address expected for configuration variable %s in %s line %d"
msgstr "" msgstr ""
"Hostnaam of IP adres verwacht voor configuratievariabele %s in %s regel %d" "Hostnaam of IP adres verwacht voor configuratievariabele %s in %s regel %d"
#: src/conf.c:225 #: src/conf.c:226
#, c-format #, c-format
msgid "Subnet expected for configuration variable %s in %s line %d" msgid "Subnet expected for configuration variable %s in %s line %d"
msgstr "Subnet verwacht voor configuratievariabele %s in %s regel %d" msgstr "Subnet verwacht voor configuratievariabele %s in %s regel %d"
#: src/conf.c:236 #: src/conf.c:237
#, c-format #, c-format
msgid "" msgid ""
"Network address and prefix length do not match for configuration variable %s " "Network address and prefix length do not match for configuration variable %s "
@ -50,34 +50,34 @@ msgstr ""
"Netwerk adres en prefix lengte komen niet overeen bij configuratievariabele %" "Netwerk adres en prefix lengte komen niet overeen bij configuratievariabele %"
"s in %s regel %d" "s in %s regel %d"
#: src/conf.c:336 #: src/conf.c:337
#, c-format #, c-format
msgid "Cannot open config file %s: %s" msgid "Cannot open config file %s: %s"
msgstr "Kan configuratie bestand %s niet openen: %s" msgstr "Kan configuratie bestand %s niet openen: %s"
#: src/conf.c:390 #: src/conf.c:391
#, c-format #, c-format
msgid "No value for variable `%s' on line %d while reading config file %s" msgid "No value for variable `%s' on line %d while reading config file %s"
msgstr "" msgstr ""
"Geen waarde voor variabele `%s' op regel %d tijdens het lezen van " "Geen waarde voor variabele `%s' op regel %d tijdens het lezen van "
"configuratie bestand %s" "configuratie bestand %s"
#: src/conf.c:421 #: src/conf.c:422
#, c-format #, c-format
msgid "Failed to read `%s': %s" msgid "Failed to read `%s': %s"
msgstr "Lezen van `%s' mislukte: %s" msgstr "Lezen van `%s' mislukte: %s"
#: src/conf.c:443 #: src/conf.c:444
#, c-format #, c-format
msgid "Please enter a file to save %s to [%s]: " msgid "Please enter a file to save %s to [%s]: "
msgstr "Geef een bestand om de %s naar de schrijven [%s]: " msgstr "Geef een bestand om de %s naar de schrijven [%s]: "
#: src/conf.c:450 #: src/conf.c:451
#, c-format #, c-format
msgid "Error while reading stdin: %s\n" msgid "Error while reading stdin: %s\n"
msgstr "Fout tijdens lezen van standaardinvoer: %s\n" msgstr "Fout tijdens lezen van standaardinvoer: %s\n"
#: src/conf.c:482 #: src/conf.c:483
#, c-format #, c-format
msgid "Error opening file `%s': %s\n" msgid "Error opening file `%s': %s\n"
msgstr "Fout bij het openen van het bestand `%s': %s\n" msgstr "Fout bij het openen van het bestand `%s': %s\n"
@ -96,44 +96,58 @@ msgstr "Verbindingen:"
#: src/connection.c:124 #: src/connection.c:124
#, c-format #, c-format
msgid " %s at %s options %lx socket %d status %04x" msgid " %s at %s options %lx socket %d status %04x outbuf %d/%d/%d"
msgstr " %s op %s opties %lx socket %d status %04x" msgstr " %s op %s opties %lx socket %d status %04x outbuf %d/%d/%d"
#: src/connection.c:128 #: src/connection.c:129
msgid "End of connections." msgid "End of connections."
msgstr "Einde van verbindingen." msgstr "Einde van verbindingen."
#: src/meta.c:45 #: src/meta.c:44
#, c-format #, c-format
msgid "Sending %d bytes of metadata to %s (%s)" msgid "Sending %d bytes of metadata to %s (%s)"
msgstr "Verzenden van %d bytes metadata naar %s (%s)" msgstr "Verzenden van %d bytes metadata naar %s (%s)"
#: src/meta.c:51 #: src/meta.c:66
#, c-format #, c-format
msgid "Error while encrypting metadata to %s (%s): %s" msgid "Error while encrypting metadata to %s (%s): %s"
msgstr "Fout tijdens versleutelen van metadata naar %s (%s): %s" msgstr "Fout tijdens versleutelen van metadata naar %s (%s): %s"
#: src/meta.c:64 src/meta.c:117 #: src/meta.c:70
msgid "Encrypted data too long! Heap corrupted!"
msgstr "Versleutelde data te lang! Heap gecorrumpeerd!"
#: src/meta.c:86
#, c-format
msgid "Flushing %d bytes to %s (%s)"
msgstr "Wegschrijven %d bytes naar %s (%s)"
#: src/meta.c:93 src/meta.c:156
#, c-format #, c-format
msgid "Connection closed by %s (%s)" msgid "Connection closed by %s (%s)"
msgstr "Verbinding beëindigd door %s (%s)" msgstr "Verbinding beëindigd door %s (%s)"
#: src/meta.c:69 #: src/meta.c:99
#, c-format #, c-format
msgid "Sending meta data to %s (%s) failed: %s" msgid "Flushing %d bytes to %s (%s) would block"
msgstr "Fout tijdens verzenden metadata naar %s (%s): %s" msgstr "Wegschrijven %d bytes naar %s (%s) zou blokkeren"
#: src/meta.c:122 #: src/meta.c:104
#, c-format
msgid "Flushing meta data to %s (%s) failed: %s"
msgstr "Wegschrijven metadata naar %s (%s) faalde: %s"
#: src/meta.c:161
#, c-format #, c-format
msgid "Metadata socket read error for %s (%s): %s" msgid "Metadata socket read error for %s (%s): %s"
msgstr "Fout op metadata socket voor %s (%s) tijdens lezen: %s" msgstr "Fout op metadata socket voor %s (%s) tijdens lezen: %s"
#: src/meta.c:137 #: src/meta.c:176
#, c-format #, c-format
msgid "Error while decrypting metadata from %s (%s): %s" msgid "Error while decrypting metadata from %s (%s): %s"
msgstr "Fout tijdens ontsleutelen van metadata van %s (%s): %s" msgstr "Fout tijdens ontsleutelen van metadata van %s (%s): %s"
#: src/meta.c:190 #: src/meta.c:229
#, c-format #, c-format
msgid "Metadata read buffer overflow for %s (%s)" msgid "Metadata read buffer overflow for %s (%s)"
msgstr "Metadata leesbuffer overloop voor %s (%s)" msgstr "Metadata leesbuffer overloop voor %s (%s)"
@ -147,130 +161,135 @@ msgstr "Verwijderen onbereikbare nodes"
msgid "Purging node %s (%s)" msgid "Purging node %s (%s)"
msgstr "Verwijdering node %s (%s)" msgstr "Verwijdering node %s (%s)"
#: src/net.c:170 #: src/net.c:173
#, c-format #, c-format
msgid "Closing connection with %s (%s)" msgid "Closing connection with %s (%s)"
msgstr "Beëindigen verbinding met %s (%s)" msgstr "Beëindigen verbinding met %s (%s)"
#: src/net.c:235
#, c-format
msgid "%s (%s) didn't respond to PING"
msgstr "%s (%s) antwoordde niet op ping"
#: src/net.c:244 #: src/net.c:244
#, c-format #, c-format
msgid "%s (%s) didn't respond to PING in %ld seconds"
msgstr "%s (%s) antwoordde niet binnen %ld seconden op PING"
#: src/net.c:253
#, c-format
msgid "Old connection_t for %s (%s) status %04x still lingering, deleting..." msgid "Old connection_t for %s (%s) status %04x still lingering, deleting..."
msgstr "" msgstr ""
"Oude connection_t voor %s (%s) status %04x nog steeds aanwezig, wordt " "Oude connection_t voor %s (%s) status %04x nog steeds aanwezig, wordt "
"verwijderd..." "verwijderd..."
#: src/net.c:249 #: src/net.c:258
#, c-format #, c-format
msgid "Timeout from %s (%s) during authentication" msgid "Timeout from %s (%s) during authentication"
msgstr "Timeout van %s (%s) tijdens authenticatie" msgstr "Timeout van %s (%s) tijdens authenticatie"
#: src/net.c:297 #: src/net.c:273
#, c-format
msgid "%s (%s) could not flush for %ld seconds (%d bytes remaining)"
msgstr "%s (%s) kon niet binnen %ld seconden wegschrijven (%d bytes over)"
#: src/net.c:318
#, c-format #, c-format
msgid "Error while connecting to %s (%s): %s" msgid "Error while connecting to %s (%s): %s"
msgstr "Fout tijdens schrijven naar %s (%s): %s" msgstr "Fout tijdens schrijven naar %s (%s): %s"
#: src/net.c:353 #: src/net.c:383
#, c-format #, c-format
msgid "Error while waiting for input: %s" msgid "Error while waiting for input: %s"
msgstr "Fout tijdens wachten op invoer: %s" msgstr "Fout tijdens wachten op invoer: %s"
#: src/net.c:384 #: src/net.c:414
msgid "Regenerating symmetric key" msgid "Regenerating symmetric key"
msgstr "Hergenereren symmetrische sleutel" msgstr "Hergenereren symmetrische sleutel"
#: src/net.c:401 #: src/net.c:431
msgid "Flushing event queue" msgid "Flushing event queue"
msgstr "Legen taakrij" msgstr "Legen taakrij"
#: src/net.c:425 #: src/net.c:455
msgid "Unable to reread configuration file, exitting." msgid "Unable to reread configuration file, exitting."
msgstr "Kan configuratiebestand niet herlezen, beëindigen." msgstr "Kan configuratiebestand niet herlezen, beëindigen."
#: src/net_packet.c:75 #: src/net_packet.c:80
#, c-format #, c-format
msgid "No response to MTU probes from %s (%s)" msgid "No response to MTU probes from %s (%s)"
msgstr "Geen antwoord van %s (%s) op MTU probes" msgstr "Geen antwoord van %s (%s) op MTU probes"
#: src/net_packet.c:82 #: src/net_packet.c:87
#, c-format #, c-format
msgid "Fixing MTU of %s (%s) to %d after %d probes" msgid "Fixing MTU of %s (%s) to %d after %d probes"
msgstr "MTU van %s (%s) vastgezet op %d na %d probes" msgstr "MTU van %s (%s) vastgezet op %d na %d probes"
#: src/net_packet.c:94 #: src/net_packet.c:99
#, c-format #, c-format
msgid "Sending MTU probe length %d to %s (%s)" msgid "Sending MTU probe length %d to %s (%s)"
msgstr "Verzending MTU probe lengte %d naar %s (%s)" msgstr "Verzending MTU probe lengte %d naar %s (%s)"
#: src/net_packet.c:107 #: src/net_packet.c:112
#, c-format #, c-format
msgid "Got MTU probe length %d from %s (%s)" msgid "Got MTU probe length %d from %s (%s)"
msgstr "Kreeg MTU probe met verkeerde lengte %d van %s (%s)" msgstr "Kreeg MTU probe met verkeerde lengte %d van %s (%s)"
#: src/net_packet.c:164 #: src/net_packet.c:169
#, c-format #, c-format
msgid "Received packet of %d bytes from %s (%s)" msgid "Received packet of %d bytes from %s (%s)"
msgstr "Ontvangst pakket van %d bytes van %s (%s)" msgstr "Ontvangst pakket van %d bytes van %s (%s)"
#: src/net_packet.c:185 src/route.c:92 #: src/net_packet.c:190 src/route.c:92
#, c-format #, c-format
msgid "Got too short packet from %s (%s)" msgid "Got too short packet from %s (%s)"
msgstr "Kreeg te kort pakket van %s (%s)" msgstr "Kreeg te kort pakket van %s (%s)"
#: src/net_packet.c:198 #: src/net_packet.c:203
#, c-format #, c-format
msgid "Got unauthenticated packet from %s (%s)" msgid "Got unauthenticated packet from %s (%s)"
msgstr "Kreeg niet-geauthenticeerd pakket van %s (%s)" msgstr "Kreeg niet-geauthenticeerd pakket van %s (%s)"
#: src/net_packet.c:213 #: src/net_packet.c:218
#, c-format #, c-format
msgid "Error decrypting packet from %s (%s): %s" msgid "Error decrypting packet from %s (%s): %s"
msgstr "Fout tijdens ontsleutelen pakket van %s (%s): %s" msgstr "Fout tijdens ontsleutelen pakket van %s (%s): %s"
#: src/net_packet.c:229 #: src/net_packet.c:234
#, c-format #, c-format
msgid "Lost %d packets from %s (%s)" msgid "Lost %d packets from %s (%s)"
msgstr "%d pakketten van %s (%s) verloren" msgstr "%d pakketten van %s (%s) verloren"
#: src/net_packet.c:235 #: src/net_packet.c:240
#, c-format #, c-format
msgid "Got late or replayed packet from %s (%s), seqno %d, last received %d" msgid "Got late or replayed packet from %s (%s), seqno %d, last received %d"
msgstr "" msgstr ""
"Kreeg laat of gedupliceerd pakket van %s (%s), seqno %d, laatste ontvangen %d" "Kreeg laat of gedupliceerd pakket van %s (%s), seqno %d, laatste ontvangen %d"
#: src/net_packet.c:259 #: src/net_packet.c:264
#, c-format #, c-format
msgid "Error while uncompressing packet from %s (%s)" msgid "Error while uncompressing packet from %s (%s)"
msgstr "Fout tijdens decomprimeren pakket van %s (%s)" msgstr "Fout tijdens decomprimeren pakket van %s (%s)"
#: src/net_packet.c:307 #: src/net_packet.c:313
#, c-format #, c-format
msgid "No valid key known yet for %s (%s), queueing packet" msgid "No valid key known yet for %s (%s), queueing packet"
msgstr "" msgstr ""
"Nog geen geldige sleutel bekend voor %s (%s), pakket wordt in wachtrij gezet" "Nog geen geldige sleutel bekend voor %s (%s), pakket wordt in wachtrij gezet"
#: src/net_packet.c:336 #: src/net_packet.c:342
#, c-format #, c-format
msgid "Error while compressing packet to %s (%s)" msgid "Error while compressing packet to %s (%s)"
msgstr "Fout tijdens comprimeren pakket naar %s (%s)" msgstr "Fout tijdens comprimeren pakket naar %s (%s)"
#: src/net_packet.c:358 #: src/net_packet.c:364
#, c-format #, c-format
msgid "Error while encrypting packet to %s (%s): %s" msgid "Error while encrypting packet to %s (%s): %s"
msgstr "Fout tijdens versleutelen pakket naar %s (%s): %s" msgstr "Fout tijdens versleutelen pakket naar %s (%s): %s"
#: src/net_packet.c:390 #: src/net_packet.c:396
#, c-format #, c-format
msgid "Setting outgoing packet priority to %d" msgid "Setting outgoing packet priority to %d"
msgstr "Instellen prioriteit uitgaand pakket op %d" msgstr "Instellen prioriteit uitgaand pakket op %d"
#: src/net_packet.c:392 src/net_setup.c:481 src/net_socket.c:73 #: src/net_packet.c:398 src/net_setup.c:478 src/net_socket.c:129
#: src/net_socket.c:124 src/net_socket.c:153 src/tincd.c:434 src/tincd.c:468 #: src/net_socket.c:158 src/tincd.c:440 src/tincd.c:477 src/process.c:198
#: src/process.c:198 src/process.c:231 src/process.c:428 src/bsd/device.c:93 #: src/process.c:231 src/process.c:428 src/bsd/device.c:93
#: src/bsd/device.c:112 src/cygwin/device.c:140 src/cygwin/device.c:171 #: src/bsd/device.c:112 src/cygwin/device.c:140 src/cygwin/device.c:171
#: src/mingw/device.c:66 src/mingw/device.c:75 src/mingw/device.c:80 #: src/mingw/device.c:66 src/mingw/device.c:75 src/mingw/device.c:80
#: src/mingw/device.c:236 src/mingw/device.c:243 src/mingw/device.c:248 #: src/mingw/device.c:236 src/mingw/device.c:243 src/mingw/device.c:248
@ -281,42 +300,42 @@ msgstr "Instellen prioriteit uitgaand pakket op %d"
msgid "System call `%s' failed: %s" msgid "System call `%s' failed: %s"
msgstr "Systeemaanroep `%s' mislukte: %s" msgstr "Systeemaanroep `%s' mislukte: %s"
#: src/net_packet.c:403 #: src/net_packet.c:409
#, c-format #, c-format
msgid "Error sending packet to %s (%s): %s" msgid "Error sending packet to %s (%s): %s"
msgstr "Fout tijdens verzenden pakket naar %s (%s): %s" msgstr "Fout tijdens verzenden pakket naar %s (%s): %s"
#: src/net_packet.c:426 #: src/net_packet.c:432
#, c-format #, c-format
msgid "Sending packet of %d bytes to %s (%s)" msgid "Sending packet of %d bytes to %s (%s)"
msgstr "Verzending pakket van %d bytes naar %s (%s)" msgstr "Verzending pakket van %d bytes naar %s (%s)"
#: src/net_packet.c:430 #: src/net_packet.c:436
#, c-format #, c-format
msgid "Node %s (%s) is not reachable" msgid "Node %s (%s) is not reachable"
msgstr "Node %s (%s) is niet bereikbaar" msgstr "Node %s (%s) is niet bereikbaar"
#: src/net_packet.c:438 #: src/net_packet.c:444
#, c-format #, c-format
msgid "Sending packet to %s via %s (%s)" msgid "Sending packet to %s via %s (%s)"
msgstr "Verzending pakket naar %s via %s (%s)" msgstr "Verzending pakket naar %s via %s (%s)"
#: src/net_packet.c:457 #: src/net_packet.c:463
#, c-format #, c-format
msgid "Broadcasting packet of %d bytes from %s (%s)" msgid "Broadcasting packet of %d bytes from %s (%s)"
msgstr "Verspreiding pakket van %d bytes van %s (%s)" msgstr "Verspreiding pakket van %d bytes van %s (%s)"
#: src/net_packet.c:480 #: src/net_packet.c:483
#, c-format #, c-format
msgid "Flushing queue for %s (%s)" msgid "Flushing queue for %s (%s)"
msgstr "Legen van wachtrij voor %s (%s)" msgstr "Legen van wachtrij voor %s (%s)"
#: src/net_packet.c:502 #: src/net_packet.c:505
#, c-format #, c-format
msgid "Receiving packet failed: %s" msgid "Receiving packet failed: %s"
msgstr "Ontvangst pakket mislukt: %s" msgstr "Ontvangst pakket mislukt: %s"
#: src/net_packet.c:512 #: src/net_packet.c:515
#, c-format #, c-format
msgid "Received UDP packet from unknown source %s" msgid "Received UDP packet from unknown source %s"
msgstr "Ontvangst UDP pakket van onbekende oorsprong %s" msgstr "Ontvangst UDP pakket van onbekende oorsprong %s"
@ -377,145 +396,145 @@ msgstr "Ongeldige naam voor mijzelf!"
msgid "Cannot open host configuration file for myself!" msgid "Cannot open host configuration file for myself!"
msgstr "Kan host configuratie bestand voor mijzelf niet openen!" msgstr "Kan host configuratie bestand voor mijzelf niet openen!"
#: src/net_setup.c:307 #: src/net_setup.c:305
msgid "Invalid routing mode!" msgid "Invalid routing mode!"
msgstr "Ongeldige routing modus!" msgstr "Ongeldige routing modus!"
#: src/net_setup.c:318 #: src/net_setup.c:316
msgid "PriorityInheritance not supported on this platform" msgid "PriorityInheritance not supported on this platform"
msgstr "PriorityInheritance wordt niet ondersteund op dit platform" msgstr "PriorityInheritance wordt niet ondersteund op dit platform"
#: src/net_setup.c:326 #: src/net_setup.c:324
msgid "Bogus maximum timeout!" msgid "Bogus maximum timeout!"
msgstr "Onzinnige maximum timeout!" msgstr "Onzinnige maximum timeout!"
#: src/net_setup.c:340 #: src/net_setup.c:338
msgid "Invalid address family!" msgid "Invalid address family!"
msgstr "Ongeldige adresfamilie!" msgstr "Ongeldige adresfamilie!"
#: src/net_setup.c:358 #: src/net_setup.c:356
msgid "Unrecognized cipher type!" msgid "Unrecognized cipher type!"
msgstr "Onbekend cipher type!" msgstr "Onbekend cipher type!"
#: src/net_setup.c:383 src/protocol_auth.c:192 #: src/net_setup.c:381 src/protocol_auth.c:194
#, c-format #, c-format
msgid "Error during initialisation of cipher for %s (%s): %s" msgid "Error during initialisation of cipher for %s (%s): %s"
msgstr "Fout tijdens initialisatie van cipher voor %s (%s): %s" msgstr "Fout tijdens initialisatie van cipher voor %s (%s): %s"
#: src/net_setup.c:400 #: src/net_setup.c:398
msgid "Unrecognized digest type!" msgid "Unrecognized digest type!"
msgstr "Onbekend digest type!" msgstr "Onbekend digest type!"
#: src/net_setup.c:413 #: src/net_setup.c:411
msgid "MAC length exceeds size of digest!" msgid "MAC length exceeds size of digest!"
msgstr "MAC lengte is groter dan dat van digest!" msgstr "MAC lengte is groter dan dat van digest!"
#: src/net_setup.c:416 #: src/net_setup.c:414
msgid "Bogus MAC length!" msgid "Bogus MAC length!"
msgstr "Onzinnige MAC lengte!" msgstr "Onzinnige MAC lengte!"
#: src/net_setup.c:430 #: src/net_setup.c:428
msgid "Bogus compression level!" msgid "Bogus compression level!"
msgstr "Onzinnig compressieniveau!" msgstr "Onzinnig compressieniveau!"
#: src/net_setup.c:503 #: src/net_setup.c:500
#, c-format #, c-format
msgid "Listening on %s" msgid "Listening on %s"
msgstr "Luisterend op %s" msgstr "Luisterend op %s"
#: src/net_setup.c:514 #: src/net_setup.c:511
msgid "Ready" msgid "Ready"
msgstr "Gereed" msgstr "Gereed"
#: src/net_setup.c:516 #: src/net_setup.c:513
msgid "Unable to create any listening socket!" msgid "Unable to create any listening socket!"
msgstr "Kon geen enkele luistersocket aanmaken!" msgstr "Kon geen enkele luistersocket aanmaken!"
#: src/net_socket.c:63 #: src/net_socket.c:63
#, c-format #, c-format
msgid "fcntl for %s: %s"
msgstr "fcntl voor %s: %s"
#: src/net_socket.c:90
#, c-format
msgid "Creating metasocket failed: %s" msgid "Creating metasocket failed: %s"
msgstr "Aanmaak van metasocket mislukt: %s" msgstr "Aanmaak van metasocket mislukt: %s"
#: src/net_socket.c:104 src/net_socket.c:196 #: src/net_socket.c:109 src/net_socket.c:201
#, c-format #, c-format
msgid "Can't bind to interface %s: %s" msgid "Can't bind to interface %s: %s"
msgstr "Kan niet aan interface %s binden: %s" msgstr "Kan niet aan interface %s binden: %s"
#: src/net_socket.c:109 #: src/net_socket.c:114
msgid "BindToInterface not supported on this platform" msgid "BindToInterface not supported on this platform"
msgstr "BindToInterface wordt niet ondersteund op dit platform" msgstr "BindToInterface wordt niet ondersteund op dit platform"
#: src/net_socket.c:116 #: src/net_socket.c:121
#, c-format #, c-format
msgid "Can't bind to %s/tcp: %s" msgid "Can't bind to %s/tcp: %s"
msgstr "Kan niet aan %s/tcp binden: %s" msgstr "Kan niet aan %s/tcp binden: %s"
#: src/net_socket.c:143 #: src/net_socket.c:148
#, c-format #, c-format
msgid "Creating UDP socket failed: %s" msgid "Creating UDP socket failed: %s"
msgstr "Aanmaak UDP socket mislukte: %s" msgstr "Aanmaak UDP socket mislukte: %s"
#: src/net_socket.c:207 #: src/net_socket.c:212
#, c-format #, c-format
msgid "Can't bind to %s/udp: %s" msgid "Can't bind to %s/udp: %s"
msgstr "Kan niet aan %s/udp binden: %s" msgstr "Kan niet aan %s/udp binden: %s"
#: src/net_socket.c:234 #: src/net_socket.c:239
#, c-format #, c-format
msgid "Trying to re-establish outgoing connection in %d seconds" msgid "Trying to re-establish outgoing connection in %d seconds"
msgstr "Poging tot herstellen van uitgaande verbinding over %d seconden" msgstr "Poging tot herstellen van uitgaande verbinding over %d seconden"
#: src/net_socket.c:242 #: src/net_socket.c:247
#, c-format #, c-format
msgid "Connected to %s (%s)" msgid "Connected to %s (%s)"
msgstr "Verbonden met %s (%s)" msgstr "Verbonden met %s (%s)"
#: src/net_socket.c:249 src/net_socket.c:333 src/net_socket.c:445 #: src/net_socket.c:266
#, c-format
msgid "fcntl for %s: %s"
msgstr "fcntl voor %s: %s"
#: src/net_socket.c:269
#, c-format #, c-format
msgid "Could not set up a meta connection to %s" msgid "Could not set up a meta connection to %s"
msgstr "Kon geen metaverbinding aangaan met %s" msgstr "Kon geen metaverbinding aangaan met %s"
#: src/net_socket.c:303 #: src/net_socket.c:300
#, c-format #, c-format
msgid "Trying to connect to %s (%s)" msgid "Trying to connect to %s (%s)"
msgstr "Poging tot verbinden met %s (%s)" msgstr "Poging tot verbinden met %s (%s)"
#: src/net_socket.c:309 #: src/net_socket.c:306
#, c-format #, c-format
msgid "Creating socket for %s failed: %s" msgid "Creating socket for %s failed: %s"
msgstr "Aanmaken socket voor %s mislukt: %s" msgstr "Aanmaken socket voor %s mislukt: %s"
#: src/net_socket.c:349 #: src/net_socket.c:328
#, c-format #, c-format
msgid "%s: %s" msgid "%s: %s"
msgstr "%s: %s" msgstr "%s: %s"
#: src/net_socket.c:370 #: src/net_socket.c:349
#, c-format #, c-format
msgid "Already connected to %s" msgid "Already connected to %s"
msgstr "Reeds verbonden met %s" msgstr "Reeds verbonden met %s"
#: src/net_socket.c:389 #: src/net_socket.c:368
#, c-format #, c-format
msgid "No address specified for %s" msgid "No address specified for %s"
msgstr "Geen adres gespecificeerd voor %s" msgstr "Geen adres gespecificeerd voor %s"
#: src/net_socket.c:419 #: src/net_socket.c:399
#, c-format #, c-format
msgid "Accepting a new connection failed: %s" msgid "Accepting a new connection failed: %s"
msgstr "Aanname van nieuwe verbinding is mislukt: %s" msgstr "Aanname van nieuwe verbinding is mislukt: %s"
#: src/net_socket.c:438 #: src/net_socket.c:418
#, c-format #, c-format
msgid "Connection from %s" msgid "Connection from %s"
msgstr "Verbinding van %s" msgstr "Verbinding van %s"
#: src/net_socket.c:471 #: src/net_socket.c:443
#, c-format #, c-format
msgid "Invalid name for outgoing connection in %s line %d" msgid "Invalid name for outgoing connection in %s line %d"
msgstr "Ongeldige naam voor uitgaande verbinding in %s regel %d" msgstr "Ongeldige naam voor uitgaande verbinding in %s regel %d"
@ -615,11 +634,11 @@ msgstr "Verzoek reeds gezien"
msgid "Aging past requests: deleted %d, left %d" msgid "Aging past requests: deleted %d, left %d"
msgstr "Veroudering vorige verzoeken: %d gewist, %d overgebleven" msgstr "Veroudering vorige verzoeken: %d gewist, %d overgebleven"
#: src/protocol_auth.c:58 src/protocol_auth.c:212 src/protocol_auth.c:341 #: src/protocol_auth.c:58 src/protocol_auth.c:214 src/protocol_auth.c:345
#: src/protocol_auth.c:408 src/protocol_auth.c:534 src/protocol_edge.c:73 #: src/protocol_auth.c:412 src/protocol_auth.c:538 src/protocol_edge.c:73
#: src/protocol_edge.c:188 src/protocol_key.c:62 src/protocol_key.c:105 #: src/protocol_edge.c:188 src/protocol_key.c:62 src/protocol_key.c:105
#: src/protocol_key.c:172 src/protocol_misc.c:54 src/protocol_misc.c:83 #: src/protocol_key.c:173 src/protocol_misc.c:56 src/protocol_misc.c:85
#: src/protocol_misc.c:171 src/protocol_subnet.c:58 src/protocol_subnet.c:170 #: src/protocol_misc.c:176 src/protocol_subnet.c:58 src/protocol_subnet.c:170
#, c-format #, c-format
msgid "Got bad %s from %s (%s)" msgid "Got bad %s from %s (%s)"
msgstr "Kreeg verkeerde %s van %s (%s)" msgstr "Kreeg verkeerde %s van %s (%s)"
@ -647,76 +666,76 @@ msgstr "Ander %s (%s) gebruikt incompatibele versie %d"
msgid "Peer %s had unknown identity (%s)" msgid "Peer %s had unknown identity (%s)"
msgstr "Ander %s heeft onbekende identiteit (%s)" msgstr "Ander %s heeft onbekende identiteit (%s)"
#: src/protocol_auth.c:156 #: src/protocol_auth.c:158
#, c-format #, c-format
msgid "Generated random meta key (unencrypted): %s" msgid "Generated random meta key (unencrypted): %s"
msgstr "Willekeurige meta sleutel aangemaakt (niet versleuteld): %s" msgstr "Willekeurige meta sleutel aangemaakt (niet versleuteld): %s"
#: src/protocol_auth.c:168 src/protocol_auth.c:241 #: src/protocol_auth.c:170 src/protocol_auth.c:243
#, c-format #, c-format
msgid "Error during encryption of meta key for %s (%s)" msgid "Error during encryption of meta key for %s (%s)"
msgstr "Fout tijdens versleutelen van meta key voor %s (%s)" msgstr "Fout tijdens versleutelen van meta key voor %s (%s)"
#: src/protocol_auth.c:222 src/protocol_auth.c:351 src/protocol_auth.c:416 #: src/protocol_auth.c:224 src/protocol_auth.c:355 src/protocol_auth.c:420
#: src/protocol_auth.c:438 #: src/protocol_auth.c:442
#, c-format #, c-format
msgid "Possible intruder %s (%s): %s" msgid "Possible intruder %s (%s): %s"
msgstr "Mogelijke indringer %s (%s): %s" msgstr "Mogelijke indringer %s (%s): %s"
#: src/protocol_auth.c:249 #: src/protocol_auth.c:251
#, c-format #, c-format
msgid "Received random meta key (unencrypted): %s" msgid "Received random meta key (unencrypted): %s"
msgstr "Ontving willekeurige meta key (niet versleuteld): %s" msgstr "Ontving willekeurige meta key (niet versleuteld): %s"
#: src/protocol_auth.c:260 #: src/protocol_auth.c:262
#, c-format #, c-format
msgid "%s (%s) uses unknown cipher!" msgid "%s (%s) uses unknown cipher!"
msgstr "%s (%s) gebruikt onbekende cipher!" msgstr "%s (%s) gebruikt onbekende cipher!"
#: src/protocol_auth.c:268 #: src/protocol_auth.c:270
#, c-format #, c-format
msgid "Error during initialisation of cipher from %s (%s): %s" msgid "Error during initialisation of cipher from %s (%s): %s"
msgstr "Fout tijdens initalisatie van cipher van %s (%s): %s" msgstr "Fout tijdens initalisatie van cipher van %s (%s): %s"
#: src/protocol_auth.c:284 src/protocol_key.c:242 #: src/protocol_auth.c:286 src/protocol_key.c:243
#, c-format #, c-format
msgid "Node %s (%s) uses unknown digest!" msgid "Node %s (%s) uses unknown digest!"
msgstr "Node %s (%s) gebruikt onbekende digest!" msgstr "Node %s (%s) gebruikt onbekende digest!"
#: src/protocol_auth.c:289 #: src/protocol_auth.c:291
#, c-format #, c-format
msgid "%s (%s) uses bogus MAC length!" msgid "%s (%s) uses bogus MAC length!"
msgstr "%s (%s) gebruikt onzinnige MAC lengte!" msgstr "%s (%s) gebruikt onzinnige MAC lengte!"
#: src/protocol_auth.c:384 #: src/protocol_auth.c:388
#, c-format #, c-format
msgid "Error during calculation of response for %s (%s): %s" msgid "Error during calculation of response for %s (%s): %s"
msgstr "Fout tijdens berekenen van antwoord voor %s (%s): %s" msgstr "Fout tijdens berekenen van antwoord voor %s (%s): %s"
#: src/protocol_auth.c:417 #: src/protocol_auth.c:421
msgid "wrong challenge reply length" msgid "wrong challenge reply length"
msgstr "verkeerde lengte antwoord op uitdaging" msgstr "verkeerde lengte antwoord op uitdaging"
#: src/protocol_auth.c:430 #: src/protocol_auth.c:434
#, c-format #, c-format
msgid "Error during calculation of response from %s (%s): %s" msgid "Error during calculation of response from %s (%s): %s"
msgstr "Fout tijdens narekenen van antwoord van %s (%s): %s" msgstr "Fout tijdens narekenen van antwoord van %s (%s): %s"
#: src/protocol_auth.c:439 #: src/protocol_auth.c:443
msgid "wrong challenge reply" msgid "wrong challenge reply"
msgstr "verkeerd antwoord op uitdaging" msgstr "verkeerd antwoord op uitdaging"
#: src/protocol_auth.c:444 #: src/protocol_auth.c:448
#, c-format #, c-format
msgid "Expected challenge reply: %s" msgid "Expected challenge reply: %s"
msgstr "Verwachtte antwoord op uitdaging: %s" msgstr "Verwachtte antwoord op uitdaging: %s"
#: src/protocol_auth.c:550 #: src/protocol_auth.c:554
#, c-format #, c-format
msgid "Established a second connection with %s (%s), closing old connection" msgid "Established a second connection with %s (%s), closing old connection"
msgstr "Tweede verbinding met %s (%s) gemaakt, oude verbinding wordt gesloten" msgstr "Tweede verbinding met %s (%s) gemaakt, oude verbinding wordt gesloten"
#: src/protocol_auth.c:573 #: src/protocol_auth.c:577
#, c-format #, c-format
msgid "Connection with %s (%s) activated" msgid "Connection with %s (%s) activated"
msgstr "Verbinding met %s (%s) geactiveerd" msgstr "Verbinding met %s (%s) geactiveerd"
@ -757,14 +776,14 @@ msgstr "Kreeg %s van %s (%s) voor onszelf"
msgid "Got %s from %s (%s) origin %s which does not exist" msgid "Got %s from %s (%s) origin %s which does not exist"
msgstr "Kreeg %s van %s (%s) herkomst %s welke niet bestaat" msgstr "Kreeg %s van %s (%s) herkomst %s welke niet bestaat"
#: src/protocol_key.c:113 src/protocol_key.c:180 #: src/protocol_key.c:113 src/protocol_key.c:181
#, c-format #, c-format
msgid "" msgid ""
"Got %s from %s (%s) origin %s which does not exist in our connection list" "Got %s from %s (%s) origin %s which does not exist in our connection list"
msgstr "" msgstr ""
"Kreeg %s van %s (%s) herkomst %s welke niet voorkomt in de verbindingslijst" "Kreeg %s van %s (%s) herkomst %s welke niet voorkomt in de verbindingslijst"
#: src/protocol_key.c:121 src/protocol_key.c:188 #: src/protocol_key.c:121 src/protocol_key.c:189
#, c-format #, c-format
msgid "" msgid ""
"Got %s from %s (%s) destination %s which does not exist in our connection " "Got %s from %s (%s) destination %s which does not exist in our connection "
@ -772,37 +791,37 @@ msgid ""
msgstr "" msgstr ""
"Kreeg %s van %s (%s) doel %s welke niet voorkomt in de verbindingslijst" "Kreeg %s van %s (%s) doel %s welke niet voorkomt in de verbindingslijst"
#: src/protocol_key.c:222 #: src/protocol_key.c:223
#, c-format #, c-format
msgid "Node %s (%s) uses unknown cipher!" msgid "Node %s (%s) uses unknown cipher!"
msgstr "Node %s (%s) gebruikt onbekende cipher!" msgstr "Node %s (%s) gebruikt onbekende cipher!"
#: src/protocol_key.c:228 #: src/protocol_key.c:229
#, c-format #, c-format
msgid "Node %s (%s) uses wrong keylength!" msgid "Node %s (%s) uses wrong keylength!"
msgstr "Node %s (%s) gebruikt verkeerde lengte sleutel!" msgstr "Node %s (%s) gebruikt verkeerde lengte sleutel!"
#: src/protocol_key.c:248 #: src/protocol_key.c:249
#, c-format #, c-format
msgid "Node %s (%s) uses bogus MAC length!" msgid "Node %s (%s) uses bogus MAC length!"
msgstr "Node %s (%s) gebruikt onzinnige MAC lengte!" msgstr "Node %s (%s) gebruikt onzinnige MAC lengte!"
#: src/protocol_key.c:257 #: src/protocol_key.c:258
#, c-format #, c-format
msgid "Node %s (%s) uses bogus compression level!" msgid "Node %s (%s) uses bogus compression level!"
msgstr "Node %s (%s) gebruikt onzinnig compressieniveau!" msgstr "Node %s (%s) gebruikt onzinnig compressieniveau!"
#: src/protocol_key.c:265 #: src/protocol_key.c:266
#, c-format #, c-format
msgid "Error during initialisation of key from %s (%s): %s" msgid "Error during initialisation of key from %s (%s): %s"
msgstr "Fout tijdens initialisatie van sleutel van %s (%s): %s" msgstr "Fout tijdens initialisatie van sleutel van %s (%s): %s"
#: src/protocol_misc.c:59 #: src/protocol_misc.c:61
#, c-format #, c-format
msgid "Status message from %s (%s): %d: %s" msgid "Status message from %s (%s): %d: %s"
msgstr "Statusmelding van %s (%s): %d: %s" msgstr "Statusmelding van %s (%s): %d: %s"
#: src/protocol_misc.c:88 #: src/protocol_misc.c:90
#, c-format #, c-format
msgid "Error message from %s (%s): %d: %s" msgid "Error message from %s (%s): %d: %s"
msgstr "Foutmelding van %s (%s): %d: %s" msgstr "Foutmelding van %s (%s): %d: %s"
@ -850,12 +869,12 @@ msgstr " %s eigenaar %s"
msgid "End of subnet list." msgid "End of subnet list."
msgstr "Einde van subnet lijst." msgstr "Einde van subnet lijst."
#: src/tincd.c:108 #: src/tincd.c:114
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "Probeer `%s --help' voor meer informatie.\n" msgstr "Probeer `%s --help' voor meer informatie.\n"
#: src/tincd.c:111 #: src/tincd.c:117
#, c-format #, c-format
msgid "" msgid ""
"Usage: %s [option]...\n" "Usage: %s [option]...\n"
@ -864,7 +883,7 @@ msgstr ""
"Gebruik: %s [optie]...\n" "Gebruik: %s [optie]...\n"
"\n" "\n"
#: src/tincd.c:112 #: src/tincd.c:118
#, c-format #, c-format
msgid "" msgid ""
" -c, --config=DIR Read configuration options from DIR.\n" " -c, --config=DIR Read configuration options from DIR.\n"
@ -894,14 +913,14 @@ msgstr ""
" --version Geef versie informatie en beëindig.\n" " --version Geef versie informatie en beëindig.\n"
"\n" "\n"
#: src/tincd.c:123 #: src/tincd.c:129
#, c-format #, c-format
msgid "Report bugs to tinc@tinc-vpn.org.\n" msgid "Report bugs to tinc@tinc-vpn.org.\n"
msgstr "" msgstr ""
"Meld fouten in het programma aan tinc@tinc-vpn.org;\n" "Meld fouten in het programma aan tinc@tinc-vpn.org;\n"
"Meld fouten in de vertaling aan vertaling@nl.linux.org.\n" "Meld fouten in de vertaling aan vertaling@nl.linux.org.\n"
#: src/tincd.c:179 #: src/tincd.c:185
#, c-format #, c-format
msgid "" msgid ""
"Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, " "Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, "
@ -910,7 +929,7 @@ msgstr ""
"Ongeldig argument `%s'; SIGNAAL moet een getal zijn of één van HUP, TERM, " "Ongeldig argument `%s'; SIGNAAL moet een getal zijn of één van HUP, TERM, "
"KILL, USR1, USR2, WINCH, INT of ALRM.\n" "KILL, USR1, USR2, WINCH, INT of ALRM.\n"
#: src/tincd.c:201 #: src/tincd.c:207
#, c-format #, c-format
msgid "" msgid ""
"Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n" "Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n"
@ -918,26 +937,26 @@ msgstr ""
"Ongeldig argument `%s'; BITS moet een nummer zijn gelijk aan of groter dan " "Ongeldig argument `%s'; BITS moet een nummer zijn gelijk aan of groter dan "
"512.\n" "512.\n"
#: src/tincd.c:294 #: src/tincd.c:300
#, c-format #, c-format
msgid "Generating %d bits keys:\n" msgid "Generating %d bits keys:\n"
msgstr "Bezig met genereren van een %d bits sleutel:\n" msgstr "Bezig met genereren van een %d bits sleutel:\n"
#: src/tincd.c:298 #: src/tincd.c:304
#, c-format #, c-format
msgid "Error during key generation!\n" msgid "Error during key generation!\n"
msgstr "Fout tijdens genereren sleutel!\n" msgstr "Fout tijdens genereren sleutel!\n"
#: src/tincd.c:301 #: src/tincd.c:307
#, c-format #, c-format
msgid "Done.\n" msgid "Done.\n"
msgstr "Klaar.\n" msgstr "Klaar.\n"
#: src/tincd.c:304 #: src/tincd.c:310
msgid "private RSA key" msgid "private RSA key"
msgstr "geheime RSA sleutel" msgstr "geheime RSA sleutel"
#: src/tincd.c:315 src/tincd.c:334 #: src/tincd.c:321 src/tincd.c:340
#, c-format #, c-format
msgid "" msgid ""
"Appending key to existing contents.\n" "Appending key to existing contents.\n"
@ -946,31 +965,31 @@ msgstr ""
"Sleutel wordt toegevoegd aan bestaande inhoud.\n" "Sleutel wordt toegevoegd aan bestaande inhoud.\n"
"Let er op dat er slechts één sleutel in het bestand is.\n" "Let er op dat er slechts één sleutel in het bestand is.\n"
#: src/tincd.c:328 #: src/tincd.c:334
msgid "public RSA key" msgid "public RSA key"
msgstr "openbare RSA sleutel" msgstr "openbare RSA sleutel"
#: src/tincd.c:387 #: src/tincd.c:393
msgid "Both netname and configuration directory given, using the latter..." msgid "Both netname and configuration directory given, using the latter..."
msgstr "" msgstr ""
"Zowel netnaam als configuratiemap zijn gegeven, laatste wordt gebruikt..." "Zowel netnaam als configuratiemap zijn gegeven, laatste wordt gebruikt..."
#: src/tincd.c:408 #: src/tincd.c:414
#, c-format #, c-format
msgid "%s version %s (built %s %s, protocol %d)\n" msgid "%s version %s (built %s %s, protocol %d)\n"
msgstr "%s versie %s (gemaakt %s %s, protocol %d)\n" msgstr "%s versie %s (gemaakt %s %s, protocol %d)\n"
#: src/tincd.c:410 #: src/tincd.c:416
#, c-format #, c-format
msgid "" msgid ""
"Copyright (C) 1998-2005 Ivo Timmermans, Guus Sliepen and others.\n" "Copyright (C) 1998-2006 Ivo Timmermans, Guus Sliepen and others.\n"
"See the AUTHORS file for a complete list.\n" "See the AUTHORS file for a complete list.\n"
"\n" "\n"
"tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n" "tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n"
"and you are welcome to redistribute it under certain conditions;\n" "and you are welcome to redistribute it under certain conditions;\n"
"see the file COPYING for details.\n" "see the file COPYING for details.\n"
msgstr "" msgstr ""
"Copyright (C) 1998-2005 Ivo Timmermans, Guus Sliepen en anderen.\n" "Copyright (C) 1998-2006 Ivo Timmermans, Guus Sliepen en anderen.\n"
"Zie het bestand AUTHORS voor een volledige lijst.\n" "Zie het bestand AUTHORS voor een volledige lijst.\n"
"\n" "\n"
"tinc wordt gedistribueerd ZONDER ENIGE GARANTIE. Dit is vrije " "tinc wordt gedistribueerd ZONDER ENIGE GARANTIE. Dit is vrije "
@ -978,15 +997,15 @@ msgstr ""
"en je bent welkom om het te distribueren onder bepaalde voorwaarden;\n" "en je bent welkom om het te distribueren onder bepaalde voorwaarden;\n"
"zie het bestand COPYING voor details.\n" "zie het bestand COPYING voor details.\n"
#: src/tincd.c:438 #: src/tincd.c:444
msgid "mlockall() not supported on this platform!" msgid "mlockall() not supported on this platform!"
msgstr "mlockall() wordt niet ondersteund op dit platform!" msgstr "mlockall() wordt niet ondersteund op dit platform!"
#: src/tincd.c:462 #: src/tincd.c:471
msgid "Error initializing LZO compressor!" msgid "Error initializing LZO compressor!"
msgstr "Fout tijdens initialiseren LZO compressor!" msgstr "Fout tijdens initialiseren LZO compressor!"
#: src/tincd.c:503 #: src/tincd.c:512
msgid "Terminating" msgid "Terminating"
msgstr "Beëindigen" msgstr "Beëindigen"
@ -1193,23 +1212,23 @@ msgstr "Nieuw MAC adres %hx:%hx:%hx:%hx:%hx:%hx geleerd"
msgid "Subnet %s expired" msgid "Subnet %s expired"
msgstr "Subnet %s is verlopen" msgstr "Subnet %s is verlopen"
#: src/route.c:184 src/route.c:337 src/route.c:479 #: src/route.c:190 src/route.c:345 src/route.c:489
#, c-format #, c-format
msgid "Packet looping back to %s (%s)!" msgid "Packet looping back to %s (%s)!"
msgstr "Pakket komt terug naar %s (%s)!" msgstr "Pakket komt terug naar %s (%s)!"
#: src/route.c:283 #: src/route.c:289
#, c-format #, c-format
msgid "Length of packet (%d) doesn't match length in IPv4 header (%d)" msgid "Length of packet (%d) doesn't match length in IPv4 header (%zd)"
msgstr "" msgstr ""
"Lengte van pakket (%d) komt niet overeen met lengte in IPv4 header (%d)" "Lengte van pakket (%d) komt niet overeen met lengte in IPv4 header (%zd)"
#: src/route.c:287 #: src/route.c:293
#, c-format #, c-format
msgid "Fragmenting packet of %d bytes to %s (%s)" msgid "Fragmenting packet of %d bytes to %s (%s)"
msgstr "Fragmentatie pakket van %d bytes naar %s (%s)" msgstr "Fragmentatie pakket van %d bytes naar %s (%s)"
#: src/route.c:325 #: src/route.c:333
#, c-format #, c-format
msgid "" msgid ""
"Cannot route packet from %s (%s): unknown IPv4 destination address %d.%d.%d.%" "Cannot route packet from %s (%s): unknown IPv4 destination address %d.%d.%d.%"
@ -1217,12 +1236,12 @@ msgid ""
msgstr "" msgstr ""
"Kan pakket van %s (%s) niet routeren: onbekend IPv4 doeladres %d.%d.%d.%d" "Kan pakket van %s (%s) niet routeren: onbekend IPv4 doeladres %d.%d.%d.%d"
#: src/route.c:350 src/route.c:489 #: src/route.c:358 src/route.c:499
#, c-format #, c-format
msgid "Packet for %s (%s) length %d larger than MTU %d" msgid "Packet for %s (%s) length %d larger than MTU %d"
msgstr "Packet voor %s (%s) lengte %d groter dan MTU %d" msgstr "Packet voor %s (%s) lengte %d groter dan MTU %d"
#: src/route.c:463 #: src/route.c:473
#, c-format #, c-format
msgid "" msgid ""
"Cannot route packet from %s (%s): unknown IPv6 destination address %hx:%hx:%" "Cannot route packet from %s (%s): unknown IPv6 destination address %hx:%hx:%"
@ -1231,26 +1250,26 @@ msgstr ""
"Kan pakket van %s (%s) niet routeren: onbekend IPv6 doeladres %hx:%hx:%hx:%" "Kan pakket van %s (%s) niet routeren: onbekend IPv6 doeladres %hx:%hx:%hx:%"
"hx:%hx:%hx:%hx:%hx" "hx:%hx:%hx:%hx:%hx"
#: src/route.c:521 #: src/route.c:531
#, c-format #, c-format
msgid "Got neighbor solicitation request from %s (%s) while in router mode!" msgid "Got neighbor solicitation request from %s (%s) while in router mode!"
msgstr "" msgstr ""
"Kreeg neighbor solicitation request van %s (%s) terwijl we in router mode " "Kreeg neighbor solicitation request van %s (%s) terwijl we in router mode "
"werken!" "werken!"
#: src/route.c:540 #: src/route.c:550
msgid "" msgid ""
"Cannot route packet: received unknown type neighbor solicitation request" "Cannot route packet: received unknown type neighbor solicitation request"
msgstr "" msgstr ""
"Kan pakket niet routeren: ontvangst van onbekend type neighbor solicitation " "Kan pakket niet routeren: ontvangst van onbekend type neighbor solicitation "
"verzoek" "verzoek"
#: src/route.c:559 #: src/route.c:569
msgid "Cannot route packet: checksum error for neighbor solicitation request" msgid "Cannot route packet: checksum error for neighbor solicitation request"
msgstr "" msgstr ""
"Kan pakket niet routeren: checksum fout voor neighbor solicitation verzoek" "Kan pakket niet routeren: checksum fout voor neighbor solicitation verzoek"
#: src/route.c:568 #: src/route.c:578
#, c-format #, c-format
msgid "" msgid ""
"Cannot route packet: neighbor solicitation request for unknown address %hx:%" "Cannot route packet: neighbor solicitation request for unknown address %hx:%"
@ -1259,30 +1278,30 @@ msgstr ""
"Kan pakket niet routeren: neighbor solicitation verzoek voor onbekend adres %" "Kan pakket niet routeren: neighbor solicitation verzoek voor onbekend adres %"
"hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx" "hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx"
#: src/route.c:655 #: src/route.c:665
#, c-format #, c-format
msgid "Got ARP request from %s (%s) while in router mode!" msgid "Got ARP request from %s (%s) while in router mode!"
msgstr "Kreeg ARP request van %s (%s) terwijl we in router mode werken!" msgstr "Kreeg ARP request van %s (%s) terwijl we in router mode werken!"
#: src/route.c:672 #: src/route.c:682
msgid "Cannot route packet: received unknown type ARP request" msgid "Cannot route packet: received unknown type ARP request"
msgstr "Kan pakket niet routeren: ontvangst van onbekend type ARP verzoek" msgstr "Kan pakket niet routeren: ontvangst van onbekend type ARP verzoek"
#: src/route.c:681 #: src/route.c:691
#, c-format #, c-format
msgid "Cannot route packet: ARP request for unknown address %d.%d.%d.%d" msgid "Cannot route packet: ARP request for unknown address %d.%d.%d.%d"
msgstr "Kan pakket niet routeren: ARP verzoek voor onbekend adres %d.%d.%d.%d" msgstr "Kan pakket niet routeren: ARP verzoek voor onbekend adres %d.%d.%d.%d"
#: src/route.c:737 #: src/route.c:747
#, c-format #, c-format
msgid "Cannot route packet from %s (%s): unknown type %hx" msgid "Cannot route packet from %s (%s): unknown type %hx"
msgstr "Kan pakket van %s (%s) niet routeren: onbekend type %hx" msgstr "Kan pakket van %s (%s) niet routeren: onbekend type %hx"
#: src/node.c:181 #: src/node.c:183
msgid "Nodes:" msgid "Nodes:"
msgstr "Nodes:" msgstr "Nodes:"
#: src/node.c:185 #: src/node.c:187
#, c-format #, c-format
msgid "" msgid ""
" %s at %s cipher %d digest %d maclength %d compression %d options %lx status " " %s at %s cipher %d digest %d maclength %d compression %d options %lx status "
@ -1291,7 +1310,7 @@ msgstr ""
" %s op %s cipher %d digest %d maclengte %d compressie %d opties %lx status %" " %s op %s cipher %d digest %d maclengte %d compressie %d opties %lx status %"
"04x nexthop %s via %s pmtu %d (min %d max %d)" "04x nexthop %s via %s pmtu %d (min %d max %d)"
#: src/node.c:192 #: src/node.c:194
msgid "End of nodes." msgid "End of nodes."
msgstr "Einde van nodes." msgstr "Einde van nodes."
@ -1308,12 +1327,12 @@ msgstr " %s naar %s op %s opties %lx gewicht %d"
msgid "End of edges." msgid "End of edges."
msgstr "Einde van edges." msgstr "Einde van edges."
#: src/graph.c:261 #: src/graph.c:264
#, c-format #, c-format
msgid "Node %s (%s) became reachable" msgid "Node %s (%s) became reachable"
msgstr "Node %s (%s) werd bereikbaar" msgstr "Node %s (%s) werd bereikbaar"
#: src/graph.c:265 #: src/graph.c:268
#, c-format #, c-format
msgid "Node %s (%s) became unreachable" msgid "Node %s (%s) became unreachable"
msgstr "Node %s (%s) is niet meer bereikbaar" msgstr "Node %s (%s) is niet meer bereikbaar"

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: tinc-devel@tinc-vpn.org\n" "Report-Msgid-Bugs-To: tinc-devel@tinc-vpn.org\n"
"POT-Creation-Date: 2005-05-04 20:25+0200\n" "POT-Creation-Date: 2006-11-14 13:46+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -20,60 +20,60 @@ msgstr ""
msgid "(unable to format errormessage)" msgid "(unable to format errormessage)"
msgstr "" msgstr ""
#: src/conf.c:159 #: src/conf.c:160
#, c-format #, c-format
msgid "\"yes\" or \"no\" expected for configuration variable %s in %s line %d" msgid "\"yes\" or \"no\" expected for configuration variable %s in %s line %d"
msgstr "" msgstr ""
#: src/conf.c:175 #: src/conf.c:176
#, c-format #, c-format
msgid "Integer expected for configuration variable %s in %s line %d" msgid "Integer expected for configuration variable %s in %s line %d"
msgstr "" msgstr ""
#: src/conf.c:209 #: src/conf.c:210
#, c-format #, c-format
msgid "" msgid ""
"Hostname or IP address expected for configuration variable %s in %s line %d" "Hostname or IP address expected for configuration variable %s in %s line %d"
msgstr "" msgstr ""
#: src/conf.c:225 #: src/conf.c:226
#, c-format #, c-format
msgid "Subnet expected for configuration variable %s in %s line %d" msgid "Subnet expected for configuration variable %s in %s line %d"
msgstr "" msgstr ""
#: src/conf.c:236 #: src/conf.c:237
#, c-format #, c-format
msgid "" msgid ""
"Network address and prefix length do not match for configuration variable %s " "Network address and prefix length do not match for configuration variable %s "
"in %s line %d" "in %s line %d"
msgstr "" msgstr ""
#: src/conf.c:336 #: src/conf.c:337
#, c-format #, c-format
msgid "Cannot open config file %s: %s" msgid "Cannot open config file %s: %s"
msgstr "" msgstr ""
#: src/conf.c:390 #: src/conf.c:391
#, c-format #, c-format
msgid "No value for variable `%s' on line %d while reading config file %s" msgid "No value for variable `%s' on line %d while reading config file %s"
msgstr "" msgstr ""
#: src/conf.c:421 #: src/conf.c:422
#, c-format #, c-format
msgid "Failed to read `%s': %s" msgid "Failed to read `%s': %s"
msgstr "" msgstr ""
#: src/conf.c:443 #: src/conf.c:444
#, c-format #, c-format
msgid "Please enter a file to save %s to [%s]: " msgid "Please enter a file to save %s to [%s]: "
msgstr "" msgstr ""
#: src/conf.c:450 #: src/conf.c:451
#, c-format #, c-format
msgid "Error while reading stdin: %s\n" msgid "Error while reading stdin: %s\n"
msgstr "" msgstr ""
#: src/conf.c:482 #: src/conf.c:483
#, c-format #, c-format
msgid "Error opening file `%s': %s\n" msgid "Error opening file `%s': %s\n"
msgstr "" msgstr ""
@ -92,44 +92,58 @@ msgstr ""
#: src/connection.c:124 #: src/connection.c:124
#, c-format #, c-format
msgid " %s at %s options %lx socket %d status %04x" msgid " %s at %s options %lx socket %d status %04x outbuf %d/%d/%d"
msgstr "" msgstr ""
#: src/connection.c:128 #: src/connection.c:129
msgid "End of connections." msgid "End of connections."
msgstr "" msgstr ""
#: src/meta.c:45 #: src/meta.c:44
#, c-format #, c-format
msgid "Sending %d bytes of metadata to %s (%s)" msgid "Sending %d bytes of metadata to %s (%s)"
msgstr "" msgstr ""
#: src/meta.c:51 #: src/meta.c:66
#, c-format #, c-format
msgid "Error while encrypting metadata to %s (%s): %s" msgid "Error while encrypting metadata to %s (%s): %s"
msgstr "" msgstr ""
#: src/meta.c:64 src/meta.c:117 #: src/meta.c:70
msgid "Encrypted data too long! Heap corrupted!"
msgstr ""
#: src/meta.c:86
#, c-format
msgid "Flushing %d bytes to %s (%s)"
msgstr ""
#: src/meta.c:93 src/meta.c:156
#, c-format #, c-format
msgid "Connection closed by %s (%s)" msgid "Connection closed by %s (%s)"
msgstr "" msgstr ""
#: src/meta.c:69 #: src/meta.c:99
#, c-format #, c-format
msgid "Sending meta data to %s (%s) failed: %s" msgid "Flushing %d bytes to %s (%s) would block"
msgstr "" msgstr ""
#: src/meta.c:122 #: src/meta.c:104
#, c-format
msgid "Flushing meta data to %s (%s) failed: %s"
msgstr ""
#: src/meta.c:161
#, c-format #, c-format
msgid "Metadata socket read error for %s (%s): %s" msgid "Metadata socket read error for %s (%s): %s"
msgstr "" msgstr ""
#: src/meta.c:137 #: src/meta.c:176
#, c-format #, c-format
msgid "Error while decrypting metadata from %s (%s): %s" msgid "Error while decrypting metadata from %s (%s): %s"
msgstr "" msgstr ""
#: src/meta.c:190 #: src/meta.c:229
#, c-format #, c-format
msgid "Metadata read buffer overflow for %s (%s)" msgid "Metadata read buffer overflow for %s (%s)"
msgstr "" msgstr ""
@ -143,126 +157,131 @@ msgstr ""
msgid "Purging node %s (%s)" msgid "Purging node %s (%s)"
msgstr "" msgstr ""
#: src/net.c:170 #: src/net.c:173
#, c-format #, c-format
msgid "Closing connection with %s (%s)" msgid "Closing connection with %s (%s)"
msgstr "" msgstr ""
#: src/net.c:235 #: src/net.c:244
#, c-format #, c-format
msgid "%s (%s) didn't respond to PING" msgid "%s (%s) didn't respond to PING in %ld seconds"
msgstr "" msgstr ""
#: src/net.c:244 #: src/net.c:253
#, c-format #, c-format
msgid "Old connection_t for %s (%s) status %04x still lingering, deleting..." msgid "Old connection_t for %s (%s) status %04x still lingering, deleting..."
msgstr "" msgstr ""
#: src/net.c:249 #: src/net.c:258
#, c-format #, c-format
msgid "Timeout from %s (%s) during authentication" msgid "Timeout from %s (%s) during authentication"
msgstr "" msgstr ""
#: src/net.c:297 #: src/net.c:273
#, c-format
msgid "%s (%s) could not flush for %ld seconds (%d bytes remaining)"
msgstr ""
#: src/net.c:318
#, c-format #, c-format
msgid "Error while connecting to %s (%s): %s" msgid "Error while connecting to %s (%s): %s"
msgstr "" msgstr ""
#: src/net.c:353 #: src/net.c:383
#, c-format #, c-format
msgid "Error while waiting for input: %s" msgid "Error while waiting for input: %s"
msgstr "" msgstr ""
#: src/net.c:384 #: src/net.c:414
msgid "Regenerating symmetric key" msgid "Regenerating symmetric key"
msgstr "" msgstr ""
#: src/net.c:401 #: src/net.c:431
msgid "Flushing event queue" msgid "Flushing event queue"
msgstr "" msgstr ""
#: src/net.c:425 #: src/net.c:455
msgid "Unable to reread configuration file, exitting." msgid "Unable to reread configuration file, exitting."
msgstr "" msgstr ""
#: src/net_packet.c:75 #: src/net_packet.c:80
#, c-format #, c-format
msgid "No response to MTU probes from %s (%s)" msgid "No response to MTU probes from %s (%s)"
msgstr "" msgstr ""
#: src/net_packet.c:82 #: src/net_packet.c:87
#, c-format #, c-format
msgid "Fixing MTU of %s (%s) to %d after %d probes" msgid "Fixing MTU of %s (%s) to %d after %d probes"
msgstr "" msgstr ""
#: src/net_packet.c:94 #: src/net_packet.c:99
#, c-format #, c-format
msgid "Sending MTU probe length %d to %s (%s)" msgid "Sending MTU probe length %d to %s (%s)"
msgstr "" msgstr ""
#: src/net_packet.c:107 #: src/net_packet.c:112
#, c-format #, c-format
msgid "Got MTU probe length %d from %s (%s)" msgid "Got MTU probe length %d from %s (%s)"
msgstr "" msgstr ""
#: src/net_packet.c:164 #: src/net_packet.c:169
#, c-format #, c-format
msgid "Received packet of %d bytes from %s (%s)" msgid "Received packet of %d bytes from %s (%s)"
msgstr "" msgstr ""
#: src/net_packet.c:185 src/route.c:92 #: src/net_packet.c:190 src/route.c:92
#, c-format #, c-format
msgid "Got too short packet from %s (%s)" msgid "Got too short packet from %s (%s)"
msgstr "" msgstr ""
#: src/net_packet.c:198 #: src/net_packet.c:203
#, c-format #, c-format
msgid "Got unauthenticated packet from %s (%s)" msgid "Got unauthenticated packet from %s (%s)"
msgstr "" msgstr ""
#: src/net_packet.c:213 #: src/net_packet.c:218
#, c-format #, c-format
msgid "Error decrypting packet from %s (%s): %s" msgid "Error decrypting packet from %s (%s): %s"
msgstr "" msgstr ""
#: src/net_packet.c:229 #: src/net_packet.c:234
#, c-format #, c-format
msgid "Lost %d packets from %s (%s)" msgid "Lost %d packets from %s (%s)"
msgstr "" msgstr ""
#: src/net_packet.c:235 #: src/net_packet.c:240
#, c-format #, c-format
msgid "Got late or replayed packet from %s (%s), seqno %d, last received %d" msgid "Got late or replayed packet from %s (%s), seqno %d, last received %d"
msgstr "" msgstr ""
#: src/net_packet.c:259 #: src/net_packet.c:264
#, c-format #, c-format
msgid "Error while uncompressing packet from %s (%s)" msgid "Error while uncompressing packet from %s (%s)"
msgstr "" msgstr ""
#: src/net_packet.c:307 #: src/net_packet.c:313
#, c-format #, c-format
msgid "No valid key known yet for %s (%s), queueing packet" msgid "No valid key known yet for %s (%s), queueing packet"
msgstr "" msgstr ""
#: src/net_packet.c:336 #: src/net_packet.c:342
#, c-format #, c-format
msgid "Error while compressing packet to %s (%s)" msgid "Error while compressing packet to %s (%s)"
msgstr "" msgstr ""
#: src/net_packet.c:358 #: src/net_packet.c:364
#, c-format #, c-format
msgid "Error while encrypting packet to %s (%s): %s" msgid "Error while encrypting packet to %s (%s): %s"
msgstr "" msgstr ""
#: src/net_packet.c:390 #: src/net_packet.c:396
#, c-format #, c-format
msgid "Setting outgoing packet priority to %d" msgid "Setting outgoing packet priority to %d"
msgstr "" msgstr ""
#: src/net_packet.c:392 src/net_setup.c:481 src/net_socket.c:73 #: src/net_packet.c:398 src/net_setup.c:478 src/net_socket.c:129
#: src/net_socket.c:124 src/net_socket.c:153 src/tincd.c:434 src/tincd.c:468 #: src/net_socket.c:158 src/tincd.c:440 src/tincd.c:477 src/process.c:198
#: src/process.c:198 src/process.c:231 src/process.c:428 src/bsd/device.c:93 #: src/process.c:231 src/process.c:428 src/bsd/device.c:93
#: src/bsd/device.c:112 src/cygwin/device.c:140 src/cygwin/device.c:171 #: src/bsd/device.c:112 src/cygwin/device.c:140 src/cygwin/device.c:171
#: src/mingw/device.c:66 src/mingw/device.c:75 src/mingw/device.c:80 #: src/mingw/device.c:66 src/mingw/device.c:75 src/mingw/device.c:80
#: src/mingw/device.c:236 src/mingw/device.c:243 src/mingw/device.c:248 #: src/mingw/device.c:236 src/mingw/device.c:243 src/mingw/device.c:248
@ -273,42 +292,42 @@ msgstr ""
msgid "System call `%s' failed: %s" msgid "System call `%s' failed: %s"
msgstr "" msgstr ""
#: src/net_packet.c:403 #: src/net_packet.c:409
#, c-format #, c-format
msgid "Error sending packet to %s (%s): %s" msgid "Error sending packet to %s (%s): %s"
msgstr "" msgstr ""
#: src/net_packet.c:426 #: src/net_packet.c:432
#, c-format #, c-format
msgid "Sending packet of %d bytes to %s (%s)" msgid "Sending packet of %d bytes to %s (%s)"
msgstr "" msgstr ""
#: src/net_packet.c:430 #: src/net_packet.c:436
#, c-format #, c-format
msgid "Node %s (%s) is not reachable" msgid "Node %s (%s) is not reachable"
msgstr "" msgstr ""
#: src/net_packet.c:438 #: src/net_packet.c:444
#, c-format #, c-format
msgid "Sending packet to %s via %s (%s)" msgid "Sending packet to %s via %s (%s)"
msgstr "" msgstr ""
#: src/net_packet.c:457 #: src/net_packet.c:463
#, c-format #, c-format
msgid "Broadcasting packet of %d bytes from %s (%s)" msgid "Broadcasting packet of %d bytes from %s (%s)"
msgstr "" msgstr ""
#: src/net_packet.c:480 #: src/net_packet.c:483
#, c-format #, c-format
msgid "Flushing queue for %s (%s)" msgid "Flushing queue for %s (%s)"
msgstr "" msgstr ""
#: src/net_packet.c:502 #: src/net_packet.c:505
#, c-format #, c-format
msgid "Receiving packet failed: %s" msgid "Receiving packet failed: %s"
msgstr "" msgstr ""
#: src/net_packet.c:512 #: src/net_packet.c:515
#, c-format #, c-format
msgid "Received UDP packet from unknown source %s" msgid "Received UDP packet from unknown source %s"
msgstr "" msgstr ""
@ -368,145 +387,145 @@ msgstr ""
msgid "Cannot open host configuration file for myself!" msgid "Cannot open host configuration file for myself!"
msgstr "" msgstr ""
#: src/net_setup.c:307 #: src/net_setup.c:305
msgid "Invalid routing mode!" msgid "Invalid routing mode!"
msgstr "" msgstr ""
#: src/net_setup.c:318 #: src/net_setup.c:316
msgid "PriorityInheritance not supported on this platform" msgid "PriorityInheritance not supported on this platform"
msgstr "" msgstr ""
#: src/net_setup.c:326 #: src/net_setup.c:324
msgid "Bogus maximum timeout!" msgid "Bogus maximum timeout!"
msgstr "" msgstr ""
#: src/net_setup.c:340 #: src/net_setup.c:338
msgid "Invalid address family!" msgid "Invalid address family!"
msgstr "" msgstr ""
#: src/net_setup.c:358 #: src/net_setup.c:356
msgid "Unrecognized cipher type!" msgid "Unrecognized cipher type!"
msgstr "" msgstr ""
#: src/net_setup.c:383 src/protocol_auth.c:192 #: src/net_setup.c:381 src/protocol_auth.c:194
#, c-format #, c-format
msgid "Error during initialisation of cipher for %s (%s): %s" msgid "Error during initialisation of cipher for %s (%s): %s"
msgstr "" msgstr ""
#: src/net_setup.c:400 #: src/net_setup.c:398
msgid "Unrecognized digest type!" msgid "Unrecognized digest type!"
msgstr "" msgstr ""
#: src/net_setup.c:413 #: src/net_setup.c:411
msgid "MAC length exceeds size of digest!" msgid "MAC length exceeds size of digest!"
msgstr "" msgstr ""
#: src/net_setup.c:416 #: src/net_setup.c:414
msgid "Bogus MAC length!" msgid "Bogus MAC length!"
msgstr "" msgstr ""
#: src/net_setup.c:430 #: src/net_setup.c:428
msgid "Bogus compression level!" msgid "Bogus compression level!"
msgstr "" msgstr ""
#: src/net_setup.c:503 #: src/net_setup.c:500
#, c-format #, c-format
msgid "Listening on %s" msgid "Listening on %s"
msgstr "" msgstr ""
#: src/net_setup.c:514 #: src/net_setup.c:511
msgid "Ready" msgid "Ready"
msgstr "" msgstr ""
#: src/net_setup.c:516 #: src/net_setup.c:513
msgid "Unable to create any listening socket!" msgid "Unable to create any listening socket!"
msgstr "" msgstr ""
#: src/net_socket.c:63 #: src/net_socket.c:63
#, c-format #, c-format
msgid "fcntl for %s: %s"
msgstr ""
#: src/net_socket.c:90
#, c-format
msgid "Creating metasocket failed: %s" msgid "Creating metasocket failed: %s"
msgstr "" msgstr ""
#: src/net_socket.c:104 src/net_socket.c:196 #: src/net_socket.c:109 src/net_socket.c:201
#, c-format #, c-format
msgid "Can't bind to interface %s: %s" msgid "Can't bind to interface %s: %s"
msgstr "" msgstr ""
#: src/net_socket.c:109 #: src/net_socket.c:114
msgid "BindToInterface not supported on this platform" msgid "BindToInterface not supported on this platform"
msgstr "" msgstr ""
#: src/net_socket.c:116 #: src/net_socket.c:121
#, c-format #, c-format
msgid "Can't bind to %s/tcp: %s" msgid "Can't bind to %s/tcp: %s"
msgstr "" msgstr ""
#: src/net_socket.c:143 #: src/net_socket.c:148
#, c-format #, c-format
msgid "Creating UDP socket failed: %s" msgid "Creating UDP socket failed: %s"
msgstr "" msgstr ""
#: src/net_socket.c:207 #: src/net_socket.c:212
#, c-format #, c-format
msgid "Can't bind to %s/udp: %s" msgid "Can't bind to %s/udp: %s"
msgstr "" msgstr ""
#: src/net_socket.c:234 #: src/net_socket.c:239
#, c-format #, c-format
msgid "Trying to re-establish outgoing connection in %d seconds" msgid "Trying to re-establish outgoing connection in %d seconds"
msgstr "" msgstr ""
#: src/net_socket.c:242 #: src/net_socket.c:247
#, c-format #, c-format
msgid "Connected to %s (%s)" msgid "Connected to %s (%s)"
msgstr "" msgstr ""
#: src/net_socket.c:249 src/net_socket.c:333 src/net_socket.c:445 #: src/net_socket.c:266
#, c-format
msgid "fcntl for %s: %s"
msgstr ""
#: src/net_socket.c:269
#, c-format #, c-format
msgid "Could not set up a meta connection to %s" msgid "Could not set up a meta connection to %s"
msgstr "" msgstr ""
#: src/net_socket.c:303 #: src/net_socket.c:300
#, c-format #, c-format
msgid "Trying to connect to %s (%s)" msgid "Trying to connect to %s (%s)"
msgstr "" msgstr ""
#: src/net_socket.c:309 #: src/net_socket.c:306
#, c-format #, c-format
msgid "Creating socket for %s failed: %s" msgid "Creating socket for %s failed: %s"
msgstr "" msgstr ""
#: src/net_socket.c:349 #: src/net_socket.c:328
#, c-format #, c-format
msgid "%s: %s" msgid "%s: %s"
msgstr "" msgstr ""
#: src/net_socket.c:370 #: src/net_socket.c:349
#, c-format #, c-format
msgid "Already connected to %s" msgid "Already connected to %s"
msgstr "" msgstr ""
#: src/net_socket.c:389 #: src/net_socket.c:368
#, c-format #, c-format
msgid "No address specified for %s" msgid "No address specified for %s"
msgstr "" msgstr ""
#: src/net_socket.c:419 #: src/net_socket.c:399
#, c-format #, c-format
msgid "Accepting a new connection failed: %s" msgid "Accepting a new connection failed: %s"
msgstr "" msgstr ""
#: src/net_socket.c:438 #: src/net_socket.c:418
#, c-format #, c-format
msgid "Connection from %s" msgid "Connection from %s"
msgstr "" msgstr ""
#: src/net_socket.c:471 #: src/net_socket.c:443
#, c-format #, c-format
msgid "Invalid name for outgoing connection in %s line %d" msgid "Invalid name for outgoing connection in %s line %d"
msgstr "" msgstr ""
@ -605,11 +624,11 @@ msgstr ""
msgid "Aging past requests: deleted %d, left %d" msgid "Aging past requests: deleted %d, left %d"
msgstr "" msgstr ""
#: src/protocol_auth.c:58 src/protocol_auth.c:212 src/protocol_auth.c:341 #: src/protocol_auth.c:58 src/protocol_auth.c:214 src/protocol_auth.c:345
#: src/protocol_auth.c:408 src/protocol_auth.c:534 src/protocol_edge.c:73 #: src/protocol_auth.c:412 src/protocol_auth.c:538 src/protocol_edge.c:73
#: src/protocol_edge.c:188 src/protocol_key.c:62 src/protocol_key.c:105 #: src/protocol_edge.c:188 src/protocol_key.c:62 src/protocol_key.c:105
#: src/protocol_key.c:172 src/protocol_misc.c:54 src/protocol_misc.c:83 #: src/protocol_key.c:173 src/protocol_misc.c:56 src/protocol_misc.c:85
#: src/protocol_misc.c:171 src/protocol_subnet.c:58 src/protocol_subnet.c:170 #: src/protocol_misc.c:176 src/protocol_subnet.c:58 src/protocol_subnet.c:170
#, c-format #, c-format
msgid "Got bad %s from %s (%s)" msgid "Got bad %s from %s (%s)"
msgstr "" msgstr ""
@ -637,76 +656,76 @@ msgstr ""
msgid "Peer %s had unknown identity (%s)" msgid "Peer %s had unknown identity (%s)"
msgstr "" msgstr ""
#: src/protocol_auth.c:156 #: src/protocol_auth.c:158
#, c-format #, c-format
msgid "Generated random meta key (unencrypted): %s" msgid "Generated random meta key (unencrypted): %s"
msgstr "" msgstr ""
#: src/protocol_auth.c:168 src/protocol_auth.c:241 #: src/protocol_auth.c:170 src/protocol_auth.c:243
#, c-format #, c-format
msgid "Error during encryption of meta key for %s (%s)" msgid "Error during encryption of meta key for %s (%s)"
msgstr "" msgstr ""
#: src/protocol_auth.c:222 src/protocol_auth.c:351 src/protocol_auth.c:416 #: src/protocol_auth.c:224 src/protocol_auth.c:355 src/protocol_auth.c:420
#: src/protocol_auth.c:438 #: src/protocol_auth.c:442
#, c-format #, c-format
msgid "Possible intruder %s (%s): %s" msgid "Possible intruder %s (%s): %s"
msgstr "" msgstr ""
#: src/protocol_auth.c:249 #: src/protocol_auth.c:251
#, c-format #, c-format
msgid "Received random meta key (unencrypted): %s" msgid "Received random meta key (unencrypted): %s"
msgstr "" msgstr ""
#: src/protocol_auth.c:260 #: src/protocol_auth.c:262
#, c-format #, c-format
msgid "%s (%s) uses unknown cipher!" msgid "%s (%s) uses unknown cipher!"
msgstr "" msgstr ""
#: src/protocol_auth.c:268 #: src/protocol_auth.c:270
#, c-format #, c-format
msgid "Error during initialisation of cipher from %s (%s): %s" msgid "Error during initialisation of cipher from %s (%s): %s"
msgstr "" msgstr ""
#: src/protocol_auth.c:284 src/protocol_key.c:242 #: src/protocol_auth.c:286 src/protocol_key.c:243
#, c-format #, c-format
msgid "Node %s (%s) uses unknown digest!" msgid "Node %s (%s) uses unknown digest!"
msgstr "" msgstr ""
#: src/protocol_auth.c:289 #: src/protocol_auth.c:291
#, c-format #, c-format
msgid "%s (%s) uses bogus MAC length!" msgid "%s (%s) uses bogus MAC length!"
msgstr "" msgstr ""
#: src/protocol_auth.c:384 #: src/protocol_auth.c:388
#, c-format #, c-format
msgid "Error during calculation of response for %s (%s): %s" msgid "Error during calculation of response for %s (%s): %s"
msgstr "" msgstr ""
#: src/protocol_auth.c:417 #: src/protocol_auth.c:421
msgid "wrong challenge reply length" msgid "wrong challenge reply length"
msgstr "" msgstr ""
#: src/protocol_auth.c:430 #: src/protocol_auth.c:434
#, c-format #, c-format
msgid "Error during calculation of response from %s (%s): %s" msgid "Error during calculation of response from %s (%s): %s"
msgstr "" msgstr ""
#: src/protocol_auth.c:439 #: src/protocol_auth.c:443
msgid "wrong challenge reply" msgid "wrong challenge reply"
msgstr "" msgstr ""
#: src/protocol_auth.c:444 #: src/protocol_auth.c:448
#, c-format #, c-format
msgid "Expected challenge reply: %s" msgid "Expected challenge reply: %s"
msgstr "" msgstr ""
#: src/protocol_auth.c:550 #: src/protocol_auth.c:554
#, c-format #, c-format
msgid "Established a second connection with %s (%s), closing old connection" msgid "Established a second connection with %s (%s), closing old connection"
msgstr "" msgstr ""
#: src/protocol_auth.c:573 #: src/protocol_auth.c:577
#, c-format #, c-format
msgid "Connection with %s (%s) activated" msgid "Connection with %s (%s) activated"
msgstr "" msgstr ""
@ -746,50 +765,50 @@ msgstr ""
msgid "Got %s from %s (%s) origin %s which does not exist" msgid "Got %s from %s (%s) origin %s which does not exist"
msgstr "" msgstr ""
#: src/protocol_key.c:113 src/protocol_key.c:180 #: src/protocol_key.c:113 src/protocol_key.c:181
#, c-format #, c-format
msgid "" msgid ""
"Got %s from %s (%s) origin %s which does not exist in our connection list" "Got %s from %s (%s) origin %s which does not exist in our connection list"
msgstr "" msgstr ""
#: src/protocol_key.c:121 src/protocol_key.c:188 #: src/protocol_key.c:121 src/protocol_key.c:189
#, c-format #, c-format
msgid "" msgid ""
"Got %s from %s (%s) destination %s which does not exist in our connection " "Got %s from %s (%s) destination %s which does not exist in our connection "
"list" "list"
msgstr "" msgstr ""
#: src/protocol_key.c:222 #: src/protocol_key.c:223
#, c-format #, c-format
msgid "Node %s (%s) uses unknown cipher!" msgid "Node %s (%s) uses unknown cipher!"
msgstr "" msgstr ""
#: src/protocol_key.c:228 #: src/protocol_key.c:229
#, c-format #, c-format
msgid "Node %s (%s) uses wrong keylength!" msgid "Node %s (%s) uses wrong keylength!"
msgstr "" msgstr ""
#: src/protocol_key.c:248 #: src/protocol_key.c:249
#, c-format #, c-format
msgid "Node %s (%s) uses bogus MAC length!" msgid "Node %s (%s) uses bogus MAC length!"
msgstr "" msgstr ""
#: src/protocol_key.c:257 #: src/protocol_key.c:258
#, c-format #, c-format
msgid "Node %s (%s) uses bogus compression level!" msgid "Node %s (%s) uses bogus compression level!"
msgstr "" msgstr ""
#: src/protocol_key.c:265 #: src/protocol_key.c:266
#, c-format #, c-format
msgid "Error during initialisation of key from %s (%s): %s" msgid "Error during initialisation of key from %s (%s): %s"
msgstr "" msgstr ""
#: src/protocol_misc.c:59 #: src/protocol_misc.c:61
#, c-format #, c-format
msgid "Status message from %s (%s): %d: %s" msgid "Status message from %s (%s): %d: %s"
msgstr "" msgstr ""
#: src/protocol_misc.c:88 #: src/protocol_misc.c:90
#, c-format #, c-format
msgid "Error message from %s (%s): %d: %s" msgid "Error message from %s (%s): %d: %s"
msgstr "" msgstr ""
@ -836,19 +855,19 @@ msgstr ""
msgid "End of subnet list." msgid "End of subnet list."
msgstr "" msgstr ""
#: src/tincd.c:108 #: src/tincd.c:114
#, c-format #, c-format
msgid "Try `%s --help' for more information.\n" msgid "Try `%s --help' for more information.\n"
msgstr "" msgstr ""
#: src/tincd.c:111 #: src/tincd.c:117
#, c-format #, c-format
msgid "" msgid ""
"Usage: %s [option]...\n" "Usage: %s [option]...\n"
"\n" "\n"
msgstr "" msgstr ""
#: src/tincd.c:112 #: src/tincd.c:118
#, c-format #, c-format
msgid "" msgid ""
" -c, --config=DIR Read configuration options from DIR.\n" " -c, --config=DIR Read configuration options from DIR.\n"
@ -865,67 +884,67 @@ msgid ""
"\n" "\n"
msgstr "" msgstr ""
#: src/tincd.c:123 #: src/tincd.c:129
#, c-format #, c-format
msgid "Report bugs to tinc@tinc-vpn.org.\n" msgid "Report bugs to tinc@tinc-vpn.org.\n"
msgstr "" msgstr ""
#: src/tincd.c:179 #: src/tincd.c:185
#, c-format #, c-format
msgid "" msgid ""
"Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, " "Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, "
"USR1, USR2, WINCH, INT or ALRM.\n" "USR1, USR2, WINCH, INT or ALRM.\n"
msgstr "" msgstr ""
#: src/tincd.c:201 #: src/tincd.c:207
#, c-format #, c-format
msgid "" msgid ""
"Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n" "Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n"
msgstr "" msgstr ""
#: src/tincd.c:294 #: src/tincd.c:300
#, c-format #, c-format
msgid "Generating %d bits keys:\n" msgid "Generating %d bits keys:\n"
msgstr "" msgstr ""
#: src/tincd.c:298 #: src/tincd.c:304
#, c-format #, c-format
msgid "Error during key generation!\n" msgid "Error during key generation!\n"
msgstr "" msgstr ""
#: src/tincd.c:301 #: src/tincd.c:307
#, c-format #, c-format
msgid "Done.\n" msgid "Done.\n"
msgstr "" msgstr ""
#: src/tincd.c:304 #: src/tincd.c:310
msgid "private RSA key" msgid "private RSA key"
msgstr "" msgstr ""
#: src/tincd.c:315 src/tincd.c:334 #: src/tincd.c:321 src/tincd.c:340
#, c-format #, c-format
msgid "" msgid ""
"Appending key to existing contents.\n" "Appending key to existing contents.\n"
"Make sure only one key is stored in the file.\n" "Make sure only one key is stored in the file.\n"
msgstr "" msgstr ""
#: src/tincd.c:328 #: src/tincd.c:334
msgid "public RSA key" msgid "public RSA key"
msgstr "" msgstr ""
#: src/tincd.c:387 #: src/tincd.c:393
msgid "Both netname and configuration directory given, using the latter..." msgid "Both netname and configuration directory given, using the latter..."
msgstr "" msgstr ""
#: src/tincd.c:408 #: src/tincd.c:414
#, c-format #, c-format
msgid "%s version %s (built %s %s, protocol %d)\n" msgid "%s version %s (built %s %s, protocol %d)\n"
msgstr "" msgstr ""
#: src/tincd.c:410 #: src/tincd.c:416
#, c-format #, c-format
msgid "" msgid ""
"Copyright (C) 1998-2005 Ivo Timmermans, Guus Sliepen and others.\n" "Copyright (C) 1998-2006 Ivo Timmermans, Guus Sliepen and others.\n"
"See the AUTHORS file for a complete list.\n" "See the AUTHORS file for a complete list.\n"
"\n" "\n"
"tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n" "tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n"
@ -933,15 +952,15 @@ msgid ""
"see the file COPYING for details.\n" "see the file COPYING for details.\n"
msgstr "" msgstr ""
#: src/tincd.c:438 #: src/tincd.c:444
msgid "mlockall() not supported on this platform!" msgid "mlockall() not supported on this platform!"
msgstr "" msgstr ""
#: src/tincd.c:462 #: src/tincd.c:471
msgid "Error initializing LZO compressor!" msgid "Error initializing LZO compressor!"
msgstr "" msgstr ""
#: src/tincd.c:503 #: src/tincd.c:512
msgid "Terminating" msgid "Terminating"
msgstr "" msgstr ""
@ -1146,92 +1165,92 @@ msgstr ""
msgid "Subnet %s expired" msgid "Subnet %s expired"
msgstr "" msgstr ""
#: src/route.c:184 src/route.c:337 src/route.c:479 #: src/route.c:190 src/route.c:345 src/route.c:489
#, c-format #, c-format
msgid "Packet looping back to %s (%s)!" msgid "Packet looping back to %s (%s)!"
msgstr "" msgstr ""
#: src/route.c:283 #: src/route.c:289
#, c-format #, c-format
msgid "Length of packet (%d) doesn't match length in IPv4 header (%d)" msgid "Length of packet (%d) doesn't match length in IPv4 header (%zd)"
msgstr "" msgstr ""
#: src/route.c:287 #: src/route.c:293
#, c-format #, c-format
msgid "Fragmenting packet of %d bytes to %s (%s)" msgid "Fragmenting packet of %d bytes to %s (%s)"
msgstr "" msgstr ""
#: src/route.c:325 #: src/route.c:333
#, c-format #, c-format
msgid "" msgid ""
"Cannot route packet from %s (%s): unknown IPv4 destination address %d.%d.%d.%" "Cannot route packet from %s (%s): unknown IPv4 destination address %d.%d.%d.%"
"d" "d"
msgstr "" msgstr ""
#: src/route.c:350 src/route.c:489 #: src/route.c:358 src/route.c:499
#, c-format #, c-format
msgid "Packet for %s (%s) length %d larger than MTU %d" msgid "Packet for %s (%s) length %d larger than MTU %d"
msgstr "" msgstr ""
#: src/route.c:463 #: src/route.c:473
#, c-format #, c-format
msgid "" msgid ""
"Cannot route packet from %s (%s): unknown IPv6 destination address %hx:%hx:%" "Cannot route packet from %s (%s): unknown IPv6 destination address %hx:%hx:%"
"hx:%hx:%hx:%hx:%hx:%hx" "hx:%hx:%hx:%hx:%hx:%hx"
msgstr "" msgstr ""
#: src/route.c:521 #: src/route.c:531
#, c-format #, c-format
msgid "Got neighbor solicitation request from %s (%s) while in router mode!" msgid "Got neighbor solicitation request from %s (%s) while in router mode!"
msgstr "" msgstr ""
#: src/route.c:540 #: src/route.c:550
msgid "" msgid ""
"Cannot route packet: received unknown type neighbor solicitation request" "Cannot route packet: received unknown type neighbor solicitation request"
msgstr "" msgstr ""
#: src/route.c:559 #: src/route.c:569
msgid "Cannot route packet: checksum error for neighbor solicitation request" msgid "Cannot route packet: checksum error for neighbor solicitation request"
msgstr "" msgstr ""
#: src/route.c:568 #: src/route.c:578
#, c-format #, c-format
msgid "" msgid ""
"Cannot route packet: neighbor solicitation request for unknown address %hx:%" "Cannot route packet: neighbor solicitation request for unknown address %hx:%"
"hx:%hx:%hx:%hx:%hx:%hx:%hx" "hx:%hx:%hx:%hx:%hx:%hx:%hx"
msgstr "" msgstr ""
#: src/route.c:655 #: src/route.c:665
#, c-format #, c-format
msgid "Got ARP request from %s (%s) while in router mode!" msgid "Got ARP request from %s (%s) while in router mode!"
msgstr "" msgstr ""
#: src/route.c:672 #: src/route.c:682
msgid "Cannot route packet: received unknown type ARP request" msgid "Cannot route packet: received unknown type ARP request"
msgstr "" msgstr ""
#: src/route.c:681 #: src/route.c:691
#, c-format #, c-format
msgid "Cannot route packet: ARP request for unknown address %d.%d.%d.%d" msgid "Cannot route packet: ARP request for unknown address %d.%d.%d.%d"
msgstr "" msgstr ""
#: src/route.c:737 #: src/route.c:747
#, c-format #, c-format
msgid "Cannot route packet from %s (%s): unknown type %hx" msgid "Cannot route packet from %s (%s): unknown type %hx"
msgstr "" msgstr ""
#: src/node.c:181 #: src/node.c:183
msgid "Nodes:" msgid "Nodes:"
msgstr "" msgstr ""
#: src/node.c:185 #: src/node.c:187
#, c-format #, c-format
msgid "" msgid ""
" %s at %s cipher %d digest %d maclength %d compression %d options %lx status " " %s at %s cipher %d digest %d maclength %d compression %d options %lx status "
"%04x nexthop %s via %s pmtu %d (min %d max %d)" "%04x nexthop %s via %s pmtu %d (min %d max %d)"
msgstr "" msgstr ""
#: src/node.c:192 #: src/node.c:194
msgid "End of nodes." msgid "End of nodes."
msgstr "" msgstr ""
@ -1248,12 +1267,12 @@ msgstr ""
msgid "End of edges." msgid "End of edges."
msgstr "" msgstr ""
#: src/graph.c:261 #: src/graph.c:264
#, c-format #, c-format
msgid "Node %s (%s) became reachable" msgid "Node %s (%s) became reachable"
msgstr "" msgstr ""
#: src/graph.c:265 #: src/graph.c:268
#, c-format #, c-format
msgid "Node %s (%s) became unreachable" msgid "Node %s (%s) became unreachable"
msgstr "" msgstr ""

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am. # Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@ # @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -17,8 +17,6 @@
# $Id: Makefile.am,v 1.4.4.33 2003/08/02 15:13:08 guus Exp $ # $Id: Makefile.am,v 1.4.4.33 2003/08/02 15:13:08 guus Exp $
SOURCES = $(tincd_SOURCES) $(nodist_tincd_SOURCES)
srcdir = @srcdir@ srcdir = @srcdir@
top_srcdir = @top_srcdir@ top_srcdir = @top_srcdir@
VPATH = @srcdir@ VPATH = @srcdir@
@ -48,13 +46,14 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/aclocal-include.m4 \ am__aclocal_m4_deps = $(top_srcdir)/m4/aclocal-include.m4 \
$(top_srcdir)/m4/attribute.m4 $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/attribute.m4 $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/isc-posix.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lzo.m4 $(top_srcdir)/m4/malloc.m4 \ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/lzo.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/openssl.m4 \ $(top_srcdir)/m4/malloc.m4 $(top_srcdir)/m4/nls.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ $(top_srcdir)/m4/openssl.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/realloc.m4 $(top_srcdir)/m4/tuntap.m4 \ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/realloc.m4 \
$(top_srcdir)/m4/zlib.m4 $(top_srcdir)/configure.in $(top_srcdir)/m4/tuntap.m4 $(top_srcdir)/m4/zlib.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4) $(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@ -110,6 +109,7 @@ ECHO_T = @ECHO_T@
EGREP = @EGREP@ EGREP = @EGREP@
EXEEXT = @EXEEXT@ EXEEXT = @EXEEXT@
GMSGFMT = @GMSGFMT@ GMSGFMT = @GMSGFMT@
GREP = @GREP@
HAVE_TUNTAP = @HAVE_TUNTAP@ HAVE_TUNTAP = @HAVE_TUNTAP@
INCLUDES = @INCLUDES@ -I$(top_builddir) -I$(top_srcdir)/lib INCLUDES = @INCLUDES@ -I$(top_builddir) -I$(top_srcdir)/lib
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
@ -151,8 +151,6 @@ USE_NLS = @USE_NLS@
VERSION = @VERSION@ VERSION = @VERSION@
XGETTEXT = @XGETTEXT@ XGETTEXT = @XGETTEXT@
ac_ct_CC = @ac_ct_CC@ ac_ct_CC = @ac_ct_CC@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@ am__include = @am__include@
@ -167,23 +165,30 @@ build_cpu = @build_cpu@
build_os = @build_os@ build_os = @build_os@
build_vendor = @build_vendor@ build_vendor = @build_vendor@
datadir = @datadir@ datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@ exec_prefix = @exec_prefix@
host = @host@ host = @host@
host_alias = @host_alias@ host_alias = @host_alias@
host_cpu = @host_cpu@ host_cpu = @host_cpu@
host_os = @host_os@ host_os = @host_os@
host_vendor = @host_vendor@ host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@ includedir = @includedir@
infodir = @infodir@ infodir = @infodir@
install_sh = @install_sh@ install_sh = @install_sh@
libdir = @libdir@ libdir = @libdir@
libexecdir = @libexecdir@ libexecdir = @libexecdir@
localedir = $(datadir)/locale
localstatedir = @localstatedir@ localstatedir = @localstatedir@
mandir = @mandir@ mandir = @mandir@
mkdir_p = @mkdir_p@ mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@ oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@ prefix = @prefix@
program_transform_name = @program_transform_name@ program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@ sysconfdir = @sysconfdir@
@ -201,7 +206,6 @@ noinst_HEADERS = conf.h connection.h device.h edge.h event.h graph.h logger.h me
tincd_LDADD = \ tincd_LDADD = \
$(top_builddir)/lib/libvpn.a $(top_builddir)/lib/libvpn.a
localedir = $(datadir)/locale
AM_CFLAGS = @CFLAGS@ -DCONFDIR=\"$(sysconfdir)\" -DLOCALEDIR=\"$(localedir)\" -DLOCALSTATEDIR=\"$(localstatedir)\" AM_CFLAGS = @CFLAGS@ -DCONFDIR=\"$(sysconfdir)\" -DLOCALEDIR=\"$(localedir)\" -DLOCALSTATEDIR=\"$(localstatedir)\"
all: all-am all: all-am

View file

@ -1,7 +1,7 @@
/* /*
device.c -- Interaction BSD tun/tap device device.c -- Interaction BSD tun/tap device
Copyright (C) 2001-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 2001-2005 Ivo Timmermans,
2001-2005 Guus Sliepen <guus@tinc-vpn.org> 2001-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View file

@ -1,9 +1,9 @@
/* /*
conf.c -- configuration code conf.c -- configuration code
Copyright (C) 1998 Robert van der Meulen Copyright (C) 1998 Robert van der Meulen
1998-2005 Ivo Timmermans <ivo@tinc-vpn.org> 1998-2005 Ivo Timmermans
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
2000 Cris van Pelt <tribbel@arise.dhs.org> 2000 Cris van Pelt
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -19,7 +19,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: conf.c 1439 2005-05-04 18:09:30Z guus $ $Id: conf.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"
@ -33,7 +33,8 @@
avl_tree_t *config_tree; avl_tree_t *config_tree;
int pingtimeout = 0; /* seconds before timeout */ int pinginterval = 0; /* seconds between pings */
int pingtimeout = 0; /* seconds to wait for response */
char *confbase = NULL; /* directory in which all config files are */ char *confbase = NULL; /* directory in which all config files are */
char *netname = NULL; /* name of the vpn network */ char *netname = NULL; /* name of the vpn network */

View file

@ -1,7 +1,7 @@
/* /*
conf.h -- header for conf.c conf.h -- header for conf.c
Copyright (C) 1998-2005 Ivo Timmermans <ivo@tinc-vpn.org> Copyright (C) 1998-2005 Ivo Timmermans
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: conf.h 1439 2005-05-04 18:09:30Z guus $ $Id: conf.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_CONF_H__ #ifndef __TINC_CONF_H__
@ -36,6 +36,7 @@ typedef struct config_t {
extern avl_tree_t *config_tree; extern avl_tree_t *config_tree;
extern int pinginterval;
extern int pingtimeout; extern int pingtimeout;
extern int maxtimeout; extern int maxtimeout;
extern bool bypass_security; extern bool bypass_security;

View file

@ -1,7 +1,7 @@
/* /*
connection.c -- connection list management connection.c -- connection list management
Copyright (C) 2000-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2000-2006 Guus Sliepen <guus@tinc-vpn.org>,
2000-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2000-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: connection.c 1439 2005-05-04 18:09:30Z guus $ $Id: connection.c 1456 2006-08-08 13:21:08Z guus $
*/ */
#include "system.h" #include "system.h"
@ -121,8 +121,9 @@ void dump_connections(void)
for(node = connection_tree->head; node; node = node->next) { for(node = connection_tree->head; node; node = node->next) {
c = node->data; c = node->data;
logger(LOG_DEBUG, _(" %s at %s options %lx socket %d status %04x"), logger(LOG_DEBUG, _(" %s at %s options %lx socket %d status %04x outbuf %d/%d/%d"),
c->name, c->hostname, c->options, c->socket, *(uint32_t *)&c->status); c->name, c->hostname, c->options, c->socket, c->status.value,
c->outbufsize, c->outbufstart, c->outbuflen);
} }
logger(LOG_DEBUG, _("End of connections.")); logger(LOG_DEBUG, _("End of connections."));

View file

@ -1,7 +1,7 @@
/* /*
connection.h -- header for connection.c connection.h -- header for connection.c
Copyright (C) 2000-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2000-2006 Guus Sliepen <guus@tinc-vpn.org>,
2000-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2000-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: connection.h 1439 2005-05-04 18:09:30Z guus $ $Id: connection.h 1456 2006-08-08 13:21:08Z guus $
*/ */
#ifndef __TINC_CONNECTION_H__ #ifndef __TINC_CONNECTION_H__
@ -32,7 +32,8 @@
#define OPTION_TCPONLY 0x0002 #define OPTION_TCPONLY 0x0002
#define OPTION_PMTU_DISCOVERY 0x0004 #define OPTION_PMTU_DISCOVERY 0x0004
typedef struct connection_status_t { typedef union connection_status_t {
struct {
int pinged:1; /* sent ping */ int pinged:1; /* sent ping */
int active:1; /* 1 if active.. */ int active:1; /* 1 if active.. */
int connecting:1; /* 1 if we are waiting for a non-blocking connect() to finish */ int connecting:1; /* 1 if we are waiting for a non-blocking connect() to finish */
@ -43,6 +44,8 @@ typedef struct connection_status_t {
int decryptin:1; /* 1 if we have to decrypt incoming traffic */ int decryptin:1; /* 1 if we have to decrypt incoming traffic */
int mst:1; /* 1 if this connection is part of a minimum spanning tree */ int mst:1; /* 1 if this connection is part of a minimum spanning tree */
int unused:23; int unused:23;
};
uint32_t value;
} connection_status_t; } connection_status_t;
#include "edge.h" #include "edge.h"
@ -59,7 +62,7 @@ typedef struct connection_t {
int socket; /* socket used for this connection */ int socket; /* socket used for this connection */
long int options; /* options for this connection */ long int options; /* options for this connection */
struct connection_status_t status; /* status info */ connection_status_t status; /* status info */
int estimated_weight; /* estimation for the weight of the edge for this connection */ int estimated_weight; /* estimation for the weight of the edge for this connection */
struct timeval start; /* time this connection was started, used for above estimation */ struct timeval start; /* time this connection was started, used for above estimation */
struct outgoing_t *outgoing; /* used to keep track of outgoing connections */ struct outgoing_t *outgoing; /* used to keep track of outgoing connections */
@ -91,7 +94,13 @@ typedef struct connection_t {
int tcplen; /* length of incoming TCPpacket */ int tcplen; /* length of incoming TCPpacket */
int allow_request; /* defined if there's only one request possible */ int allow_request; /* defined if there's only one request possible */
time_t last_ping_time; /* last time we saw some activity from the other end */ char *outbuf; /* metadata output buffer */
int outbufstart; /* index of first meaningful byte in output buffer */
int outbuflen; /* number of meaningful bytes in output buffer */
int outbufsize; /* number of bytes allocated to output buffer */
time_t last_ping_time; /* last time we saw some activity from the other end or pinged them */
time_t last_flushed_time; /* last time buffer was empty. Only meaningful if outbuflen > 0 */
avl_tree_t *config_tree; /* Pointer to configuration tree belonging to him */ avl_tree_t *config_tree; /* Pointer to configuration tree belonging to him */
} connection_t; } connection_t;

View file

@ -1,7 +1,7 @@
/* /*
device.c -- Interaction with Windows tap driver in a Cygwin environment device.c -- Interaction with Windows tap driver in a Cygwin environment
Copyright (C) 2002-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 2002-2005 Ivo Timmermans,
2002-2005 Guus Sliepen <guus@tinc-vpn.org> 2002-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: device.c 1439 2005-05-04 18:09:30Z guus $ $Id: device.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"

View file

@ -1,7 +1,7 @@
/* /*
net.h -- generic header for device.c net.h -- generic header for device.c
Copyright (C) 2001-2005 Ivo Timmermans <zarq@iname.com> Copyright (C) 2001-2005 Ivo Timmermans <zarq@iname.com>
2001-2005 Guus Sliepen <guus@tinc-vpn.org> 2001-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: device.h 1439 2005-05-04 18:09:30Z guus $ $Id: device.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_DEVICE_H__ #ifndef __TINC_DEVICE_H__

View file

@ -1,7 +1,7 @@
/* /*
edge.c -- edge tree management edge.c -- edge tree management
Copyright (C) 2000-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2000-2006 Guus Sliepen <guus@tinc-vpn.org>,
2000-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2000-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: edge.c 1439 2005-05-04 18:09:30Z guus $ $Id: edge.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"

View file

@ -1,7 +1,7 @@
/* /*
edge.h -- header for edge.c edge.h -- header for edge.c
Copyright (C) 2001-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2001-2006 Guus Sliepen <guus@tinc-vpn.org>,
2001-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2001-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: edge.h 1439 2005-05-04 18:09:30Z guus $ $Id: edge.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_EDGE_H__ #ifndef __TINC_EDGE_H__

View file

@ -1,7 +1,7 @@
/* /*
event.c -- event queue event.c -- event queue
Copyright (C) 2002-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2002-2006 Guus Sliepen <guus@tinc-vpn.org>,
2002-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2002-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: event.c 1439 2005-05-04 18:09:30Z guus $ $Id: event.c 1469 2006-11-11 22:44:15Z guus $
*/ */
#include "system.h" #include "system.h"
@ -96,7 +96,7 @@ event_t *get_expired_event(void)
event = event_tree->head->data; event = event_tree->head->data;
if(event->time < now) { if(event->time < now) {
avl_delete(event_tree, event); event_del(event);
return event; return event;
} }
} }

View file

@ -1,7 +1,7 @@
/* /*
event.h -- header for event.c event.h -- header for event.c
Copyright (C) 2002-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2002-2006 Guus Sliepen <guus@tinc-vpn.org>,
2002-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2002-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: event.h 1439 2005-05-04 18:09:30Z guus $ $Id: event.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_EVENT_H__ #ifndef __TINC_EVENT_H__

View file

@ -1,7 +1,7 @@
/* /*
graph.c -- graph algorithms graph.c -- graph algorithms
Copyright (C) 2001-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2001-2006 Guus Sliepen <guus@tinc-vpn.org>,
2001-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2001-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: graph.c 1439 2005-05-04 18:09:30Z guus $ $Id: graph.c 1464 2006-11-11 14:37:03Z guus $
*/ */
/* We need to generate two trees from the graph: /* We need to generate two trees from the graph:
@ -47,6 +47,7 @@
#include "system.h" #include "system.h"
#include "avl_tree.h" #include "avl_tree.h"
#include "config.h"
#include "connection.h" #include "connection.h"
#include "device.h" #include "device.h"
#include "edge.h" #include "edge.h"
@ -57,6 +58,8 @@
#include "subnet.h" #include "subnet.h"
#include "utils.h" #include "utils.h"
static bool graph_changed = true;
/* Implementation of Kruskal's algorithm. /* Implementation of Kruskal's algorithm.
Running time: O(EN) Running time: O(EN)
Please note that sorting on weight is already done by add_edge(). Please note that sorting on weight is already done by add_edge().
@ -283,6 +286,8 @@ void sssp_bfs(void)
asprintf(&envp[5], "REMOTEPORT=%s", port); asprintf(&envp[5], "REMOTEPORT=%s", port);
envp[6] = NULL; envp[6] = NULL;
execute_script(n->status.reachable ? "host-up" : "host-down", envp);
asprintf(&name, asprintf(&name,
n->status.reachable ? "hosts/%s-up" : "hosts/%s-down", n->status.reachable ? "hosts/%s-up" : "hosts/%s-down",
n->name); n->name);
@ -304,4 +309,66 @@ void graph(void)
{ {
mst_kruskal(); mst_kruskal();
sssp_bfs(); sssp_bfs();
graph_changed = true;
}
/* Dump nodes and edges to a graphviz file.
The file can be converted to an image with
dot -Tpng graph_filename -o image_filename.png -Gconcentrate=true
*/
void dump_graph(void)
{
avl_node_t *node;
node_t *n;
edge_t *e;
char *filename = NULL, *tmpname = NULL;
FILE *file;
if(!graph_changed || !get_config_string(lookup_config(config_tree, "GraphDumpFile"), &filename))
return;
graph_changed = false;
ifdebug(PROTOCOL) logger(LOG_NOTICE, "Dumping graph");
if(filename[0] == '|') {
file = popen(filename + 1, "w");
} else {
asprintf(&tmpname, "%s.new", filename);
file = fopen(tmpname, "w");
}
if(!file) {
logger(LOG_ERR, "Unable to open graph dump file %s: %s", filename, strerror(errno));
free(tmpname);
return;
}
fprintf(file, "digraph {\n");
/* dump all nodes first */
for(node = node_tree->head; node; node = node->next) {
n = node->data;
fprintf(file, " %s [label = \"%s\"];\n", n->name, n->name);
}
/* now dump all edges */
for(node = edge_weight_tree->head; node; node = node->next) {
e = node->data;
fprintf(file, " %s -> %s;\n", e->from->name, e->to->name);
}
fprintf(file, "}\n");
if(filename[0] == '|') {
pclose(file);
} else {
fclose(file);
rename(tmpname, filename);
free(tmpname);
}
} }

View file

@ -1,7 +1,7 @@
/* /*
graph.h -- header for graph.c graph.h -- header for graph.c
Copyright (C) 2001-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2001-2006 Guus Sliepen <guus@tinc-vpn.org>,
2001-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2001-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: graph.h 1439 2005-05-04 18:09:30Z guus $ $Id: graph.h 1463 2006-11-11 14:11:16Z guus $
*/ */
#ifndef __TINC_GRAPH_H__ #ifndef __TINC_GRAPH_H__
@ -26,5 +26,6 @@
extern void graph(void); extern void graph(void);
extern void mst_kruskal(void); extern void mst_kruskal(void);
extern void sssp_bfs(void); extern void sssp_bfs(void);
extern void dump_graph(void);
#endif /* __TINC_GRAPH_H__ */ #endif /* __TINC_GRAPH_H__ */

View file

@ -1,7 +1,7 @@
/* /*
device.c -- Interaction with Linux ethertap and tun/tap device device.c -- Interaction with Linux ethertap and tun/tap device
Copyright (C) 2001-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 2001-2005 Ivo Timmermans,
2001-2005 Guus Sliepen <guus@tinc-vpn.org> 2001-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: device.c 1439 2005-05-04 18:09:30Z guus $ $Id: device.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"

View file

@ -1,7 +1,7 @@
/* /*
logger.c -- logging code logger.c -- logging code
Copyright (C) 2004-2005 Guus Sliepen <guus@tinc-vpn.org> Copyright (C) 2004-2006 Guus Sliepen <guus@tinc-vpn.org>
2004-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2004-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: logger.c 1439 2005-05-04 18:09:30Z guus $ $Id: logger.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"

View file

@ -1,7 +1,7 @@
/* /*
meta.c -- handle the meta communication meta.c -- handle the meta communication
Copyright (C) 2000-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2000-2006 Guus Sliepen <guus@tinc-vpn.org>,
2000-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2000-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: meta.c 1439 2005-05-04 18:09:30Z guus $ $Id: meta.c 1471 2006-11-14 12:28:04Z guus $
*/ */
#include "system.h" #include "system.h"
@ -32,12 +32,11 @@
#include "net.h" #include "net.h"
#include "protocol.h" #include "protocol.h"
#include "utils.h" #include "utils.h"
#include "xalloc.h"
bool send_meta(connection_t *c, const char *buffer, int length) bool send_meta(connection_t *c, const char *buffer, int length)
{ {
const char *bufp;
int outlen; int outlen;
char outbuf[MAXBUFSIZE];
int result; int result;
cp(); cp();
@ -45,35 +44,75 @@ bool send_meta(connection_t *c, const char *buffer, int length)
ifdebug(META) logger(LOG_DEBUG, _("Sending %d bytes of metadata to %s (%s)"), length, ifdebug(META) logger(LOG_DEBUG, _("Sending %d bytes of metadata to %s (%s)"), length,
c->name, c->hostname); c->name, c->hostname);
if(!c->outbuflen)
c->last_flushed_time = now;
/* Find room in connection's buffer */
if(length + c->outbuflen > c->outbufsize) {
c->outbufsize = length + c->outbuflen;
c->outbuf = xrealloc(c->outbuf, c->outbufsize);
}
if(length + c->outbuflen + c->outbufstart > c->outbufsize) {
memmove(c->outbuf, c->outbuf + c->outbufstart, c->outbuflen);
c->outbufstart = 0;
}
/* Add our data to buffer */
if(c->status.encryptout) { if(c->status.encryptout) {
result = EVP_EncryptUpdate(c->outctx, outbuf, &outlen, buffer, length); result = EVP_EncryptUpdate(c->outctx, (unsigned char *)c->outbuf + c->outbufstart + c->outbuflen,
if(!result || outlen != length) { &outlen, (unsigned char *)buffer, length);
if(!result || outlen < length) {
logger(LOG_ERR, _("Error while encrypting metadata to %s (%s): %s"), logger(LOG_ERR, _("Error while encrypting metadata to %s (%s): %s"),
c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL)); c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL));
return false; return false;
} else if(outlen > length) {
logger(LOG_EMERG, _("Encrypted data too long! Heap corrupted!"));
abort();
}
c->outbuflen += outlen;
} else {
memcpy(c->outbuf + c->outbufstart + c->outbuflen, buffer, length);
c->outbuflen += length;
} }
bufp = outbuf;
length = outlen;
} else
bufp = buffer;
while(length) { return true;
result = send(c->socket, bufp, length, 0); }
bool flush_meta(connection_t *c)
{
int result;
ifdebug(META) logger(LOG_DEBUG, _("Flushing %d bytes to %s (%s)"),
c->outbuflen, c->name, c->hostname);
while(c->outbuflen) {
result = send(c->socket, c->outbuf + c->outbufstart, c->outbuflen, 0);
if(result <= 0) { if(result <= 0) {
if(!errno || errno == EPIPE) { if(!errno || errno == EPIPE) {
ifdebug(CONNECTIONS) logger(LOG_NOTICE, _("Connection closed by %s (%s)"), ifdebug(CONNECTIONS) logger(LOG_NOTICE, _("Connection closed by %s (%s)"),
c->name, c->hostname); c->name, c->hostname);
} else if(errno == EINTR) } else if(errno == EINTR) {
continue; continue;
else #ifdef EWOULDBLOCK
logger(LOG_ERR, _("Sending meta data to %s (%s) failed: %s"), c->name, } else if(errno == EWOULDBLOCK) {
ifdebug(CONNECTIONS) logger(LOG_DEBUG, _("Flushing %d bytes to %s (%s) would block"),
c->outbuflen, c->name, c->hostname);
return true;
#endif
} else {
logger(LOG_ERR, _("Flushing meta data to %s (%s) failed: %s"), c->name,
c->hostname, strerror(errno)); c->hostname, strerror(errno));
return false;
}
bufp += result;
length -= result;
} }
return false;
}
c->outbufstart += result;
c->outbuflen -= result;
}
c->outbufstart = 0; /* avoid unnecessary memmoves */
return true; return true;
} }
@ -132,7 +171,7 @@ bool receive_meta(connection_t *c)
/* Decrypt */ /* Decrypt */
if(c->status.decryptin && !decrypted) { if(c->status.decryptin && !decrypted) {
result = EVP_DecryptUpdate(c->inctx, inbuf, &lenout, c->buffer + oldlen, lenin); result = EVP_DecryptUpdate(c->inctx, (unsigned char *)inbuf, &lenout, (unsigned char *)c->buffer + oldlen, lenin);
if(!result || lenout != lenin) { if(!result || lenout != lenin) {
logger(LOG_ERR, _("Error while decrypting metadata from %s (%s): %s"), logger(LOG_ERR, _("Error while decrypting metadata from %s (%s): %s"),
c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL)); c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL));

View file

@ -1,7 +1,7 @@
/* /*
meta.h -- header for meta.c meta.h -- header for meta.c
Copyright (C) 2000-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2000-2006 Guus Sliepen <guus@tinc-vpn.org>,
2000-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2000-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: meta.h 1439 2005-05-04 18:09:30Z guus $ $Id: meta.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_META_H__ #ifndef __TINC_META_H__
@ -27,6 +27,7 @@
extern bool send_meta(struct connection_t *, const char *, int); extern bool send_meta(struct connection_t *, const char *, int);
extern void broadcast_meta(struct connection_t *, const char *, int); extern void broadcast_meta(struct connection_t *, const char *, int);
extern bool flush_meta(struct connection_t *);
extern bool receive_meta(struct connection_t *); extern bool receive_meta(struct connection_t *);
#endif /* __TINC_META_H__ */ #endif /* __TINC_META_H__ */

View file

@ -1,7 +1,7 @@
/* /*
device.c -- Interaction with Windows tap driver in a MinGW environment device.c -- Interaction with Windows tap driver in a MinGW environment
Copyright (C) 2002-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 2002-2005 Ivo Timmermans,
2002-2005 Guus Sliepen <guus@tinc-vpn.org> 2002-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: device.c 1439 2005-05-04 18:09:30Z guus $ $Id: device.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"

View file

@ -1,7 +1,7 @@
/* /*
net.c -- most of the network code net.c -- most of the network code
Copyright (C) 1998-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 1998-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: net.c 1439 2005-05-04 18:09:30Z guus $ $Id: net.c 1469 2006-11-11 22:44:15Z guus $
*/ */
#include "system.h" #include "system.h"
@ -112,7 +112,7 @@ static void purge(void)
put all file descriptors in an fd_set array put all file descriptors in an fd_set array
While we're at it, purge stuff that needs to be removed. While we're at it, purge stuff that needs to be removed.
*/ */
static int build_fdset(fd_set * fs) static int build_fdset(fd_set *readset, fd_set *writeset)
{ {
avl_node_t *node, *next; avl_node_t *node, *next;
connection_t *c; connection_t *c;
@ -120,7 +120,8 @@ static int build_fdset(fd_set * fs)
cp(); cp();
FD_ZERO(fs); FD_ZERO(readset);
FD_ZERO(writeset);
for(node = connection_tree->head; node; node = next) { for(node = connection_tree->head; node; node = next) {
next = node->next; next = node->next;
@ -131,22 +132,24 @@ static int build_fdset(fd_set * fs)
if(!connection_tree->head) if(!connection_tree->head)
purge(); purge();
} else { } else {
FD_SET(c->socket, fs); FD_SET(c->socket, readset);
if(c->outbuflen > 0)
FD_SET(c->socket, writeset);
if(c->socket > max) if(c->socket > max)
max = c->socket; max = c->socket;
} }
} }
for(i = 0; i < listen_sockets; i++) { for(i = 0; i < listen_sockets; i++) {
FD_SET(listen_socket[i].tcp, fs); FD_SET(listen_socket[i].tcp, readset);
if(listen_socket[i].tcp > max) if(listen_socket[i].tcp > max)
max = listen_socket[i].tcp; max = listen_socket[i].tcp;
FD_SET(listen_socket[i].udp, fs); FD_SET(listen_socket[i].udp, readset);
if(listen_socket[i].udp > max) if(listen_socket[i].udp > max)
max = listen_socket[i].udp; max = listen_socket[i].udp;
} }
FD_SET(device_fd, fs); FD_SET(device_fd, readset);
if(device_fd > max) if(device_fd > max)
max = device_fd; max = device_fd;
@ -208,6 +211,12 @@ void terminate_connection(connection_t *c, bool report)
retry_outgoing(c->outgoing); retry_outgoing(c->outgoing);
c->outgoing = NULL; c->outgoing = NULL;
} }
free(c->outbuf);
c->outbuf = NULL;
c->outbuflen = 0;
c->outbufsize = 0;
c->outbufstart = 0;
} }
/* /*
@ -232,17 +241,17 @@ static void check_dead_connections(void)
if(c->last_ping_time + pingtimeout < now) { if(c->last_ping_time + pingtimeout < now) {
if(c->status.active) { if(c->status.active) {
if(c->status.pinged) { if(c->status.pinged) {
ifdebug(CONNECTIONS) logger(LOG_INFO, _("%s (%s) didn't respond to PING"), ifdebug(CONNECTIONS) logger(LOG_INFO, _("%s (%s) didn't respond to PING in %ld seconds"),
c->name, c->hostname); c->name, c->hostname, now - c->last_ping_time);
c->status.timeout = true; c->status.timeout = true;
terminate_connection(c, true); terminate_connection(c, true);
} else { } else if(c->last_ping_time + pinginterval < now) {
send_ping(c); send_ping(c);
} }
} else { } else {
if(c->status.remove) { if(c->status.remove) {
logger(LOG_WARNING, _("Old connection_t for %s (%s) status %04x still lingering, deleting..."), logger(LOG_WARNING, _("Old connection_t for %s (%s) status %04x still lingering, deleting..."),
c->name, c->hostname, *(uint32_t *)&c->status); c->name, c->hostname, c->status.value);
connection_del(c); connection_del(c);
continue; continue;
} }
@ -257,6 +266,16 @@ static void check_dead_connections(void)
} }
} }
} }
if(c->outbuflen > 0 && c->last_flushed_time + pingtimeout < now) {
if(c->status.active) {
ifdebug(CONNECTIONS) logger(LOG_INFO,
_("%s (%s) could not flush for %ld seconds (%d bytes remaining)"),
c->name, c->hostname, now - c->last_flushed_time, c->outbuflen);
c->status.timeout = true;
terminate_connection(c, true);
}
}
} }
} }
@ -264,28 +283,30 @@ static void check_dead_connections(void)
check all connections to see if anything check all connections to see if anything
happened on their sockets happened on their sockets
*/ */
static void check_network_activity(fd_set * f) static void check_network_activity(fd_set * readset, fd_set * writeset)
{ {
connection_t *c; connection_t *c;
avl_node_t *node; avl_node_t *node;
int result, i; int result, i;
int len = sizeof(result); socklen_t len = sizeof(result);
vpn_packet_t packet; vpn_packet_t packet;
cp(); cp();
if(FD_ISSET(device_fd, f)) { /* check input from kernel */
if(FD_ISSET(device_fd, readset)) {
if(read_packet(&packet)) if(read_packet(&packet))
route(myself, &packet); route(myself, &packet);
} }
/* check meta connections */
for(node = connection_tree->head; node; node = node->next) { for(node = connection_tree->head; node; node = node->next) {
c = node->data; c = node->data;
if(c->status.remove) if(c->status.remove)
continue; continue;
if(FD_ISSET(c->socket, f)) { if(FD_ISSET(c->socket, readset)) {
if(c->status.connecting) { if(c->status.connecting) {
c->status.connecting = false; c->status.connecting = false;
getsockopt(c->socket, SOL_SOCKET, SO_ERROR, &result, &len); getsockopt(c->socket, SOL_SOCKET, SO_ERROR, &result, &len);
@ -307,13 +328,20 @@ static void check_network_activity(fd_set * f)
continue; continue;
} }
} }
if(FD_ISSET(c->socket, writeset)) {
if(!flush_meta(c)) {
terminate_connection(c, c->status.active);
continue;
}
}
} }
for(i = 0; i < listen_sockets; i++) { for(i = 0; i < listen_sockets; i++) {
if(FD_ISSET(listen_socket[i].udp, f)) if(FD_ISSET(listen_socket[i].udp, readset))
handle_incoming_vpn_data(listen_socket[i].udp); handle_incoming_vpn_data(listen_socket[i].udp);
if(FD_ISSET(listen_socket[i].tcp, f)) if(FD_ISSET(listen_socket[i].tcp, readset))
handle_new_meta_connection(listen_socket[i].tcp); handle_new_meta_connection(listen_socket[i].tcp);
} }
} }
@ -323,16 +351,18 @@ static void check_network_activity(fd_set * f)
*/ */
int main_loop(void) int main_loop(void)
{ {
fd_set fset; fd_set readset, writeset;
struct timeval tv; struct timeval tv;
int r, maxfd; int r, maxfd;
time_t last_ping_check, last_config_check; time_t last_ping_check, last_config_check, last_graph_dump;
event_t *event; event_t *event;
cp(); cp();
last_ping_check = now; last_ping_check = now;
last_config_check = now; last_config_check = now;
last_graph_dump = now;
srand(now); srand(now);
running = true; running = true;
@ -344,9 +374,9 @@ int main_loop(void)
tv.tv_sec = 1; tv.tv_sec = 1;
tv.tv_usec = 0; tv.tv_usec = 0;
maxfd = build_fdset(&fset); maxfd = build_fdset(&readset, &writeset);
r = select(maxfd + 1, &fset, NULL, NULL, &tv); r = select(maxfd + 1, &readset, &writeset, NULL, &tv);
if(r < 0) { if(r < 0) {
if(errno != EINTR && errno != EAGAIN) { if(errno != EINTR && errno != EAGAIN) {
@ -360,7 +390,7 @@ int main_loop(void)
continue; continue;
} }
check_network_activity(&fset); check_network_activity(&readset, &writeset);
if(do_purge) { if(do_purge) {
purge(); purge();
@ -383,9 +413,9 @@ int main_loop(void)
if(keyexpires < now) { if(keyexpires < now) {
ifdebug(STATUS) logger(LOG_INFO, _("Regenerating symmetric key")); ifdebug(STATUS) logger(LOG_INFO, _("Regenerating symmetric key"));
RAND_pseudo_bytes(myself->key, myself->keylength); RAND_pseudo_bytes((unsigned char *)myself->key, myself->keylength);
if(myself->cipher) if(myself->cipher)
EVP_DecryptInit_ex(&packet_ctx, myself->cipher, NULL, myself->key, myself->key + myself->cipher->key_len); EVP_DecryptInit_ex(&packet_ctx, myself->cipher, NULL, (unsigned char *)myself->key, (unsigned char *)myself->key + myself->cipher->key_len);
send_key_changed(broadcast, myself); send_key_changed(broadcast, myself);
keyexpires = now + keylifetime; keyexpires = now + keylifetime;
} }
@ -394,7 +424,7 @@ int main_loop(void)
while((event = get_expired_event())) { while((event = get_expired_event())) {
event->handler(event->data); event->handler(event->data);
free(event); free_event(event);
} }
if(sigalrm) { if(sigalrm) {
@ -450,6 +480,13 @@ int main_loop(void)
try_outgoing_connections(); try_outgoing_connections();
} }
/* Dump graph if wanted every 60 seconds*/
if(last_graph_dump + 60 < now) {
dump_graph();
last_graph_dump = now;
}
} }
return 0; return 0;

View file

@ -1,7 +1,7 @@
/* /*
net.h -- header for net.c net.h -- header for net.c
Copyright (C) 1998-2005 Ivo Timmermans <zarq@iname.com> Copyright (C) 1998-2005 Ivo Timmermans <zarq@iname.com>
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: net.h 1439 2005-05-04 18:09:30Z guus $ $Id: net.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_NET_H__ #ifndef __TINC_NET_H__
@ -114,10 +114,9 @@ typedef struct outgoing_t {
struct addrinfo *aip; struct addrinfo *aip;
} outgoing_t; } outgoing_t;
extern int maxtimeout; extern int maxoutbufsize;
extern int seconds_till_retry; extern int seconds_till_retry;
extern int addressfamily; extern int addressfamily;
extern bool blockingtcp;
extern listen_socket_t listen_socket[MAXSOCKETS]; extern listen_socket_t listen_socket[MAXSOCKETS];
extern int listen_sockets; extern int listen_sockets;

View file

@ -1,7 +1,7 @@
/* /*
net_packet.c -- Handles in- and outgoing VPN packets net_packet.c -- Handles in- and outgoing VPN packets
Copyright (C) 1998-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 1998-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: net_packet.c 1439 2005-05-04 18:09:30Z guus $ $Id: net_packet.c 1469 2006-11-11 22:44:15Z guus $
*/ */
#include "system.h" #include "system.h"
@ -29,7 +29,12 @@
#include <openssl/hmac.h> #include <openssl/hmac.h>
#include <zlib.h> #include <zlib.h>
#ifdef HAVE_LZO_LZO1X_H
#include <lzo/lzo1x.h>
#endif
#ifdef HAVE_LZO1X_H
#include <lzo1x.h> #include <lzo1x.h>
#endif
#include "avl_tree.h" #include "avl_tree.h"
#include "conf.h" #include "conf.h"
@ -96,7 +101,7 @@ void send_mtu_probe(node_t *n)
send_udppacket(n, &packet); send_udppacket(n, &packet);
} }
n->mtuevent = xmalloc(sizeof(*n->mtuevent)); n->mtuevent = new_event();
n->mtuevent->handler = (event_handler_t)send_mtu_probe; n->mtuevent->handler = (event_handler_t)send_mtu_probe;
n->mtuevent->data = n; n->mtuevent->data = n;
n->mtuevent->time = now + 1; n->mtuevent->time = now + 1;
@ -174,7 +179,7 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt)
int nextpkt = 0; int nextpkt = 0;
vpn_packet_t *outpkt = pkt[0]; vpn_packet_t *outpkt = pkt[0];
int outlen, outpad; int outlen, outpad;
char hmac[EVP_MAX_MD_SIZE]; unsigned char hmac[EVP_MAX_MD_SIZE];
int i; int i;
cp(); cp();
@ -192,7 +197,7 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt)
if(myself->digest && myself->maclength) { if(myself->digest && myself->maclength) {
inpkt->len -= myself->maclength; inpkt->len -= myself->maclength;
HMAC(myself->digest, myself->key, myself->keylength, HMAC(myself->digest, myself->key, myself->keylength,
(char *) &inpkt->seqno, inpkt->len, hmac, NULL); (unsigned char *) &inpkt->seqno, inpkt->len, (unsigned char *)hmac, NULL);
if(memcmp(hmac, (char *) &inpkt->seqno + inpkt->len, myself->maclength)) { if(memcmp(hmac, (char *) &inpkt->seqno + inpkt->len, myself->maclength)) {
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Got unauthenticated packet from %s (%s)"), ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Got unauthenticated packet from %s (%s)"),
@ -207,9 +212,9 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt)
outpkt = pkt[nextpkt++]; outpkt = pkt[nextpkt++];
if(!EVP_DecryptInit_ex(&packet_ctx, NULL, NULL, NULL, NULL) if(!EVP_DecryptInit_ex(&packet_ctx, NULL, NULL, NULL, NULL)
|| !EVP_DecryptUpdate(&packet_ctx, (char *) &outpkt->seqno, &outlen, || !EVP_DecryptUpdate(&packet_ctx, (unsigned char *) &outpkt->seqno, &outlen,
(char *) &inpkt->seqno, inpkt->len) (unsigned char *) &inpkt->seqno, inpkt->len)
|| !EVP_DecryptFinal_ex(&packet_ctx, (char *) &outpkt->seqno + outlen, &outpad)) { || !EVP_DecryptFinal_ex(&packet_ctx, (unsigned char *) &outpkt->seqno + outlen, &outpad)) {
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Error decrypting packet from %s (%s): %s"), ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Error decrypting packet from %s (%s): %s"),
n->name, n->hostname, ERR_error_string(ERR_get_error(), NULL)); n->name, n->hostname, ERR_error_string(ERR_get_error(), NULL));
return; return;
@ -285,10 +290,11 @@ void receive_tcppacket(connection_t *c, char *buffer, int len)
receive_packet(c->node, &outpkt); receive_packet(c->node, &outpkt);
} }
static void send_udppacket(node_t *n, vpn_packet_t *inpkt) static void send_udppacket(node_t *n, vpn_packet_t *origpkt)
{ {
vpn_packet_t pkt1, pkt2; vpn_packet_t pkt1, pkt2;
vpn_packet_t *pkt[] = { &pkt1, &pkt2, &pkt1, &pkt2 }; vpn_packet_t *pkt[] = { &pkt1, &pkt2, &pkt1, &pkt2 };
vpn_packet_t *inpkt = origpkt;
int nextpkt = 0; int nextpkt = 0;
vpn_packet_t *outpkt; vpn_packet_t *outpkt;
int origlen; int origlen;
@ -352,9 +358,9 @@ static void send_udppacket(node_t *n, vpn_packet_t *inpkt)
outpkt = pkt[nextpkt++]; outpkt = pkt[nextpkt++];
if(!EVP_EncryptInit_ex(&n->packet_ctx, NULL, NULL, NULL, NULL) if(!EVP_EncryptInit_ex(&n->packet_ctx, NULL, NULL, NULL, NULL)
|| !EVP_EncryptUpdate(&n->packet_ctx, (char *) &outpkt->seqno, &outlen, || !EVP_EncryptUpdate(&n->packet_ctx, (unsigned char *) &outpkt->seqno, &outlen,
(char *) &inpkt->seqno, inpkt->len) (unsigned char *) &inpkt->seqno, inpkt->len)
|| !EVP_EncryptFinal_ex(&n->packet_ctx, (char *) &outpkt->seqno + outlen, &outpad)) { || !EVP_EncryptFinal_ex(&n->packet_ctx, (unsigned char *) &outpkt->seqno + outlen, &outpad)) {
ifdebug(TRAFFIC) logger(LOG_ERR, _("Error while encrypting packet to %s (%s): %s"), ifdebug(TRAFFIC) logger(LOG_ERR, _("Error while encrypting packet to %s (%s): %s"),
n->name, n->hostname, ERR_error_string(ERR_get_error(), NULL)); n->name, n->hostname, ERR_error_string(ERR_get_error(), NULL));
goto end; goto end;
@ -367,8 +373,8 @@ static void send_udppacket(node_t *n, vpn_packet_t *inpkt)
/* Add the message authentication code */ /* Add the message authentication code */
if(n->digest && n->maclength) { if(n->digest && n->maclength) {
HMAC(n->digest, n->key, n->keylength, (char *) &inpkt->seqno, HMAC(n->digest, n->key, n->keylength, (unsigned char *) &inpkt->seqno,
inpkt->len, (char *) &inpkt->seqno + inpkt->len, &outlen); inpkt->len, (unsigned char *) &inpkt->seqno + inpkt->len, NULL);
inpkt->len += n->maclength; inpkt->len += n->maclength;
} }
@ -404,7 +410,7 @@ static void send_udppacket(node_t *n, vpn_packet_t *inpkt)
} }
end: end:
inpkt->len = origlen; origpkt->len = origlen;
} }
/* /*
@ -457,11 +463,8 @@ void broadcast_packet(const node_t *from, vpn_packet_t *packet)
ifdebug(TRAFFIC) logger(LOG_INFO, _("Broadcasting packet of %d bytes from %s (%s)"), ifdebug(TRAFFIC) logger(LOG_INFO, _("Broadcasting packet of %d bytes from %s (%s)"),
packet->len, from->name, from->hostname); packet->len, from->name, from->hostname);
if(from != myself) { if(from != myself)
if(overwrite_mac) send_packet(myself, packet);
memcpy(packet->data, mymac.x, ETH_ALEN);
write_packet(packet);
}
for(node = connection_tree->head; node; node = node->next) { for(node = connection_tree->head; node; node = node->next) {
c = node->data; c = node->data;

View file

@ -1,7 +1,7 @@
/* /*
net_setup.c -- Setup. net_setup.c -- Setup.
Copyright (C) 1998-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 1998-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: net_setup.c 1439 2005-05-04 18:09:30Z guus $ $Id: net_setup.c 1469 2006-11-11 22:44:15Z guus $
*/ */
#include "system.h" #include "system.h"
@ -286,8 +286,6 @@ bool setup_myself(void)
if(get_config_bool(lookup_config(myself->connection->config_tree, "TCPOnly"), &choice) && choice) if(get_config_bool(lookup_config(myself->connection->config_tree, "TCPOnly"), &choice) && choice)
myself->options |= OPTION_TCPONLY; myself->options |= OPTION_TCPONLY;
get_config_bool(lookup_config(config_tree, "BlockingTCP"), &blockingtcp);
if(get_config_bool(lookup_config(myself->connection->config_tree, "PMTUDiscovery"), &choice) && choice) if(get_config_bool(lookup_config(myself->connection->config_tree, "PMTUDiscovery"), &choice) && choice)
myself->options |= OPTION_PMTU_DISCOVERY; myself->options |= OPTION_PMTU_DISCOVERY;
@ -370,7 +368,7 @@ bool setup_myself(void)
myself->connection->outcipher = EVP_bf_ofb(); myself->connection->outcipher = EVP_bf_ofb();
myself->key = xmalloc(myself->keylength); myself->key = xmalloc(myself->keylength);
RAND_pseudo_bytes(myself->key, myself->keylength); RAND_pseudo_bytes((unsigned char *)myself->key, myself->keylength);
if(!get_config_int(lookup_config(config_tree, "KeyExpire"), &keylifetime)) if(!get_config_int(lookup_config(config_tree, "KeyExpire"), &keylifetime))
keylifetime = 3600; keylifetime = 3600;
@ -379,7 +377,7 @@ bool setup_myself(void)
if(myself->cipher) { if(myself->cipher) {
EVP_CIPHER_CTX_init(&packet_ctx); EVP_CIPHER_CTX_init(&packet_ctx);
if(!EVP_DecryptInit_ex(&packet_ctx, myself->cipher, NULL, myself->key, myself->key + myself->cipher->key_len)) { if(!EVP_DecryptInit_ex(&packet_ctx, myself->cipher, NULL, (unsigned char *)myself->key, (unsigned char *)myself->key + myself->cipher->key_len)) {
logger(LOG_ERR, _("Error during initialisation of cipher for %s (%s): %s"), logger(LOG_ERR, _("Error during initialisation of cipher for %s (%s): %s"),
myself->name, myself->hostname, ERR_error_string(ERR_get_error(), NULL)); myself->name, myself->hostname, ERR_error_string(ERR_get_error(), NULL));
return false; return false;
@ -439,7 +437,6 @@ bool setup_myself(void)
myself->nexthop = myself; myself->nexthop = myself;
myself->via = myself; myself->via = myself;
myself->status.active = true;
myself->status.reachable = true; myself->status.reachable = true;
node_add(myself); node_add(myself);
@ -504,7 +501,7 @@ bool setup_myself(void)
free(hostname); free(hostname);
} }
listen_socket[listen_sockets].sa.sa = *aip->ai_addr; memcpy(&listen_socket[listen_sockets].sa, aip->ai_addr, aip->ai_addrlen);
listen_sockets++; listen_sockets++;
} }
@ -529,19 +526,27 @@ bool setup_network_connections(void)
now = time(NULL); now = time(NULL);
init_events();
init_connections(); init_connections();
init_subnets(); init_subnets();
init_nodes(); init_nodes();
init_edges(); init_edges();
init_events();
init_requests(); init_requests();
if(get_config_int(lookup_config(config_tree, "PingTimeout"), &pingtimeout)) { if(get_config_int(lookup_config(config_tree, "PingInterval"), &pinginterval)) {
if(pingtimeout < 1) { if(pinginterval < 1) {
pingtimeout = 86400; pinginterval = 86400;
} }
} else } else
pingtimeout = 60; pinginterval = 60;
if(!get_config_int(lookup_config(config_tree, "PingTimeout"), &pingtimeout))
pingtimeout = 5;
if(pingtimeout < 1 || pingtimeout > pinginterval)
pingtimeout = pinginterval;
if(!get_config_int(lookup_config(config_tree, "MaxOutputBufferSize"), &maxoutbufsize))
maxoutbufsize = 4 * MTU;
if(!setup_myself()) if(!setup_myself())
return false; return false;
@ -582,19 +587,19 @@ void close_network_connections(void)
close(listen_socket[i].udp); close(listen_socket[i].udp);
} }
exit_requests();
exit_events();
exit_edges();
exit_subnets();
exit_nodes();
exit_connections();
asprintf(&envp[0], "NETNAME=%s", netname ? : ""); asprintf(&envp[0], "NETNAME=%s", netname ? : "");
asprintf(&envp[1], "DEVICE=%s", device ? : ""); asprintf(&envp[1], "DEVICE=%s", device ? : "");
asprintf(&envp[2], "INTERFACE=%s", iface ? : ""); asprintf(&envp[2], "INTERFACE=%s", iface ? : "");
asprintf(&envp[3], "NAME=%s", myself->name); asprintf(&envp[3], "NAME=%s", myself->name);
envp[4] = NULL; envp[4] = NULL;
exit_requests();
exit_edges();
exit_subnets();
exit_nodes();
exit_connections();
exit_events();
execute_script("tinc-down", envp); execute_script("tinc-down", envp);
for(i = 0; i < 4; i++) for(i = 0; i < 4; i++)

View file

@ -1,7 +1,7 @@
/* /*
net_socket.c -- Handle various kinds of sockets. net_socket.c -- Handle various kinds of sockets.
Copyright (C) 1998-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 1998-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: net_socket.c 1439 2005-05-04 18:09:30Z guus $ $Id: net_socket.c 1460 2006-08-08 13:50:58Z guus $
*/ */
#include "system.h" #include "system.h"
@ -38,16 +38,43 @@
#define EINPROGRESS WSAEINPROGRESS #define EINPROGRESS WSAEINPROGRESS
#endif #endif
/* Needed on Mac OS/X */
#ifndef SOL_TCP
#define SOL_TCP IPPROTO_TCP
#endif
int addressfamily = AF_UNSPEC; int addressfamily = AF_UNSPEC;
int maxtimeout = 900; int maxtimeout = 900;
int seconds_till_retry = 5; int seconds_till_retry = 5;
bool blockingtcp = false;
listen_socket_t listen_socket[MAXSOCKETS]; listen_socket_t listen_socket[MAXSOCKETS];
int listen_sockets; int listen_sockets;
/* Setup sockets */ /* Setup sockets */
static void configure_tcp(connection_t *c)
{
int option;
#ifdef O_NONBLOCK
int flags = fcntl(c->socket, F_GETFL);
if(fcntl(c->socket, F_SETFL, flags | O_NONBLOCK) < 0) {
logger(LOG_ERR, _("fcntl for %s: %s"), c->hostname, strerror(errno));
}
#endif
#if defined(SOL_TCP) && defined(TCP_NODELAY)
option = 1;
setsockopt(c->socket, SOL_TCP, TCP_NODELAY, &option, sizeof(option));
#endif
#if defined(SOL_IP) && defined(IP_TOS) && defined(IPTOS_LOWDELAY)
option = IPTOS_LOWDELAY;
setsockopt(c->socket, SOL_IP, IP_TOS, &option, sizeof(option));
#endif
}
int setup_listen_socket(const sockaddr_t *sa) int setup_listen_socket(const sockaddr_t *sa)
{ {
int nfd; int nfd;
@ -64,33 +91,11 @@ int setup_listen_socket(const sockaddr_t *sa)
return -1; return -1;
} }
#ifdef O_NONBLOCK
{
int flags = fcntl(nfd, F_GETFL);
if(fcntl(nfd, F_SETFL, flags | O_NONBLOCK) < 0) {
closesocket(nfd);
logger(LOG_ERR, _("System call `%s' failed: %s"), "fcntl",
strerror(errno));
return -1;
}
}
#endif
/* Optimize TCP settings */ /* Optimize TCP settings */
option = 1; option = 1;
setsockopt(nfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option)); setsockopt(nfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
#if defined(SOL_TCP) && defined(TCP_NODELAY)
setsockopt(nfd, SOL_TCP, TCP_NODELAY, &option, sizeof(option));
#endif
#if defined(SOL_IP) && defined(IP_TOS) && defined(IPTOS_LOWDELAY)
option = IPTOS_LOWDELAY;
setsockopt(nfd, SOL_IP, IP_TOS, &option, sizeof(option));
#endif
if(get_config_string if(get_config_string
(lookup_config(config_tree, "BindToInterface"), &iface)) { (lookup_config(config_tree, "BindToInterface"), &iface)) {
#if defined(SOL_SOCKET) && defined(SO_BINDTODEVICE) #if defined(SOL_SOCKET) && defined(SO_BINDTODEVICE)
@ -241,15 +246,7 @@ void finish_connecting(connection_t *c)
ifdebug(CONNECTIONS) logger(LOG_INFO, _("Connected to %s (%s)"), c->name, c->hostname); ifdebug(CONNECTIONS) logger(LOG_INFO, _("Connected to %s (%s)"), c->name, c->hostname);
#ifdef O_NONBLOCK configure_tcp(c);
if(blockingtcp) {
int flags = fcntl(c->socket, F_GETFL);
if(fcntl(c->socket, F_SETFL, flags & ~O_NONBLOCK) < 0) {
logger(LOG_ERR, _("fcntl for %s: %s"), c->hostname, strerror(errno));
}
}
#endif
c->last_ping_time = now; c->last_ping_time = now;
@ -259,7 +256,7 @@ void finish_connecting(connection_t *c)
void do_outgoing_connection(connection_t *c) void do_outgoing_connection(connection_t *c)
{ {
char *address, *port; char *address, *port;
int option, result, flags; int result;
cp(); cp();
@ -314,25 +311,7 @@ begin:
/* Optimize TCP settings */ /* Optimize TCP settings */
#if defined(SOL_TCP) && defined(TCP_NODELAY) configure_tcp(c);
option = 1;
setsockopt(c->socket, SOL_TCP, TCP_NODELAY, &option, sizeof(option));
#endif
#if defined(SOL_IP) && defined(IP_TOS)
option = IPTOS_LOWDELAY;
setsockopt(c->socket, SOL_IP, IP_TOS, &option, sizeof(option));
#endif
/* Non-blocking */
#ifdef O_NONBLOCK
flags = fcntl(c->socket, F_GETFL);
if(fcntl(c->socket, F_SETFL, flags | O_NONBLOCK) < 0) {
logger(LOG_ERR, _("fcntl for %s: %s"), c->hostname, strerror(errno));
}
#endif
/* Connect */ /* Connect */
@ -409,7 +388,8 @@ bool handle_new_meta_connection(int sock)
{ {
connection_t *c; connection_t *c;
sockaddr_t sa; sockaddr_t sa;
int fd, len = sizeof(sa); int fd;
socklen_t len = sizeof(sa);
cp(); cp();
@ -437,15 +417,7 @@ bool handle_new_meta_connection(int sock)
ifdebug(CONNECTIONS) logger(LOG_NOTICE, _("Connection from %s"), c->hostname); ifdebug(CONNECTIONS) logger(LOG_NOTICE, _("Connection from %s"), c->hostname);
#ifdef O_NONBLOCK configure_tcp(c);
if(blockingtcp) {
int flags = fcntl(c->socket, F_GETFL);
if(fcntl(c->socket, F_SETFL, flags & ~O_NONBLOCK) < 0) {
logger(LOG_ERR, _("fcntl for %s: %s"), c->hostname, strerror(errno));
}
}
#endif
connection_add(c); connection_add(c);

View file

@ -1,7 +1,7 @@
/* /*
netutl.c -- some supporting network utility code netutl.c -- some supporting network utility code
Copyright (C) 1998-2005 Ivo Timmermans <ivo@tinc-vpn.org> Copyright (C) 1998-2005 Ivo Timmermans
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: netutl.c 1439 2005-05-04 18:09:30Z guus $ $Id: netutl.c 1459 2006-08-08 13:44:37Z guus $
*/ */
#include "system.h" #include "system.h"
@ -78,7 +78,7 @@ sockaddr_t str2sockaddr(const char *address, const char *port)
return result; return result;
} }
result = *(sockaddr_t *) ai->ai_addr; memcpy(&result, ai->ai_addr, ai->ai_addrlen);
freeaddrinfo(ai); freeaddrinfo(ai);
return result; return result;
@ -225,7 +225,7 @@ void sockaddrunmap(sockaddr_t *sa)
/* Subnet mask handling */ /* Subnet mask handling */
int maskcmp(const void *va, const void *vb, int masklen, int len) int maskcmp(const void *va, const void *vb, int masklen)
{ {
int i, m, result; int i, m, result;
const char *a = va; const char *a = va;
@ -257,7 +257,7 @@ void mask(void *va, int masklen, int len)
masklen %= 8; masklen %= 8;
if(masklen) if(masklen)
a[i++] &= (0x100 - (1 << masklen)); a[i++] &= (0x100 - (1 << (8 - masklen)));
for(; i < len; i++) for(; i < len; i++)
a[i] = 0; a[i] = 0;
@ -275,7 +275,7 @@ void maskcpy(void *va, const void *vb, int masklen, int len)
a[i] = b[i]; a[i] = b[i];
if(m) { if(m) {
a[i] = b[i] & (0x100 - (1 << m)); a[i] = b[i] & (0x100 - (1 << (8 - m)));
i++; i++;
} }

View file

@ -1,7 +1,7 @@
/* /*
netutl.h -- header file for netutl.c netutl.h -- header file for netutl.c
Copyright (C) 1998-2005 Ivo Timmermans <zarq@iname.com> Copyright (C) 1998-2005 Ivo Timmermans <zarq@iname.com>
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: netutl.h 1439 2005-05-04 18:09:30Z guus $ $Id: netutl.h 1459 2006-08-08 13:44:37Z guus $
*/ */
#ifndef __TINC_NETUTL_H__ #ifndef __TINC_NETUTL_H__
@ -35,7 +35,7 @@ extern int sockaddrcmp(const sockaddr_t *, const sockaddr_t *);
extern void sockaddrunmap(sockaddr_t *); extern void sockaddrunmap(sockaddr_t *);
extern void sockaddrfree(sockaddr_t *); extern void sockaddrfree(sockaddr_t *);
extern void sockaddrcpy(sockaddr_t *, const sockaddr_t *); extern void sockaddrcpy(sockaddr_t *, const sockaddr_t *);
extern int maskcmp(const void *, const void *, int, int); extern int maskcmp(const void *, const void *, int);
extern void maskcpy(void *, const void *, int, int); extern void maskcpy(void *, const void *, int, int);
extern void mask(void *, int, int); extern void mask(void *, int, int);
extern bool maskcheck(const void *, int, int); extern bool maskcheck(const void *, int, int);

View file

@ -1,7 +1,7 @@
/* /*
node.c -- node tree management node.c -- node tree management
Copyright (C) 2001-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2001-2006 Guus Sliepen <guus@tinc-vpn.org>,
2001-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2001-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: node.c 1439 2005-05-04 18:09:30Z guus $ $Id: node.c 1469 2006-11-11 22:44:15Z guus $
*/ */
#include "system.h" #include "system.h"
@ -93,12 +93,6 @@ void free_node(node_t *n)
if(n->queue) if(n->queue)
list_delete_list(n->queue); list_delete_list(n->queue);
if(n->name)
free(n->name);
if(n->hostname)
free(n->hostname);
if(n->key) if(n->key)
free(n->key); free(n->key);
@ -112,8 +106,16 @@ void free_node(node_t *n)
EVP_CIPHER_CTX_cleanup(&n->packet_ctx); EVP_CIPHER_CTX_cleanup(&n->packet_ctx);
if(n->mtuevent) if(n->mtuevent) {
event_del(n->mtuevent); event_del(n->mtuevent);
free_event(n->mtuevent);
}
if(n->hostname)
free(n->hostname);
if(n->name)
free(n->name);
free(n); free(n);
} }

View file

@ -1,7 +1,7 @@
/* /*
node.h -- header for node.c node.h -- header for node.c
Copyright (C) 2001-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2001-2006 Guus Sliepen <guus@tinc-vpn.org>,
2001-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2001-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: node.h 1439 2005-05-04 18:09:30Z guus $ $Id: node.h 1462 2006-11-11 13:43:00Z guus $
*/ */
#ifndef __TINC_NODE_H__ #ifndef __TINC_NODE_H__
@ -29,14 +29,17 @@
#include "list.h" #include "list.h"
#include "subnet.h" #include "subnet.h"
typedef struct node_status_t { typedef union node_status_t {
int active:1; /* 1 if active.. */ struct {
int unused_active:1; /* 1 if active (not used for nodes) */
int validkey:1; /* 1 if we currently have a valid key for him */ int validkey:1; /* 1 if we currently have a valid key for him */
int waitingforkey:1; /* 1 if we already sent out a request */ int waitingforkey:1; /* 1 if we already sent out a request */
int visited:1; /* 1 if this node has been visited by one of the graph algorithms */ int visited:1; /* 1 if this node has been visited by one of the graph algorithms */
int reachable:1; /* 1 if this node is reachable in the graph */ int reachable:1; /* 1 if this node is reachable in the graph */
int indirect:1; /* 1 if this node is not directly reachable by us */ int indirect:1; /* 1 if this node is not directly reachable by us */
int unused:26; int unused:26;
};
uint32_t value;
} node_status_t; } node_status_t;
typedef struct node_t { typedef struct node_t {

View file

@ -1,7 +1,7 @@
/* /*
process.c -- process management functions process.c -- process management functions
Copyright (C) 1999-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 1999-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: process.c 1439 2005-05-04 18:09:30Z guus $ $Id: process.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"

View file

@ -1,7 +1,7 @@
/* /*
process.h -- header file for process.c process.h -- header file for process.c
Copyright (C) 1999-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 1999-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: process.h 1439 2005-05-04 18:09:30Z guus $ $Id: process.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_PROCESS_H__ #ifndef __TINC_PROCESS_H__

View file

@ -1,7 +1,7 @@
/* /*
protocol.c -- handle the meta-protocol, basic functions protocol.c -- handle the meta-protocol, basic functions
Copyright (C) 1999-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 1999-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: protocol.c 1439 2005-05-04 18:09:30Z guus $ $Id: protocol.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"
@ -241,7 +241,7 @@ void age_past_requests(void)
next = node->next; next = node->next;
p = node->data; p = node->data;
if(p->firstseen + pingtimeout < now) if(p->firstseen + pinginterval < now)
avl_delete_node(past_request_tree, node), deleted++; avl_delete_node(past_request_tree, node), deleted++;
else else
left++; left++;

View file

@ -1,7 +1,7 @@
/* /*
protocol.h -- header for protocol.c protocol.h -- header for protocol.c
Copyright (C) 1999-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 1999-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: protocol.h 1439 2005-05-04 18:09:30Z guus $ $Id: protocol.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_PROTOCOL_H__ #ifndef __TINC_PROTOCOL_H__
@ -56,9 +56,12 @@ typedef struct past_request_t {
extern bool tunnelserver; extern bool tunnelserver;
/* Maximum size of strings in a request */ /* Maximum size of strings in a request.
* scanf terminates %2048s with a NUL character,
* but the NUL character can be written after the 2048th non-NUL character.
*/
#define MAX_STRING_SIZE 2048 #define MAX_STRING_SIZE 2049
#define MAX_STRING "%2048s" #define MAX_STRING "%2048s"
#include "edge.h" #include "edge.h"

View file

@ -1,7 +1,7 @@
/* /*
protocol_auth.c -- handle the meta-protocol, authentication protocol_auth.c -- handle the meta-protocol, authentication
Copyright (C) 1999-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 1999-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: protocol_auth.c 1439 2005-05-04 18:09:30Z guus $ $Id: protocol_auth.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"
@ -118,7 +118,7 @@ bool id_h(connection_t *c)
bool send_metakey(connection_t *c) bool send_metakey(connection_t *c)
{ {
char buffer[MAX_STRING_SIZE]; char *buffer;
int len; int len;
bool x; bool x;
@ -128,6 +128,8 @@ bool send_metakey(connection_t *c)
/* Allocate buffers for the meta key */ /* Allocate buffers for the meta key */
buffer = alloca(2 * len + 1);
if(!c->outkey) if(!c->outkey)
c->outkey = xmalloc(len); c->outkey = xmalloc(len);
@ -136,7 +138,7 @@ bool send_metakey(connection_t *c)
cp(); cp();
/* Copy random data to the buffer */ /* Copy random data to the buffer */
RAND_pseudo_bytes(c->outkey, len); RAND_pseudo_bytes((unsigned char *)c->outkey, len);
/* The message we send must be smaller than the modulus of the RSA key. /* The message we send must be smaller than the modulus of the RSA key.
By definition, for a key of k bits, the following formula holds: By definition, for a key of k bits, the following formula holds:
@ -164,7 +166,7 @@ bool send_metakey(connection_t *c)
with a length equal to that of the modulus of the RSA key. with a length equal to that of the modulus of the RSA key.
*/ */
if(RSA_public_encrypt(len, c->outkey, buffer, c->rsa_key, RSA_NO_PADDING) != len) { if(RSA_public_encrypt(len, (unsigned char *)c->outkey, (unsigned char *)buffer, c->rsa_key, RSA_NO_PADDING) != len) {
logger(LOG_ERR, _("Error during encryption of meta key for %s (%s)"), logger(LOG_ERR, _("Error during encryption of meta key for %s (%s)"),
c->name, c->hostname); c->name, c->hostname);
return false; return false;
@ -186,8 +188,8 @@ bool send_metakey(connection_t *c)
if(c->outcipher) { if(c->outcipher) {
if(!EVP_EncryptInit(c->outctx, c->outcipher, if(!EVP_EncryptInit(c->outctx, c->outcipher,
c->outkey + len - c->outcipher->key_len, (unsigned char *)c->outkey + len - c->outcipher->key_len,
c->outkey + len - c->outcipher->key_len - (unsigned char *)c->outkey + len - c->outcipher->key_len -
c->outcipher->iv_len)) { c->outcipher->iv_len)) {
logger(LOG_ERR, _("Error during initialisation of cipher for %s (%s): %s"), logger(LOG_ERR, _("Error during initialisation of cipher for %s (%s): %s"),
c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL)); c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL));
@ -237,7 +239,7 @@ bool metakey_h(connection_t *c)
/* Decrypt the meta key */ /* Decrypt the meta key */
if(RSA_private_decrypt(len, buffer, c->inkey, myself->connection->rsa_key, RSA_NO_PADDING) != len) { /* See challenge() */ if(RSA_private_decrypt(len, (unsigned char *)buffer, (unsigned char *)c->inkey, myself->connection->rsa_key, RSA_NO_PADDING) != len) { /* See challenge() */
logger(LOG_ERR, _("Error during encryption of meta key for %s (%s)"), logger(LOG_ERR, _("Error during encryption of meta key for %s (%s)"),
c->name, c->hostname); c->name, c->hostname);
return false; return false;
@ -262,8 +264,8 @@ bool metakey_h(connection_t *c)
} }
if(!EVP_DecryptInit(c->inctx, c->incipher, if(!EVP_DecryptInit(c->inctx, c->incipher,
c->inkey + len - c->incipher->key_len, (unsigned char *)c->inkey + len - c->incipher->key_len,
c->inkey + len - c->incipher->key_len - (unsigned char *)c->inkey + len - c->incipher->key_len -
c->incipher->iv_len)) { c->incipher->iv_len)) {
logger(LOG_ERR, _("Error during initialisation of cipher from %s (%s): %s"), logger(LOG_ERR, _("Error during initialisation of cipher from %s (%s): %s"),
c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL)); c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL));
@ -302,7 +304,7 @@ bool metakey_h(connection_t *c)
bool send_challenge(connection_t *c) bool send_challenge(connection_t *c)
{ {
char buffer[MAX_STRING_SIZE]; char *buffer;
int len; int len;
cp(); cp();
@ -313,12 +315,14 @@ bool send_challenge(connection_t *c)
/* Allocate buffers for the challenge */ /* Allocate buffers for the challenge */
buffer = alloca(2 * len + 1);
if(!c->hischallenge) if(!c->hischallenge)
c->hischallenge = xmalloc(len); c->hischallenge = xmalloc(len);
/* Copy random data to the buffer */ /* Copy random data to the buffer */
RAND_pseudo_bytes(c->hischallenge, len); RAND_pseudo_bytes((unsigned char *)c->hischallenge, len);
/* Convert to hex */ /* Convert to hex */
@ -380,7 +384,7 @@ bool send_chal_reply(connection_t *c)
if(!EVP_DigestInit(&ctx, c->indigest) if(!EVP_DigestInit(&ctx, c->indigest)
|| !EVP_DigestUpdate(&ctx, c->mychallenge, RSA_size(myself->connection->rsa_key)) || !EVP_DigestUpdate(&ctx, c->mychallenge, RSA_size(myself->connection->rsa_key))
|| !EVP_DigestFinal(&ctx, hash, NULL)) { || !EVP_DigestFinal(&ctx, (unsigned char *)hash, NULL)) {
logger(LOG_ERR, _("Error during calculation of response for %s (%s): %s"), logger(LOG_ERR, _("Error during calculation of response for %s (%s): %s"),
c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL)); c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL));
return false; return false;
@ -426,7 +430,7 @@ bool chal_reply_h(connection_t *c)
if(!EVP_DigestInit(&ctx, c->outdigest) if(!EVP_DigestInit(&ctx, c->outdigest)
|| !EVP_DigestUpdate(&ctx, c->hischallenge, RSA_size(c->rsa_key)) || !EVP_DigestUpdate(&ctx, c->hischallenge, RSA_size(c->rsa_key))
|| !EVP_DigestFinal(&ctx, myhash, NULL)) { || !EVP_DigestFinal(&ctx, (unsigned char *)myhash, NULL)) {
logger(LOG_ERR, _("Error during calculation of response from %s (%s): %s"), logger(LOG_ERR, _("Error during calculation of response from %s (%s): %s"),
c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL)); c->name, c->hostname, ERR_error_string(ERR_get_error(), NULL));
return false; return false;

View file

@ -1,7 +1,7 @@
/* /*
protocol_edge.c -- handle the meta-protocol, edges protocol_edge.c -- handle the meta-protocol, edges
Copyright (C) 1999-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 1999-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: protocol_edge.c 1439 2005-05-04 18:09:30Z guus $ $Id: protocol_edge.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"

View file

@ -1,7 +1,7 @@
/* /*
protocol_key.c -- handle the meta-protocol, key exchange protocol_key.c -- handle the meta-protocol, key exchange
Copyright (C) 1999-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 1999-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: protocol_key.c 1439 2005-05-04 18:09:30Z guus $ $Id: protocol_key.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"
@ -142,10 +142,11 @@ bool req_key_h(connection_t *c)
bool send_ans_key(connection_t *c, const node_t *from, const node_t *to) bool send_ans_key(connection_t *c, const node_t *from, const node_t *to)
{ {
char key[MAX_STRING_SIZE]; char *key;
cp(); cp();
key = alloca(2 * from->keylength + 1);
bin2hex(from->key, key, from->keylength); bin2hex(from->key, key, from->keylength);
key[from->keylength * 2] = '\0'; key[from->keylength * 2] = '\0';
@ -261,7 +262,7 @@ bool ans_key_h(connection_t *c)
from->compression = compression; from->compression = compression;
if(from->cipher) if(from->cipher)
if(!EVP_EncryptInit_ex(&from->packet_ctx, from->cipher, NULL, from->key, from->key + from->cipher->key_len)) { if(!EVP_EncryptInit_ex(&from->packet_ctx, from->cipher, NULL, (unsigned char *)from->key, (unsigned char *)from->key + from->cipher->key_len)) {
logger(LOG_ERR, _("Error during initialisation of key from %s (%s): %s"), logger(LOG_ERR, _("Error during initialisation of key from %s (%s): %s"),
from->name, from->hostname, ERR_error_string(ERR_get_error(), NULL)); from->name, from->hostname, ERR_error_string(ERR_get_error(), NULL));
return false; return false;

View file

@ -1,7 +1,7 @@
/* /*
protocol_misc.c -- handle the meta-protocol, miscellaneous functions protocol_misc.c -- handle the meta-protocol, miscellaneous functions
Copyright (C) 1999-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 1999-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: protocol_misc.c 1439 2005-05-04 18:09:30Z guus $ $Id: protocol_misc.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"
@ -31,6 +31,8 @@
#include "protocol.h" #include "protocol.h"
#include "utils.h" #include "utils.h"
int maxoutbufsize = 0;
/* Status and error notification routines */ /* Status and error notification routines */
bool send_status(connection_t *c, int statusno, const char *statusstring) bool send_status(connection_t *c, int statusno, const char *statusstring)
@ -153,12 +155,15 @@ bool send_tcppacket(connection_t *c, vpn_packet_t *packet)
{ {
cp(); cp();
/* Evil hack. */ /* If there already is a lot of data in the outbuf buffer, discard this packet. */
if(c->outbuflen > maxoutbufsize)
return true;
if(!send_request(c, "%d %hd", PACKET, packet->len)) if(!send_request(c, "%d %hd", PACKET, packet->len))
return false; return false;
return send_meta(c, packet->data, packet->len); return send_meta(c, (char *)packet->data, packet->len);
} }
bool tcppacket_h(connection_t *c) bool tcppacket_h(connection_t *c)

View file

@ -1,7 +1,7 @@
/* /*
protocol_subnet.c -- handle the meta-protocol, subnets protocol_subnet.c -- handle the meta-protocol, subnets
Copyright (C) 1999-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 1999-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: protocol_subnet.c 1439 2005-05-04 18:09:30Z guus $ $Id: protocol_subnet.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"

View file

@ -1,7 +1,7 @@
/* /*
device.c -- raw socket device.c -- raw socket
Copyright (C) 2002-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 2002-2005 Ivo Timmermans,
2002-2005 Guus Sliepen <guus@tinc-vpn.org> 2002-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: device.c 1439 2005-05-04 18:09:30Z guus $ $Id: device.c 1452 2006-04-26 13:52:58Z guus $
*/ */
#include "system.h" #include "system.h"

View file

@ -1,7 +1,7 @@
/* /*
route.c -- routing route.c -- routing
Copyright (C) 2000-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 2000-2005 Ivo Timmermans,
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: route.c 1439 2005-05-04 18:09:30Z guus $ $Id: route.c 1461 2006-08-09 22:31:10Z guus $
*/ */
#include "system.h" #include "system.h"
@ -163,17 +163,23 @@ void age_subnets(void)
static void route_mac(node_t *source, vpn_packet_t *packet) static void route_mac(node_t *source, vpn_packet_t *packet)
{ {
subnet_t *subnet; subnet_t *subnet;
mac_t dest;
cp(); cp();
/* Learn source address */ /* Learn source address */
if(source == myself) if(source == myself) {
learn_mac((mac_t *)(&packet->data[6])); mac_t src;
memcpy(&src, &packet->data[6], sizeof src);
learn_mac(&src);
}
/* Lookup destination address */ /* Lookup destination address */
subnet = lookup_subnet_mac((mac_t *)(&packet->data[0])); memcpy(&dest, &packet->data[0], sizeof dest);
subnet = lookup_subnet_mac(&dest);
if(!subnet) { if(!subnet) {
broadcast_packet(source, packet); broadcast_packet(source, packet);
@ -280,7 +286,7 @@ static void fragment_ipv4_packet(node_t *dest, vpn_packet_t *packet) {
todo = ntohs(ip.ip_len) - ip_size; todo = ntohs(ip.ip_len) - ip_size;
if(ether_size + ip_size + todo != packet->len) { if(ether_size + ip_size + todo != packet->len) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Length of packet (%d) doesn't match length in IPv4 header (%d)"), packet->len, ether_size + ip_size + todo); ifdebug(TRAFFIC) logger(LOG_WARNING, _("Length of packet (%d) doesn't match length in IPv4 header (%zd)"), packet->len, ether_size + ip_size + todo);
return; return;
} }
@ -316,18 +322,20 @@ static void route_ipv4_unicast(node_t *source, vpn_packet_t *packet)
{ {
subnet_t *subnet; subnet_t *subnet;
node_t *via; node_t *via;
ipv4_t dest;
cp(); cp();
subnet = lookup_subnet_ipv4((ipv4_t *) &packet->data[30]); memcpy(&dest, &packet->data[30], sizeof dest);
subnet = lookup_subnet_ipv4(&dest);
if(!subnet) { if(!subnet) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet from %s (%s): unknown IPv4 destination address %d.%d.%d.%d"), ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet from %s (%s): unknown IPv4 destination address %d.%d.%d.%d"),
source->name, source->hostname, source->name, source->hostname,
packet->data[30], dest.x[0],
packet->data[31], dest.x[1],
packet->data[32], dest.x[2],
packet->data[33]); dest.x[3]);
route_ipv4_unreachable(source, packet, ICMP_DEST_UNREACH, ICMP_NET_UNKNOWN); route_ipv4_unreachable(source, packet, ICMP_DEST_UNREACH, ICMP_NET_UNKNOWN);
return; return;
@ -454,22 +462,24 @@ static void route_ipv6_unicast(node_t *source, vpn_packet_t *packet)
{ {
subnet_t *subnet; subnet_t *subnet;
node_t *via; node_t *via;
ipv6_t dest;
cp(); cp();
subnet = lookup_subnet_ipv6((ipv6_t *) &packet->data[38]); memcpy(&dest, &packet->data[38], sizeof dest);
subnet = lookup_subnet_ipv6(&dest);
if(!subnet) { if(!subnet) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet from %s (%s): unknown IPv6 destination address %hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx"), ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet from %s (%s): unknown IPv6 destination address %hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx"),
source->name, source->hostname, source->name, source->hostname,
ntohs(*(uint16_t *) &packet->data[38]), ntohs(dest.x[0]),
ntohs(*(uint16_t *) &packet->data[40]), ntohs(dest.x[1]),
ntohs(*(uint16_t *) &packet->data[42]), ntohs(dest.x[2]),
ntohs(*(uint16_t *) &packet->data[44]), ntohs(dest.x[3]),
ntohs(*(uint16_t *) &packet->data[46]), ntohs(dest.x[4]),
ntohs(*(uint16_t *) &packet->data[48]), ntohs(dest.x[5]),
ntohs(*(uint16_t *) &packet->data[50]), ntohs(dest.x[6]),
ntohs(*(uint16_t *) &packet->data[52])); ntohs(dest.x[7]));
route_ipv6_unreachable(source, packet, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_ADDR); route_ipv6_unreachable(source, packet, ICMP6_DST_UNREACH, ICMP6_DST_UNREACH_ADDR);
return; return;

View file

@ -1,7 +1,7 @@
/* /*
route.h -- header file for route.c route.h -- header file for route.c
Copyright (C) 2000-2005 Ivo Timmermans <zarq@iname.com> Copyright (C) 2000-2005 Ivo Timmermans <zarq@iname.com>
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: route.h 1439 2005-05-04 18:09:30Z guus $ $Id: route.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_ROUTE_H__ #ifndef __TINC_ROUTE_H__

View file

@ -1,7 +1,7 @@
/* /*
device.c -- Interaction with Solaris tun device device.c -- Interaction with Solaris tun device
Copyright (C) 2001-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 2001-2005 Ivo Timmermans,
2001-2005 Guus Sliepen <guus@tinc-vpn.org> 2001-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: device.c 1439 2005-05-04 18:09:30Z guus $ $Id: device.c 1452 2006-04-26 13:52:58Z guus $
*/ */

View file

@ -1,7 +1,7 @@
/* /*
subnet.c -- handle subnet lookups and lists subnet.c -- handle subnet lookups and lists
Copyright (C) 2000-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2000-2006 Guus Sliepen <guus@tinc-vpn.org>,
2000-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2000-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: subnet.c 1439 2005-05-04 18:09:30Z guus $ $Id: subnet.c 1459 2006-08-08 13:44:37Z guus $
*/ */
#include "system.h" #include "system.h"
@ -342,7 +342,7 @@ subnet_t *lookup_subnet_ipv4(const ipv4_t *address)
break; break;
} }
if(!maskcmp(address, &p->net.ipv4.address, p->net.ipv4.prefixlength, sizeof(ipv4_t))) if(!maskcmp(address, &p->net.ipv4.address, p->net.ipv4.prefixlength))
break; break;
else { else {
/* Otherwise, see if there is a bigger enclosing subnet */ /* Otherwise, see if there is a bigger enclosing subnet */
@ -378,7 +378,7 @@ subnet_t *lookup_subnet_ipv6(const ipv6_t *address)
if(p->type != SUBNET_IPV6) if(p->type != SUBNET_IPV6)
return NULL; return NULL;
if(!maskcmp(address, &p->net.ipv6.address, p->net.ipv6.prefixlength, sizeof(ipv6_t))) if(!maskcmp(address, &p->net.ipv6.address, p->net.ipv6.prefixlength))
break; break;
else { else {
/* Otherwise, see if there is a bigger enclosing subnet */ /* Otherwise, see if there is a bigger enclosing subnet */

View file

@ -1,7 +1,7 @@
/* /*
subnet.h -- header for subnet.c subnet.h -- header for subnet.c
Copyright (C) 2000-2005 Guus Sliepen <guus@tinc-vpn.org>, Copyright (C) 2000-2006 Guus Sliepen <guus@tinc-vpn.org>,
2000-2005 Ivo Timmermans <ivo@tinc-vpn.org> 2000-2005 Ivo Timmermans
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: subnet.h 1439 2005-05-04 18:09:30Z guus $ $Id: subnet.h 1452 2006-04-26 13:52:58Z guus $
*/ */
#ifndef __TINC_SUBNET_H__ #ifndef __TINC_SUBNET_H__

View file

@ -1,7 +1,7 @@
/* /*
tincd.c -- the main file for tincd tincd.c -- the main file for tincd
Copyright (C) 1998-2005 Ivo Timmermans <ivo@tinc-vpn.org> Copyright (C) 1998-2005 Ivo Timmermans
2000-2005 Guus Sliepen <guus@tinc-vpn.org> 2000-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: tincd.c 1439 2005-05-04 18:09:30Z guus $ $Id: tincd.c 1466 2006-11-11 20:10:46Z guus $
*/ */
#include "system.h" #include "system.h"
@ -35,8 +35,14 @@
#include <openssl/rsa.h> #include <openssl/rsa.h>
#include <openssl/pem.h> #include <openssl/pem.h>
#include <openssl/evp.h> #include <openssl/evp.h>
#include <openssl/engine.h>
#ifdef HAVE_LZO_LZO1X_H
#include <lzo/lzo1x.h>
#endif
#ifdef HAVE_LZO1X_H
#include <lzo1x.h> #include <lzo1x.h>
#endif
#include <getopt.h> #include <getopt.h>
#include "pidfile.h" #include "pidfile.h"
@ -407,7 +413,7 @@ int main(int argc, char **argv)
if(show_version) { if(show_version) {
printf(_("%s version %s (built %s %s, protocol %d)\n"), PACKAGE, printf(_("%s version %s (built %s %s, protocol %d)\n"), PACKAGE,
VERSION, __DATE__, __TIME__, PROT_CURRENT); VERSION, __DATE__, __TIME__, PROT_CURRENT);
printf(_("Copyright (C) 1998-2005 Ivo Timmermans, Guus Sliepen and others.\n" printf(_("Copyright (C) 1998-2006 Ivo Timmermans, Guus Sliepen and others.\n"
"See the AUTHORS file for a complete list.\n\n" "See the AUTHORS file for a complete list.\n\n"
"tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n" "tinc comes with ABSOLUTELY NO WARRANTY. This is free software,\n"
"and you are welcome to redistribute it under certain conditions;\n" "and you are welcome to redistribute it under certain conditions;\n"
@ -448,6 +454,9 @@ int main(int argc, char **argv)
RAND_load_file("/dev/urandom", 1024); RAND_load_file("/dev/urandom", 1024);
ENGINE_load_builtin_engines();
ENGINE_register_all_complete();
OpenSSL_add_all_algorithms(); OpenSSL_add_all_algorithms();
if(generate_keys) { if(generate_keys) {
@ -506,5 +515,7 @@ end:
remove_pid(pidfilename); remove_pid(pidfilename);
#endif #endif
EVP_cleanup();
return status; return status;
} }

View file

@ -1,7 +1,7 @@
/* /*
device.c -- UML network socket device.c -- UML network socket
Copyright (C) 2002-2005 Ivo Timmermans <ivo@tinc-vpn.org>, Copyright (C) 2002-2005 Ivo Timmermans,
2002-2005 Guus Sliepen <guus@tinc-vpn.org> 2002-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* /*
system.h -- system headers system.h -- system headers
Copyright (C) 1998-2005 Ivo Timmermans <ivo@tinc-vpn.org> Copyright (C) 1998-2005 Ivo Timmermans
2003-2005 Guus Sliepen <guus@tinc-vpn.org> 2003-2006 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by