Drop support for localisation.

Localised messages don't make much sense for a daemon, and there is only the
Dutch translation which costs time to maintain.
This commit is contained in:
Guus Sliepen 2009-09-25 00:54:07 +02:00
parent a227843b73
commit 4c85542894
40 changed files with 486 additions and 2276 deletions

View file

@ -2,7 +2,7 @@
AUTOMAKE_OPTIONS = gnu AUTOMAKE_OPTIONS = gnu
SUBDIRS = m4 lib src doc po SUBDIRS = m4 lib src doc
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4

View file

@ -7,9 +7,6 @@ AM_INIT_AUTOMAKE(tinc, 1.0-cvs)
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AM_MAINTAINER_MODE AM_MAINTAINER_MODE
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION(0.14.1)
# Enable GNU extensions. # Enable GNU extensions.
# Define this here, not in acconfig's @TOP@ section, since definitions # Define this here, not in acconfig's @TOP@ section, since definitions
# in the latter don't make it into the configure-time tests. # in the latter don't make it into the configure-time tests.
@ -27,7 +24,7 @@ AC_PROG_RANLIB
dnl Check and set OS dnl Check and set OS
#AC_CANONICAL_HOST AC_CANONICAL_HOST
case $host_os in case $host_os in
*linux*) *linux*)
@ -166,6 +163,6 @@ AC_ARG_ENABLE(jumbograms,
AC_SUBST(INCLUDES) AC_SUBST(INCLUDES)
AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile lib/Makefile po/Makefile.in m4/Makefile]) AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile lib/Makefile m4/Makefile])
AC_OUTPUT AC_OUTPUT

View file

@ -9,6 +9,6 @@ libvpn_a_SOURCES = xmalloc.c pidfile.c utils.c getopt.c getopt1.c list.c avl_tre
libvpn_a_LIBADD = @LIBOBJS@ @ALLOCA@ libvpn_a_LIBADD = @LIBOBJS@ @ALLOCA@
libvpn_a_DEPENDENCIES = $(libvpn_a_LIBADD) libvpn_a_DEPENDENCIES = $(libvpn_a_LIBADD)
noinst_HEADERS = xalloc.h pidfile.h utils.h getopt.h list.h avl_tree.h dropin.h fake-getaddrinfo.h fake-getnameinfo.h fake-gai-errnos.h gettext.h ipv6.h ipv4.h ethernet.h noinst_HEADERS = xalloc.h pidfile.h utils.h getopt.h list.h avl_tree.h dropin.h fake-getaddrinfo.h fake-getnameinfo.h fake-gai-errnos.h ipv6.h ipv4.h ethernet.h
EXTRA_DIST = EXTRA_DIST =

View file

@ -669,7 +669,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (ambig && !exact) if (ambig && !exact)
{ {
if (opterr) if (opterr)
fprintf (stderr, _("%s: option `%s' is ambiguous\n"), fprintf (stderr, "%s: option `%s' is ambiguous\n",
argv[0], argv[optind]); argv[0], argv[optind]);
nextchar += strlen (nextchar); nextchar += strlen (nextchar);
optind++; optind++;
@ -693,12 +693,12 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (argv[optind - 1][1] == '-') if (argv[optind - 1][1] == '-')
/* --option */ /* --option */
fprintf (stderr, fprintf (stderr,
_("%s: option `--%s' doesn't allow an argument\n"), "%s: option `--%s' doesn't allow an argument\n",
argv[0], pfound->name); argv[0], pfound->name);
else else
/* +option or -option */ /* +option or -option */
fprintf (stderr, fprintf (stderr,
_("%s: option `%c%s' doesn't allow an argument\n"), "%s: option `%c%s' doesn't allow an argument\n",
argv[0], argv[optind - 1][0], pfound->name); argv[0], argv[optind - 1][0], pfound->name);
nextchar += strlen (nextchar); nextchar += strlen (nextchar);
@ -715,7 +715,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
{ {
if (opterr) if (opterr)
fprintf (stderr, fprintf (stderr,
_("%s: option `%s' requires an argument\n"), "%s: option `%s' requires an argument\n",
argv[0], argv[optind - 1]); argv[0], argv[optind - 1]);
nextchar += strlen (nextchar); nextchar += strlen (nextchar);
optopt = pfound->val; optopt = pfound->val;
@ -744,11 +744,11 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
{ {
if (argv[optind][1] == '-') if (argv[optind][1] == '-')
/* --option */ /* --option */
fprintf (stderr, _("%s: unrecognized option `--%s'\n"), fprintf (stderr, "%s: unrecognized option `--%s'\n",
argv[0], nextchar); argv[0], nextchar);
else else
/* +option or -option */ /* +option or -option */
fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), fprintf (stderr, "%s: unrecognized option `%c%s'\n",
argv[0], argv[optind][0], nextchar); argv[0], argv[optind][0], nextchar);
} }
nextchar = (char *) ""; nextchar = (char *) "";
@ -774,10 +774,10 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
{ {
if (posixly_correct) if (posixly_correct)
/* 1003.2 specifies the format of this message. */ /* 1003.2 specifies the format of this message. */
fprintf (stderr, _("%s: illegal option -- %c\n"), fprintf (stderr, "%s: illegal option -- %c\n",
argv[0], c); argv[0], c);
else else
fprintf (stderr, _("%s: invalid option -- %c\n"), fprintf (stderr, "%s: invalid option -- %c\n",
argv[0], c); argv[0], c);
} }
optopt = c; optopt = c;
@ -807,7 +807,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (opterr) if (opterr)
{ {
/* 1003.2 specifies the format of this message. */ /* 1003.2 specifies the format of this message. */
fprintf (stderr, _("%s: option requires an argument -- %c\n"), fprintf (stderr, "%s: option requires an argument -- %c\n",
argv[0], c); argv[0], c);
} }
optopt = c; optopt = c;
@ -854,7 +854,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (ambig && !exact) if (ambig && !exact)
{ {
if (opterr) if (opterr)
fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"), fprintf (stderr, "%s: option `-W %s' is ambiguous\n",
argv[0], argv[optind]); argv[0], argv[optind]);
nextchar += strlen (nextchar); nextchar += strlen (nextchar);
optind++; optind++;
@ -872,8 +872,8 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
else else
{ {
if (opterr) if (opterr)
fprintf (stderr, _("\ fprintf (stderr,
%s: option `-W %s' doesn't allow an argument\n"), "%s: option `-W %s' doesn't allow an argument\n",
argv[0], pfound->name); argv[0], pfound->name);
nextchar += strlen (nextchar); nextchar += strlen (nextchar);
@ -888,7 +888,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
{ {
if (opterr) if (opterr)
fprintf (stderr, fprintf (stderr,
_("%s: option `%s' requires an argument\n"), "%s: option `%s' requires an argument\n",
argv[0], argv[optind - 1]); argv[0], argv[optind - 1]);
nextchar += strlen (nextchar); nextchar += strlen (nextchar);
return optstring[0] == ':' ? ':' : '?'; return optstring[0] == ':' ? ':' : '?';
@ -937,7 +937,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
{ {
/* 1003.2 specifies the format of this message. */ /* 1003.2 specifies the format of this message. */
fprintf (stderr, fprintf (stderr,
_("%s: option requires an argument -- %c\n"), "%s: option requires an argument -- %c\n",
argv[0], c); argv[0], c);
} }
optopt = c; optopt = c;

View file

@ -1,79 +0,0 @@
/* Convenience header for conditional use of GNU <libintl.h>.
Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Library General Public License as published
by the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef _LIBGETTEXT_H
#define _LIBGETTEXT_H 1
/* NLS can be disabled through the configure --disable-nls option. */
#if ENABLE_NLS
/* Get declarations of GNU message catalog functions. */
# include <libintl.h>
# include <locale.h>
/* Shorthand notation */
# define _(Text) gettext (Text)
#else
/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
chokes if dcgettext is defined as a macro. So include it now, to make
later inclusions of <locale.h> a NOP. We don't include <libintl.h>
as well because people using "gettext.h" will not include <libintl.h>,
and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
is OK. */
#if defined(__sun)
# include <locale.h>
#endif
/* Disabled NLS.
The casts to 'const char *' serve the purpose of producing warnings
for invalid uses of the value returned from these functions.
On pre-ANSI systems without 'const', the config.h file is supposed to
contain "#define const". */
# define gettext(Msgid) ((const char *) (Msgid))
# define dgettext(Domainname, Msgid) ((const char *) (Msgid))
# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid))
# define ngettext(Msgid1, Msgid2, N) \
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
# define dngettext(Domainname, Msgid1, Msgid2, N) \
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2))
# define textdomain(Domainname) ((const char *) (Domainname))
# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname))
# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset))
# define _(Text) Text
# define setlocale(Category, Locale) ((const char *) (Locale))
#endif
/* A pseudo function call that serves as a marker for the automated
extraction of messages, but does not call gettext(). The run-time
translation is done at a different place in the code.
The argument, String, should be a literal string. Concatenated strings
and other string expressions won't work.
The macro's expansion is not parenthesized, so that it is suitable as
initializer for static 'char[]' or 'const char[]' variables. */
#define gettext_noop(String) String
#define N_(Text) Text
#endif /* _LIBGETTEXT_H */

View file

@ -57,7 +57,7 @@ const char *winerror(int err) {
if (!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, if (!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buf, sizeof(buf), NULL)) { NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buf, sizeof(buf), NULL)) {
strncpy(buf, _("(unable to format errormessage)"), sizeof(buf)); strncpy(buf, "(unable to format errormessage)", sizeof(buf));
}; };
if((newline = strchr(buf, '\r'))) if((newline = strchr(buf, '\r')))

View file

@ -34,7 +34,6 @@ void *realloc ();
void free (); void free ();
#endif #endif
#include "gettext.h"
#include "xalloc.h" #include "xalloc.h"
#ifndef EXIT_FAILURE #ifndef EXIT_FAILURE
@ -53,7 +52,7 @@ void *xrealloc (void *p, size_t n);
int xalloc_exit_failure = EXIT_FAILURE; int xalloc_exit_failure = EXIT_FAILURE;
/* FIXME: describe */ /* FIXME: describe */
char *const xalloc_msg_memory_exhausted = N_("Memory exhausted"); char *const xalloc_msg_memory_exhausted = "Memory exhausted";
/* FIXME: describe */ /* FIXME: describe */
void (*xalloc_fail_func) (int) = 0; void (*xalloc_fail_func) (int) = 0;

View file

@ -1,41 +0,0 @@
# Makefile variables for PO directory in any package using GNU gettext.
# Usually the message domain is the same as the package name.
DOMAIN = $(PACKAGE)
# These two variables depend on the location of this directory.
subdir = po
top_builddir = ..
# These options get passed to xgettext.
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
# package. (Note that the msgstr strings, extracted from the package's
# sources, belong to the copyright holder of the package.) Translators are
# expected to transfer the copyright for their translations to this person
# or entity, or to disclaim their copyright. The empty string stands for
# the public domain; in this case the translators are expected to disclaim
# their copyright.
COPYRIGHT_HOLDER = Ivo Timmermans and Guus Sliepen
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings:
# - Strings which are not entire sentences, see the maintainer guidelines
# in the GNU gettext documentation, section 'Preparing Strings'.
# - Strings which use unclear terms or require additional context to be
# understood.
# - Strings which make invalid assumptions about notation of date, time or
# money.
# - Pluralisation problems.
# - Incorrect English spelling.
# - Incorrect formatting.
# It can be your email address, or a mailing list address where translators
# can write to without being subscribed, or the URL of a web page through
# which the translators can contact you.
MSGID_BUGS_ADDRESS = tinc-devel@tinc-vpn.org
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
EXTRA_LOCALE_CATEGORIES =

View file

@ -1,35 +0,0 @@
# List of files which contain translatable strings.
# Copyright (C) 1999,2000 Ivo Timmermans
# Package source files
lib/pidfile.c
lib/utils.c
src/conf.c
src/connection.c
src/meta.c
src/net.c
src/net_packet.c
src/net_setup.c
src/net_socket.c
src/netutl.c
src/protocol.c
src/protocol_auth.c
src/protocol_edge.c
src/protocol_key.c
src/protocol_misc.c
src/protocol_subnet.c
src/subnet.c
src/tincd.c
src/process.c
src/route.c
src/node.c
src/edge.c
src/graph.c
src/linux/device.c
src/solaris/device.c
src/bsd/device.c
src/cygwin/device.c
src/mingw/device.c
src/raw_socket/device.c
src/uml_socket/device.c

1623
po/nl.po

File diff suppressed because it is too large Load diff

View file

@ -21,7 +21,7 @@ INCLUDES = @INCLUDES@ -I$(top_builddir) -I$(top_srcdir)/lib
noinst_HEADERS = conf.h connection.h device.h edge.h event.h graph.h logger.h meta.h net.h netutl.h node.h process.h \ noinst_HEADERS = conf.h connection.h device.h edge.h event.h graph.h logger.h meta.h net.h netutl.h node.h process.h \
protocol.h route.h subnet.h bsd/tunemu.h protocol.h route.h subnet.h bsd/tunemu.h
LIBS = @LIBS@ @LIBINTL@ LIBS = @LIBS@
if TUNEMU if TUNEMU
LIBS += -lpcap LIBS += -lpcap

View file

@ -79,7 +79,7 @@ bool setup_device(void) {
else if(!strcasecmp(type, "tap")) else if(!strcasecmp(type, "tap"))
device_type = DEVICE_TYPE_TAP; device_type = DEVICE_TYPE_TAP;
else { else {
logger(LOG_ERR, _("Unknown device type %s!"), type); logger(LOG_ERR, "Unknown device type %s!", type);
return false; return false;
} }
} else { } else {
@ -100,7 +100,7 @@ bool setup_device(void) {
} }
if(device_fd < 0) { if(device_fd < 0) {
logger(LOG_ERR, _("Could not open %s: %s"), device, strerror(errno)); logger(LOG_ERR, "Could not open %s: %s", device, strerror(errno));
return false; return false;
} }
@ -112,7 +112,7 @@ bool setup_device(void) {
{ {
const int zero = 0; const int zero = 0;
if(ioctl(device_fd, TUNSIFHEAD, &zero, sizeof zero) == -1) { if(ioctl(device_fd, TUNSIFHEAD, &zero, sizeof zero) == -1) {
logger(LOG_ERR, _("System call `%s' failed: %s"), "ioctl", strerror(errno)); logger(LOG_ERR, "System call `%s' failed: %s", "ioctl", strerror(errno));
return false; return false;
} }
} }
@ -124,14 +124,14 @@ bool setup_device(void) {
} }
#endif #endif
device_info = _("Generic BSD tun device"); device_info = "Generic BSD tun device";
break; break;
case DEVICE_TYPE_TUNIFHEAD: case DEVICE_TYPE_TUNIFHEAD:
#ifdef TUNSIFHEAD #ifdef TUNSIFHEAD
{ {
const int one = 1; const int one = 1;
if(ioctl(device_fd, TUNSIFHEAD, &one, sizeof one) == -1) { if(ioctl(device_fd, TUNSIFHEAD, &one, sizeof one) == -1) {
logger(LOG_ERR, _("System call `%s' failed: %s"), "ioctl", strerror(errno)); logger(LOG_ERR, "System call `%s' failed: %s", "ioctl", strerror(errno));
return false; return false;
} }
} }
@ -143,21 +143,21 @@ bool setup_device(void) {
} }
#endif #endif
device_info = _("Generic BSD tun device"); device_info = "Generic BSD tun device";
break; break;
case DEVICE_TYPE_TAP: case DEVICE_TYPE_TAP:
if(routing_mode == RMODE_ROUTER) if(routing_mode == RMODE_ROUTER)
overwrite_mac = true; overwrite_mac = true;
device_info = _("Generic BSD tap device"); device_info = "Generic BSD tap device";
break; break;
#ifdef HAVE_TUNEMU #ifdef HAVE_TUNEMU
case DEVICE_TYPE_TUNEMU: case DEVICE_TYPE_TUNEMU:
device_info = _("BSD tunemu device"); device_info = "BSD tunemu device";
break; break;
#endif #endif
} }
logger(LOG_INFO, _("%s is a %s"), device, device_info); logger(LOG_INFO, "%s is a %s", device, device_info);
return true; return true;
} }
@ -192,7 +192,7 @@ bool read_packet(vpn_packet_t *packet) {
#endif #endif
if(lenin <= 0) { if(lenin <= 0) {
logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, logger(LOG_ERR, "Error while reading from %s %s: %s", device_info,
device, strerror(errno)); device, strerror(errno));
return false; return false;
} }
@ -221,7 +221,7 @@ bool read_packet(vpn_packet_t *packet) {
struct iovec vector[2] = {{&type, sizeof(type)}, {packet->data + 14, MTU - 14}}; struct iovec vector[2] = {{&type, sizeof(type)}, {packet->data + 14, MTU - 14}};
if((lenin = readv(device_fd, vector, 2)) <= 0) { if((lenin = readv(device_fd, vector, 2)) <= 0) {
logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, logger(LOG_ERR, "Error while reading from %s %s: %s", device_info,
device, strerror(errno)); device, strerror(errno));
return false; return false;
} }
@ -250,7 +250,7 @@ bool read_packet(vpn_packet_t *packet) {
case DEVICE_TYPE_TAP: case DEVICE_TYPE_TAP:
if((lenin = read(device_fd, packet->data, MTU)) <= 0) { if((lenin = read(device_fd, packet->data, MTU)) <= 0) {
logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, logger(LOG_ERR, "Error while reading from %s %s: %s", device_info,
device, strerror(errno)); device, strerror(errno));
return false; return false;
} }
@ -264,7 +264,7 @@ bool read_packet(vpn_packet_t *packet) {
device_total_in += packet->len; device_total_in += packet->len;
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Read packet of %d bytes from %s"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Read packet of %d bytes from %s",
packet->len, device_info); packet->len, device_info);
logger(LOG_INFO, "E:fd_read"); logger(LOG_INFO, "E:fd_read");
@ -272,13 +272,13 @@ bool read_packet(vpn_packet_t *packet) {
} }
bool write_packet(vpn_packet_t *packet) { bool write_packet(vpn_packet_t *packet) {
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s",
packet->len, device_info); packet->len, device_info);
switch(device_type) { switch(device_type) {
case DEVICE_TYPE_TUN: case DEVICE_TYPE_TUN:
if(write(device_fd, packet->data + 14, packet->len - 14) < 0) { if(write(device_fd, packet->data + 14, packet->len - 14) < 0) {
logger(LOG_ERR, _("Error while writing to %s %s: %s"), device_info, logger(LOG_ERR, "Error while writing to %s %s: %s", device_info,
device, strerror(errno)); device, strerror(errno));
return false; return false;
} }
@ -300,13 +300,13 @@ bool write_packet(vpn_packet_t *packet) {
break; break;
default: default:
ifdebug(TRAFFIC) logger(LOG_ERR, ifdebug(TRAFFIC) logger(LOG_ERR,
_("Unknown address family %x while writing packet to %s %s"), "Unknown address family %x while writing packet to %s %s",
af, device_info, device); af, device_info, device);
return false; return false;
} }
if(writev(device_fd, vector, 2) < 0) { if(writev(device_fd, vector, 2) < 0) {
logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, device, logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device,
strerror(errno)); strerror(errno));
return false; return false;
} }
@ -315,7 +315,7 @@ bool write_packet(vpn_packet_t *packet) {
case DEVICE_TYPE_TAP: case DEVICE_TYPE_TAP:
if(write(device_fd, packet->data, packet->len) < 0) { if(write(device_fd, packet->data, packet->len) < 0) {
logger(LOG_ERR, _("Error while writing to %s %s: %s"), device_info, logger(LOG_ERR, "Error while writing to %s %s: %s", device_info,
device, strerror(errno)); device, strerror(errno));
return false; return false;
} }
@ -324,7 +324,7 @@ bool write_packet(vpn_packet_t *packet) {
#ifdef HAVE_TUNEMU #ifdef HAVE_TUNEMU
case DEVICE_TYPE_TUNEMU: case DEVICE_TYPE_TUNEMU:
if(tunemu_write(device_fd, packet->data + 14, packet->len - 14) < 0) { if(tunemu_write(device_fd, packet->data + 14, packet->len - 14) < 0) {
logger(LOG_ERR, _("Error while writing to %s %s: %s"), device_info, logger(LOG_ERR, "Error while writing to %s %s: %s", device_info,
device, strerror(errno)); device, strerror(errno));
return false; return false;
} }
@ -341,7 +341,7 @@ bool write_packet(vpn_packet_t *packet) {
} }
void dump_device_stats(void) { void dump_device_stats(void) {
logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device);
logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); logger(LOG_DEBUG, " total bytes in: %10d", device_total_in);
logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); logger(LOG_DEBUG, " total bytes out: %10d", device_total_out);
} }

View file

@ -130,7 +130,7 @@ bool get_config_bool(const config_t *cfg, bool *result) {
return true; return true;
} }
logger(LOG_ERR, _("\"yes\" or \"no\" expected for configuration variable %s in %s line %d"), logger(LOG_ERR, "\"yes\" or \"no\" expected for configuration variable %s in %s line %d",
cfg->variable, cfg->file, cfg->line); cfg->variable, cfg->file, cfg->line);
return false; return false;
@ -143,7 +143,7 @@ bool get_config_int(const config_t *cfg, int *result) {
if(sscanf(cfg->value, "%d", result) == 1) if(sscanf(cfg->value, "%d", result) == 1)
return true; return true;
logger(LOG_ERR, _("Integer expected for configuration variable %s in %s line %d"), logger(LOG_ERR, "Integer expected for configuration variable %s in %s line %d",
cfg->variable, cfg->file, cfg->line); cfg->variable, cfg->file, cfg->line);
return false; return false;
@ -171,7 +171,7 @@ bool get_config_address(const config_t *cfg, struct addrinfo **result) {
return true; return true;
} }
logger(LOG_ERR, _("Hostname or IP address expected for configuration variable %s in %s line %d"), logger(LOG_ERR, "Hostname or IP address expected for configuration variable %s in %s line %d",
cfg->variable, cfg->file, cfg->line); cfg->variable, cfg->file, cfg->line);
return false; return false;
@ -184,7 +184,7 @@ bool get_config_subnet(const config_t *cfg, subnet_t ** result) {
return false; return false;
if(!str2net(&subnet, cfg->value)) { if(!str2net(&subnet, cfg->value)) {
logger(LOG_ERR, _("Subnet expected for configuration variable %s in %s line %d"), logger(LOG_ERR, "Subnet expected for configuration variable %s in %s line %d",
cfg->variable, cfg->file, cfg->line); cfg->variable, cfg->file, cfg->line);
return false; return false;
} }
@ -195,7 +195,7 @@ bool get_config_subnet(const config_t *cfg, subnet_t ** result) {
&& !maskcheck(&subnet.net.ipv4.address, subnet.net.ipv4.prefixlength, sizeof(ipv4_t))) && !maskcheck(&subnet.net.ipv4.address, subnet.net.ipv4.prefixlength, sizeof(ipv4_t)))
|| ((subnet.type == SUBNET_IPV6) || ((subnet.type == SUBNET_IPV6)
&& !maskcheck(&subnet.net.ipv6.address, subnet.net.ipv6.prefixlength, sizeof(ipv6_t)))) { && !maskcheck(&subnet.net.ipv6.address, subnet.net.ipv6.prefixlength, sizeof(ipv6_t)))) {
logger(LOG_ERR, _ ("Network address and prefix length do not match for configuration variable %s in %s line %d"), logger(LOG_ERR, "Network address and prefix length do not match for configuration variable %s in %s line %d",
cfg->variable, cfg->file, cfg->line); cfg->variable, cfg->file, cfg->line);
return false; return false;
} }
@ -293,7 +293,7 @@ int read_config_file(avl_tree_t *config_tree, const char *fname) {
fp = fopen(fname, "r"); fp = fopen(fname, "r");
if(!fp) { if(!fp) {
logger(LOG_ERR, _("Cannot open config file %s: %s"), fname, logger(LOG_ERR, "Cannot open config file %s: %s", fname,
strerror(errno)); strerror(errno));
return -3; return -3;
} }
@ -347,7 +347,7 @@ int read_config_file(avl_tree_t *config_tree, const char *fname) {
if(!*value) { if(!*value) {
logger(LOG_ERR, _("No value for variable `%s' on line %d while reading config file %s"), logger(LOG_ERR, "No value for variable `%s' on line %d while reading config file %s",
variable, lineno, fname); variable, lineno, fname);
break; break;
} }
@ -375,7 +375,7 @@ bool read_server_config() {
x = read_config_file(config_tree, fname); x = read_config_file(config_tree, fname);
if(x == -1) { /* System error: complain */ if(x == -1) { /* System error: complain */
logger(LOG_ERR, _("Failed to read `%s': %s"), fname, strerror(errno)); logger(LOG_ERR, "Failed to read `%s': %s", fname, strerror(errno));
} }
free(fname); free(fname);
@ -396,14 +396,14 @@ FILE *ask_and_open(const char *filename, const char *what) {
fn = xstrdup(filename); fn = xstrdup(filename);
} else { } else {
/* Ask for a file and/or directory name. */ /* Ask for a file and/or directory name. */
fprintf(stdout, _("Please enter a file to save %s to [%s]: "), fprintf(stdout, "Please enter a file to save %s to [%s]: ",
what, filename); what, filename);
fflush(stdout); fflush(stdout);
fn = readline(stdin, NULL, NULL); fn = readline(stdin, NULL, NULL);
if(!fn) { if(!fn) {
fprintf(stderr, _("Error while reading stdin: %s\n"), fprintf(stderr, "Error while reading stdin: %s\n",
strerror(errno)); strerror(errno));
return NULL; return NULL;
} }
@ -435,7 +435,7 @@ FILE *ask_and_open(const char *filename, const char *what) {
r = fopen(fn, "r+") ?: fopen(fn, "w+"); r = fopen(fn, "r+") ?: fopen(fn, "w+");
if(!r) { if(!r) {
fprintf(stderr, _("Error opening file `%s': %s\n"), fprintf(stderr, "Error opening file `%s': %s\n",
fn, strerror(errno)); fn, strerror(errno));
free(fn); free(fn);
return NULL; return NULL;

View file

@ -40,8 +40,8 @@ static int connection_compare(const connection_t *a, const connection_t *b) {
void init_connections(void) { void init_connections(void) {
connection_tree = avl_alloc_tree((avl_compare_t) connection_compare, (avl_action_t) free_connection); connection_tree = avl_alloc_tree((avl_compare_t) connection_compare, (avl_action_t) free_connection);
broadcast = new_connection(); broadcast = new_connection();
broadcast->name = xstrdup(_("everyone")); broadcast->name = xstrdup("everyone");
broadcast->hostname = xstrdup(_("BROADCAST")); broadcast->hostname = xstrdup("BROADCAST");
} }
void exit_connections(void) { void exit_connections(void) {
@ -115,16 +115,16 @@ void dump_connections(void) {
avl_node_t *node; avl_node_t *node;
connection_t *c; connection_t *c;
logger(LOG_DEBUG, _("Connections:")); logger(LOG_DEBUG, "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;
logger(LOG_DEBUG, _(" %s at %s options %lx socket %d status %04x outbuf %d/%d/%d"), logger(LOG_DEBUG, " %s at %s options %lx socket %d status %04x outbuf %d/%d/%d",
c->name, c->hostname, c->options, c->socket, bitfield_to_int(&c->status, sizeof c->status), c->name, c->hostname, c->options, c->socket, bitfield_to_int(&c->status, sizeof c->status),
c->outbufsize, c->outbufstart, c->outbuflen); c->outbufsize, c->outbufstart, c->outbuflen);
} }
logger(LOG_DEBUG, _("End of connections.")); logger(LOG_DEBUG, "End of connections.");
} }
bool read_connection_config(connection_t *c) { bool read_connection_config(connection_t *c) {

View file

@ -63,7 +63,7 @@ bool setup_device(void) {
/* Open registry and look for network adapters */ /* Open registry and look for network adapters */
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, NETWORK_CONNECTIONS_KEY, 0, KEY_READ, &key)) { if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, NETWORK_CONNECTIONS_KEY, 0, KEY_READ, &key)) {
logger(LOG_ERR, _("Unable to read registry: %s"), winerror(GetLastError())); logger(LOG_ERR, "Unable to read registry: %s", winerror(GetLastError()));
return false; return false;
} }
@ -115,7 +115,7 @@ bool setup_device(void) {
RegCloseKey(key); RegCloseKey(key);
if(!found) { if(!found) {
logger(LOG_ERR, _("No Windows tap device found!")); logger(LOG_ERR, "No Windows tap device found!");
return false; return false;
} }
@ -132,7 +132,7 @@ bool setup_device(void) {
Furthermore I don't really know how to do it the "Windows" way. */ Furthermore I don't really know how to do it the "Windows" way. */
if(socketpair(AF_UNIX, SOCK_DGRAM, PF_UNIX, sp)) { if(socketpair(AF_UNIX, SOCK_DGRAM, PF_UNIX, sp)) {
logger(LOG_DEBUG, _("System call `%s' failed: %s"), "socketpair", strerror(errno)); logger(LOG_DEBUG, "System call `%s' failed: %s", "socketpair", strerror(errno));
return false; return false;
} }
@ -141,7 +141,7 @@ bool setup_device(void) {
device_handle = CreateFile(tapname, GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM , 0); device_handle = CreateFile(tapname, GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM , 0);
if(device_handle == INVALID_HANDLE_VALUE) { if(device_handle == INVALID_HANDLE_VALUE) {
logger(LOG_ERR, _("Could not open Windows tap device %s (%s) for writing: %s"), device, iface, winerror(GetLastError())); logger(LOG_ERR, "Could not open Windows tap device %s (%s) for writing: %s", device, iface, winerror(GetLastError()));
return false; return false;
} }
@ -150,7 +150,7 @@ bool setup_device(void) {
/* Get MAC address from tap device */ /* Get MAC address from tap device */
if(!DeviceIoControl(device_handle, TAP_IOCTL_GET_MAC, mymac.x, sizeof(mymac.x), mymac.x, sizeof(mymac.x), &len, 0)) { if(!DeviceIoControl(device_handle, TAP_IOCTL_GET_MAC, mymac.x, sizeof(mymac.x), mymac.x, sizeof(mymac.x), &len, 0)) {
logger(LOG_ERR, _("Could not get MAC address from Windows tap device %s (%s): %s"), device, iface, winerror(GetLastError())); logger(LOG_ERR, "Could not get MAC address from Windows tap device %s (%s): %s", device, iface, winerror(GetLastError()));
return false; return false;
} }
@ -163,7 +163,7 @@ bool setup_device(void) {
reader_pid = fork(); reader_pid = fork();
if(reader_pid == -1) { if(reader_pid == -1) {
logger(LOG_DEBUG, _("System call `%s' failed: %s"), "fork", strerror(errno)); logger(LOG_DEBUG, "System call `%s' failed: %s", "fork", strerror(errno));
return false; return false;
} }
@ -179,13 +179,13 @@ bool setup_device(void) {
device_handle = CreateFile(tapname, GENERIC_READ, FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, 0); device_handle = CreateFile(tapname, GENERIC_READ, FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, 0);
if(device_handle == INVALID_HANDLE_VALUE) { if(device_handle == INVALID_HANDLE_VALUE) {
logger(LOG_ERR, _("Could not open Windows tap device %s (%s) for reading: %s"), device, iface, winerror(GetLastError())); logger(LOG_ERR, "Could not open Windows tap device %s (%s) for reading: %s", device, iface, winerror(GetLastError()));
buf[0] = 0; buf[0] = 0;
write(sp[1], buf, 1); write(sp[1], buf, 1);
exit(1); exit(1);
} }
logger(LOG_DEBUG, _("Tap reader forked and running.")); logger(LOG_DEBUG, "Tap reader forked and running.");
/* Notify success */ /* Notify success */
@ -202,13 +202,13 @@ bool setup_device(void) {
read(device_fd, &gelukt, 1); read(device_fd, &gelukt, 1);
if(gelukt != 1) { if(gelukt != 1) {
logger(LOG_DEBUG, _("Tap reader failed!")); logger(LOG_DEBUG, "Tap reader failed!");
return false; return false;
} }
device_info = _("Windows tap device"); device_info = "Windows tap device";
logger(LOG_INFO, _("%s (%s) is a %s"), device, iface, device_info); logger(LOG_INFO, "%s (%s) is a %s", device, iface, device_info);
return true; return true;
} }
@ -228,7 +228,7 @@ bool read_packet(vpn_packet_t *packet) {
int lenin; int lenin;
if((lenin = read(sp[0], packet->data, MTU)) <= 0) { if((lenin = read(sp[0], packet->data, MTU)) <= 0) {
logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, logger(LOG_ERR, "Error while reading from %s %s: %s", device_info,
device, strerror(errno)); device, strerror(errno));
return false; return false;
} }
@ -237,7 +237,7 @@ bool read_packet(vpn_packet_t *packet) {
device_total_in += packet->len; device_total_in += packet->len;
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Read packet of %d bytes from %s"), packet->len, ifdebug(TRAFFIC) logger(LOG_DEBUG, "Read packet of %d bytes from %s", packet->len,
device_info); device_info);
return true; return true;
@ -246,11 +246,11 @@ bool read_packet(vpn_packet_t *packet) {
bool write_packet(vpn_packet_t *packet) { bool write_packet(vpn_packet_t *packet) {
long lenout; long lenout;
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s",
packet->len, device_info); packet->len, device_info);
if(!WriteFile (device_handle, packet->data, packet->len, &lenout, NULL)) { if(!WriteFile (device_handle, packet->data, packet->len, &lenout, NULL)) {
logger(LOG_ERR, _("Error while writing to %s %s: %s"), device_info, device, winerror(GetLastError())); logger(LOG_ERR, "Error while writing to %s %s: %s", device_info, device, winerror(GetLastError()));
return false; return false;
} }
@ -260,7 +260,7 @@ bool write_packet(vpn_packet_t *packet) {
} }
void dump_device_stats(void) { void dump_device_stats(void) {
logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device);
logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); logger(LOG_DEBUG, " total bytes in: %10d", device_total_in);
logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); logger(LOG_DEBUG, " total bytes out: %10d", device_total_out);
} }

View file

@ -111,18 +111,18 @@ void dump_edges(void) {
edge_t *e; edge_t *e;
char *address; char *address;
logger(LOG_DEBUG, _("Edges:")); logger(LOG_DEBUG, "Edges:");
for(node = node_tree->head; node; node = node->next) { for(node = node_tree->head; node; node = node->next) {
n = node->data; n = node->data;
for(node2 = n->edge_tree->head; node2; node2 = node2->next) { for(node2 = n->edge_tree->head; node2; node2 = node2->next) {
e = node2->data; e = node2->data;
address = sockaddr2hostname(&e->address); address = sockaddr2hostname(&e->address);
logger(LOG_DEBUG, _(" %s to %s at %s options %lx weight %d"), logger(LOG_DEBUG, " %s to %s at %s options %lx weight %d",
e->from->name, e->to->name, address, e->options, e->weight); e->from->name, e->to->name, address, e->options, e->weight);
free(address); free(address);
} }
} }
logger(LOG_DEBUG, _("End of edges.")); logger(LOG_DEBUG, "End of edges.");
} }

View file

@ -241,10 +241,10 @@ void sssp_bfs(void) {
n->status.reachable = !n->status.reachable; n->status.reachable = !n->status.reachable;
if(n->status.reachable) { if(n->status.reachable) {
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Node %s (%s) became reachable"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Node %s (%s) became reachable",
n->name, n->hostname); n->name, n->hostname);
} else { } else {
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Node %s (%s) became unreachable"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Node %s (%s) became unreachable",
n->name, n->hostname); n->name, n->hostname);
} }

View file

@ -66,7 +66,7 @@ bool setup_device(void) {
device_fd = open(device, O_RDWR | O_NONBLOCK); device_fd = open(device, O_RDWR | O_NONBLOCK);
if(device_fd < 0) { if(device_fd < 0) {
logger(LOG_ERR, _("Could not open %s: %s"), device, strerror(errno)); logger(LOG_ERR, "Could not open %s: %s", device, strerror(errno));
return false; return false;
} }
@ -77,11 +77,11 @@ bool setup_device(void) {
if(routing_mode == RMODE_ROUTER) { if(routing_mode == RMODE_ROUTER) {
ifr.ifr_flags = IFF_TUN; ifr.ifr_flags = IFF_TUN;
device_type = DEVICE_TYPE_TUN; device_type = DEVICE_TYPE_TUN;
device_info = _("Linux tun/tap device (tun mode)"); device_info = "Linux tun/tap device (tun mode)";
} else { } else {
ifr.ifr_flags = IFF_TAP | IFF_NO_PI; ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
device_type = DEVICE_TYPE_TAP; device_type = DEVICE_TYPE_TAP;
device_info = _("Linux tun/tap device (tap mode)"); device_info = "Linux tun/tap device (tap mode)";
} }
if(iface) if(iface)
@ -92,7 +92,7 @@ bool setup_device(void) {
if(iface) free(iface); if(iface) free(iface);
iface = xstrdup(ifrname); iface = xstrdup(ifrname);
} else if(!ioctl(device_fd, (('T' << 8) | 202), &ifr)) { } else if(!ioctl(device_fd, (('T' << 8) | 202), &ifr)) {
logger(LOG_WARNING, _("Old ioctl() request was needed for %s"), device); logger(LOG_WARNING, "Old ioctl() request was needed for %s", device);
strncpy(ifrname, ifr.ifr_name, IFNAMSIZ); strncpy(ifrname, ifr.ifr_name, IFNAMSIZ);
if(iface) free(iface); if(iface) free(iface);
iface = xstrdup(ifrname); iface = xstrdup(ifrname);
@ -101,14 +101,14 @@ bool setup_device(void) {
{ {
if(routing_mode == RMODE_ROUTER) if(routing_mode == RMODE_ROUTER)
overwrite_mac = true; overwrite_mac = true;
device_info = _("Linux ethertap device"); device_info = "Linux ethertap device";
device_type = DEVICE_TYPE_ETHERTAP; device_type = DEVICE_TYPE_ETHERTAP;
if(iface) if(iface)
free(iface); free(iface);
iface = xstrdup(rindex(device, '/') ? rindex(device, '/') + 1 : device); iface = xstrdup(rindex(device, '/') ? rindex(device, '/') + 1 : device);
} }
logger(LOG_INFO, _("%s is a %s"), device, device_info); logger(LOG_INFO, "%s is a %s", device, device_info);
return true; return true;
} }
@ -128,7 +128,7 @@ bool read_packet(vpn_packet_t *packet) {
lenin = read(device_fd, packet->data + 10, MTU - 10); lenin = read(device_fd, packet->data + 10, MTU - 10);
if(lenin <= 0) { if(lenin <= 0) {
logger(LOG_ERR, _("Error while reading from %s %s: %s"), logger(LOG_ERR, "Error while reading from %s %s: %s",
device_info, device, strerror(errno)); device_info, device, strerror(errno));
return false; return false;
} }
@ -139,7 +139,7 @@ bool read_packet(vpn_packet_t *packet) {
lenin = read(device_fd, packet->data, MTU); lenin = read(device_fd, packet->data, MTU);
if(lenin <= 0) { if(lenin <= 0) {
logger(LOG_ERR, _("Error while reading from %s %s: %s"), logger(LOG_ERR, "Error while reading from %s %s: %s",
device_info, device, strerror(errno)); device_info, device, strerror(errno));
return false; return false;
} }
@ -150,7 +150,7 @@ bool read_packet(vpn_packet_t *packet) {
lenin = read(device_fd, packet->data - 2, MTU + 2); lenin = read(device_fd, packet->data - 2, MTU + 2);
if(lenin <= 0) { if(lenin <= 0) {
logger(LOG_ERR, _("Error while reading from %s %s: %s"), logger(LOG_ERR, "Error while reading from %s %s: %s",
device_info, device, strerror(errno)); device_info, device, strerror(errno));
return false; return false;
} }
@ -161,28 +161,28 @@ bool read_packet(vpn_packet_t *packet) {
device_total_in += packet->len; device_total_in += packet->len;
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Read packet of %d bytes from %s"), packet->len, ifdebug(TRAFFIC) logger(LOG_DEBUG, "Read packet of %d bytes from %s", packet->len,
device_info); device_info);
return true; return true;
} }
bool write_packet(vpn_packet_t *packet) { bool write_packet(vpn_packet_t *packet) {
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s",
packet->len, device_info); packet->len, device_info);
switch(device_type) { switch(device_type) {
case DEVICE_TYPE_TUN: case DEVICE_TYPE_TUN:
packet->data[10] = packet->data[11] = 0; packet->data[10] = packet->data[11] = 0;
if(write(device_fd, packet->data + 10, packet->len - 10) < 0) { if(write(device_fd, packet->data + 10, packet->len - 10) < 0) {
logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, device, logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device,
strerror(errno)); strerror(errno));
return false; return false;
} }
break; break;
case DEVICE_TYPE_TAP: case DEVICE_TYPE_TAP:
if(write(device_fd, packet->data, packet->len) < 0) { if(write(device_fd, packet->data, packet->len) < 0) {
logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, device, logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device,
strerror(errno)); strerror(errno));
return false; return false;
} }
@ -191,7 +191,7 @@ bool write_packet(vpn_packet_t *packet) {
*(short int *)(packet->data - 2) = packet->len; *(short int *)(packet->data - 2) = packet->len;
if(write(device_fd, packet->data - 2, packet->len + 2) < 0) { if(write(device_fd, packet->data - 2, packet->len + 2) < 0) {
logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, device, logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device,
strerror(errno)); strerror(errno));
return false; return false;
} }
@ -204,7 +204,7 @@ bool write_packet(vpn_packet_t *packet) {
} }
void dump_device_stats(void) { void dump_device_stats(void) {
logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device);
logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); logger(LOG_DEBUG, " total bytes in: %10d", device_total_in);
logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); logger(LOG_DEBUG, " total bytes out: %10d", device_total_out);
} }

View file

@ -37,11 +37,11 @@ bool send_meta(connection_t *c, const char *buffer, int length) {
int result; int result;
if(!c) { if(!c) {
logger(LOG_ERR, _("send_meta() called with NULL pointer!")); logger(LOG_ERR, "send_meta() called with NULL pointer!");
abort(); abort();
} }
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) if(!c->outbuflen)
@ -63,11 +63,11 @@ bool send_meta(connection_t *c, const char *buffer, int length) {
result = EVP_EncryptUpdate(c->outctx, (unsigned char *)c->outbuf + c->outbufstart + c->outbuflen, result = EVP_EncryptUpdate(c->outctx, (unsigned char *)c->outbuf + c->outbufstart + c->outbuflen,
&outlen, (unsigned char *)buffer, length); &outlen, (unsigned char *)buffer, length);
if(!result || outlen < 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) { } else if(outlen > length) {
logger(LOG_EMERG, _("Encrypted data too long! Heap corrupted!")); logger(LOG_EMERG, "Encrypted data too long! Heap corrupted!");
abort(); abort();
} }
c->outbuflen += outlen; c->outbuflen += outlen;
@ -82,25 +82,25 @@ bool send_meta(connection_t *c, const char *buffer, int length) {
bool flush_meta(connection_t *c) { bool flush_meta(connection_t *c) {
int result; int result;
ifdebug(META) logger(LOG_DEBUG, _("Flushing %d bytes to %s (%s)"), ifdebug(META) logger(LOG_DEBUG, "Flushing %d bytes to %s (%s)",
c->outbuflen, c->name, c->hostname); c->outbuflen, c->name, c->hostname);
while(c->outbuflen) { while(c->outbuflen) {
result = send(c->socket, c->outbuf + c->outbufstart, c->outbuflen, 0); 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;
#ifdef EWOULDBLOCK #ifdef EWOULDBLOCK
} else if(errno == EWOULDBLOCK) { } else if(errno == EWOULDBLOCK) {
ifdebug(CONNECTIONS) logger(LOG_DEBUG, _("Flushing %d bytes to %s (%s) would block"), ifdebug(CONNECTIONS) logger(LOG_DEBUG, "Flushing %d bytes to %s (%s) would block",
c->outbuflen, c->name, c->hostname); c->outbuflen, c->name, c->hostname);
return true; return true;
#endif #endif
} else { } else {
logger(LOG_ERR, _("Flushing meta data to %s (%s) failed: %s"), c->name, logger(LOG_ERR, "Flushing meta data to %s (%s) failed: %s", c->name,
c->hostname, strerror(errno)); c->hostname, strerror(errno));
} }
@ -146,12 +146,12 @@ bool receive_meta(connection_t *c) {
if(lenin <= 0) { if(lenin <= 0) {
if(!lenin || !errno) { if(!lenin || !errno) {
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)
return true; return true;
else else
logger(LOG_ERR, _("Metadata socket read error for %s (%s): %s"), logger(LOG_ERR, "Metadata socket read error for %s (%s): %s",
c->name, c->hostname, strerror(errno)); c->name, c->hostname, strerror(errno));
return false; return false;
@ -166,7 +166,7 @@ bool receive_meta(connection_t *c) {
if(c->status.decryptin && !decrypted) { if(c->status.decryptin && !decrypted) {
result = EVP_DecryptUpdate(c->inctx, (unsigned char *)inbuf, &lenout, (unsigned char *)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));
return false; return false;
} }
@ -219,7 +219,7 @@ bool receive_meta(connection_t *c) {
} }
if(c->buflen >= MAXBUFSIZE) { if(c->buflen >= MAXBUFSIZE) {
logger(LOG_ERR, _("Metadata read buffer overflow for %s (%s)"), logger(LOG_ERR, "Metadata read buffer overflow for %s (%s)",
c->name, c->hostname); c->name, c->hostname);
return false; return false;
} }

View file

@ -49,7 +49,7 @@ static DWORD WINAPI tapreader(void *bla) {
OVERLAPPED overlapped; OVERLAPPED overlapped;
vpn_packet_t packet; vpn_packet_t packet;
logger(LOG_DEBUG, _("Tap reader running")); logger(LOG_DEBUG, "Tap reader running");
/* Read from tap device and send to parent */ /* Read from tap device and send to parent */
@ -68,7 +68,7 @@ static DWORD WINAPI tapreader(void *bla) {
if(!GetOverlappedResult(device_handle, &overlapped, &len, FALSE)) if(!GetOverlappedResult(device_handle, &overlapped, &len, FALSE))
continue; continue;
} else { } else {
logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, logger(LOG_ERR, "Error while reading from %s %s: %s", device_info,
device, strerror(errno)); device, strerror(errno));
return -1; return -1;
} }
@ -112,7 +112,7 @@ bool setup_device(void) {
/* Open registry and look for network adapters */ /* Open registry and look for network adapters */
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, NETWORK_CONNECTIONS_KEY, 0, KEY_READ, &key)) { if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, NETWORK_CONNECTIONS_KEY, 0, KEY_READ, &key)) {
logger(LOG_ERR, _("Unable to read registry: %s"), winerror(GetLastError())); logger(LOG_ERR, "Unable to read registry: %s", winerror(GetLastError()));
return false; return false;
} }
@ -163,7 +163,7 @@ bool setup_device(void) {
RegCloseKey(key); RegCloseKey(key);
if(!found) { if(!found) {
logger(LOG_ERR, _("No Windows tap device found!")); logger(LOG_ERR, "No Windows tap device found!");
return false; return false;
} }
@ -181,14 +181,14 @@ bool setup_device(void) {
} }
if(device_handle == INVALID_HANDLE_VALUE) { if(device_handle == INVALID_HANDLE_VALUE) {
logger(LOG_ERR, _("%s (%s) is not a usable Windows tap device: %s"), device, iface, winerror(GetLastError())); logger(LOG_ERR, "%s (%s) is not a usable Windows tap device: %s", device, iface, winerror(GetLastError()));
return false; return false;
} }
/* Get MAC address from tap device */ /* Get MAC address from tap device */
if(!DeviceIoControl(device_handle, TAP_IOCTL_GET_MAC, mymac.x, sizeof(mymac.x), mymac.x, sizeof(mymac.x), &len, 0)) { if(!DeviceIoControl(device_handle, TAP_IOCTL_GET_MAC, mymac.x, sizeof(mymac.x), mymac.x, sizeof(mymac.x), &len, 0)) {
logger(LOG_ERR, _("Could not get MAC address from Windows tap device %s (%s): %s"), device, iface, winerror(GetLastError())); logger(LOG_ERR, "Could not get MAC address from Windows tap device %s (%s): %s", device, iface, winerror(GetLastError()));
return false; return false;
} }
@ -201,7 +201,7 @@ bool setup_device(void) {
thread = CreateThread(NULL, 0, tapreader, NULL, 0, NULL); thread = CreateThread(NULL, 0, tapreader, NULL, 0, NULL);
if(!thread) { if(!thread) {
logger(LOG_ERR, _("System call `%s' failed: %s"), "CreateThread", winerror(GetLastError())); logger(LOG_ERR, "System call `%s' failed: %s", "CreateThread", winerror(GetLastError()));
return false; return false;
} }
@ -210,9 +210,9 @@ bool setup_device(void) {
status = true; status = true;
DeviceIoControl(device_handle, TAP_IOCTL_SET_MEDIA_STATUS, &status, sizeof(status), &status, sizeof(status), &len, NULL); DeviceIoControl(device_handle, TAP_IOCTL_SET_MEDIA_STATUS, &status, sizeof(status), &status, sizeof(status), &len, NULL);
device_info = _("Windows tap device"); device_info = "Windows tap device";
logger(LOG_INFO, _("%s (%s) is a %s"), device, iface, device_info); logger(LOG_INFO, "%s (%s) is a %s", device, iface, device_info);
return true; return true;
} }
@ -232,11 +232,11 @@ bool write_packet(vpn_packet_t *packet) {
long lenout; long lenout;
OVERLAPPED overlapped = {0}; OVERLAPPED overlapped = {0};
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s",
packet->len, device_info); packet->len, device_info);
if(!WriteFile(device_handle, packet->data, packet->len, &lenout, &overlapped)) { if(!WriteFile(device_handle, packet->data, packet->len, &lenout, &overlapped)) {
logger(LOG_ERR, _("Error while writing to %s %s: %s"), device_info, device, winerror(GetLastError())); logger(LOG_ERR, "Error while writing to %s %s: %s", device_info, device, winerror(GetLastError()));
return false; return false;
} }
@ -246,7 +246,7 @@ bool write_packet(vpn_packet_t *packet) {
} }
void dump_device_stats(void) { void dump_device_stats(void) {
logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device);
logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); logger(LOG_DEBUG, " total bytes in: %10d", device_total_in);
logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); logger(LOG_DEBUG, " total bytes out: %10d", device_total_out);
} }

View file

@ -52,7 +52,7 @@ static void purge(void) {
edge_t *e; edge_t *e;
subnet_t *s; subnet_t *s;
ifdebug(PROTOCOL) logger(LOG_DEBUG, _("Purging unreachable nodes")); ifdebug(PROTOCOL) logger(LOG_DEBUG, "Purging unreachable nodes");
/* Remove all edges and subnets owned by unreachable nodes. */ /* Remove all edges and subnets owned by unreachable nodes. */
@ -61,7 +61,7 @@ static void purge(void) {
n = nnode->data; n = nnode->data;
if(!n->status.reachable) { if(!n->status.reachable) {
ifdebug(SCARY_THINGS) logger(LOG_DEBUG, _("Purging node %s (%s)"), n->name, ifdebug(SCARY_THINGS) logger(LOG_DEBUG, "Purging node %s (%s)", n->name,
n->hostname); n->hostname);
for(snode = n->subnet_tree->head; snode; snode = snext) { for(snode = n->subnet_tree->head; snode; snode = snext) {
@ -160,7 +160,7 @@ void terminate_connection(connection_t *c, bool report) {
if(c->status.remove) if(c->status.remove)
return; return;
ifdebug(CONNECTIONS) logger(LOG_NOTICE, _("Closing connection with %s (%s)"), ifdebug(CONNECTIONS) logger(LOG_NOTICE, "Closing connection with %s (%s)",
c->name, c->hostname); c->name, c->hostname);
c->status.remove = true; c->status.remove = true;
@ -228,7 +228,7 @@ 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 in %ld seconds"), ifdebug(CONNECTIONS) logger(LOG_INFO, "%s (%s) didn't respond to PING in %ld seconds",
c->name, c->hostname, now - c->last_ping_time); 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);
@ -237,12 +237,12 @@ static void check_dead_connections(void) {
} }
} 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, bitfield_to_int(&c->status, sizeof c->status)); c->name, c->hostname, bitfield_to_int(&c->status, sizeof c->status));
connection_del(c); connection_del(c);
continue; continue;
} }
ifdebug(CONNECTIONS) logger(LOG_WARNING, _("Timeout from %s (%s) during authentication"), ifdebug(CONNECTIONS) logger(LOG_WARNING, "Timeout from %s (%s) during authentication",
c->name, c->hostname); c->name, c->hostname);
if(c->status.connecting) { if(c->status.connecting) {
c->status.connecting = false; c->status.connecting = false;
@ -257,7 +257,7 @@ static void check_dead_connections(void) {
if(c->outbuflen > 0 && c->last_flushed_time + pingtimeout < now) { if(c->outbuflen > 0 && c->last_flushed_time + pingtimeout < now) {
if(c->status.active) { if(c->status.active) {
ifdebug(CONNECTIONS) logger(LOG_INFO, ifdebug(CONNECTIONS) logger(LOG_INFO,
_("%s (%s) could not flush for %ld seconds (%d bytes remaining)"), "%s (%s) could not flush for %ld seconds (%d bytes remaining)",
c->name, c->hostname, now - c->last_flushed_time, c->outbuflen); c->name, c->hostname, now - c->last_flushed_time, c->outbuflen);
c->status.timeout = true; c->status.timeout = true;
terminate_connection(c, true); terminate_connection(c, true);
@ -301,7 +301,7 @@ static void check_network_activity(fd_set * readset, fd_set * writeset) {
finish_connecting(c); finish_connecting(c);
else { else {
ifdebug(CONNECTIONS) logger(LOG_DEBUG, ifdebug(CONNECTIONS) logger(LOG_DEBUG,
_("Error while connecting to %s (%s): %s"), "Error while connecting to %s (%s): %s",
c->name, c->hostname, strerror(result)); c->name, c->hostname, strerror(result));
closesocket(c->socket); closesocket(c->socket);
do_outgoing_connection(c); do_outgoing_connection(c);
@ -369,7 +369,7 @@ int main_loop(void) {
if(r < 0) { if(r < 0) {
if(errno != EINTR && errno != EAGAIN) { if(errno != EINTR && errno != EAGAIN) {
logger(LOG_ERR, _("Error while waiting for input: %s"), logger(LOG_ERR, "Error while waiting for input: %s",
strerror(errno)); strerror(errno));
dump_connections(); dump_connections();
return 1; return 1;
@ -402,7 +402,7 @@ int main_loop(void) {
avl_node_t *node; avl_node_t *node;
node_t *n; node_t *n;
ifdebug(STATUS) logger(LOG_INFO, _("Expiring symmetric keys")); ifdebug(STATUS) logger(LOG_INFO, "Expiring symmetric keys");
for(node = node_tree->head; node; node = node->next) { for(node = node_tree->head; node; node = node->next) {
n = node->data; n = node->data;
@ -418,7 +418,7 @@ int main_loop(void) {
} }
if(sigalrm) { if(sigalrm) {
logger(LOG_INFO, _("Flushing event queue")); logger(LOG_INFO, "Flushing event queue");
expire_events(); expire_events();
sigalrm = false; sigalrm = false;
} }
@ -442,7 +442,7 @@ int main_loop(void) {
init_configuration(&config_tree); init_configuration(&config_tree);
if(!read_server_config()) { if(!read_server_config()) {
logger(LOG_ERR, _("Unable to reread configuration file, exitting.")); logger(LOG_ERR, "Unable to reread configuration file, exitting.");
return 1; return 1;
} }

View file

@ -66,19 +66,19 @@ void send_mtu_probe(node_t *n) {
n->mtuevent = NULL; n->mtuevent = NULL;
if(!n->status.reachable) { if(!n->status.reachable) {
logger(LOG_DEBUG, _("Trying to send MTU probe to unreachable node %s (%s)"), n->name, n->hostname); logger(LOG_DEBUG, "Trying to send MTU probe to unreachable node %s (%s)", n->name, n->hostname);
return; return;
} }
if(n->mtuprobes >= 10 && !n->minmtu) { if(n->mtuprobes >= 10 && !n->minmtu) {
ifdebug(TRAFFIC) logger(LOG_INFO, _("No response to MTU probes from %s (%s)"), n->name, n->hostname); ifdebug(TRAFFIC) logger(LOG_INFO, "No response to MTU probes from %s (%s)", n->name, n->hostname);
return; return;
} }
for(i = 0; i < 3; i++) { for(i = 0; i < 3; i++) {
if(n->mtuprobes >= 30 || n->minmtu >= n->maxmtu) { if(n->mtuprobes >= 30 || n->minmtu >= n->maxmtu) {
n->mtu = n->minmtu; n->mtu = n->minmtu;
ifdebug(TRAFFIC) logger(LOG_INFO, _("Fixing MTU of %s (%s) to %d after %d probes"), n->name, n->hostname, n->mtu, n->mtuprobes); ifdebug(TRAFFIC) logger(LOG_INFO, "Fixing MTU of %s (%s) to %d after %d probes", n->name, n->hostname, n->mtu, n->mtuprobes);
return; return;
} }
@ -91,7 +91,7 @@ void send_mtu_probe(node_t *n) {
packet.len = len; packet.len = len;
packet.priority = 0; packet.priority = 0;
ifdebug(TRAFFIC) logger(LOG_INFO, _("Sending MTU probe length %d to %s (%s)"), len, n->name, n->hostname); ifdebug(TRAFFIC) logger(LOG_INFO, "Sending MTU probe length %d to %s (%s)", len, n->name, n->hostname);
send_udppacket(n, &packet); send_udppacket(n, &packet);
} }
@ -104,7 +104,7 @@ void send_mtu_probe(node_t *n) {
} }
void mtu_probe_h(node_t *n, vpn_packet_t *packet, length_t len) { void mtu_probe_h(node_t *n, vpn_packet_t *packet, length_t len) {
ifdebug(TRAFFIC) logger(LOG_INFO, _("Got MTU probe length %d from %s (%s)"), packet->len, n->name, n->hostname); ifdebug(TRAFFIC) logger(LOG_INFO, "Got MTU probe length %d from %s (%s)", packet->len, n->name, n->hostname);
if(!packet->data[0]) { if(!packet->data[0]) {
packet->data[0] = 1; packet->data[0] = 1;
@ -156,7 +156,7 @@ static length_t uncompress_packet(uint8_t *dest, const uint8_t *source, length_t
/* VPN packet I/O */ /* VPN packet I/O */
static void receive_packet(node_t *n, vpn_packet_t *packet) { static void receive_packet(node_t *n, vpn_packet_t *packet) {
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Received packet of %d bytes from %s (%s)"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Received packet of %d bytes from %s (%s)",
packet->len, n->name, n->hostname); packet->len, n->name, n->hostname);
route(n, packet); route(n, packet);
@ -183,7 +183,7 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) {
int i; int i;
if(!n->inkey) { if(!n->inkey) {
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Got packet from %s (%s) but he hasn't got our key yet"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Got packet from %s (%s) but he hasn't got our key yet",
n->name, n->hostname); n->name, n->hostname);
return; return;
} }
@ -191,7 +191,7 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) {
/* Check packet length */ /* Check packet length */
if(inpkt->len < sizeof(inpkt->seqno) + n->inmaclength) { if(inpkt->len < sizeof(inpkt->seqno) + n->inmaclength) {
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Got too short packet from %s (%s)"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Got too short packet from %s (%s)",
n->name, n->hostname); n->name, n->hostname);
return; return;
} }
@ -204,7 +204,7 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) {
(unsigned char *) &inpkt->seqno, inpkt->len, (unsigned char *)hmac, NULL); (unsigned char *) &inpkt->seqno, inpkt->len, (unsigned char *)hmac, NULL);
if(memcmp(hmac, (char *) &inpkt->seqno + inpkt->len, n->inmaclength)) { if(memcmp(hmac, (char *) &inpkt->seqno + inpkt->len, n->inmaclength)) {
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Got unauthenticated packet from %s (%s)"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Got unauthenticated packet from %s (%s)",
n->name, n->hostname); n->name, n->hostname);
return; return;
} }
@ -219,7 +219,7 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) {
|| !EVP_DecryptUpdate(&n->inctx, (unsigned char *) &outpkt->seqno, &outlen, || !EVP_DecryptUpdate(&n->inctx, (unsigned char *) &outpkt->seqno, &outlen,
(unsigned char *) &inpkt->seqno, inpkt->len) (unsigned char *) &inpkt->seqno, inpkt->len)
|| !EVP_DecryptFinal_ex(&n->inctx, (unsigned char *) &outpkt->seqno + outlen, &outpad)) { || !EVP_DecryptFinal_ex(&n->inctx, (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;
} }
@ -235,13 +235,13 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) {
if(inpkt->seqno != n->received_seqno + 1) { if(inpkt->seqno != n->received_seqno + 1) {
if(inpkt->seqno >= n->received_seqno + sizeof(n->late) * 8) { if(inpkt->seqno >= n->received_seqno + sizeof(n->late) * 8) {
logger(LOG_WARNING, _("Lost %d packets from %s (%s)"), logger(LOG_WARNING, "Lost %d packets from %s (%s)",
inpkt->seqno - n->received_seqno - 1, n->name, n->hostname); inpkt->seqno - n->received_seqno - 1, n->name, n->hostname);
memset(n->late, 0, sizeof(n->late)); memset(n->late, 0, sizeof(n->late));
} else if (inpkt->seqno <= n->received_seqno) { } else if (inpkt->seqno <= n->received_seqno) {
if((n->received_seqno >= sizeof(n->late) * 8 && inpkt->seqno <= n->received_seqno - sizeof(n->late) * 8) || !(n->late[(inpkt->seqno / 8) % sizeof(n->late)] & (1 << inpkt->seqno % 8))) { if((n->received_seqno >= sizeof(n->late) * 8 && inpkt->seqno <= n->received_seqno - sizeof(n->late) * 8) || !(n->late[(inpkt->seqno / 8) % sizeof(n->late)] & (1 << inpkt->seqno % 8))) {
logger(LOG_WARNING, _("Got late or replayed packet from %s (%s), seqno %d, last received %d"), logger(LOG_WARNING, "Got late or replayed packet from %s (%s), seqno %d, last received %d",
n->name, n->hostname, inpkt->seqno, n->received_seqno); n->name, n->hostname, inpkt->seqno, n->received_seqno);
return; return;
} }
@ -267,7 +267,7 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) {
outpkt = pkt[nextpkt++]; outpkt = pkt[nextpkt++];
if((outpkt->len = uncompress_packet(outpkt->data, inpkt->data, inpkt->len, n->incompression)) < 0) { if((outpkt->len = uncompress_packet(outpkt->data, inpkt->data, inpkt->len, n->incompression)) < 0) {
ifdebug(TRAFFIC) logger(LOG_ERR, _("Error while uncompressing packet from %s (%s)"), ifdebug(TRAFFIC) logger(LOG_ERR, "Error while uncompressing packet from %s (%s)",
n->name, n->hostname); n->name, n->hostname);
return; return;
} }
@ -314,7 +314,7 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) {
int sock; int sock;
if(!n->status.reachable) { if(!n->status.reachable) {
ifdebug(TRAFFIC) logger(LOG_INFO, _("Trying to send UDP packet to unreachable node %s (%s)"), n->name, n->hostname); ifdebug(TRAFFIC) logger(LOG_INFO, "Trying to send UDP packet to unreachable node %s (%s)", n->name, n->hostname);
return; return;
} }
@ -322,7 +322,7 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) {
if(!n->status.validkey) { if(!n->status.validkey) {
ifdebug(TRAFFIC) logger(LOG_INFO, ifdebug(TRAFFIC) logger(LOG_INFO,
_("No valid key known yet for %s (%s), forwarding via TCP"), "No valid key known yet for %s (%s), forwarding via TCP",
n->name, n->hostname); n->name, n->hostname);
if(!n->status.waitingforkey) if(!n->status.waitingforkey)
@ -337,7 +337,7 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) {
if(n->options & OPTION_PMTU_DISCOVERY && inpkt->len > n->minmtu && (inpkt->data[12] | inpkt->data[13])) { if(n->options & OPTION_PMTU_DISCOVERY && inpkt->len > n->minmtu && (inpkt->data[12] | inpkt->data[13])) {
ifdebug(TRAFFIC) logger(LOG_INFO, ifdebug(TRAFFIC) logger(LOG_INFO,
_("Packet for %s (%s) larger than minimum MTU, forwarding via TCP"), "Packet for %s (%s) larger than minimum MTU, forwarding via TCP",
n->name, n->hostname); n->name, n->hostname);
send_tcppacket(n->nexthop->connection, origpkt); send_tcppacket(n->nexthop->connection, origpkt);
@ -354,7 +354,7 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) {
outpkt = pkt[nextpkt++]; outpkt = pkt[nextpkt++];
if((outpkt->len = compress_packet(outpkt->data, inpkt->data, inpkt->len, n->outcompression)) < 0) { if((outpkt->len = compress_packet(outpkt->data, inpkt->data, inpkt->len, n->outcompression)) < 0) {
ifdebug(TRAFFIC) logger(LOG_ERR, _("Error while compressing packet to %s (%s)"), ifdebug(TRAFFIC) logger(LOG_ERR, "Error while compressing packet to %s (%s)",
n->name, n->hostname); n->name, n->hostname);
return; return;
} }
@ -376,7 +376,7 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) {
|| !EVP_EncryptUpdate(&n->outctx, (unsigned char *) &outpkt->seqno, &outlen, || !EVP_EncryptUpdate(&n->outctx, (unsigned char *) &outpkt->seqno, &outlen,
(unsigned char *) &inpkt->seqno, inpkt->len) (unsigned char *) &inpkt->seqno, inpkt->len)
|| !EVP_EncryptFinal_ex(&n->outctx, (unsigned char *) &outpkt->seqno + outlen, &outpad)) { || !EVP_EncryptFinal_ex(&n->outctx, (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;
} }
@ -408,9 +408,9 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) {
if(priorityinheritance && origpriority != priority if(priorityinheritance && origpriority != priority
&& listen_socket[sock].sa.sa.sa_family == AF_INET) { && listen_socket[sock].sa.sa.sa_family == AF_INET) {
priority = origpriority; priority = origpriority;
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Setting outgoing packet priority to %d"), priority); ifdebug(TRAFFIC) logger(LOG_DEBUG, "Setting outgoing packet priority to %d", priority);
if(setsockopt(listen_socket[sock].udp, SOL_IP, IP_TOS, &priority, sizeof(priority))) /* SO_PRIORITY doesn't seem to work */ if(setsockopt(listen_socket[sock].udp, SOL_IP, IP_TOS, &priority, sizeof(priority))) /* SO_PRIORITY doesn't seem to work */
logger(LOG_ERR, _("System call `%s' failed: %s"), "setsockopt", strerror(errno)); logger(LOG_ERR, "System call `%s' failed: %s", "setsockopt", strerror(errno));
} }
#endif #endif
@ -421,7 +421,7 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) {
if(n->mtu >= origlen) if(n->mtu >= origlen)
n->mtu = origlen - 1; n->mtu = origlen - 1;
} else } else
logger(LOG_ERR, _("Error sending packet to %s (%s): %s"), n->name, n->hostname, strerror(errno)); logger(LOG_ERR, "Error sending packet to %s (%s): %s", n->name, n->hostname, strerror(errno));
} }
end: end:
@ -441,11 +441,11 @@ void send_packet(const node_t *n, vpn_packet_t *packet) {
return; return;
} }
ifdebug(TRAFFIC) logger(LOG_ERR, _("Sending packet of %d bytes to %s (%s)"), ifdebug(TRAFFIC) logger(LOG_ERR, "Sending packet of %d bytes to %s (%s)",
packet->len, n->name, n->hostname); packet->len, n->name, n->hostname);
if(!n->status.reachable) { if(!n->status.reachable) {
ifdebug(TRAFFIC) logger(LOG_INFO, _("Node %s (%s) is not reachable"), ifdebug(TRAFFIC) logger(LOG_INFO, "Node %s (%s) is not reachable",
n->name, n->hostname); n->name, n->hostname);
return; return;
} }
@ -453,7 +453,7 @@ void send_packet(const node_t *n, vpn_packet_t *packet) {
via = (packet->priority == -1 || n->via == myself) ? n->nexthop : n->via; via = (packet->priority == -1 || n->via == myself) ? n->nexthop : n->via;
if(via != n) if(via != n)
ifdebug(TRAFFIC) logger(LOG_INFO, _("Sending packet to %s via %s (%s)"), ifdebug(TRAFFIC) logger(LOG_INFO, "Sending packet to %s via %s (%s)",
n->name, via->name, n->via->hostname); n->name, via->name, n->via->hostname);
if(packet->priority == -1 || ((myself->options | via->options) & OPTION_TCPONLY)) { if(packet->priority == -1 || ((myself->options | via->options) & OPTION_TCPONLY)) {
@ -469,7 +469,7 @@ void broadcast_packet(const node_t *from, vpn_packet_t *packet) {
avl_node_t *node; avl_node_t *node;
connection_t *c; connection_t *c;
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) {
@ -524,7 +524,7 @@ void handle_incoming_vpn_data(int sock) {
if(pkt.len < 0) { if(pkt.len < 0) {
if(errno != EAGAIN && errno != EINTR) if(errno != EAGAIN && errno != EINTR)
logger(LOG_ERR, _("Receiving packet failed: %s"), strerror(errno)); logger(LOG_ERR, "Receiving packet failed: %s", strerror(errno));
return; return;
} }
@ -538,7 +538,7 @@ void handle_incoming_vpn_data(int sock) {
update_node_udp(n, &from); update_node_udp(n, &from);
else ifdebug(PROTOCOL) { else ifdebug(PROTOCOL) {
hostname = sockaddr2hostname(&from); hostname = sockaddr2hostname(&from);
logger(LOG_WARNING, _("Received UDP packet from unknown source %s"), hostname); logger(LOG_WARNING, "Received UDP packet from unknown source %s", hostname);
free(hostname); free(hostname);
return; return;
} }

View file

@ -69,7 +69,7 @@ bool read_rsa_public_key(connection_t *c) {
fp = fopen(fname, "r"); fp = fopen(fname, "r");
if(!fp) { if(!fp) {
logger(LOG_ERR, _("Error reading RSA public key file `%s': %s"), logger(LOG_ERR, "Error reading RSA public key file `%s': %s",
fname, strerror(errno)); fname, strerror(errno));
free(fname); free(fname);
return false; return false;
@ -86,7 +86,7 @@ bool read_rsa_public_key(connection_t *c) {
fp = fopen(fname, "r"); fp = fopen(fname, "r");
if(!fp) { if(!fp) {
logger(LOG_ERR, _("Error reading RSA public key file `%s': %s"), logger(LOG_ERR, "Error reading RSA public key file `%s': %s",
fname, strerror(errno)); fname, strerror(errno));
free(fname); free(fname);
return false; return false;
@ -101,7 +101,7 @@ bool read_rsa_public_key(connection_t *c) {
return true; return true;
} }
logger(LOG_ERR, _("Reading RSA public key file `%s' failed: %s"), logger(LOG_ERR, "Reading RSA public key file `%s' failed: %s",
fname, strerror(errno)); fname, strerror(errno));
return false; return false;
} }
@ -137,7 +137,7 @@ bool read_rsa_public_key(connection_t *c) {
if(c->rsa_key) if(c->rsa_key)
return true; return true;
logger(LOG_ERR, _("No public key for %s specified!"), c->name); logger(LOG_ERR, "No public key for %s specified!", c->name);
return false; return false;
} }
@ -149,7 +149,7 @@ bool read_rsa_private_key(void) {
if(get_config_string(lookup_config(config_tree, "PrivateKey"), &key)) { if(get_config_string(lookup_config(config_tree, "PrivateKey"), &key)) {
if(!get_config_string(lookup_config(myself->connection->config_tree, "PublicKey"), &pubkey)) { if(!get_config_string(lookup_config(myself->connection->config_tree, "PublicKey"), &pubkey)) {
logger(LOG_ERR, _("PrivateKey used but no PublicKey found!")); logger(LOG_ERR, "PrivateKey used but no PublicKey found!");
return false; return false;
} }
myself->connection->rsa_key = RSA_new(); myself->connection->rsa_key = RSA_new();
@ -168,7 +168,7 @@ bool read_rsa_private_key(void) {
fp = fopen(fname, "r"); fp = fopen(fname, "r");
if(!fp) { if(!fp) {
logger(LOG_ERR, _("Error reading RSA private key file `%s': %s"), logger(LOG_ERR, "Error reading RSA private key file `%s': %s",
fname, strerror(errno)); fname, strerror(errno));
free(fname); free(fname);
return false; return false;
@ -176,21 +176,21 @@ bool read_rsa_private_key(void) {
#if !defined(HAVE_MINGW) && !defined(HAVE_CYGWIN) #if !defined(HAVE_MINGW) && !defined(HAVE_CYGWIN)
if(fstat(fileno(fp), &s)) { if(fstat(fileno(fp), &s)) {
logger(LOG_ERR, _("Could not stat RSA private key file `%s': %s'"), logger(LOG_ERR, "Could not stat RSA private key file `%s': %s'",
fname, strerror(errno)); fname, strerror(errno));
free(fname); free(fname);
return false; return false;
} }
if(s.st_mode & ~0100700) if(s.st_mode & ~0100700)
logger(LOG_WARNING, _("Warning: insecure file permissions for RSA private key file `%s'!"), fname); logger(LOG_WARNING, "Warning: insecure file permissions for RSA private key file `%s'!", fname);
#endif #endif
myself->connection->rsa_key = PEM_read_RSAPrivateKey(fp, NULL, NULL, NULL); myself->connection->rsa_key = PEM_read_RSAPrivateKey(fp, NULL, NULL, NULL);
fclose(fp); fclose(fp);
if(!myself->connection->rsa_key) { if(!myself->connection->rsa_key) {
logger(LOG_ERR, _("Reading RSA private key file `%s' failed: %s"), logger(LOG_ERR, "Reading RSA private key file `%s' failed: %s",
fname, strerror(errno)); fname, strerror(errno));
free(fname); free(fname);
return false; return false;
@ -217,19 +217,19 @@ bool setup_myself(void) {
myself->connection = new_connection(); myself->connection = new_connection();
init_configuration(&myself->connection->config_tree); init_configuration(&myself->connection->config_tree);
xasprintf(&myself->hostname, _("MYSELF")); xasprintf(&myself->hostname, "MYSELF");
xasprintf(&myself->connection->hostname, _("MYSELF")); xasprintf(&myself->connection->hostname, "MYSELF");
myself->connection->options = 0; myself->connection->options = 0;
myself->connection->protocol_version = PROT_CURRENT; myself->connection->protocol_version = PROT_CURRENT;
if(!get_config_string(lookup_config(config_tree, "Name"), &name)) { /* Not acceptable */ if(!get_config_string(lookup_config(config_tree, "Name"), &name)) { /* Not acceptable */
logger(LOG_ERR, _("Name for tinc daemon required!")); logger(LOG_ERR, "Name for tinc daemon required!");
return false; return false;
} }
if(!check_id(name)) { if(!check_id(name)) {
logger(LOG_ERR, _("Invalid name for myself!")); logger(LOG_ERR, "Invalid name for myself!");
free(name); free(name);
return false; return false;
} }
@ -238,7 +238,7 @@ bool setup_myself(void) {
myself->connection->name = xstrdup(name); myself->connection->name = xstrdup(name);
if(!read_connection_config(myself->connection)) { if(!read_connection_config(myself->connection)) {
logger(LOG_ERR, _("Cannot open host configuration file for myself!")); logger(LOG_ERR, "Cannot open host configuration file for myself!");
return false; return false;
} }
@ -288,7 +288,7 @@ bool setup_myself(void) {
else if(!strcasecmp(mode, "hub")) else if(!strcasecmp(mode, "hub"))
routing_mode = RMODE_HUB; routing_mode = RMODE_HUB;
else { else {
logger(LOG_ERR, _("Invalid routing mode!")); logger(LOG_ERR, "Invalid routing mode!");
return false; return false;
} }
free(mode); free(mode);
@ -306,7 +306,7 @@ bool setup_myself(void) {
#if !defined(SOL_IP) || !defined(IP_TOS) #if !defined(SOL_IP) || !defined(IP_TOS)
if(priorityinheritance) if(priorityinheritance)
logger(LOG_WARNING, _("%s not supported on this platform"), "PriorityInheritance"); logger(LOG_WARNING, "%s not supported on this platform", "PriorityInheritance");
#endif #endif
if(!get_config_int(lookup_config(config_tree, "MACExpire"), &macexpire)) if(!get_config_int(lookup_config(config_tree, "MACExpire"), &macexpire))
@ -314,7 +314,7 @@ bool setup_myself(void) {
if(get_config_int(lookup_config(config_tree, "MaxTimeout"), &maxtimeout)) { if(get_config_int(lookup_config(config_tree, "MaxTimeout"), &maxtimeout)) {
if(maxtimeout <= 0) { if(maxtimeout <= 0) {
logger(LOG_ERR, _("Bogus maximum timeout!")); logger(LOG_ERR, "Bogus maximum timeout!");
return false; return false;
} }
} else } else
@ -328,7 +328,7 @@ bool setup_myself(void) {
else if(!strcasecmp(afname, "any")) else if(!strcasecmp(afname, "any"))
addressfamily = AF_UNSPEC; addressfamily = AF_UNSPEC;
else { else {
logger(LOG_ERR, _("Invalid address family!")); logger(LOG_ERR, "Invalid address family!");
return false; return false;
} }
free(afname); free(afname);
@ -346,7 +346,7 @@ bool setup_myself(void) {
myself->incipher = EVP_get_cipherbyname(cipher); myself->incipher = EVP_get_cipherbyname(cipher);
if(!myself->incipher) { if(!myself->incipher) {
logger(LOG_ERR, _("Unrecognized cipher type!")); logger(LOG_ERR, "Unrecognized cipher type!");
return false; return false;
} }
} }
@ -374,7 +374,7 @@ bool setup_myself(void) {
myself->indigest = EVP_get_digestbyname(digest); myself->indigest = EVP_get_digestbyname(digest);
if(!myself->indigest) { if(!myself->indigest) {
logger(LOG_ERR, _("Unrecognized digest type!")); logger(LOG_ERR, "Unrecognized digest type!");
return false; return false;
} }
} }
@ -386,10 +386,10 @@ bool setup_myself(void) {
if(get_config_int(lookup_config(myself->connection->config_tree, "MACLength"), &myself->inmaclength)) { if(get_config_int(lookup_config(myself->connection->config_tree, "MACLength"), &myself->inmaclength)) {
if(myself->indigest) { if(myself->indigest) {
if(myself->inmaclength > myself->indigest->md_size) { if(myself->inmaclength > myself->indigest->md_size) {
logger(LOG_ERR, _("MAC length exceeds size of digest!")); logger(LOG_ERR, "MAC length exceeds size of digest!");
return false; return false;
} else if(myself->inmaclength < 0) { } else if(myself->inmaclength < 0) {
logger(LOG_ERR, _("Bogus MAC length!")); logger(LOG_ERR, "Bogus MAC length!");
return false; return false;
} }
} }
@ -402,7 +402,7 @@ bool setup_myself(void) {
if(get_config_int(lookup_config(myself->connection->config_tree, "Compression"), &myself->incompression)) { if(get_config_int(lookup_config(myself->connection->config_tree, "Compression"), &myself->incompression)) {
if(myself->incompression < 0 || myself->incompression > 11) { if(myself->incompression < 0 || myself->incompression > 11) {
logger(LOG_ERR, _("Bogus compression level!")); logger(LOG_ERR, "Bogus compression level!");
return false; return false;
} }
} else } else
@ -452,7 +452,7 @@ bool setup_myself(void) {
err = getaddrinfo(address, myport, &hint, &ai); err = getaddrinfo(address, myport, &hint, &ai);
if(err || !ai) { if(err || !ai) {
logger(LOG_ERR, _("System call `%s' failed: %s"), "getaddrinfo", logger(LOG_ERR, "System call `%s' failed: %s", "getaddrinfo",
gai_strerror(err)); gai_strerror(err));
return false; return false;
} }
@ -474,7 +474,7 @@ bool setup_myself(void) {
ifdebug(CONNECTIONS) { ifdebug(CONNECTIONS) {
hostname = sockaddr2hostname((sockaddr_t *) aip->ai_addr); hostname = sockaddr2hostname((sockaddr_t *) aip->ai_addr);
logger(LOG_NOTICE, _("Listening on %s"), hostname); logger(LOG_NOTICE, "Listening on %s", hostname);
free(hostname); free(hostname);
} }
@ -485,9 +485,9 @@ bool setup_myself(void) {
freeaddrinfo(ai); freeaddrinfo(ai);
if(listen_sockets) if(listen_sockets)
logger(LOG_NOTICE, _("Ready")); logger(LOG_NOTICE, "Ready");
else { else {
logger(LOG_ERR, _("Unable to create any listening socket!")); logger(LOG_ERR, "Unable to create any listening socket!");
return false; return false;
} }

View file

@ -61,13 +61,13 @@ static void configure_tcp(connection_t *c) {
int flags = fcntl(c->socket, F_GETFL); int flags = fcntl(c->socket, F_GETFL);
if(fcntl(c->socket, F_SETFL, flags | O_NONBLOCK) < 0) { if(fcntl(c->socket, F_SETFL, flags | O_NONBLOCK) < 0) {
logger(LOG_ERR, _("fcntl for %s: %s"), c->hostname, strerror(errno)); logger(LOG_ERR, "fcntl for %s: %s", c->hostname, strerror(errno));
} }
#elif defined(WIN32) #elif defined(WIN32)
unsigned long arg = 1; unsigned long arg = 1;
if(ioctlsocket(c->socket, FIONBIO, &arg) != 0) { if(ioctlsocket(c->socket, FIONBIO, &arg) != 0) {
logger(LOG_ERR, _("ioctlsocket for %s: WSA error %d"), c->hostname, WSAGetLastError()); logger(LOG_ERR, "ioctlsocket for %s: WSA error %d", c->hostname, WSAGetLastError());
} }
#endif #endif
@ -100,12 +100,12 @@ static bool bind_to_interface(int sd) {
status = setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr)); status = setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr));
if(status) { if(status) {
logger(LOG_ERR, _("Can't bind to interface %s: %s"), iface, logger(LOG_ERR, "Can't bind to interface %s: %s", iface,
strerror(errno)); strerror(errno));
return false; return false;
} }
#else /* if !defined(SOL_SOCKET) || !defined(SO_BINDTODEVICE) */ #else /* if !defined(SOL_SOCKET) || !defined(SO_BINDTODEVICE) */
logger(LOG_WARNING, _("%s not supported on this platform"), "BindToInterface"); logger(LOG_WARNING, "%s not supported on this platform", "BindToInterface");
#endif #endif
return true; return true;
@ -140,8 +140,8 @@ static bool bind_to_address(connection_t *c) {
&ai_hints, &ai_list); &ai_hints, &ai_list);
if(status) { if(status) {
free(node); free(node);
logger(LOG_WARNING, _("Error looking up %s port %s: %s"), logger(LOG_WARNING, "Error looking up %s port %s: %s",
node, _("any"), gai_strerror(status)); node, "any", gai_strerror(status));
return false; return false;
} }
assert(ai_list != NULL); assert(ai_list != NULL);
@ -156,7 +156,7 @@ static bool bind_to_address(connection_t *c) {
if(status) { if(status) {
logger(LOG_ERR, _("Can't bind to %s/tcp: %s"), node, logger(LOG_ERR, "Can't bind to %s/tcp: %s", node,
strerror(errno)); strerror(errno));
} else ifdebug(CONNECTIONS) { } else ifdebug(CONNECTIONS) {
logger(LOG_DEBUG, "Successfully bound outgoing " logger(LOG_DEBUG, "Successfully bound outgoing "
@ -178,7 +178,7 @@ int setup_listen_socket(const sockaddr_t *sa) {
nfd = socket(sa->sa.sa_family, SOCK_STREAM, IPPROTO_TCP); nfd = socket(sa->sa.sa_family, SOCK_STREAM, IPPROTO_TCP);
if(nfd < 0) { if(nfd < 0) {
ifdebug(STATUS) logger(LOG_ERR, _("Creating metasocket failed: %s"), strerror(errno)); ifdebug(STATUS) logger(LOG_ERR, "Creating metasocket failed: %s", strerror(errno));
return -1; return -1;
} }
@ -202,19 +202,19 @@ int setup_listen_socket(const sockaddr_t *sa) {
if(setsockopt(nfd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr))) { if(setsockopt(nfd, SOL_SOCKET, SO_BINDTODEVICE, &ifr, sizeof(ifr))) {
closesocket(nfd); closesocket(nfd);
logger(LOG_ERR, _("Can't bind to interface %s: %s"), iface, logger(LOG_ERR, "Can't bind to interface %s: %s", iface,
strerror(errno)); strerror(errno));
return -1; return -1;
} }
#else #else
logger(LOG_WARNING, _("%s not supported on this platform"), "BindToInterface"); logger(LOG_WARNING, "%s not supported on this platform", "BindToInterface");
#endif #endif
} }
if(bind(nfd, &sa->sa, SALEN(sa->sa))) { if(bind(nfd, &sa->sa, SALEN(sa->sa))) {
closesocket(nfd); closesocket(nfd);
addrstr = sockaddr2hostname(sa); addrstr = sockaddr2hostname(sa);
logger(LOG_ERR, _("Can't bind to %s/tcp: %s"), addrstr, logger(LOG_ERR, "Can't bind to %s/tcp: %s", addrstr,
strerror(errno)); strerror(errno));
free(addrstr); free(addrstr);
return -1; return -1;
@ -222,7 +222,7 @@ int setup_listen_socket(const sockaddr_t *sa) {
if(listen(nfd, 3)) { if(listen(nfd, 3)) {
closesocket(nfd); closesocket(nfd);
logger(LOG_ERR, _("System call `%s' failed: %s"), "listen", logger(LOG_ERR, "System call `%s' failed: %s", "listen",
strerror(errno)); strerror(errno));
return -1; return -1;
} }
@ -238,7 +238,7 @@ int setup_vpn_in_socket(const sockaddr_t *sa) {
nfd = socket(sa->sa.sa_family, SOCK_DGRAM, IPPROTO_UDP); nfd = socket(sa->sa.sa_family, SOCK_DGRAM, IPPROTO_UDP);
if(nfd < 0) { if(nfd < 0) {
logger(LOG_ERR, _("Creating UDP socket failed: %s"), strerror(errno)); logger(LOG_ERR, "Creating UDP socket failed: %s", strerror(errno));
return -1; return -1;
} }
@ -248,7 +248,7 @@ int setup_vpn_in_socket(const sockaddr_t *sa) {
if(fcntl(nfd, F_SETFL, flags | O_NONBLOCK) < 0) { if(fcntl(nfd, F_SETFL, flags | O_NONBLOCK) < 0) {
closesocket(nfd); closesocket(nfd);
logger(LOG_ERR, _("System call `%s' failed: %s"), "fcntl", logger(LOG_ERR, "System call `%s' failed: %s", "fcntl",
strerror(errno)); strerror(errno));
return -1; return -1;
} }
@ -258,7 +258,7 @@ int setup_vpn_in_socket(const sockaddr_t *sa) {
unsigned long arg = 1; unsigned long arg = 1;
if(ioctlsocket(nfd, FIONBIO, &arg) != 0) { if(ioctlsocket(nfd, FIONBIO, &arg) != 0) {
closesocket(nfd); closesocket(nfd);
logger(LOG_ERR, _("Call to `%s' failed: WSA error %d"), "ioctlsocket", logger(LOG_ERR, "Call to `%s' failed: WSA error %d", "ioctlsocket",
WSAGetLastError()); WSAGetLastError());
return -1; return -1;
} }
@ -295,7 +295,7 @@ int setup_vpn_in_socket(const sockaddr_t *sa) {
if(bind(nfd, &sa->sa, SALEN(sa->sa))) { if(bind(nfd, &sa->sa, SALEN(sa->sa))) {
closesocket(nfd); closesocket(nfd);
addrstr = sockaddr2hostname(sa); addrstr = sockaddr2hostname(sa);
logger(LOG_ERR, _("Can't bind to %s/udp: %s"), addrstr, logger(LOG_ERR, "Can't bind to %s/udp: %s", addrstr,
strerror(errno)); strerror(errno));
free(addrstr); free(addrstr);
return -1; return -1;
@ -319,12 +319,12 @@ void retry_outgoing(outgoing_t *outgoing) {
event_add(event); event_add(event);
ifdebug(CONNECTIONS) logger(LOG_NOTICE, ifdebug(CONNECTIONS) logger(LOG_NOTICE,
_("Trying to re-establish outgoing connection in %d seconds"), "Trying to re-establish outgoing connection in %d seconds",
outgoing->timeout); outgoing->timeout);
} }
void finish_connecting(connection_t *c) { 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);
configure_tcp(c); configure_tcp(c);
@ -340,7 +340,7 @@ void do_outgoing_connection(connection_t *c) {
begin: begin:
if(!c->outgoing->ai) { if(!c->outgoing->ai) {
if(!c->outgoing->cfg) { if(!c->outgoing->cfg) {
ifdebug(CONNECTIONS) logger(LOG_ERR, _("Could not set up a meta connection to %s"), ifdebug(CONNECTIONS) logger(LOG_ERR, "Could not set up a meta connection to %s",
c->name); c->name);
c->status.remove = true; c->status.remove = true;
retry_outgoing(c->outgoing); retry_outgoing(c->outgoing);
@ -375,13 +375,13 @@ begin:
c->hostname = sockaddr2hostname(&c->address); c->hostname = sockaddr2hostname(&c->address);
ifdebug(CONNECTIONS) logger(LOG_INFO, _("Trying to connect to %s (%s)"), c->name, ifdebug(CONNECTIONS) logger(LOG_INFO, "Trying to connect to %s (%s)", c->name,
c->hostname); c->hostname);
c->socket = socket(c->address.sa.sa_family, SOCK_STREAM, IPPROTO_TCP); c->socket = socket(c->address.sa.sa_family, SOCK_STREAM, IPPROTO_TCP);
if(c->socket == -1) { if(c->socket == -1) {
ifdebug(CONNECTIONS) logger(LOG_ERR, _("Creating socket for %s failed: %s"), c->hostname, ifdebug(CONNECTIONS) logger(LOG_ERR, "Creating socket for %s failed: %s", c->hostname,
strerror(errno)); strerror(errno));
goto begin; goto begin;
@ -416,7 +416,7 @@ begin:
closesocket(c->socket); closesocket(c->socket);
ifdebug(CONNECTIONS) logger(LOG_ERR, _("%s: %s"), c->hostname, strerror(errno)); ifdebug(CONNECTIONS) logger(LOG_ERR, "%s: %s", c->hostname, strerror(errno));
goto begin; goto begin;
} }
@ -434,7 +434,7 @@ void setup_outgoing_connection(outgoing_t *outgoing) {
if(n) if(n)
if(n->connection) { if(n->connection) {
ifdebug(CONNECTIONS) logger(LOG_INFO, _("Already connected to %s"), outgoing->name); ifdebug(CONNECTIONS) logger(LOG_INFO, "Already connected to %s", outgoing->name);
n->connection->outgoing = outgoing; n->connection->outgoing = outgoing;
return; return;
@ -453,7 +453,7 @@ void setup_outgoing_connection(outgoing_t *outgoing) {
outgoing->cfg = lookup_config(c->config_tree, "Address"); outgoing->cfg = lookup_config(c->config_tree, "Address");
if(!outgoing->cfg) { if(!outgoing->cfg) {
logger(LOG_ERR, _("No address specified for %s"), c->name); logger(LOG_ERR, "No address specified for %s", c->name);
free_connection(c); free_connection(c);
return; return;
} }
@ -479,7 +479,7 @@ bool handle_new_meta_connection(int sock) {
fd = accept(sock, &sa.sa, &len); fd = accept(sock, &sa.sa, &len);
if(fd < 0) { if(fd < 0) {
logger(LOG_ERR, _("Accepting a new connection failed: %s"), logger(LOG_ERR, "Accepting a new connection failed: %s",
strerror(errno)); strerror(errno));
return false; return false;
} }
@ -498,7 +498,7 @@ bool handle_new_meta_connection(int sock) {
c->socket = fd; c->socket = fd;
c->last_ping_time = now; c->last_ping_time = now;
ifdebug(CONNECTIONS) logger(LOG_NOTICE, _("Connection from %s"), c->hostname); ifdebug(CONNECTIONS) logger(LOG_NOTICE, "Connection from %s", c->hostname);
configure_tcp(c); configure_tcp(c);
@ -543,7 +543,7 @@ void try_outgoing_connections(void) {
if(!check_id(name)) { if(!check_id(name)) {
logger(LOG_ERR, logger(LOG_ERR,
_("Invalid name for outgoing connection in %s line %d"), "Invalid name for outgoing connection in %s line %d",
cfg->file, cfg->line); cfg->file, cfg->line);
free(name); free(name);
continue; continue;

View file

@ -42,7 +42,7 @@ struct addrinfo *str2addrinfo(const char *address, const char *service, int sock
err = getaddrinfo(address, service, &hint, &ai); err = getaddrinfo(address, service, &hint, &ai);
if(err) { if(err) {
logger(LOG_WARNING, _("Error looking up %s port %s: %s"), address, logger(LOG_WARNING, "Error looking up %s port %s: %s", address,
service, gai_strerror(err)); service, gai_strerror(err));
return NULL; return NULL;
} }
@ -91,7 +91,7 @@ void sockaddr2str(const sockaddr_t *sa, char **addrstr, char **portstr) {
err = getnameinfo(&sa->sa, SALEN(sa->sa), address, sizeof(address), port, sizeof(port), NI_NUMERICHOST | NI_NUMERICSERV); err = getnameinfo(&sa->sa, SALEN(sa->sa), address, sizeof(address), port, sizeof(port), NI_NUMERICHOST | NI_NUMERICSERV);
if(err) { if(err) {
logger(LOG_ERR, _("Error while translating addresses: %s"), logger(LOG_ERR, "Error while translating addresses: %s",
gai_strerror(err)); gai_strerror(err));
raise(SIGFPE); raise(SIGFPE);
exit(0); exit(0);
@ -113,18 +113,18 @@ char *sockaddr2hostname(const sockaddr_t *sa) {
int err; int err;
if(sa->sa.sa_family == AF_UNKNOWN) { if(sa->sa.sa_family == AF_UNKNOWN) {
xasprintf(&str, _("%s port %s"), sa->unknown.address, sa->unknown.port); xasprintf(&str, "%s port %s", sa->unknown.address, sa->unknown.port);
return str; return str;
} }
err = getnameinfo(&sa->sa, SALEN(sa->sa), address, sizeof(address), port, sizeof(port), err = getnameinfo(&sa->sa, SALEN(sa->sa), address, sizeof(address), port, sizeof(port),
hostnames ? 0 : (NI_NUMERICHOST | NI_NUMERICSERV)); hostnames ? 0 : (NI_NUMERICHOST | NI_NUMERICSERV));
if(err) { if(err) {
logger(LOG_ERR, _("Error while looking up hostname: %s"), logger(LOG_ERR, "Error while looking up hostname: %s",
gai_strerror(err)); gai_strerror(err));
} }
xasprintf(&str, _("%s port %s"), address, port); xasprintf(&str, "%s port %s", address, port);
return str; return str;
} }
@ -151,7 +151,7 @@ int sockaddrcmp_noport(const sockaddr_t *a, const sockaddr_t *b) {
return memcmp(&a->in6.sin6_addr, &b->in6.sin6_addr, sizeof(a->in6.sin6_addr)); return memcmp(&a->in6.sin6_addr, &b->in6.sin6_addr, sizeof(a->in6.sin6_addr));
default: default:
logger(LOG_ERR, _("sockaddrcmp() was called with unknown address family %d, exitting!"), logger(LOG_ERR, "sockaddrcmp() was called with unknown address family %d, exitting!",
a->sa.sa_family); a->sa.sa_family);
raise(SIGFPE); raise(SIGFPE);
exit(0); exit(0);
@ -195,7 +195,7 @@ int sockaddrcmp(const sockaddr_t *a, const sockaddr_t *b) {
return memcmp(&a->in6.sin6_port, &b->in6.sin6_port, sizeof(a->in6.sin6_port)); return memcmp(&a->in6.sin6_port, &b->in6.sin6_port, sizeof(a->in6.sin6_port));
default: default:
logger(LOG_ERR, _("sockaddrcmp() was called with unknown address family %d, exitting!"), logger(LOG_ERR, "sockaddrcmp() was called with unknown address family %d, exitting!",
a->sa.sa_family); a->sa.sa_family);
raise(SIGFPE); raise(SIGFPE);
exit(0); exit(0);

View file

@ -158,16 +158,16 @@ void dump_nodes(void) {
avl_node_t *node; avl_node_t *node;
node_t *n; node_t *n;
logger(LOG_DEBUG, _("Nodes:")); logger(LOG_DEBUG, "Nodes:");
for(node = node_tree->head; node; node = node->next) { for(node = node_tree->head; node; node = node->next) {
n = node->data; n = node->data;
logger(LOG_DEBUG, _(" %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)"), logger(LOG_DEBUG, " %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)",
n->name, n->hostname, n->outcipher ? n->outcipher->nid : 0, n->name, n->hostname, n->outcipher ? n->outcipher->nid : 0,
n->outdigest ? n->outdigest->type : 0, n->outmaclength, n->outcompression, n->outdigest ? n->outdigest->type : 0, n->outmaclength, n->outcompression,
n->options, bitfield_to_int(&n->status, sizeof n->status), n->nexthop ? n->nexthop->name : "-", n->options, bitfield_to_int(&n->status, sizeof n->status), n->nexthop ? n->nexthop->name : "-",
n->via ? n->via->name : "-", n->mtu, n->minmtu, n->maxmtu); n->via ? n->via->name : "-", n->mtu, n->minmtu, n->maxmtu);
} }
logger(LOG_DEBUG, _("End of nodes.")); logger(LOG_DEBUG, "End of nodes.");
} }

View file

@ -48,7 +48,7 @@ sigset_t emptysigset;
static int saved_debug_level = -1; static int saved_debug_level = -1;
static void memory_full(int size) { static void memory_full(int size) {
logger(LOG_ERR, _("Memory exhausted (couldn't allocate %d bytes), exitting."), size); logger(LOG_ERR, "Memory exhausted (couldn't allocate %d bytes), exitting.", size);
exit(1); exit(1);
} }
@ -72,7 +72,7 @@ bool install_service(void) {
manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if(!manager) { if(!manager) {
logger(LOG_ERR, _("Could not open service manager: %s"), winerror(GetLastError())); logger(LOG_ERR, "Could not open service manager: %s", winerror(GetLastError()));
return false; return false;
} }
@ -103,18 +103,18 @@ bool install_service(void) {
command, NULL, NULL, NULL, NULL, NULL); command, NULL, NULL, NULL, NULL, NULL);
if(!service) { if(!service) {
logger(LOG_ERR, _("Could not create %s service: %s"), identname, winerror(GetLastError())); logger(LOG_ERR, "Could not create %s service: %s", identname, winerror(GetLastError()));
return false; return false;
} }
ChangeServiceConfig2(service, SERVICE_CONFIG_DESCRIPTION, &description); ChangeServiceConfig2(service, SERVICE_CONFIG_DESCRIPTION, &description);
logger(LOG_INFO, _("%s service installed"), identname); logger(LOG_INFO, "%s service installed", identname);
if(!StartService(service, 0, NULL)) if(!StartService(service, 0, NULL))
logger(LOG_WARNING, _("Could not start %s service: %s"), identname, winerror(GetLastError())); logger(LOG_WARNING, "Could not start %s service: %s", identname, winerror(GetLastError()));
else else
logger(LOG_INFO, _("%s service started"), identname); logger(LOG_INFO, "%s service started", identname);
return true; return true;
} }
@ -122,28 +122,28 @@ bool install_service(void) {
bool remove_service(void) { bool remove_service(void) {
manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if(!manager) { if(!manager) {
logger(LOG_ERR, _("Could not open service manager: %s"), winerror(GetLastError())); logger(LOG_ERR, "Could not open service manager: %s", winerror(GetLastError()));
return false; return false;
} }
service = OpenService(manager, identname, SERVICE_ALL_ACCESS); service = OpenService(manager, identname, SERVICE_ALL_ACCESS);
if(!service) { if(!service) {
logger(LOG_ERR, _("Could not open %s service: %s"), identname, winerror(GetLastError())); logger(LOG_ERR, "Could not open %s service: %s", identname, winerror(GetLastError()));
return false; return false;
} }
if(!ControlService(service, SERVICE_CONTROL_STOP, &status)) if(!ControlService(service, SERVICE_CONTROL_STOP, &status))
logger(LOG_ERR, _("Could not stop %s service: %s"), identname, winerror(GetLastError())); logger(LOG_ERR, "Could not stop %s service: %s", identname, winerror(GetLastError()));
else else
logger(LOG_INFO, _("%s service stopped"), identname); logger(LOG_INFO, "%s service stopped", identname);
if(!DeleteService(service)) { if(!DeleteService(service)) {
logger(LOG_ERR, _("Could not remove %s service: %s"), identname, winerror(GetLastError())); logger(LOG_ERR, "Could not remove %s service: %s", identname, winerror(GetLastError()));
return false; return false;
} }
logger(LOG_INFO, _("%s service removed"), identname); logger(LOG_INFO, "%s service removed", identname);
return true; return true;
} }
@ -154,13 +154,13 @@ DWORD WINAPI controlhandler(DWORD request, DWORD type, LPVOID boe, LPVOID bah) {
SetServiceStatus(statushandle, &status); SetServiceStatus(statushandle, &status);
return NO_ERROR; return NO_ERROR;
case SERVICE_CONTROL_STOP: case SERVICE_CONTROL_STOP:
logger(LOG_NOTICE, _("Got %s request"), "SERVICE_CONTROL_STOP"); logger(LOG_NOTICE, "Got %s request", "SERVICE_CONTROL_STOP");
break; break;
case SERVICE_CONTROL_SHUTDOWN: case SERVICE_CONTROL_SHUTDOWN:
logger(LOG_NOTICE, _("Got %s request"), "SERVICE_CONTROL_SHUTDOWN"); logger(LOG_NOTICE, "Got %s request", "SERVICE_CONTROL_SHUTDOWN");
break; break;
default: default:
logger(LOG_WARNING, _("Got unexpected request %d"), request); logger(LOG_WARNING, "Got unexpected request %d", request);
return ERROR_CALL_NOT_IMPLEMENTED; return ERROR_CALL_NOT_IMPLEMENTED;
} }
@ -193,7 +193,7 @@ VOID WINAPI run_service(DWORD argc, LPTSTR* argv) {
statushandle = RegisterServiceCtrlHandlerEx(identname, controlhandler, NULL); statushandle = RegisterServiceCtrlHandlerEx(identname, controlhandler, NULL);
if (!statushandle) { if (!statushandle) {
logger(LOG_ERR, _("System call `%s' failed: %s"), "RegisterServiceCtrlHandlerEx", winerror(GetLastError())); logger(LOG_ERR, "System call `%s' failed: %s", "RegisterServiceCtrlHandlerEx", winerror(GetLastError()));
err = 1; err = 1;
} else { } else {
status.dwWaitHint = 30000; status.dwWaitHint = 30000;
@ -226,7 +226,7 @@ bool init_service(void) {
return false; return false;
} }
else else
logger(LOG_ERR, _("System call `%s' failed: %s"), "StartServiceCtrlDispatcher", winerror(GetLastError())); logger(LOG_ERR, "System call `%s' failed: %s", "StartServiceCtrlDispatcher", winerror(GetLastError()));
} }
return true; return true;
@ -244,16 +244,16 @@ static bool write_pidfile(void) {
if(pid) { if(pid) {
if(netname) if(netname)
fprintf(stderr, _("A tincd is already running for net `%s' with pid %ld.\n"), fprintf(stderr, "A tincd is already running for net `%s' with pid %ld.\n",
netname, (long)pid); netname, (long)pid);
else else
fprintf(stderr, _("A tincd is already running with pid %ld.\n"), (long)pid); fprintf(stderr, "A tincd is already running with pid %ld.\n", (long)pid);
return false; return false;
} }
/* if it's locked, write-protected, or whatever */ /* if it's locked, write-protected, or whatever */
if(!write_pid(pidfilename)) { if(!write_pid(pidfilename)) {
fprintf(stderr, _("Could write pid file %s: %s\n"), pidfilename, strerror(errno)); fprintf(stderr, "Could write pid file %s: %s\n", pidfilename, strerror(errno));
return false; return false;
} }
@ -272,10 +272,10 @@ bool kill_other(int signal) {
if(!pid) { if(!pid) {
if(netname) if(netname)
fprintf(stderr, _("No other tincd is running for net `%s'.\n"), fprintf(stderr, "No other tincd is running for net `%s'.\n",
netname); netname);
else else
fprintf(stderr, _("No other tincd is running.\n")); fprintf(stderr, "No other tincd is running.\n");
return false; return false;
} }
@ -284,12 +284,12 @@ bool kill_other(int signal) {
/* ESRCH is returned when no process with that pid is found */ /* ESRCH is returned when no process with that pid is found */
if(kill(pid, signal) && errno == ESRCH) { if(kill(pid, signal) && errno == ESRCH) {
if(netname) if(netname)
fprintf(stderr, _("The tincd for net `%s' is no longer running. "), fprintf(stderr, "The tincd for net `%s' is no longer running. ",
netname); netname);
else else
fprintf(stderr, _("The tincd is no longer running. ")); fprintf(stderr, "The tincd is no longer running. ");
fprintf(stderr, _("Removing stale lock file.\n")); fprintf(stderr, "Removing stale lock file.\n");
remove_pid(pidfilename); remove_pid(pidfilename);
} }
@ -319,7 +319,7 @@ bool detach(void) {
if(do_detach) { if(do_detach) {
#ifndef HAVE_MINGW #ifndef HAVE_MINGW
if(daemon(0, 0)) { if(daemon(0, 0)) {
fprintf(stderr, _("Couldn't detach from terminal: %s"), fprintf(stderr, "Couldn't detach from terminal: %s",
strerror(errno)); strerror(errno));
return false; return false;
} }
@ -327,7 +327,7 @@ bool detach(void) {
/* Now UPDATE the pid in the pidfile, because we changed it... */ /* Now UPDATE the pid in the pidfile, because we changed it... */
if(!write_pid(pidfilename)) { if(!write_pid(pidfilename)) {
fprintf(stderr, _("Could not write pid file %s: %s\n"), pidfilename, strerror(errno)); fprintf(stderr, "Could not write pid file %s: %s\n", pidfilename, strerror(errno));
return false; return false;
} }
#else #else
@ -338,7 +338,7 @@ bool detach(void) {
openlogger(identname, use_logfile?LOGMODE_FILE:(do_detach?LOGMODE_SYSLOG:LOGMODE_STDERR)); openlogger(identname, use_logfile?LOGMODE_FILE:(do_detach?LOGMODE_SYSLOG:LOGMODE_STDERR));
logger(LOG_NOTICE, _("tincd %s (%s %s) starting, debug level %d"), logger(LOG_NOTICE, "tincd %s (%s %s) starting, debug level %d",
VERSION, __DATE__, __TIME__, debug_level); VERSION, __DATE__, __TIME__, debug_level);
xalloc_fail_func = memory_full; xalloc_fail_func = memory_full;
@ -371,7 +371,7 @@ bool execute_script(const char *name, char **envp) {
} }
#endif #endif
ifdebug(STATUS) logger(LOG_INFO, _("Executing script %s"), name); ifdebug(STATUS) logger(LOG_INFO, "Executing script %s", name);
#ifdef HAVE_PUTENV #ifdef HAVE_PUTENV
/* Set environment */ /* Set environment */
@ -401,20 +401,20 @@ bool execute_script(const char *name, char **envp) {
if(status != -1) { if(status != -1) {
if(WIFEXITED(status)) { /* Child exited by itself */ if(WIFEXITED(status)) { /* Child exited by itself */
if(WEXITSTATUS(status)) { if(WEXITSTATUS(status)) {
logger(LOG_ERR, _("Script %s exited with non-zero status %d"), logger(LOG_ERR, "Script %s exited with non-zero status %d",
name, WEXITSTATUS(status)); name, WEXITSTATUS(status));
return false; return false;
} }
} else if(WIFSIGNALED(status)) { /* Child was killed by a signal */ } else if(WIFSIGNALED(status)) { /* Child was killed by a signal */
logger(LOG_ERR, _("Script %s was killed by signal %d (%s)"), logger(LOG_ERR, "Script %s was killed by signal %d (%s)",
name, WTERMSIG(status), strsignal(WTERMSIG(status))); name, WTERMSIG(status), strsignal(WTERMSIG(status)));
return false; return false;
} else { /* Something strange happened */ } else { /* Something strange happened */
logger(LOG_ERR, _("Script %s terminated abnormally"), name); logger(LOG_ERR, "Script %s terminated abnormally", name);
return false; return false;
} }
} else { } else {
logger(LOG_ERR, _("System call `%s' failed: %s"), "system", strerror(errno)); logger(LOG_ERR, "System call `%s' failed: %s", "system", strerror(errno));
return false; return false;
} }
#endif #endif
@ -429,7 +429,7 @@ bool execute_script(const char *name, char **envp) {
#ifndef HAVE_MINGW #ifndef HAVE_MINGW
static RETSIGTYPE sigterm_handler(int a) { static RETSIGTYPE sigterm_handler(int a) {
logger(LOG_NOTICE, _("Got %s signal"), "TERM"); logger(LOG_NOTICE, "Got %s signal", "TERM");
if(running) if(running)
running = false; running = false;
else else
@ -437,7 +437,7 @@ static RETSIGTYPE sigterm_handler(int a) {
} }
static RETSIGTYPE sigquit_handler(int a) { static RETSIGTYPE sigquit_handler(int a) {
logger(LOG_NOTICE, _("Got %s signal"), "QUIT"); logger(LOG_NOTICE, "Got %s signal", "QUIT");
if(running) if(running)
running = false; running = false;
else else
@ -445,17 +445,17 @@ static RETSIGTYPE sigquit_handler(int a) {
} }
static RETSIGTYPE fatal_signal_square(int a) { static RETSIGTYPE fatal_signal_square(int a) {
logger(LOG_ERR, _("Got another fatal signal %d (%s): not restarting."), a, logger(LOG_ERR, "Got another fatal signal %d (%s): not restarting.", a,
strsignal(a)); strsignal(a));
exit(1); exit(1);
} }
static RETSIGTYPE fatal_signal_handler(int a) { static RETSIGTYPE fatal_signal_handler(int a) {
struct sigaction act; struct sigaction act;
logger(LOG_ERR, _("Got fatal signal %d (%s)"), a, strsignal(a)); logger(LOG_ERR, "Got fatal signal %d (%s)", a, strsignal(a));
if(do_detach) { if(do_detach) {
logger(LOG_NOTICE, _("Trying to re-execute in 5 seconds...")); logger(LOG_NOTICE, "Trying to re-execute in 5 seconds...");
act.sa_handler = fatal_signal_square; act.sa_handler = fatal_signal_square;
act.sa_mask = emptysigset; act.sa_mask = emptysigset;
@ -467,27 +467,27 @@ static RETSIGTYPE fatal_signal_handler(int a) {
remove_pid(pidfilename); remove_pid(pidfilename);
execvp(g_argv[0], g_argv); execvp(g_argv[0], g_argv);
} else { } else {
logger(LOG_NOTICE, _("Not restarting.")); logger(LOG_NOTICE, "Not restarting.");
exit(1); exit(1);
} }
} }
static RETSIGTYPE sighup_handler(int a) { static RETSIGTYPE sighup_handler(int a) {
logger(LOG_NOTICE, _("Got %s signal"), "HUP"); logger(LOG_NOTICE, "Got %s signal", "HUP");
sighup = true; sighup = true;
} }
static RETSIGTYPE sigint_handler(int a) { static RETSIGTYPE sigint_handler(int a) {
logger(LOG_NOTICE, _("Got %s signal"), "INT"); logger(LOG_NOTICE, "Got %s signal", "INT");
if(saved_debug_level != -1) { if(saved_debug_level != -1) {
logger(LOG_NOTICE, _("Reverting to old debug level (%d)"), logger(LOG_NOTICE, "Reverting to old debug level (%d)",
saved_debug_level); saved_debug_level);
debug_level = saved_debug_level; debug_level = saved_debug_level;
saved_debug_level = -1; saved_debug_level = -1;
} else { } else {
logger(LOG_NOTICE, logger(LOG_NOTICE,
_("Temporarily setting debug level to 5. Kill me with SIGINT again to go back to level %d."), "Temporarily setting debug level to 5. Kill me with SIGINT again to go back to level %d.",
debug_level); debug_level);
saved_debug_level = debug_level; saved_debug_level = debug_level;
debug_level = 5; debug_level = 5;
@ -495,7 +495,7 @@ static RETSIGTYPE sigint_handler(int a) {
} }
static RETSIGTYPE sigalrm_handler(int a) { static RETSIGTYPE sigalrm_handler(int a) {
logger(LOG_NOTICE, _("Got %s signal"), "ALRM"); logger(LOG_NOTICE, "Got %s signal", "ALRM");
sigalrm = true; sigalrm = true;
} }
@ -515,11 +515,11 @@ static RETSIGTYPE sigwinch_handler(int a) {
} }
static RETSIGTYPE unexpected_signal_handler(int a) { static RETSIGTYPE unexpected_signal_handler(int a) {
logger(LOG_WARNING, _("Got unexpected signal %d (%s)"), a, strsignal(a)); logger(LOG_WARNING, "Got unexpected signal %d (%s)", a, strsignal(a));
} }
static RETSIGTYPE ignore_signal_handler(int a) { static RETSIGTYPE ignore_signal_handler(int a) {
ifdebug(SCARY_THINGS) logger(LOG_DEBUG, _("Ignored signal %d (%s)"), a, strsignal(a)); ifdebug(SCARY_THINGS) logger(LOG_DEBUG, "Ignored signal %d (%s)", a, strsignal(a));
} }
static struct { static struct {
@ -572,7 +572,7 @@ void setup_signals(void) {
for(i = 0; sighandlers[i].signal; i++) { for(i = 0; sighandlers[i].signal; i++) {
act.sa_handler = sighandlers[i].handler; act.sa_handler = sighandlers[i].handler;
if(sigaction(sighandlers[i].signal, &act, NULL) < 0) if(sigaction(sighandlers[i].signal, &act, NULL) < 0)
fprintf(stderr, _("Installing signal handler for signal %d (%s) failed: %s\n"), fprintf(stderr, "Installing signal handler for signal %d (%s) failed: %s\n",
sighandlers[i].signal, strsignal(sighandlers[i].signal), sighandlers[i].signal, strsignal(sighandlers[i].signal),
strerror(errno)); strerror(errno));
} }

View file

@ -78,7 +78,7 @@ bool send_request(connection_t *c, const char *format, ...) {
va_end(args); va_end(args);
if(len < 0 || len > MAXBUFSIZE - 1) { if(len < 0 || len > MAXBUFSIZE - 1) {
logger(LOG_ERR, _("Output buffer overflow while sending request to %s (%s)"), logger(LOG_ERR, "Output buffer overflow while sending request to %s (%s)",
c->name, c->hostname); c->name, c->hostname);
return false; return false;
} }
@ -86,10 +86,10 @@ bool send_request(connection_t *c, const char *format, ...) {
ifdebug(PROTOCOL) { ifdebug(PROTOCOL) {
sscanf(buffer, "%d", &request); sscanf(buffer, "%d", &request);
ifdebug(META) ifdebug(META)
logger(LOG_DEBUG, _("Sending %s to %s (%s): %s"), logger(LOG_DEBUG, "Sending %s to %s (%s): %s",
request_name[request], c->name, c->hostname, buffer); request_name[request], c->name, c->hostname, buffer);
else else
logger(LOG_DEBUG, _("Sending %s to %s (%s)"), request_name[request], logger(LOG_DEBUG, "Sending %s to %s (%s)", request_name[request],
c->name, c->hostname); c->name, c->hostname);
} }
@ -108,11 +108,11 @@ void forward_request(connection_t *from) {
ifdebug(PROTOCOL) { ifdebug(PROTOCOL) {
sscanf(from->buffer, "%d", &request); sscanf(from->buffer, "%d", &request);
ifdebug(META) ifdebug(META)
logger(LOG_DEBUG, _("Forwarding %s from %s (%s): %s"), logger(LOG_DEBUG, "Forwarding %s from %s (%s): %s",
request_name[request], from->name, from->hostname, request_name[request], from->name, from->hostname,
from->buffer); from->buffer);
else else
logger(LOG_DEBUG, _("Forwarding %s from %s (%s)"), logger(LOG_DEBUG, "Forwarding %s from %s (%s)",
request_name[request], from->name, from->hostname); request_name[request], from->name, from->hostname);
} }
@ -127,27 +127,27 @@ bool receive_request(connection_t *c) {
if(sscanf(c->buffer, "%d", &request) == 1) { if(sscanf(c->buffer, "%d", &request) == 1) {
if((request < 0) || (request >= LAST) || !request_handlers[request]) { if((request < 0) || (request >= LAST) || !request_handlers[request]) {
ifdebug(META) ifdebug(META)
logger(LOG_DEBUG, _("Unknown request from %s (%s): %s"), logger(LOG_DEBUG, "Unknown request from %s (%s): %s",
c->name, c->hostname, c->buffer); c->name, c->hostname, c->buffer);
else else
logger(LOG_ERR, _("Unknown request from %s (%s)"), logger(LOG_ERR, "Unknown request from %s (%s)",
c->name, c->hostname); c->name, c->hostname);
return false; return false;
} else { } else {
ifdebug(PROTOCOL) { ifdebug(PROTOCOL) {
ifdebug(META) ifdebug(META)
logger(LOG_DEBUG, _("Got %s from %s (%s): %s"), logger(LOG_DEBUG, "Got %s from %s (%s): %s",
request_name[request], c->name, c->hostname, request_name[request], c->name, c->hostname,
c->buffer); c->buffer);
else else
logger(LOG_DEBUG, _("Got %s from %s (%s)"), logger(LOG_DEBUG, "Got %s from %s (%s)",
request_name[request], c->name, c->hostname); request_name[request], c->name, c->hostname);
} }
} }
if((c->allow_request != ALL) && (c->allow_request != request)) { if((c->allow_request != ALL) && (c->allow_request != request)) {
logger(LOG_ERR, _("Unauthorized request from %s (%s)"), c->name, logger(LOG_ERR, "Unauthorized request from %s (%s)", c->name,
c->hostname); c->hostname);
return false; return false;
} }
@ -155,12 +155,12 @@ bool receive_request(connection_t *c) {
if(!request_handlers[request](c)) { if(!request_handlers[request](c)) {
/* Something went wrong. Probably scriptkiddies. Terminate. */ /* Something went wrong. Probably scriptkiddies. Terminate. */
logger(LOG_ERR, _("Error while processing %s from %s (%s)"), logger(LOG_ERR, "Error while processing %s from %s (%s)",
request_name[request], c->name, c->hostname); request_name[request], c->name, c->hostname);
return false; return false;
} }
} else { } else {
logger(LOG_ERR, _("Bogus data received from %s (%s)"), logger(LOG_ERR, "Bogus data received from %s (%s)",
c->name, c->hostname); c->name, c->hostname);
return false; return false;
} }
@ -193,7 +193,7 @@ bool seen_request(char *request) {
p.request = request; p.request = request;
if(avl_search(past_request_tree, &p)) { if(avl_search(past_request_tree, &p)) {
ifdebug(SCARY_THINGS) logger(LOG_DEBUG, _("Already seen request")); ifdebug(SCARY_THINGS) logger(LOG_DEBUG, "Already seen request");
return true; return true;
} else { } else {
new = xmalloc(sizeof(*new)); new = xmalloc(sizeof(*new));
@ -220,6 +220,6 @@ void age_past_requests(void) {
} }
if(left || deleted) if(left || deleted)
ifdebug(SCARY_THINGS) logger(LOG_DEBUG, _("Aging past requests: deleted %d, left %d"), ifdebug(SCARY_THINGS) logger(LOG_DEBUG, "Aging past requests: deleted %d, left %d",
deleted, left); deleted, left);
} }

View file

@ -47,7 +47,7 @@ bool id_h(connection_t *c) {
char name[MAX_STRING_SIZE]; char name[MAX_STRING_SIZE];
if(sscanf(c->buffer, "%*d " MAX_STRING " %d", name, &c->protocol_version) != 2) { if(sscanf(c->buffer, "%*d " MAX_STRING " %d", name, &c->protocol_version) != 2) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "ID", c->name, logger(LOG_ERR, "Got bad %s from %s (%s)", "ID", c->name,
c->hostname); c->hostname);
return false; return false;
} }
@ -55,7 +55,7 @@ bool id_h(connection_t *c) {
/* Check if identity is a valid name */ /* Check if identity is a valid name */
if(!check_id(name)) { if(!check_id(name)) {
logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "ID", c->name, logger(LOG_ERR, "Got bad %s from %s (%s): %s", "ID", c->name,
c->hostname, "invalid name"); c->hostname, "invalid name");
return false; return false;
} }
@ -64,7 +64,7 @@ bool id_h(connection_t *c) {
if(c->outgoing) { if(c->outgoing) {
if(strcmp(c->name, name)) { if(strcmp(c->name, name)) {
logger(LOG_ERR, _("Peer %s is %s instead of %s"), c->hostname, name, logger(LOG_ERR, "Peer %s is %s instead of %s", c->hostname, name,
c->name); c->name);
return false; return false;
} }
@ -77,7 +77,7 @@ bool id_h(connection_t *c) {
/* Check if version matches */ /* Check if version matches */
if(c->protocol_version != myself->connection->protocol_version) { if(c->protocol_version != myself->connection->protocol_version) {
logger(LOG_ERR, _("Peer %s (%s) uses incompatible version %d"), logger(LOG_ERR, "Peer %s (%s) uses incompatible version %d",
c->name, c->hostname, c->protocol_version); c->name, c->hostname, c->protocol_version);
return false; return false;
} }
@ -93,7 +93,7 @@ bool id_h(connection_t *c) {
init_configuration(&c->config_tree); init_configuration(&c->config_tree);
if(!read_connection_config(c)) { if(!read_connection_config(c)) {
logger(LOG_ERR, _("Peer %s had unknown identity (%s)"), c->hostname, logger(LOG_ERR, "Peer %s had unknown identity (%s)", c->hostname,
c->name); c->name);
return false; return false;
} }
@ -143,7 +143,7 @@ bool send_metakey(connection_t *c) {
ifdebug(SCARY_THINGS) { ifdebug(SCARY_THINGS) {
bin2hex(c->outkey, buffer, len); bin2hex(c->outkey, buffer, len);
buffer[len * 2] = '\0'; buffer[len * 2] = '\0';
logger(LOG_DEBUG, _("Generated random meta key (unencrypted): %s"), logger(LOG_DEBUG, "Generated random meta key (unencrypted): %s",
buffer); buffer);
} }
@ -155,7 +155,7 @@ bool send_metakey(connection_t *c) {
*/ */
if(RSA_public_encrypt(len, (unsigned char *)c->outkey, (unsigned char *)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;
} }
@ -179,7 +179,7 @@ bool send_metakey(connection_t *c) {
(unsigned char *)c->outkey + len - c->outcipher->key_len, (unsigned char *)c->outkey + len - c->outcipher->key_len,
(unsigned char *)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));
return false; return false;
} }
@ -196,7 +196,7 @@ bool metakey_h(connection_t *c) {
int len; int len;
if(sscanf(c->buffer, "%*d %d %d %d %d " MAX_STRING, &cipher, &digest, &maclength, &compression, buffer) != 5) { if(sscanf(c->buffer, "%*d %d %d %d %d " MAX_STRING, &cipher, &digest, &maclength, &compression, buffer) != 5) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "METAKEY", c->name, logger(LOG_ERR, "Got bad %s from %s (%s)", "METAKEY", c->name,
c->hostname); c->hostname);
return false; return false;
} }
@ -206,7 +206,7 @@ bool metakey_h(connection_t *c) {
/* Check if the length of the meta key is all right */ /* Check if the length of the meta key is all right */
if(strlen(buffer) != len * 2) { if(strlen(buffer) != len * 2) {
logger(LOG_ERR, _("Possible intruder %s (%s): %s"), c->name, c->hostname, "wrong keylength"); logger(LOG_ERR, "Possible intruder %s (%s): %s", c->name, c->hostname, "wrong keylength");
return false; return false;
} }
@ -224,7 +224,7 @@ bool metakey_h(connection_t *c) {
/* Decrypt the meta key */ /* Decrypt the meta key */
if(RSA_private_decrypt(len, (unsigned char *)buffer, (unsigned char *)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 decryption of meta key for %s (%s)"), logger(LOG_ERR, "Error during decryption of meta key for %s (%s)",
c->name, c->hostname); c->name, c->hostname);
return false; return false;
} }
@ -232,7 +232,7 @@ bool metakey_h(connection_t *c) {
ifdebug(SCARY_THINGS) { ifdebug(SCARY_THINGS) {
bin2hex(c->inkey, buffer, len); bin2hex(c->inkey, buffer, len);
buffer[len * 2] = '\0'; buffer[len * 2] = '\0';
logger(LOG_DEBUG, _("Received random meta key (unencrypted): %s"), buffer); logger(LOG_DEBUG, "Received random meta key (unencrypted): %s", buffer);
} }
/* All incoming requests will now be encrypted. */ /* All incoming requests will now be encrypted. */
@ -243,7 +243,7 @@ bool metakey_h(connection_t *c) {
c->incipher = EVP_get_cipherbynid(cipher); c->incipher = EVP_get_cipherbynid(cipher);
if(!c->incipher) { if(!c->incipher) {
logger(LOG_ERR, _("%s (%s) uses unknown cipher!"), c->name, c->hostname); logger(LOG_ERR, "%s (%s) uses unknown cipher!", c->name, c->hostname);
return false; return false;
} }
@ -251,7 +251,7 @@ bool metakey_h(connection_t *c) {
(unsigned char *)c->inkey + len - c->incipher->key_len, (unsigned char *)c->inkey + len - c->incipher->key_len,
(unsigned char *)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));
return false; return false;
} }
@ -267,12 +267,12 @@ bool metakey_h(connection_t *c) {
c->indigest = EVP_get_digestbynid(digest); c->indigest = EVP_get_digestbynid(digest);
if(!c->indigest) { if(!c->indigest) {
logger(LOG_ERR, _("Node %s (%s) uses unknown digest!"), c->name, c->hostname); logger(LOG_ERR, "Node %s (%s) uses unknown digest!", c->name, c->hostname);
return false; return false;
} }
if(c->inmaclength > c->indigest->md_size || c->inmaclength < 0) { if(c->inmaclength > c->indigest->md_size || c->inmaclength < 0) {
logger(LOG_ERR, _("%s (%s) uses bogus MAC length!"), c->name, c->hostname); logger(LOG_ERR, "%s (%s) uses bogus MAC length!", c->name, c->hostname);
return false; return false;
} }
} else { } else {
@ -319,7 +319,7 @@ bool challenge_h(connection_t *c) {
int len; int len;
if(sscanf(c->buffer, "%*d " MAX_STRING, buffer) != 1) { if(sscanf(c->buffer, "%*d " MAX_STRING, buffer) != 1) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "CHALLENGE", c->name, logger(LOG_ERR, "Got bad %s from %s (%s)", "CHALLENGE", c->name,
c->hostname); c->hostname);
return false; return false;
} }
@ -329,7 +329,7 @@ bool challenge_h(connection_t *c) {
/* Check if the length of the challenge is all right */ /* Check if the length of the challenge is all right */
if(strlen(buffer) != len * 2) { if(strlen(buffer) != len * 2) {
logger(LOG_ERR, _("Possible intruder %s (%s): %s"), c->name, logger(LOG_ERR, "Possible intruder %s (%s): %s", c->name,
c->hostname, "wrong challenge length"); c->hostname, "wrong challenge length");
return false; return false;
} }
@ -358,7 +358,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, (unsigned char *)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;
} }
@ -379,7 +379,7 @@ bool chal_reply_h(connection_t *c) {
EVP_MD_CTX ctx; EVP_MD_CTX ctx;
if(sscanf(c->buffer, "%*d " MAX_STRING, hishash) != 1) { if(sscanf(c->buffer, "%*d " MAX_STRING, hishash) != 1) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "CHAL_REPLY", c->name, logger(LOG_ERR, "Got bad %s from %s (%s)", "CHAL_REPLY", c->name,
c->hostname); c->hostname);
return false; return false;
} }
@ -387,8 +387,8 @@ bool chal_reply_h(connection_t *c) {
/* Check if the length of the hash is all right */ /* Check if the length of the hash is all right */
if(strlen(hishash) != c->outdigest->md_size * 2) { if(strlen(hishash) != c->outdigest->md_size * 2) {
logger(LOG_ERR, _("Possible intruder %s (%s): %s"), c->name, logger(LOG_ERR, "Possible intruder %s (%s): %s", c->name,
c->hostname, _("wrong challenge reply length")); c->hostname, "wrong challenge reply length");
return false; return false;
} }
@ -401,7 +401,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, (unsigned char *)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;
} }
@ -409,13 +409,13 @@ bool chal_reply_h(connection_t *c) {
/* Verify the incoming hash with the calculated hash */ /* Verify the incoming hash with the calculated hash */
if(memcmp(hishash, myhash, c->outdigest->md_size)) { if(memcmp(hishash, myhash, c->outdigest->md_size)) {
logger(LOG_ERR, _("Possible intruder %s (%s): %s"), c->name, logger(LOG_ERR, "Possible intruder %s (%s): %s", c->name,
c->hostname, _("wrong challenge reply")); c->hostname, "wrong challenge reply");
ifdebug(SCARY_THINGS) { ifdebug(SCARY_THINGS) {
bin2hex(myhash, hishash, SHA_DIGEST_LENGTH); bin2hex(myhash, hishash, SHA_DIGEST_LENGTH);
hishash[SHA_DIGEST_LENGTH * 2] = '\0'; hishash[SHA_DIGEST_LENGTH * 2] = '\0';
logger(LOG_DEBUG, _("Expected challenge reply: %s"), hishash); logger(LOG_DEBUG, "Expected challenge reply: %s", hishash);
} }
return false; return false;
@ -498,7 +498,7 @@ bool ack_h(connection_t *c) {
node_t *n; node_t *n;
if(sscanf(c->buffer, "%*d " MAX_STRING " %d %lx", hisport, &weight, &options) != 3) { if(sscanf(c->buffer, "%*d " MAX_STRING " %d %lx", hisport, &weight, &options) != 3) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "ACK", c->name, logger(LOG_ERR, "Got bad %s from %s (%s)", "ACK", c->name,
c->hostname); c->hostname);
return false; return false;
} }
@ -514,7 +514,7 @@ bool ack_h(connection_t *c) {
} else { } else {
if(n->connection) { if(n->connection) {
/* Oh dear, we already have a connection to this node. */ /* Oh dear, we already have a connection to this node. */
ifdebug(CONNECTIONS) logger(LOG_DEBUG, _("Established a second connection with %s (%s), closing old connection"), ifdebug(CONNECTIONS) logger(LOG_DEBUG, "Established a second connection with %s (%s), closing old connection",
n->name, n->hostname); n->name, n->hostname);
terminate_connection(n->connection, false); terminate_connection(n->connection, false);
/* Run graph algorithm to purge key and make sure up/down scripts are rerun with new IP addresses and stuff */ /* Run graph algorithm to purge key and make sure up/down scripts are rerun with new IP addresses and stuff */
@ -541,7 +541,7 @@ bool ack_h(connection_t *c) {
c->allow_request = ALL; c->allow_request = ALL;
c->status.active = true; c->status.active = true;
ifdebug(CONNECTIONS) logger(LOG_NOTICE, _("Connection with %s (%s) activated"), c->name, ifdebug(CONNECTIONS) logger(LOG_NOTICE, "Connection with %s (%s) activated", c->name,
c->hostname); c->hostname);
/* Send him everything we know */ /* Send him everything we know */

View file

@ -63,7 +63,7 @@ bool add_edge_h(connection_t *c) {
if(sscanf(c->buffer, "%*d %*x "MAX_STRING" "MAX_STRING" "MAX_STRING" "MAX_STRING" %lx %d", if(sscanf(c->buffer, "%*d %*x "MAX_STRING" "MAX_STRING" "MAX_STRING" "MAX_STRING" %lx %d",
from_name, to_name, to_address, to_port, &options, &weight) != 6) { from_name, to_name, to_address, to_port, &options, &weight) != 6) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "ADD_EDGE", c->name, logger(LOG_ERR, "Got bad %s from %s (%s)", "ADD_EDGE", c->name,
c->hostname); c->hostname);
return false; return false;
} }
@ -71,14 +71,14 @@ bool add_edge_h(connection_t *c) {
/* Check if names are valid */ /* Check if names are valid */
if(!check_id(from_name)) { if(!check_id(from_name)) {
logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "ADD_EDGE", c->name, logger(LOG_ERR, "Got bad %s from %s (%s): %s", "ADD_EDGE", c->name,
c->hostname, _("invalid name")); c->hostname, "invalid name");
return false; return false;
} }
if(!check_id(to_name)) { if(!check_id(to_name)) {
logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "ADD_EDGE", c->name, logger(LOG_ERR, "Got bad %s from %s (%s): %s", "ADD_EDGE", c->name,
c->hostname, _("invalid name")); c->hostname, "invalid name");
return false; return false;
} }
@ -95,7 +95,7 @@ bool add_edge_h(connection_t *c) {
to != myself && to != c->node) { to != myself && to != c->node) {
/* ignore indirect edge registrations for tunnelserver */ /* ignore indirect edge registrations for tunnelserver */
ifdebug(PROTOCOL) logger(LOG_WARNING, ifdebug(PROTOCOL) logger(LOG_WARNING,
_("Ignoring indirect %s from %s (%s)"), "Ignoring indirect %s from %s (%s)",
"ADD_EDGE", c->name, c->hostname); "ADD_EDGE", c->name, c->hostname);
return true; return true;
} }
@ -124,12 +124,12 @@ bool add_edge_h(connection_t *c) {
if(e) { if(e) {
if(e->weight != weight || e->options != options || sockaddrcmp(&e->address, &address)) { if(e->weight != weight || e->options != options || sockaddrcmp(&e->address, &address)) {
if(from == myself) { if(from == myself) {
ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for ourself which does not match existing entry"), ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for ourself which does not match existing entry",
"ADD_EDGE", c->name, c->hostname); "ADD_EDGE", c->name, c->hostname);
send_add_edge(c, e); send_add_edge(c, e);
return true; return true;
} else { } else {
ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) which does not match existing entry"), ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) which does not match existing entry",
"ADD_EDGE", c->name, c->hostname); "ADD_EDGE", c->name, c->hostname);
edge_del(e); edge_del(e);
graph(); graph();
@ -137,7 +137,7 @@ bool add_edge_h(connection_t *c) {
} else } else
return true; return true;
} else if(from == myself) { } else if(from == myself) {
ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for ourself which does not exist"), ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for ourself which does not exist",
"ADD_EDGE", c->name, c->hostname); "ADD_EDGE", c->name, c->hostname);
e = new_edge(); e = new_edge();
e->from = from; e->from = from;
@ -179,7 +179,7 @@ bool del_edge_h(connection_t *c) {
node_t *from, *to; node_t *from, *to;
if(sscanf(c->buffer, "%*d %*x "MAX_STRING" "MAX_STRING, from_name, to_name) != 2) { if(sscanf(c->buffer, "%*d %*x "MAX_STRING" "MAX_STRING, from_name, to_name) != 2) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "DEL_EDGE", c->name, logger(LOG_ERR, "Got bad %s from %s (%s)", "DEL_EDGE", c->name,
c->hostname); c->hostname);
return false; return false;
} }
@ -187,14 +187,14 @@ bool del_edge_h(connection_t *c) {
/* Check if names are valid */ /* Check if names are valid */
if(!check_id(from_name)) { if(!check_id(from_name)) {
logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "DEL_EDGE", c->name, logger(LOG_ERR, "Got bad %s from %s (%s): %s", "DEL_EDGE", c->name,
c->hostname, _("invalid name")); c->hostname, "invalid name");
return false; return false;
} }
if(!check_id(to_name)) { if(!check_id(to_name)) {
logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "DEL_EDGE", c->name, logger(LOG_ERR, "Got bad %s from %s (%s): %s", "DEL_EDGE", c->name,
c->hostname, _("invalid name")); c->hostname, "invalid name");
return false; return false;
} }
@ -211,19 +211,19 @@ bool del_edge_h(connection_t *c) {
to != myself && to != c->node) { to != myself && to != c->node) {
/* ignore indirect edge registrations for tunnelserver */ /* ignore indirect edge registrations for tunnelserver */
ifdebug(PROTOCOL) logger(LOG_WARNING, ifdebug(PROTOCOL) logger(LOG_WARNING,
_("Ignoring indirect %s from %s (%s)"), "Ignoring indirect %s from %s (%s)",
"DEL_EDGE", c->name, c->hostname); "DEL_EDGE", c->name, c->hostname);
return true; return true;
} }
if(!from) { if(!from) {
ifdebug(PROTOCOL) logger(LOG_ERR, _("Got %s from %s (%s) which does not appear in the edge tree"), ifdebug(PROTOCOL) logger(LOG_ERR, "Got %s from %s (%s) which does not appear in the edge tree",
"DEL_EDGE", c->name, c->hostname); "DEL_EDGE", c->name, c->hostname);
return true; return true;
} }
if(!to) { if(!to) {
ifdebug(PROTOCOL) logger(LOG_ERR, _("Got %s from %s (%s) which does not appear in the edge tree"), ifdebug(PROTOCOL) logger(LOG_ERR, "Got %s from %s (%s) which does not appear in the edge tree",
"DEL_EDGE", c->name, c->hostname); "DEL_EDGE", c->name, c->hostname);
return true; return true;
} }
@ -233,13 +233,13 @@ bool del_edge_h(connection_t *c) {
e = lookup_edge(from, to); e = lookup_edge(from, to);
if(!e) { if(!e) {
ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) which does not appear in the edge tree"), ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) which does not appear in the edge tree",
"DEL_EDGE", c->name, c->hostname); "DEL_EDGE", c->name, c->hostname);
return true; return true;
} }
if(e->from == myself) { if(e->from == myself) {
ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for ourself"), ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for ourself",
"DEL_EDGE", c->name, c->hostname); "DEL_EDGE", c->name, c->hostname);
send_add_edge(c, e); /* Send back a correction */ send_add_edge(c, e); /* Send back a correction */
return true; return true;

View file

@ -52,7 +52,7 @@ bool key_changed_h(connection_t *c) {
node_t *n; node_t *n;
if(sscanf(c->buffer, "%*d %*x " MAX_STRING, name) != 1) { if(sscanf(c->buffer, "%*d %*x " MAX_STRING, name) != 1) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "KEY_CHANGED", logger(LOG_ERR, "Got bad %s from %s (%s)", "KEY_CHANGED",
c->name, c->hostname); c->name, c->hostname);
return false; return false;
} }
@ -63,7 +63,7 @@ bool key_changed_h(connection_t *c) {
n = lookup_node(name); n = lookup_node(name);
if(!n) { if(!n) {
logger(LOG_ERR, _("Got %s from %s (%s) origin %s which does not exist"), logger(LOG_ERR, "Got %s from %s (%s) origin %s which does not exist",
"KEY_CHANGED", c->name, c->hostname, name); "KEY_CHANGED", c->name, c->hostname, name);
return false; return false;
} }
@ -89,7 +89,7 @@ bool req_key_h(connection_t *c) {
node_t *from, *to; node_t *from, *to;
if(sscanf(c->buffer, "%*d " MAX_STRING " " MAX_STRING, from_name, to_name) != 2) { if(sscanf(c->buffer, "%*d " MAX_STRING " " MAX_STRING, from_name, to_name) != 2) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "REQ_KEY", c->name, logger(LOG_ERR, "Got bad %s from %s (%s)", "REQ_KEY", c->name,
c->hostname); c->hostname);
return false; return false;
} }
@ -97,7 +97,7 @@ bool req_key_h(connection_t *c) {
from = lookup_node(from_name); from = lookup_node(from_name);
if(!from) { if(!from) {
logger(LOG_ERR, _("Got %s from %s (%s) origin %s which does not exist in our connection list"), logger(LOG_ERR, "Got %s from %s (%s) origin %s which does not exist in our connection list",
"REQ_KEY", c->name, c->hostname, from_name); "REQ_KEY", c->name, c->hostname, from_name);
return false; return false;
} }
@ -105,7 +105,7 @@ bool req_key_h(connection_t *c) {
to = lookup_node(to_name); to = lookup_node(to_name);
if(!to) { if(!to) {
logger(LOG_ERR, _("Got %s from %s (%s) destination %s which does not exist in our connection list"), logger(LOG_ERR, "Got %s from %s (%s) destination %s which does not exist in our connection list",
"REQ_KEY", c->name, c->hostname, to_name); "REQ_KEY", c->name, c->hostname, to_name);
return false; return false;
} }
@ -119,7 +119,7 @@ bool req_key_h(connection_t *c) {
return false; return false;
if(!to->status.reachable) { if(!to->status.reachable) {
logger(LOG_WARNING, _("Got %s from %s (%s) destination %s which is not reachable"), logger(LOG_WARNING, "Got %s from %s (%s) destination %s which is not reachable",
"REQ_KEY", c->name, c->hostname, to_name); "REQ_KEY", c->name, c->hostname, to_name);
return true; return true;
} }
@ -175,7 +175,7 @@ bool ans_key_h(connection_t *c) {
if(sscanf(c->buffer, "%*d "MAX_STRING" "MAX_STRING" "MAX_STRING" %d %d %d %d", if(sscanf(c->buffer, "%*d "MAX_STRING" "MAX_STRING" "MAX_STRING" %d %d %d %d",
from_name, to_name, key, &cipher, &digest, &maclength, from_name, to_name, key, &cipher, &digest, &maclength,
&compression) != 7) { &compression) != 7) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "ANS_KEY", c->name, logger(LOG_ERR, "Got bad %s from %s (%s)", "ANS_KEY", c->name,
c->hostname); c->hostname);
return false; return false;
} }
@ -183,7 +183,7 @@ bool ans_key_h(connection_t *c) {
from = lookup_node(from_name); from = lookup_node(from_name);
if(!from) { if(!from) {
logger(LOG_ERR, _("Got %s from %s (%s) origin %s which does not exist in our connection list"), logger(LOG_ERR, "Got %s from %s (%s) origin %s which does not exist in our connection list",
"ANS_KEY", c->name, c->hostname, from_name); "ANS_KEY", c->name, c->hostname, from_name);
return false; return false;
} }
@ -191,7 +191,7 @@ bool ans_key_h(connection_t *c) {
to = lookup_node(to_name); to = lookup_node(to_name);
if(!to) { if(!to) {
logger(LOG_ERR, _("Got %s from %s (%s) destination %s which does not exist in our connection list"), logger(LOG_ERR, "Got %s from %s (%s) destination %s which does not exist in our connection list",
"ANS_KEY", c->name, c->hostname, to_name); "ANS_KEY", c->name, c->hostname, to_name);
return false; return false;
} }
@ -203,7 +203,7 @@ bool ans_key_h(connection_t *c) {
return false; return false;
if(!to->status.reachable) { if(!to->status.reachable) {
logger(LOG_WARNING, _("Got %s from %s (%s) destination %s which is not reachable"), logger(LOG_WARNING, "Got %s from %s (%s) destination %s which is not reachable",
"ANS_KEY", c->name, c->hostname, to_name); "ANS_KEY", c->name, c->hostname, to_name);
return true; return true;
} }
@ -225,13 +225,13 @@ bool ans_key_h(connection_t *c) {
from->outcipher = EVP_get_cipherbynid(cipher); from->outcipher = EVP_get_cipherbynid(cipher);
if(!from->outcipher) { if(!from->outcipher) {
logger(LOG_ERR, _("Node %s (%s) uses unknown cipher!"), from->name, logger(LOG_ERR, "Node %s (%s) uses unknown cipher!", from->name,
from->hostname); from->hostname);
return false; return false;
} }
if(from->outkeylength != from->outcipher->key_len + from->outcipher->iv_len) { if(from->outkeylength != from->outcipher->key_len + from->outcipher->iv_len) {
logger(LOG_ERR, _("Node %s (%s) uses wrong keylength!"), from->name, logger(LOG_ERR, "Node %s (%s) uses wrong keylength!", from->name,
from->hostname); from->hostname);
return false; return false;
} }
@ -245,13 +245,13 @@ bool ans_key_h(connection_t *c) {
from->outdigest = EVP_get_digestbynid(digest); from->outdigest = EVP_get_digestbynid(digest);
if(!from->outdigest) { if(!from->outdigest) {
logger(LOG_ERR, _("Node %s (%s) uses unknown digest!"), from->name, logger(LOG_ERR, "Node %s (%s) uses unknown digest!", from->name,
from->hostname); from->hostname);
return false; return false;
} }
if(from->outmaclength > from->outdigest->md_size || from->outmaclength < 0) { if(from->outmaclength > from->outdigest->md_size || from->outmaclength < 0) {
logger(LOG_ERR, _("Node %s (%s) uses bogus MAC length!"), logger(LOG_ERR, "Node %s (%s) uses bogus MAC length!",
from->name, from->hostname); from->name, from->hostname);
return false; return false;
} }
@ -260,7 +260,7 @@ bool ans_key_h(connection_t *c) {
} }
if(compression < 0 || compression > 11) { if(compression < 0 || compression > 11) {
logger(LOG_ERR, _("Node %s (%s) uses bogus compression level!"), from->name, from->hostname); logger(LOG_ERR, "Node %s (%s) uses bogus compression level!", from->name, from->hostname);
return false; return false;
} }
@ -268,7 +268,7 @@ bool ans_key_h(connection_t *c) {
if(from->outcipher) if(from->outcipher)
if(!EVP_EncryptInit_ex(&from->outctx, from->outcipher, NULL, (unsigned char *)from->outkey, (unsigned char *)from->outkey + from->outcipher->key_len)) { if(!EVP_EncryptInit_ex(&from->outctx, from->outcipher, NULL, (unsigned char *)from->outkey, (unsigned char *)from->outkey + from->outcipher->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

@ -45,12 +45,12 @@ bool status_h(connection_t *c) {
char statusstring[MAX_STRING_SIZE]; char statusstring[MAX_STRING_SIZE];
if(sscanf(c->buffer, "%*d %d " MAX_STRING, &statusno, statusstring) != 2) { if(sscanf(c->buffer, "%*d %d " MAX_STRING, &statusno, statusstring) != 2) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "STATUS", logger(LOG_ERR, "Got bad %s from %s (%s)", "STATUS",
c->name, c->hostname); c->name, c->hostname);
return false; return false;
} }
ifdebug(STATUS) logger(LOG_NOTICE, _("Status message from %s (%s): %d: %s"), ifdebug(STATUS) logger(LOG_NOTICE, "Status message from %s (%s): %d: %s",
c->name, c->hostname, statusno, statusstring); c->name, c->hostname, statusno, statusstring);
return true; return true;
@ -68,12 +68,12 @@ bool error_h(connection_t *c) {
char errorstring[MAX_STRING_SIZE]; char errorstring[MAX_STRING_SIZE];
if(sscanf(c->buffer, "%*d %d " MAX_STRING, &err, errorstring) != 2) { if(sscanf(c->buffer, "%*d %d " MAX_STRING, &err, errorstring) != 2) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "ERROR", logger(LOG_ERR, "Got bad %s from %s (%s)", "ERROR",
c->name, c->hostname); c->name, c->hostname);
return false; return false;
} }
ifdebug(ERROR) logger(LOG_NOTICE, _("Error message from %s (%s): %d: %s"), ifdebug(ERROR) logger(LOG_NOTICE, "Error message from %s (%s): %d: %s",
c->name, c->hostname, err, errorstring); c->name, c->hostname, err, errorstring);
terminate_connection(c, c->status.active); terminate_connection(c, c->status.active);
@ -136,7 +136,7 @@ bool tcppacket_h(connection_t *c) {
short int len; short int len;
if(sscanf(c->buffer, "%*d %hd", &len) != 1) { if(sscanf(c->buffer, "%*d %hd", &len) != 1) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "PACKET", c->name, logger(LOG_ERR, "Got bad %s from %s (%s)", "PACKET", c->name,
c->hostname); c->hostname);
return false; return false;
} }

View file

@ -48,7 +48,7 @@ bool add_subnet_h(connection_t *c) {
subnet_t s = {0}, *new; subnet_t s = {0}, *new;
if(sscanf(c->buffer, "%*d %*x " MAX_STRING " " MAX_STRING, name, subnetstr) != 2) { if(sscanf(c->buffer, "%*d %*x " MAX_STRING " " MAX_STRING, name, subnetstr) != 2) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "ADD_SUBNET", c->name, logger(LOG_ERR, "Got bad %s from %s (%s)", "ADD_SUBNET", c->name,
c->hostname); c->hostname);
return false; return false;
} }
@ -56,16 +56,16 @@ bool add_subnet_h(connection_t *c) {
/* Check if owner name is valid */ /* Check if owner name is valid */
if(!check_id(name)) { if(!check_id(name)) {
logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "ADD_SUBNET", c->name, logger(LOG_ERR, "Got bad %s from %s (%s): %s", "ADD_SUBNET", c->name,
c->hostname, _("invalid name")); c->hostname, "invalid name");
return false; return false;
} }
/* Check if subnet string is valid */ /* Check if subnet string is valid */
if(!str2net(&s, subnetstr)) { if(!str2net(&s, subnetstr)) {
logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "ADD_SUBNET", c->name, logger(LOG_ERR, "Got bad %s from %s (%s): %s", "ADD_SUBNET", c->name,
c->hostname, _("invalid subnet string")); c->hostname, "invalid subnet string");
return false; return false;
} }
@ -78,7 +78,7 @@ bool add_subnet_h(connection_t *c) {
if(tunnelserver && owner != myself && owner != c->node) { if(tunnelserver && owner != myself && owner != c->node) {
/* in case of tunnelserver, ignore indirect subnet registrations */ /* in case of tunnelserver, ignore indirect subnet registrations */
ifdebug(PROTOCOL) logger(LOG_WARNING, _("Ignoring indirect %s from %s (%s) for %s"), ifdebug(PROTOCOL) logger(LOG_WARNING, "Ignoring indirect %s from %s (%s) for %s",
"ADD_SUBNET", c->name, c->hostname, subnetstr); "ADD_SUBNET", c->name, c->hostname, subnetstr);
return true; return true;
} }
@ -97,7 +97,7 @@ bool add_subnet_h(connection_t *c) {
/* If we don't know this subnet, but we are the owner, retaliate with a DEL_SUBNET */ /* If we don't know this subnet, but we are the owner, retaliate with a DEL_SUBNET */
if(owner == myself) { if(owner == myself) {
ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for ourself"), ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for ourself",
"ADD_SUBNET", c->name, c->hostname); "ADD_SUBNET", c->name, c->hostname);
s.owner = myself; s.owner = myself;
send_del_subnet(c, &s); send_del_subnet(c, &s);
@ -121,7 +121,7 @@ bool add_subnet_h(connection_t *c) {
} }
if(!cfg) { if(!cfg) {
logger(LOG_WARNING, _("Unauthorized %s from %s (%s) for %s"), logger(LOG_WARNING, "Unauthorized %s from %s (%s) for %s",
"ADD_SUBNET", c->name, c->hostname, subnetstr); "ADD_SUBNET", c->name, c->hostname, subnetstr);
return false; return false;
} }
@ -161,7 +161,7 @@ bool del_subnet_h(connection_t *c) {
subnet_t s = {0}, *find; subnet_t s = {0}, *find;
if(sscanf(c->buffer, "%*d %*x " MAX_STRING " " MAX_STRING, name, subnetstr) != 2) { if(sscanf(c->buffer, "%*d %*x " MAX_STRING " " MAX_STRING, name, subnetstr) != 2) {
logger(LOG_ERR, _("Got bad %s from %s (%s)"), "DEL_SUBNET", c->name, logger(LOG_ERR, "Got bad %s from %s (%s)", "DEL_SUBNET", c->name,
c->hostname); c->hostname);
return false; return false;
} }
@ -169,16 +169,16 @@ bool del_subnet_h(connection_t *c) {
/* Check if owner name is valid */ /* Check if owner name is valid */
if(!check_id(name)) { if(!check_id(name)) {
logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "DEL_SUBNET", c->name, logger(LOG_ERR, "Got bad %s from %s (%s): %s", "DEL_SUBNET", c->name,
c->hostname, _("invalid name")); c->hostname, "invalid name");
return false; return false;
} }
/* Check if subnet string is valid */ /* Check if subnet string is valid */
if(!str2net(&s, subnetstr)) { if(!str2net(&s, subnetstr)) {
logger(LOG_ERR, _("Got bad %s from %s (%s): %s"), "DEL_SUBNET", c->name, logger(LOG_ERR, "Got bad %s from %s (%s): %s", "DEL_SUBNET", c->name,
c->hostname, _("invalid subnet string")); c->hostname, "invalid subnet string");
return false; return false;
} }
@ -191,13 +191,13 @@ bool del_subnet_h(connection_t *c) {
if(tunnelserver && owner != myself && owner != c->node) { if(tunnelserver && owner != myself && owner != c->node) {
/* in case of tunnelserver, ignore indirect subnet deletion */ /* in case of tunnelserver, ignore indirect subnet deletion */
ifdebug(PROTOCOL) logger(LOG_WARNING, _("Ignoring indirect %s from %s (%s) for %s"), ifdebug(PROTOCOL) logger(LOG_WARNING, "Ignoring indirect %s from %s (%s) for %s",
"DEL_SUBNET", c->name, c->hostname, subnetstr); "DEL_SUBNET", c->name, c->hostname, subnetstr);
return true; return true;
} }
if(!owner) { if(!owner) {
ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for %s which is not in our node tree"), ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for %s which is not in our node tree",
"DEL_SUBNET", c->name, c->hostname, name); "DEL_SUBNET", c->name, c->hostname, name);
return true; return true;
} }
@ -209,7 +209,7 @@ bool del_subnet_h(connection_t *c) {
find = lookup_subnet(owner, &s); find = lookup_subnet(owner, &s);
if(!find) { if(!find) {
ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for %s which does not appear in his subnet tree"), ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for %s which does not appear in his subnet tree",
"DEL_SUBNET", c->name, c->hostname, name); "DEL_SUBNET", c->name, c->hostname, name);
return true; return true;
} }
@ -217,7 +217,7 @@ bool del_subnet_h(connection_t *c) {
/* If we are the owner of this subnet, retaliate with an ADD_SUBNET */ /* If we are the owner of this subnet, retaliate with an ADD_SUBNET */
if(owner == myself) { if(owner == myself) {
ifdebug(PROTOCOL) logger(LOG_WARNING, _("Got %s from %s (%s) for ourself"), ifdebug(PROTOCOL) logger(LOG_WARNING, "Got %s from %s (%s) for ourself",
"DEL_SUBNET", c->name, c->hostname); "DEL_SUBNET", c->name, c->hostname);
send_add_subnet(c, find); send_add_subnet(c, find);
return true; return true;

View file

@ -48,10 +48,10 @@ bool setup_device(void) {
if(!get_config_string(lookup_config(config_tree, "Device"), &device)) if(!get_config_string(lookup_config(config_tree, "Device"), &device))
device = xstrdup(iface); device = xstrdup(iface);
device_info = _("raw socket"); device_info = "raw socket";
if((device_fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) < 0) { if((device_fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) < 0) {
logger(LOG_ERR, _("Could not open %s: %s"), device_info, logger(LOG_ERR, "Could not open %s: %s", device_info,
strerror(errno)); strerror(errno));
return false; return false;
} }
@ -60,7 +60,7 @@ bool setup_device(void) {
strncpy(ifr.ifr_ifrn.ifrn_name, iface, IFNAMSIZ); strncpy(ifr.ifr_ifrn.ifrn_name, iface, IFNAMSIZ);
if(ioctl(device_fd, SIOCGIFINDEX, &ifr)) { if(ioctl(device_fd, SIOCGIFINDEX, &ifr)) {
close(device_fd); close(device_fd);
logger(LOG_ERR, _("Can't find interface %s: %s"), iface, logger(LOG_ERR, "Can't find interface %s: %s", iface,
strerror(errno)); strerror(errno));
return false; return false;
} }
@ -71,11 +71,11 @@ bool setup_device(void) {
sa.sll_ifindex = ifr.ifr_ifindex; sa.sll_ifindex = ifr.ifr_ifindex;
if(bind(device_fd, (struct sockaddr *) &sa, (socklen_t) sizeof(sa))) { if(bind(device_fd, (struct sockaddr *) &sa, (socklen_t) sizeof(sa))) {
logger(LOG_ERR, _("Could not bind %s to %s: %s"), device, iface, strerror(errno)); logger(LOG_ERR, "Could not bind %s to %s: %s", device, iface, strerror(errno));
return false; return false;
} }
logger(LOG_INFO, _("%s is a %s"), device, device_info); logger(LOG_INFO, "%s is a %s", device, device_info);
return true; return true;
} }
@ -91,7 +91,7 @@ bool read_packet(vpn_packet_t *packet) {
int lenin; int lenin;
if((lenin = read(device_fd, packet->data, MTU)) <= 0) { if((lenin = read(device_fd, packet->data, MTU)) <= 0) {
logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, logger(LOG_ERR, "Error while reading from %s %s: %s", device_info,
device, strerror(errno)); device, strerror(errno));
return false; return false;
} }
@ -100,18 +100,18 @@ bool read_packet(vpn_packet_t *packet) {
device_total_in += packet->len; device_total_in += packet->len;
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Read packet of %d bytes from %s"), packet->len, ifdebug(TRAFFIC) logger(LOG_DEBUG, "Read packet of %d bytes from %s", packet->len,
device_info); device_info);
return true; return true;
} }
bool write_packet(vpn_packet_t *packet) { bool write_packet(vpn_packet_t *packet) {
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s",
packet->len, device_info); packet->len, device_info);
if(write(device_fd, packet->data, packet->len) < 0) { if(write(device_fd, packet->data, packet->len) < 0) {
logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, device, logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device,
strerror(errno)); strerror(errno));
return false; return false;
} }
@ -122,7 +122,7 @@ bool write_packet(vpn_packet_t *packet) {
} }
void dump_device_stats(void) { void dump_device_stats(void) {
logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device);
logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); logger(LOG_DEBUG, " total bytes in: %10d", device_total_in);
logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); logger(LOG_DEBUG, " total bytes out: %10d", device_total_out);
} }

View file

@ -86,7 +86,7 @@ static bool ratelimit(int frequency) {
static bool checklength(node_t *source, vpn_packet_t *packet, length_t length) { static bool checklength(node_t *source, vpn_packet_t *packet, length_t length) {
if(packet->len < length) { if(packet->len < length) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Got too short packet from %s (%s)"), source->name, source->hostname); ifdebug(TRAFFIC) logger(LOG_WARNING, "Got too short packet from %s (%s)", source->name, source->hostname);
return false; return false;
} else } else
return true; return true;
@ -109,7 +109,7 @@ static void learn_mac(mac_t *address) {
/* If we don't know this MAC address yet, store it */ /* If we don't know this MAC address yet, store it */
if(!subnet) { if(!subnet) {
ifdebug(TRAFFIC) logger(LOG_INFO, _("Learned new MAC address %hx:%hx:%hx:%hx:%hx:%hx"), ifdebug(TRAFFIC) logger(LOG_INFO, "Learned new MAC address %hx:%hx:%hx:%hx:%hx:%hx",
address->x[0], address->x[1], address->x[2], address->x[3], address->x[0], address->x[1], address->x[2], address->x[3],
address->x[4], address->x[5]); address->x[4], address->x[5]);
@ -144,7 +144,7 @@ void age_subnets(void) {
ifdebug(TRAFFIC) { ifdebug(TRAFFIC) {
char netstr[MAXNETSTR]; char netstr[MAXNETSTR];
if(net2str(netstr, sizeof netstr, s)) if(net2str(netstr, sizeof netstr, s))
logger(LOG_INFO, _("Subnet %s expired"), netstr); logger(LOG_INFO, "Subnet %s expired", netstr);
} }
for(node2 = connection_tree->head; node2; node2 = node2->next) { for(node2 = connection_tree->head; node2; node2 = node2->next) {
@ -249,11 +249,11 @@ 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 (%zd)"), 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;
} }
ifdebug(TRAFFIC) logger(LOG_INFO, _("Fragmenting packet of %d bytes to %s (%s)"), packet->len, dest->name, dest->hostname); ifdebug(TRAFFIC) logger(LOG_INFO, "Fragmenting packet of %d bytes to %s (%s)", packet->len, dest->name, dest->hostname);
offset = packet->data + ether_size + ip_size; offset = packet->data + ether_size + ip_size;
maxlen = (dest->mtu - ether_size - ip_size) & ~0x7; maxlen = (dest->mtu - ether_size - ip_size) & ~0x7;
@ -290,7 +290,7 @@ static void route_ipv4_unicast(node_t *source, vpn_packet_t *packet) {
subnet = lookup_subnet_ipv4(&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,
dest.x[0], dest.x[0],
dest.x[1], dest.x[1],
@ -302,7 +302,7 @@ static void route_ipv4_unicast(node_t *source, vpn_packet_t *packet) {
} }
if(subnet->owner == source) { if(subnet->owner == source) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Packet looping back to %s (%s)!"), source->name, source->hostname); ifdebug(TRAFFIC) logger(LOG_WARNING, "Packet looping back to %s (%s)!", source->name, source->hostname);
return; return;
} }
@ -315,7 +315,7 @@ static void route_ipv4_unicast(node_t *source, vpn_packet_t *packet) {
via = (subnet->owner->via == myself) ? subnet->owner->nexthop : subnet->owner->via; via = (subnet->owner->via == myself) ? subnet->owner->nexthop : subnet->owner->via;
if(via && packet->len > via->mtu && via != myself) { if(via && packet->len > via->mtu && via != myself) {
ifdebug(TRAFFIC) logger(LOG_INFO, _("Packet for %s (%s) length %d larger than MTU %d"), subnet->owner->name, subnet->owner->hostname, packet->len, via->mtu); ifdebug(TRAFFIC) logger(LOG_INFO, "Packet for %s (%s) length %d larger than MTU %d", subnet->owner->name, subnet->owner->hostname, packet->len, via->mtu);
if(packet->data[20] & 0x40) { if(packet->data[20] & 0x40) {
packet->len = via->mtu; packet->len = via->mtu;
route_ipv4_unreachable(source, packet, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED); route_ipv4_unreachable(source, packet, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED);
@ -432,7 +432,7 @@ static void route_ipv6_unicast(node_t *source, vpn_packet_t *packet) {
subnet = lookup_subnet_ipv6(&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(dest.x[0]), ntohs(dest.x[0]),
ntohs(dest.x[1]), ntohs(dest.x[1]),
@ -448,7 +448,7 @@ static void route_ipv6_unicast(node_t *source, vpn_packet_t *packet) {
} }
if(subnet->owner == source) { if(subnet->owner == source) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Packet looping back to %s (%s)!"), source->name, source->hostname); ifdebug(TRAFFIC) logger(LOG_WARNING, "Packet looping back to %s (%s)!", source->name, source->hostname);
return; return;
} }
@ -458,7 +458,7 @@ static void route_ipv6_unicast(node_t *source, vpn_packet_t *packet) {
via = (subnet->owner->via == myself) ? subnet->owner->nexthop : subnet->owner->via; via = (subnet->owner->via == myself) ? subnet->owner->nexthop : subnet->owner->via;
if(via && packet->len > via->mtu && via != myself) { if(via && packet->len > via->mtu && via != myself) {
ifdebug(TRAFFIC) logger(LOG_INFO, _("Packet for %s (%s) length %d larger than MTU %d"), subnet->owner->name, subnet->owner->hostname, packet->len, via->mtu); ifdebug(TRAFFIC) logger(LOG_INFO, "Packet for %s (%s) length %d larger than MTU %d", subnet->owner->name, subnet->owner->hostname, packet->len, via->mtu);
packet->len = via->mtu; packet->len = via->mtu;
route_ipv6_unreachable(source, packet, ICMP6_PACKET_TOO_BIG, 0); route_ipv6_unreachable(source, packet, ICMP6_PACKET_TOO_BIG, 0);
return; return;
@ -490,7 +490,7 @@ static void route_neighborsol(node_t *source, vpn_packet_t *packet) {
has_opt = packet->len >= ether_size + ip6_size + ns_size + opt_size + ETH_ALEN; has_opt = packet->len >= ether_size + ip6_size + ns_size + opt_size + ETH_ALEN;
if(source != myself) { if(source != myself) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Got neighbor solicitation request from %s (%s) while in router mode!"), source->name, source->hostname); ifdebug(TRAFFIC) logger(LOG_WARNING, "Got neighbor solicitation request from %s (%s) while in router mode!", source->name, source->hostname);
return; return;
} }
@ -510,7 +510,7 @@ static void route_neighborsol(node_t *source, vpn_packet_t *packet) {
if(ns.nd_ns_hdr.icmp6_type != ND_NEIGHBOR_SOLICIT || if(ns.nd_ns_hdr.icmp6_type != ND_NEIGHBOR_SOLICIT ||
(has_opt && opt.nd_opt_type != ND_OPT_SOURCE_LINKADDR)) { (has_opt && opt.nd_opt_type != ND_OPT_SOURCE_LINKADDR)) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet: received unknown type neighbor solicitation request")); ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet: received unknown type neighbor solicitation request");
return; return;
} }
@ -534,7 +534,7 @@ static void route_neighborsol(node_t *source, vpn_packet_t *packet) {
} }
if(checksum) { if(checksum) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet: checksum error for neighbor solicitation request")); ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet: checksum error for neighbor solicitation request");
return; return;
} }
@ -543,7 +543,7 @@ static void route_neighborsol(node_t *source, vpn_packet_t *packet) {
subnet = lookup_subnet_ipv6((ipv6_t *) &ns.nd_ns_target); subnet = lookup_subnet_ipv6((ipv6_t *) &ns.nd_ns_target);
if(!subnet) { if(!subnet) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet: neighbor solicitation request for unknown address %hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx"), ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet: neighbor solicitation request for unknown address %hx:%hx:%hx:%hx:%hx:%hx:%hx:%hx",
ntohs(((uint16_t *) &ns.nd_ns_target)[0]), ntohs(((uint16_t *) &ns.nd_ns_target)[0]),
ntohs(((uint16_t *) &ns.nd_ns_target)[1]), ntohs(((uint16_t *) &ns.nd_ns_target)[1]),
ntohs(((uint16_t *) &ns.nd_ns_target)[2]), ntohs(((uint16_t *) &ns.nd_ns_target)[2]),
@ -634,7 +634,7 @@ static void route_arp(node_t *source, vpn_packet_t *packet) {
return; return;
if(source != myself) { if(source != myself) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Got ARP request from %s (%s) while in router mode!"), source->name, source->hostname); ifdebug(TRAFFIC) logger(LOG_WARNING, "Got ARP request from %s (%s) while in router mode!", source->name, source->hostname);
return; return;
} }
@ -651,7 +651,7 @@ static void route_arp(node_t *source, vpn_packet_t *packet) {
if(ntohs(arp.arp_hrd) != ARPHRD_ETHER || ntohs(arp.arp_pro) != ETH_P_IP || if(ntohs(arp.arp_hrd) != ARPHRD_ETHER || ntohs(arp.arp_pro) != ETH_P_IP ||
arp.arp_hln != ETH_ALEN || arp.arp_pln != sizeof(addr) || ntohs(arp.arp_op) != ARPOP_REQUEST) { arp.arp_hln != ETH_ALEN || arp.arp_pln != sizeof(addr) || ntohs(arp.arp_op) != ARPOP_REQUEST) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet: received unknown type ARP request")); ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet: received unknown type ARP request");
return; return;
} }
@ -660,7 +660,7 @@ static void route_arp(node_t *source, vpn_packet_t *packet) {
subnet = lookup_subnet_ipv4((ipv4_t *) &arp.arp_tpa); subnet = lookup_subnet_ipv4((ipv4_t *) &arp.arp_tpa);
if(!subnet) { if(!subnet) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet: ARP request for unknown address %d.%d.%d.%d"), ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet: ARP request for unknown address %d.%d.%d.%d",
arp.arp_tpa[0], arp.arp_tpa[1], arp.arp_tpa[2], arp.arp_tpa[0], arp.arp_tpa[1], arp.arp_tpa[2],
arp.arp_tpa[3]); arp.arp_tpa[3]);
return; return;
@ -712,7 +712,7 @@ static void route_mac(node_t *source, vpn_packet_t *packet) {
} }
if(subnet->owner == source) { if(subnet->owner == source) {
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Packet looping back to %s (%s)!"), source->name, source->hostname); ifdebug(TRAFFIC) logger(LOG_WARNING, "Packet looping back to %s (%s)!", source->name, source->hostname);
return; return;
} }
@ -721,7 +721,7 @@ static void route_mac(node_t *source, vpn_packet_t *packet) {
node_t *via = (subnet->owner->via == myself) ? subnet->owner->nexthop : subnet->owner->via; node_t *via = (subnet->owner->via == myself) ? subnet->owner->nexthop : subnet->owner->via;
if(via && packet->len > via->mtu && via != myself) { if(via && packet->len > via->mtu && via != myself) {
ifdebug(TRAFFIC) logger(LOG_INFO, _("Packet for %s (%s) length %d larger than MTU %d"), subnet->owner->name, subnet->owner->hostname, packet->len, via->mtu); ifdebug(TRAFFIC) logger(LOG_INFO, "Packet for %s (%s) length %d larger than MTU %d", subnet->owner->name, subnet->owner->hostname, packet->len, via->mtu);
uint16_t type = packet->data[12] << 8 | packet->data[13]; uint16_t type = packet->data[12] << 8 | packet->data[13];
if(type == ETH_P_IP) { if(type == ETH_P_IP) {
if(packet->data[20] & 0x40) { if(packet->data[20] & 0x40) {
@ -764,7 +764,7 @@ void route(node_t *source, vpn_packet_t *packet) {
break; break;
default: default:
ifdebug(TRAFFIC) logger(LOG_WARNING, _("Cannot route packet from %s (%s): unknown type %hx"), source->name, source->hostname, type); ifdebug(TRAFFIC) logger(LOG_WARNING, "Cannot route packet from %s (%s): unknown type %hx", source->name, source->hostname, type);
break; break;
} }
} }

View file

@ -50,7 +50,7 @@ bool setup_device(void) {
device = xstrdup(DEFAULT_DEVICE); device = xstrdup(DEFAULT_DEVICE);
if((device_fd = open(device, O_RDWR | O_NONBLOCK)) < 0) { if((device_fd = open(device, O_RDWR | O_NONBLOCK)) < 0) {
logger(LOG_ERR, _("Could not open %s: %s"), device, strerror(errno)); logger(LOG_ERR, "Could not open %s: %s", device, strerror(errno));
return false; return false;
} }
@ -62,44 +62,44 @@ bool setup_device(void) {
ppa = atoi(ptr); ppa = atoi(ptr);
if((ip_fd = open("/dev/ip", O_RDWR, 0)) < 0) { if((ip_fd = open("/dev/ip", O_RDWR, 0)) < 0) {
logger(LOG_ERR, _("Could not open /dev/ip: %s"), strerror(errno)); logger(LOG_ERR, "Could not open /dev/ip: %s", strerror(errno));
return false; return false;
} }
/* Assign a new PPA and get its unit number. */ /* Assign a new PPA and get its unit number. */
if((ppa = ioctl(device_fd, TUNNEWPPA, ppa)) < 0) { if((ppa = ioctl(device_fd, TUNNEWPPA, ppa)) < 0) {
logger(LOG_ERR, _("Can't assign new interface: %s"), strerror(errno)); logger(LOG_ERR, "Can't assign new interface: %s", strerror(errno));
return false; return false;
} }
if((if_fd = open(device, O_RDWR, 0)) < 0) { if((if_fd = open(device, O_RDWR, 0)) < 0) {
logger(LOG_ERR, _("Could not open %s twice: %s"), device, logger(LOG_ERR, "Could not open %s twice: %s", device,
strerror(errno)); strerror(errno));
return false; return false;
} }
if(ioctl(if_fd, I_PUSH, "ip") < 0) { if(ioctl(if_fd, I_PUSH, "ip") < 0) {
logger(LOG_ERR, _("Can't push IP module: %s"), strerror(errno)); logger(LOG_ERR, "Can't push IP module: %s", strerror(errno));
return false; return false;
} }
/* Assign ppa according to the unit number returned by tun device */ /* Assign ppa according to the unit number returned by tun device */
if(ioctl(if_fd, IF_UNITSEL, (char *) &ppa) < 0) { if(ioctl(if_fd, IF_UNITSEL, (char *) &ppa) < 0) {
logger(LOG_ERR, _("Can't set PPA %d: %s"), ppa, strerror(errno)); logger(LOG_ERR, "Can't set PPA %d: %s", ppa, strerror(errno));
return false; return false;
} }
if(ioctl(ip_fd, I_LINK, if_fd) < 0) { if(ioctl(ip_fd, I_LINK, if_fd) < 0) {
logger(LOG_ERR, _("Can't link TUN device to IP: %s"), strerror(errno)); logger(LOG_ERR, "Can't link TUN device to IP: %s", strerror(errno));
return false; return false;
} }
if(!get_config_string(lookup_config(config_tree, "Interface"), &iface)) if(!get_config_string(lookup_config(config_tree, "Interface"), &iface))
xasprintf(&iface, "tun%d", ppa); xasprintf(&iface, "tun%d", ppa);
device_info = _("Solaris tun device"); device_info = "Solaris tun device";
logger(LOG_INFO, _("%s is a %s"), device, device_info); logger(LOG_INFO, "%s is a %s", device, device_info);
return true; return true;
} }
@ -115,7 +115,7 @@ bool read_packet(vpn_packet_t *packet) {
int lenin; int lenin;
if((lenin = read(device_fd, packet->data + 14, MTU - 14)) <= 0) { if((lenin = read(device_fd, packet->data + 14, MTU - 14)) <= 0) {
logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, logger(LOG_ERR, "Error while reading from %s %s: %s", device_info,
device, strerror(errno)); device, strerror(errno));
return false; return false;
} }
@ -140,18 +140,18 @@ bool read_packet(vpn_packet_t *packet) {
device_total_in += packet->len; device_total_in += packet->len;
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Read packet of %d bytes from %s"), packet->len, ifdebug(TRAFFIC) logger(LOG_DEBUG, "Read packet of %d bytes from %s", packet->len,
device_info); device_info);
return true; return true;
} }
bool write_packet(vpn_packet_t *packet) { bool write_packet(vpn_packet_t *packet) {
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s",
packet->len, device_info); packet->len, device_info);
if(write(device_fd, packet->data + 14, packet->len - 14) < 0) { if(write(device_fd, packet->data + 14, packet->len - 14) < 0) {
logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, logger(LOG_ERR, "Can't write to %s %s: %s", device_info,
device, strerror(errno)); device, strerror(errno));
return false; return false;
} }
@ -162,7 +162,7 @@ bool write_packet(vpn_packet_t *packet) {
} }
void dump_device_stats(void) { void dump_device_stats(void) {
logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device);
logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); logger(LOG_DEBUG, " total bytes in: %10d", device_total_in);
logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); logger(LOG_DEBUG, " total bytes out: %10d", device_total_out);
} }

View file

@ -128,7 +128,7 @@ int subnet_compare(const subnet_t *a, const subnet_t *b) {
case SUBNET_IPV6: case SUBNET_IPV6:
return subnet_compare_ipv6(a, b); return subnet_compare_ipv6(a, b);
default: default:
logger(LOG_ERR, _("subnet_compare() was called with unknown subnet type %d, exitting!"), logger(LOG_ERR, "subnet_compare() was called with unknown subnet type %d, exitting!",
a->type); a->type);
exit(0); exit(0);
} }
@ -267,7 +267,7 @@ bool str2net(subnet_t *subnet, const char *subnetstr) {
bool net2str(char *netstr, int len, const subnet_t *subnet) { bool net2str(char *netstr, int len, const subnet_t *subnet) {
if(!netstr || !subnet) { if(!netstr || !subnet) {
logger(LOG_ERR, _("net2str() was called with netstr=%p, subnet=%p!\n"), netstr, subnet); logger(LOG_ERR, "net2str() was called with netstr=%p, subnet=%p!\n", netstr, subnet);
return false; return false;
} }
@ -309,7 +309,7 @@ bool net2str(char *netstr, int len, const subnet_t *subnet) {
default: default:
logger(LOG_ERR, logger(LOG_ERR,
_("net2str() was called with unknown subnet type %d, exiting!"), "net2str() was called with unknown subnet type %d, exiting!",
subnet->type); subnet->type);
exit(0); exit(0);
} }
@ -495,14 +495,14 @@ void dump_subnets(void) {
subnet_t *subnet; subnet_t *subnet;
avl_node_t *node; avl_node_t *node;
logger(LOG_DEBUG, _("Subnet list:")); logger(LOG_DEBUG, "Subnet list:");
for(node = subnet_tree->head; node; node = node->next) { for(node = subnet_tree->head; node; node = node->next) {
subnet = node->data; subnet = node->data;
if(!net2str(netstr, sizeof netstr, subnet)) if(!net2str(netstr, sizeof netstr, subnet))
continue; continue;
logger(LOG_DEBUG, _(" %s owner %s"), netstr, subnet->owner->name); logger(LOG_DEBUG, " %s owner %s", netstr, subnet->owner->name);
} }
logger(LOG_DEBUG, _("End of subnet list.")); logger(LOG_DEBUG, "End of subnet list.");
} }

View file

@ -119,11 +119,11 @@ CRITICAL_SECTION mutex;
static void usage(bool status) { static void usage(bool status) {
if(status) if(status)
fprintf(stderr, _("Try `%s --help\' for more information.\n"), fprintf(stderr, "Try `%s --help\' for more information.\n",
program_name); program_name);
else { else {
printf(_("Usage: %s [option]...\n\n"), program_name); printf("Usage: %s [option]...\n\n", program_name);
printf(_(" -c, --config=DIR Read configuration options from DIR.\n" printf(" -c, --config=DIR Read configuration options from DIR.\n"
" -D, --no-detach Don't fork and detach.\n" " -D, --no-detach Don't fork and detach.\n"
" -d, --debug[=LEVEL] Increase debug level or set it to LEVEL.\n" " -d, --debug[=LEVEL] Increase debug level or set it to LEVEL.\n"
" -k, --kill[=SIGNAL] Attempt to kill a running tincd and exit.\n" " -k, --kill[=SIGNAL] Attempt to kill a running tincd and exit.\n"
@ -135,8 +135,8 @@ static void usage(bool status) {
" -R, --chroot chroot to NET dir at startup.\n" " -R, --chroot chroot to NET dir at startup.\n"
" -U, --user=USER setuid to given USER at startup.\n" " -U, --user=USER setuid to given USER at startup.\n"
" --help Display this help and exit.\n" " --help Display this help and exit.\n"
" --version Output version information and exit.\n\n")); " --version Output version information and exit.\n\n");
printf(_("Report bugs to tinc@tinc-vpn.org.\n")); printf("Report bugs to tinc@tinc-vpn.org.\n");
} }
} }
@ -159,7 +159,7 @@ static bool parse_options(int argc, char **argv) {
case 'L': /* no detach */ case 'L': /* no detach */
#ifndef HAVE_MLOCKALL #ifndef HAVE_MLOCKALL
logger(LOG_ERR, _("%s not supported on this platform"), "mlockall()"); logger(LOG_ERR, "%s not supported on this platform", "mlockall()");
return false; return false;
#else #else
do_mlock = true; do_mlock = true;
@ -196,7 +196,7 @@ static bool parse_options(int argc, char **argv) {
kill_tincd = atoi(optarg); kill_tincd = atoi(optarg);
if(!kill_tincd) { if(!kill_tincd) {
fprintf(stderr, _("Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, USR1, USR2, WINCH, INT or ALRM.\n"), fprintf(stderr, "Invalid argument `%s'; SIGNAL must be a number or one of HUP, TERM, KILL, USR1, USR2, WINCH, INT or ALRM.\n",
optarg); optarg);
usage(true); usage(true);
return false; return false;
@ -218,7 +218,7 @@ static bool parse_options(int argc, char **argv) {
generate_keys = atoi(optarg); generate_keys = atoi(optarg);
if(generate_keys < 512) { if(generate_keys < 512) {
fprintf(stderr, _("Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n"), fprintf(stderr, "Invalid argument `%s'; BITS must be a number equal to or greater than 512.\n",
optarg); optarg);
usage(true); usage(true);
return false; return false;
@ -320,27 +320,27 @@ static bool keygen(int bits) {
get_config_string(lookup_config(config_tree, "Name"), &name); get_config_string(lookup_config(config_tree, "Name"), &name);
if(name && !check_id(name)) { if(name && !check_id(name)) {
fprintf(stderr, _("Invalid name for myself!\n")); fprintf(stderr, "Invalid name for myself!\n");
return false; return false;
} }
fprintf(stderr, _("Generating %d bits keys:\n"), bits); fprintf(stderr, "Generating %d bits keys:\n", bits);
rsa_key = RSA_generate_key(bits, 0x10001, indicator, NULL); rsa_key = RSA_generate_key(bits, 0x10001, indicator, NULL);
if(!rsa_key) { if(!rsa_key) {
fprintf(stderr, _("Error during key generation!\n")); fprintf(stderr, "Error during key generation!\n");
return false; return false;
} else } else
fprintf(stderr, _("Done.\n")); fprintf(stderr, "Done.\n");
xasprintf(&filename, "%s/rsa_key.priv", confbase); xasprintf(&filename, "%s/rsa_key.priv", confbase);
f = ask_and_open(filename, _("private RSA key")); f = ask_and_open(filename, "private RSA key");
if(!f) if(!f)
return false; return false;
if(disable_old_keys(f)) if(disable_old_keys(f))
fprintf(stderr, _("Warning: old key(s) found and disabled.\n")); fprintf(stderr, "Warning: old key(s) found and disabled.\n");
#ifdef HAVE_FCHMOD #ifdef HAVE_FCHMOD
/* Make it unreadable for others. */ /* Make it unreadable for others. */
@ -356,13 +356,13 @@ static bool keygen(int bits) {
else else
xasprintf(&filename, "%s/rsa_key.pub", confbase); xasprintf(&filename, "%s/rsa_key.pub", confbase);
f = ask_and_open(filename, _("public RSA key")); f = ask_and_open(filename, "public RSA key");
if(!f) if(!f)
return false; return false;
if(disable_old_keys(f)) if(disable_old_keys(f))
fprintf(stderr, _("Warning: old key(s) found and disabled.\n")); fprintf(stderr, "Warning: old key(s) found and disabled.\n");
PEM_write_RSAPublicKey(f, rsa_key); PEM_write_RSAPublicKey(f, rsa_key);
fclose(f); fclose(f);
@ -416,7 +416,7 @@ static void make_names(void) {
if(!confbase) if(!confbase)
xasprintf(&confbase, CONFDIR "/tinc/%s", netname); xasprintf(&confbase, CONFDIR "/tinc/%s", netname);
else else
logger(LOG_INFO, _("Both netname and configuration directory given, using the latter...")); logger(LOG_INFO, "Both netname and configuration directory given, using the latter...");
} else { } else {
if(!confbase) if(!confbase)
xasprintf(&confbase, CONFDIR "/tinc"); xasprintf(&confbase, CONFDIR "/tinc");
@ -434,11 +434,11 @@ static void free_names() {
static bool drop_privs() { static bool drop_privs() {
#ifdef HAVE_MINGW #ifdef HAVE_MINGW
if (switchuser) { if (switchuser) {
logger(LOG_ERR, _("%s not supported on this platform"), "-U"); logger(LOG_ERR, "%s not supported on this platform", "-U");
return false; return false;
} }
if (do_chroot) { if (do_chroot) {
logger(LOG_ERR, _("%s not supported on this platform"), "-R"); logger(LOG_ERR, "%s not supported on this platform", "-R");
return false; return false;
} }
#else #else
@ -446,13 +446,13 @@ static bool drop_privs() {
if (switchuser) { if (switchuser) {
struct passwd *pw = getpwnam(switchuser); struct passwd *pw = getpwnam(switchuser);
if (!pw) { if (!pw) {
logger(LOG_ERR, _("unknown user `%s'"), switchuser); logger(LOG_ERR, "unknown user `%s'", switchuser);
return false; return false;
} }
uid = pw->pw_uid; uid = pw->pw_uid;
if (initgroups(switchuser, pw->pw_gid) != 0 || if (initgroups(switchuser, pw->pw_gid) != 0 ||
setgid(pw->pw_gid) != 0) { setgid(pw->pw_gid) != 0) {
logger(LOG_ERR, _("System call `%s' failed: %s"), logger(LOG_ERR, "System call `%s' failed: %s",
"initgroups", strerror(errno)); "initgroups", strerror(errno));
return false; return false;
} }
@ -462,7 +462,7 @@ static bool drop_privs() {
if (do_chroot) { if (do_chroot) {
tzset(); /* for proper timestamps in logs */ tzset(); /* for proper timestamps in logs */
if (chroot(confbase) != 0 || chdir("/") != 0) { if (chroot(confbase) != 0 || chdir("/") != 0) {
logger(LOG_ERR, _("System call `%s' failed: %s"), logger(LOG_ERR, "System call `%s' failed: %s",
"chroot", strerror(errno)); "chroot", strerror(errno));
return false; return false;
} }
@ -471,7 +471,7 @@ static bool drop_privs() {
} }
if (switchuser) if (switchuser)
if (setuid(uid) != 0) { if (setuid(uid) != 0) {
logger(LOG_ERR, _("System call `%s' failed: %s"), logger(LOG_ERR, "System call `%s' failed: %s",
"setuid", strerror(errno)); "setuid", strerror(errno));
return false; return false;
} }
@ -491,23 +491,19 @@ static bool drop_privs() {
int main(int argc, char **argv) { int main(int argc, char **argv) {
program_name = argv[0]; program_name = argv[0];
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
textdomain(PACKAGE);
if(!parse_options(argc, argv)) if(!parse_options(argc, argv))
return 1; return 1;
make_names(); make_names();
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-2009 Ivo Timmermans, Guus Sliepen and others.\n" printf("Copyright (C) 1998-2009 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"
"see the file COPYING for details.\n")); "see the file COPYING for details.\n");
return 0; return 0;
} }
@ -544,13 +540,13 @@ int main(int argc, char **argv) {
return 1; return 1;
if(lzo_init() != LZO_E_OK) { if(lzo_init() != LZO_E_OK) {
logger(LOG_ERR, _("Error initializing LZO compressor!")); logger(LOG_ERR, "Error initializing LZO compressor!");
return 1; return 1;
} }
#ifdef HAVE_MINGW #ifdef HAVE_MINGW
if(WSAStartup(MAKEWORD(2, 2), &wsa_state)) { if(WSAStartup(MAKEWORD(2, 2), &wsa_state)) {
logger(LOG_ERR, _("System call `%s' failed: %s"), "WSAStartup", winerror(GetLastError())); logger(LOG_ERR, "System call `%s' failed: %s", "WSAStartup", winerror(GetLastError()));
return 1; return 1;
} }
@ -573,7 +569,7 @@ int main2(int argc, char **argv) {
* This has to be done after daemon()/fork() so it works for child. * This has to be done after daemon()/fork() so it works for child.
* No need to do that in parent as it's very short-lived. */ * No need to do that in parent as it's very short-lived. */
if(do_mlock && mlockall(MCL_CURRENT | MCL_FUTURE) != 0) { if(do_mlock && mlockall(MCL_CURRENT | MCL_FUTURE) != 0) {
logger(LOG_ERR, _("System call `%s' failed: %s"), "mlockall", logger(LOG_ERR, "System call `%s' failed: %s", "mlockall",
strerror(errno)); strerror(errno));
return 1; return 1;
} }
@ -600,7 +596,7 @@ int main2(int argc, char **argv) {
else if(!strcasecmp(priority, "High")) else if(!strcasecmp(priority, "High"))
setpriority(HIGH_PRIORITY_CLASS); setpriority(HIGH_PRIORITY_CLASS);
else { else {
logger(LOG_ERR, _("Invalid priority `%s`!"), priority); logger(LOG_ERR, "Invalid priority `%s`!", priority);
goto end; goto end;
} }
} }
@ -621,7 +617,7 @@ int main2(int argc, char **argv) {
close_network_connections(); close_network_connections();
end: end:
logger(LOG_NOTICE, _("Terminating")); logger(LOG_NOTICE, "Terminating");
#ifndef HAVE_MINGW #ifndef HAVE_MINGW
remove_pid(pidfilename); remove_pid(pidfilename);

View file

@ -70,10 +70,10 @@ bool setup_device(void) {
get_config_string(lookup_config(config_tree, "Interface"), &iface); get_config_string(lookup_config(config_tree, "Interface"), &iface);
device_info = _("UML network socket"); device_info = "UML network socket";
if((write_fd = socket(PF_UNIX, SOCK_DGRAM, 0)) < 0) { if((write_fd = socket(PF_UNIX, SOCK_DGRAM, 0)) < 0) {
logger(LOG_ERR, _("Could not open write %s: %s"), device_info, strerror(errno)); logger(LOG_ERR, "Could not open write %s: %s", device_info, strerror(errno));
running = false; running = false;
return false; return false;
} }
@ -81,13 +81,13 @@ bool setup_device(void) {
setsockopt(write_fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof one); setsockopt(write_fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof one);
if(fcntl(write_fd, F_SETFL, O_NONBLOCK) < 0) { if(fcntl(write_fd, F_SETFL, O_NONBLOCK) < 0) {
logger(LOG_ERR, _("System call `%s' failed: %s"), "fcntl", strerror(errno)); logger(LOG_ERR, "System call `%s' failed: %s", "fcntl", strerror(errno));
running = false; running = false;
return false; return false;
} }
if((data_fd = socket(PF_UNIX, SOCK_DGRAM, 0)) < 0) { if((data_fd = socket(PF_UNIX, SOCK_DGRAM, 0)) < 0) {
logger(LOG_ERR, _("Could not open data %s: %s"), device_info, strerror(errno)); logger(LOG_ERR, "Could not open data %s: %s", device_info, strerror(errno));
running = false; running = false;
return false; return false;
} }
@ -95,7 +95,7 @@ bool setup_device(void) {
setsockopt(data_fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof one); setsockopt(data_fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof one);
if(fcntl(data_fd, F_SETFL, O_NONBLOCK) < 0) { if(fcntl(data_fd, F_SETFL, O_NONBLOCK) < 0) {
logger(LOG_ERR, _("System call `%s' failed: %s"), "fcntl", strerror(errno)); logger(LOG_ERR, "System call `%s' failed: %s", "fcntl", strerror(errno));
running = false; running = false;
return false; return false;
} }
@ -108,13 +108,13 @@ bool setup_device(void) {
memcpy(&data_sun.sun_path, &name, sizeof name); memcpy(&data_sun.sun_path, &name, sizeof name);
if(bind(data_fd, (struct sockaddr *)&data_sun, sizeof data_sun) < 0) { if(bind(data_fd, (struct sockaddr *)&data_sun, sizeof data_sun) < 0) {
logger(LOG_ERR, _("Could not bind data %s: %s"), device_info, strerror(errno)); logger(LOG_ERR, "Could not bind data %s: %s", device_info, strerror(errno));
running = false; running = false;
return false; return false;
} }
if((listen_fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) { if((listen_fd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) {
logger(LOG_ERR, _("Could not open %s: %s"), device_info, logger(LOG_ERR, "Could not open %s: %s", device_info,
strerror(errno)); strerror(errno));
return false; return false;
} }
@ -122,26 +122,26 @@ bool setup_device(void) {
setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof one); setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof one);
if(fcntl(listen_fd, F_SETFL, O_NONBLOCK) < 0) { if(fcntl(listen_fd, F_SETFL, O_NONBLOCK) < 0) {
logger(LOG_ERR, _("System call `%s' failed: %s"), "fcntl", strerror(errno)); logger(LOG_ERR, "System call `%s' failed: %s", "fcntl", strerror(errno));
return false; return false;
} }
listen_sun.sun_family = AF_UNIX; listen_sun.sun_family = AF_UNIX;
strncpy(listen_sun.sun_path, device, sizeof listen_sun.sun_path); strncpy(listen_sun.sun_path, device, sizeof listen_sun.sun_path);
if(bind(listen_fd, (struct sockaddr *)&listen_sun, sizeof listen_sun) < 0) { if(bind(listen_fd, (struct sockaddr *)&listen_sun, sizeof listen_sun) < 0) {
logger(LOG_ERR, _("Could not bind %s to %s: %s"), device_info, device, strerror(errno)); logger(LOG_ERR, "Could not bind %s to %s: %s", device_info, device, strerror(errno));
return false; return false;
} }
if(listen(listen_fd, 1) < 0) { if(listen(listen_fd, 1) < 0) {
logger(LOG_ERR, _("Could not listen on %s %s: %s"), device_info, device, strerror(errno)); logger(LOG_ERR, "Could not listen on %s %s: %s", device_info, device, strerror(errno));
return false; return false;
} }
device_fd = listen_fd; device_fd = listen_fd;
state = 0; state = 0;
logger(LOG_INFO, _("%s is a %s"), device, device_info); logger(LOG_INFO, "%s is a %s", device, device_info);
if(routing_mode == RMODE_ROUTER) if(routing_mode == RMODE_ROUTER)
overwrite_mac = true; overwrite_mac = true;
@ -178,12 +178,12 @@ bool read_packet(vpn_packet_t *packet) {
request_fd = accept(listen_fd, &sa, &salen); request_fd = accept(listen_fd, &sa, &salen);
if(request_fd < 0) { if(request_fd < 0) {
logger(LOG_ERR, _("Could not accept connection to %s %s: %s"), device_info, device, strerror(errno)); logger(LOG_ERR, "Could not accept connection to %s %s: %s", device_info, device, strerror(errno));
return false; return false;
} }
if(fcntl(listen_fd, F_SETFL, O_NONBLOCK) < 0) { if(fcntl(listen_fd, F_SETFL, O_NONBLOCK) < 0) {
logger(LOG_ERR, _("System call `%s' failed: %s"), "fcntl", strerror(errno)); logger(LOG_ERR, "System call `%s' failed: %s", "fcntl", strerror(errno));
running = false; running = false;
return false; return false;
} }
@ -198,21 +198,21 @@ bool read_packet(vpn_packet_t *packet) {
case 1: { case 1: {
if((lenin = read(request_fd, &request, sizeof request)) != sizeof request) { if((lenin = read(request_fd, &request, sizeof request)) != sizeof request) {
logger(LOG_ERR, _("Error while reading request from %s %s: %s"), device_info, logger(LOG_ERR, "Error while reading request from %s %s: %s", device_info,
device, strerror(errno)); device, strerror(errno));
running = false; running = false;
return false; return false;
} }
if(request.magic != 0xfeedface || request.version != 3 || request.type != REQ_NEW_CONTROL) { if(request.magic != 0xfeedface || request.version != 3 || request.type != REQ_NEW_CONTROL) {
logger(LOG_ERR, _("Unknown magic %x, version %d, request type %d from %s %s"), logger(LOG_ERR, "Unknown magic %x, version %d, request type %d from %s %s",
request.magic, request.version, request.type, device_info, device); request.magic, request.version, request.type, device_info, device);
running = false; running = false;
return false; return false;
} }
if(connect(write_fd, &request.sock, sizeof request.sock) < 0) { if(connect(write_fd, &request.sock, sizeof request.sock) < 0) {
logger(LOG_ERR, _("Could not bind write %s: %s"), device_info, strerror(errno)); logger(LOG_ERR, "Could not bind write %s: %s", device_info, strerror(errno));
running = false; running = false;
return false; return false;
} }
@ -220,7 +220,7 @@ bool read_packet(vpn_packet_t *packet) {
write(request_fd, &data_sun, sizeof data_sun); write(request_fd, &data_sun, sizeof data_sun);
device_fd = data_fd; device_fd = data_fd;
logger(LOG_INFO, _("Connection with UML established")); logger(LOG_INFO, "Connection with UML established");
state = 2; state = 2;
return false; return false;
@ -228,7 +228,7 @@ bool read_packet(vpn_packet_t *packet) {
case 2: { case 2: {
if((lenin = read(data_fd, packet->data, MTU)) <= 0) { if((lenin = read(data_fd, packet->data, MTU)) <= 0) {
logger(LOG_ERR, _("Error while reading from %s %s: %s"), device_info, logger(LOG_ERR, "Error while reading from %s %s: %s", device_info,
device, strerror(errno)); device, strerror(errno));
running = false; running = false;
return false; return false;
@ -238,7 +238,7 @@ bool read_packet(vpn_packet_t *packet) {
device_total_in += packet->len; device_total_in += packet->len;
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Read packet of %d bytes from %s"), packet->len, ifdebug(TRAFFIC) logger(LOG_DEBUG, "Read packet of %d bytes from %s", packet->len,
device_info); device_info);
return true; return true;
@ -248,17 +248,17 @@ bool read_packet(vpn_packet_t *packet) {
bool write_packet(vpn_packet_t *packet) { bool write_packet(vpn_packet_t *packet) {
if(state != 2) { if(state != 2) {
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Dropping packet of %d bytes to %s: not connected to UML yet"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Dropping packet of %d bytes to %s: not connected to UML yet",
packet->len, device_info); packet->len, device_info);
return false; return false;
} }
ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), ifdebug(TRAFFIC) logger(LOG_DEBUG, "Writing packet of %d bytes to %s",
packet->len, device_info); packet->len, device_info);
if(write(write_fd, packet->data, packet->len) < 0) { if(write(write_fd, packet->data, packet->len) < 0) {
if(errno != EINTR && errno != EAGAIN) { if(errno != EINTR && errno != EAGAIN) {
logger(LOG_ERR, _("Can't write to %s %s: %s"), device_info, device, strerror(errno)); logger(LOG_ERR, "Can't write to %s %s: %s", device_info, device, strerror(errno));
running = false; running = false;
} }
@ -271,7 +271,7 @@ bool write_packet(vpn_packet_t *packet) {
} }
void dump_device_stats(void) { void dump_device_stats(void) {
logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device); logger(LOG_DEBUG, "Statistics for %s %s:", device_info, device);
logger(LOG_DEBUG, _(" total bytes in: %10d"), device_total_in); logger(LOG_DEBUG, " total bytes in: %10d", device_total_in);
logger(LOG_DEBUG, _(" total bytes out: %10d"), device_total_out); logger(LOG_DEBUG, " total bytes out: %10d", device_total_out);
} }

View file

@ -31,10 +31,6 @@ typedef int bool;
#define false 0 #define false 0
#endif #endif
/* Include localisation support */
#include "gettext.h"
#ifndef HAVE_STRSIGNAL #ifndef HAVE_STRSIGNAL
# define strsignal(p) "" # define strsignal(p) ""
#endif #endif