- Made Makefile.am stub for doc/es/
authorGuus Sliepen <guus@tinc-vpn.org>
Fri, 20 Oct 2000 16:49:20 +0000 (16:49 +0000)
committerGuus Sliepen <guus@tinc-vpn.org>
Fri, 20 Oct 2000 16:49:20 +0000 (16:49 +0000)
- Merged genauth into tincd
- Updated dutch translation

doc/es/Makefile.am [new file with mode: 0644]
lib/list.c [new file with mode: 0644]
lib/list.h [new file with mode: 0644]
po/POTFILES.in
po/es.po
po/nl.po
src/Makefile.am
src/genauth.c [deleted file]
src/tincd.c

diff --git a/doc/es/Makefile.am b/doc/es/Makefile.am
new file mode 100644 (file)
index 0000000..756d670
--- /dev/null
@@ -0,0 +1,3 @@
+## Process this file with automake to get Makefile.in
+
+# Nothing to see here, go away!
diff --git a/lib/list.c b/lib/list.c
new file mode 100644 (file)
index 0000000..5358f19
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+    list.c -- functions to deal with double linked lists
+    Copyright (C) 2000 Ivo Timmermans <itimmermans@bigfoot.com>
+                  2000 Guus Sliepen <guus@sliepen.warande.net>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    $Id: list.c,v 1.1 2000/10/20 16:44:32 zarq Exp $
+*/
+
+#include "config.h"
+
+#include <string.h>
+
+#include <error.h>
+#include <list.h>
+#include <xalloc.h>
+
+#include <system.h>
+
+/*
+  list_new
+
+  Initialize a new list.
+*/
+list_t *list_new(void)
+{
+  list_t *list;
+
+  list = xmalloc_and_zero(sizeof(list_t));
+  return list;
+}
+
+/*
+  list_delete
+
+  Delete the element pointed to by idx from the list.
+*/
+list_node_t *list_delete(list_t *list, list_node_t *idx)
+{
+  list_node_t *res;
+  
+  if(!list)
+    return NULL;
+  if(!idx)
+    return NULL;
+
+  if(list->callbacks->delete != NULL)
+    if(list->callbacks->delete(idx->data))
+      error(ERR_WARNING, N_("List callback[delete] failed for %08lx - freeing anyway"), idx->data);
+  
+  free(idx->data);
+  
+  if(idx->prev == NULL)
+    /* First element in list */
+    {
+      res = idx->next;
+      list->head = idx->next;
+    }
+  if(idx->next == NULL)
+    /* Last element in list */
+    {
+      res = NULL;
+      list->tail = idx->prev;
+    }
+  if(idx->prev != NULL && idx->next != NULL)
+    /* Neither first nor last element */
+    {
+      idx->prev->next = idx->next;
+      idx->next->prev = idx->prev;
+    }
+  if(list->head == NULL)
+    list->tail = NULL;
+  else
+    if(list->tail == NULL)
+      list->head = NULL;
+  free(idx);
+  return res;
+}
+
+/*
+  list_forall_nodes
+
+  Call function() on each element in the list.  If this function
+  returns non-zero, the element will be removed from the list.
+*/
+void list_forall_nodes(list_t *list, int (*function)(void *data))
+{
+  list_node_t *p;
+  int res;
+  
+  if(!list)       /* no list given */
+    return;
+  if(!function)   /* no function given */
+    return;
+  if(!list->head) /* list is empty */
+    return;
+  for(p = list->head; p != NULL; p = p->next)
+    {
+      res = function(p->data);
+      if(res != 0)
+       p = list_delete(list, p);
+    }
+}
+
+/*
+  list_destroy
+
+  Free all datastructures contained in this list.  It uses the delete
+  callback for this list to free each element.
+*/
+void list_destroy(list_t *list)
+{
+  if(!list)
+    return;
+  list_destroy_nodes(list);
+  free(list);
+}
+
+/*
+  list_append
+
+  Append a new node to the list that points to data.
+*/
+list_append(list_t *list, void *data)
+{
+  list_node_t *n;
+
+  n = xmalloc_and_zero(sizeof(list_node_t));
+  n->data = data;
+  n->prev = list->tail;
+  list->tail->next = n;
+  list->tail = n;
+}
diff --git a/lib/list.h b/lib/list.h
new file mode 100644 (file)
index 0000000..9162833
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+    list.h -- header file for list.c
+    Copyright (C) 2000 Ivo Timmermans <itimmermans@bigfoot.com>
+                  2000 Guus Sliepen <guus@sliepen.warande.net>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+    $Id: list.h,v 1.1 2000/10/20 16:44:32 zarq Exp $
+*/
+
+#ifndef __TINC_LIST_H__
+#define __TINC_LIST_H__
+
+typedef struct list_callbacks_t {
+  int (*delete) (void *);
+} list_callbacks_t;
+
+typedef struct list_node_t {
+  void *data;
+  struct list_node_t *prev;
+  struct list_node_t *next;
+} list_node_t;
+
+typedef struct list_t {
+  list_node_t *head;
+  list_node_t *tail;
+  list_callbacks_t *callbacks;
+} list_t;
+
+
+
+#endif /* __TINC_LIST_H__ */
index df8b507..5e6af89 100644 (file)
@@ -6,7 +6,6 @@
 lib/pidfile.c
 lib/utils.c
 src/conf.c
 lib/pidfile.c
 lib/utils.c
 src/conf.c
-src/genauth.c
 src/meta.c
 src/net.c
 src/netutl.c
 src/meta.c
 src/net.c
 src/netutl.c
index 6076a85..5940438 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: tinc 1.0pre2\n"
 msgid ""
 msgstr ""
 "Project-Id-Version: tinc 1.0pre2\n"
-"POT-Creation-Date: 2000-10-15 02:53+0200\n"
+"POT-Creation-Date: 2000-10-20 18:35+0200\n"
 "PO-Revision-Date: 2000-07-02 12:49+01:00\n"
 "Last-Translator: Enrique Zanardi <ezanardi@id-agora.com>\n"
 "Language-Team: Spanish <debian-l10n-spanish@lists.debian.org>\n"
 "PO-Revision-Date: 2000-07-02 12:49+01:00\n"
 "Last-Translator: Enrique Zanardi <ezanardi@id-agora.com>\n"
 "Language-Team: Spanish <debian-l10n-spanish@lists.debian.org>\n"
@@ -33,37 +33,6 @@ msgstr ""
 msgid "Invalid value for variable on line %d while reading config file %s"
 msgstr ""
 
 msgid "Invalid value for variable on line %d while reading config file %s"
 msgstr ""
 
-#: src/genauth.c:78
-#, c-format
-msgid "Usage: %s bits\n"
-msgstr "Uso: %s bits\n"
-
-#: src/genauth.c:89
-#, c-format
-msgid "Illegal number: %s\n"
-msgstr "Número ilegal: %s\n"
-
-#. Align to bytes for easy mallocing and reading
-#: src/genauth.c:95
-#, fuzzy, c-format
-msgid "Generating %d bits keys:\n"
-msgstr "Generando claves de %d bits."
-
-#: src/genauth.c:99
-#, fuzzy
-msgid "Done.\n"
-msgstr ": hecho.\n"
-
-#: src/genauth.c:101
-#, c-format
-msgid "Public key:\t%s\n"
-msgstr ""
-
-#: src/genauth.c:102
-#, c-format
-msgid "Private key:\t%s\n"
-msgstr ""
-
 #: src/meta.c:42
 #, fuzzy, c-format
 msgid "Sending %d bytes of metadata to %s (%s): %s"
 #: src/meta.c:42
 #, fuzzy, c-format
 msgid "Sending %d bytes of metadata to %s (%s): %s"
@@ -74,7 +43,7 @@ msgstr "Enviados %d bytes a %lx"
 msgid "Sending meta data to %s (%s) failed: %m"
 msgstr "Error enviando datos: %m"
 
 msgid "Sending meta data to %s (%s) failed: %m"
 msgstr "Error enviando datos: %m"
 
-#: src/meta.c:85 src/net.c:773
+#: src/meta.c:85 src/net.c:847
 #, fuzzy, c-format
 msgid "This is a bug: %s:%d: %d:%m %s (%s)"
 msgstr "Esto es un `bug': %s:%d: %d:%m"
 #, fuzzy, c-format
 msgid "This is a bug: %s:%d: %d:%m %s (%s)"
 msgstr "Esto es un `bug': %s:%d: %d:%m"
@@ -104,278 +73,300 @@ msgstr "Petici
 msgid "Metadata read buffer overflow for %s (%s)"
 msgstr "Desbordamiento del búfer de lectura de metadatos"
 
 msgid "Metadata read buffer overflow for %s (%s)"
 msgstr "Desbordamiento del búfer de lectura de metadatos"
 
-#: src/net.c:106
+#: src/net.c:107
 #, fuzzy, c-format
 msgid "Sending packet of %d bytes to %s (%s)"
 msgstr "Enviados %d bytes a %lx"
 
 #, fuzzy, c-format
 msgid "Sending packet of %d bytes to %s (%s)"
 msgstr "Enviados %d bytes a %lx"
 
-#: src/net.c:115
+#: src/net.c:116
 #, fuzzy, c-format
 msgid "Error sending packet to %s (%s): %m"
 msgstr "Error enviando datos: %m"
 
 #, fuzzy, c-format
 msgid "Error sending packet to %s (%s): %m"
 msgstr "Error enviando datos: %m"
 
-#: src/net.c:129
+#: src/net.c:130
 #, fuzzy, c-format
 msgid "Receiving packet of %d bytes"
 msgstr "Recibiendo clave de "
 
 #, fuzzy, c-format
 msgid "Receiving packet of %d bytes"
 msgstr "Recibiendo clave de "
 
-#: src/net.c:142
+#: src/net.c:143
 #, c-format
 msgid "Can't write to tap device: %m"
 msgstr "No puedo escribir en el dispositivo tap: %m"
 
 #, c-format
 msgid "Can't write to tap device: %m"
 msgstr "No puedo escribir en el dispositivo tap: %m"
 
-#: src/net.c:242
+#: src/net.c:243
 #, fuzzy
 msgid "Queue flushed"
 msgstr "cola vaciada"
 
 #, fuzzy
 msgid "Queue flushed"
 msgstr "cola vaciada"
 
-#: src/net.c:257
+#: src/net.c:258
 #, fuzzy, c-format
 msgid "Flushing send queue for %s (%s)"
 msgstr "Vaciando la cola de envíos para "
 
 #, fuzzy, c-format
 msgid "Flushing send queue for %s (%s)"
 msgstr "Vaciando la cola de envíos para "
 
-#: src/net.c:265
+#: src/net.c:266
 #, fuzzy, c-format
 msgid "Flushing receive queue for %s (%s)"
 msgstr "Vaciando la cola de recepción para "
 
 #, fuzzy, c-format
 msgid "Flushing receive queue for %s (%s)"
 msgstr "Vaciando la cola de recepción para "
 
-#: src/net.c:283
+#: src/net.c:284
 #, c-format
 msgid "Trying to look up %d.%d.%d.%d in connection list failed!"
 msgstr ""
 
 #, c-format
 msgid "Trying to look up %d.%d.%d.%d in connection list failed!"
 msgstr ""
 
-#: src/net.c:297
+#: src/net.c:298
 #, fuzzy, c-format
 msgid "Could not open UDP connection to %s (%s)"
 msgstr "No pude abrir %s: %s\n"
 
 #, fuzzy, c-format
 msgid "Could not open UDP connection to %s (%s)"
 msgstr "No pude abrir %s: %s\n"
 
-#: src/net.c:305
+#: src/net.c:306
 #, c-format
 msgid "No valid key known yet for %s (%s), queueing packet"
 msgstr ""
 
 #, c-format
 msgid "No valid key known yet for %s (%s), queueing packet"
 msgstr ""
 
-#: src/net.c:316
+#: src/net.c:317
 #, c-format
 msgid "%s (%s) is not ready, queueing packet"
 msgstr ""
 
 #, c-format
 msgid "%s (%s) is not ready, queueing packet"
 msgstr ""
 
-#: src/net.c:344
+#: src/net.c:352
 #, c-format
 msgid "Could not open %s: %m"
 msgstr "No pude abrir %s: %m"
 
 #, c-format
 msgid "Could not open %s: %m"
 msgstr "No pude abrir %s: %m"
 
-#: src/net.c:360
+#: src/net.c:370
 #, c-format
 msgid "%s is a new style tun/tap device"
 msgstr ""
 
 #, c-format
 msgid "%s is a new style tun/tap device"
 msgstr ""
 
-#: src/net.c:362
+#: src/net.c:373
 msgid "tun/tap device will be left unconfigured"
 msgstr ""
 
 msgid "tun/tap device will be left unconfigured"
 msgstr ""
 
-#: src/net.c:384
+#: src/net.c:396
 #, c-format
 msgid "Creating metasocket failed: %m"
 msgstr "Fallo al crear el metasocket: %m"
 
 #, c-format
 msgid "Creating metasocket failed: %m"
 msgstr "Fallo al crear el metasocket: %m"
 
-#: src/net.c:390 src/net.c:396 src/net.c:458
+#: src/net.c:402 src/net.c:408 src/net.c:470
 #, c-format
 msgid "setsockopt: %m"
 msgstr "setsockopt(): %m"
 
 #, c-format
 msgid "setsockopt: %m"
 msgstr "setsockopt(): %m"
 
-#: src/net.c:403 src/net.c:465
+#: src/net.c:415 src/net.c:477
 #, c-format
 msgid "fcntl: %m"
 msgstr "fcntl(): %m"
 
 #, c-format
 msgid "fcntl: %m"
 msgstr "fcntl(): %m"
 
-#: src/net.c:411
+#: src/net.c:423
 #, c-format
 msgid "Unable to bind listen socket to interface %s: %m"
 msgstr ""
 
 #, c-format
 msgid "Unable to bind listen socket to interface %s: %m"
 msgstr ""
 
-#: src/net.c:427
+#: src/net.c:439
 #, c-format
 msgid "Can't bind to port %hd/tcp: %m"
 msgstr "Ha fallado la llamada a bind() con el puerto %hd/tcp: %m"
 
 #, c-format
 msgid "Can't bind to port %hd/tcp: %m"
 msgstr "Ha fallado la llamada a bind() con el puerto %hd/tcp: %m"
 
-#: src/net.c:433
+#: src/net.c:445
 #, c-format
 msgid "listen: %m"
 msgstr "listen(): %m"
 
 #, c-format
 msgid "listen: %m"
 msgstr "listen(): %m"
 
-#: src/net.c:452
+#: src/net.c:464
 #, c-format
 msgid "Creating socket failed: %m"
 msgstr "Error al crear el `socket': %m"
 
 #, c-format
 msgid "Creating socket failed: %m"
 msgstr "Error al crear el `socket': %m"
 
-#: src/net.c:476
+#: src/net.c:488
 #, c-format
 msgid "Can't bind to port %hd/udp: %m"
 msgstr "Ha fallado la llamada a bind() con el puerto %hd/udp: %m"
 
 #, c-format
 msgid "Can't bind to port %hd/udp: %m"
 msgstr "Ha fallado la llamada a bind() con el puerto %hd/udp: %m"
 
-#: src/net.c:493
+#: src/net.c:505
 #, fuzzy, c-format
 msgid "Trying to connect to %s"
 msgstr "Cerrando conexión con %s."
 
 #, fuzzy, c-format
 msgid "Trying to connect to %s"
 msgstr "Cerrando conexión con %s."
 
-#: src/net.c:503
+#: src/net.c:515
 #, fuzzy, c-format
 msgid "Creating socket for %s port %d failed: %m"
 msgstr "Error al crear el `socket': %m"
 
 #, fuzzy, c-format
 msgid "Creating socket for %s port %d failed: %m"
 msgstr "Error al crear el `socket': %m"
 
-#: src/net.c:514
+#: src/net.c:526
 #, c-format
 msgid "%s port %hd: %m"
 msgstr ""
 
 #, c-format
 msgid "%s port %hd: %m"
 msgstr ""
 
-#: src/net.c:521
+#: src/net.c:533
 #, c-format
 msgid "fcntl for %s port %d: %m"
 msgstr ""
 
 #, c-format
 msgid "fcntl for %s port %d: %m"
 msgstr ""
 
-#: src/net.c:527
+#: src/net.c:539
 #, fuzzy, c-format
 msgid "Connected to %s port %hd"
 msgstr "Conectado a %s:%hd"
 
 #, fuzzy, c-format
 msgid "Connected to %s port %hd"
 msgstr "Conectado a %s:%hd"
 
-#: src/net.c:547
+#: src/net.c:562
+msgid "Invalid name for outgoing connection"
+msgstr ""
+
+#: src/net.c:571
+#, c-format
+msgid "Error reading host configuration file for %s"
+msgstr ""
+
+#: src/net.c:578
+#, c-format
+msgid "No address specified for %s"
+msgstr ""
+
+#: src/net.c:585
 #, fuzzy, c-format
 msgid "Error looking up `%s': %m"
 msgstr "Error buscando `%s': %s\n"
 
 #, fuzzy, c-format
 msgid "Error looking up `%s': %m"
 msgstr "Error buscando `%s': %s\n"
 
-#: src/net.c:557
+#: src/net.c:595
 #, fuzzy, c-format
 msgid "Could not set up a meta connection to %s"
 msgstr "No he podido configurar una meta conexión."
 
 #, fuzzy, c-format
 msgid "Could not set up a meta connection to %s"
 msgstr "No he podido configurar una meta conexión."
 
-#: src/net.c:586
+#: src/net.c:629
 msgid "Name for tinc daemon required!"
 msgstr ""
 
 msgid "Name for tinc daemon required!"
 msgstr ""
 
-#: src/net.c:594
+#: src/net.c:637
 msgid "Invalid name for myself!"
 msgstr ""
 
 msgid "Invalid name for myself!"
 msgstr ""
 
-#: src/net.c:600
+#: src/net.c:643
+msgid "Private key for tinc daemon required!"
+msgstr ""
+
+#: src/net.c:655
 msgid "Cannot open host configuration file for myself!"
 msgstr ""
 
 msgid "Cannot open host configuration file for myself!"
 msgstr ""
 
-#: src/net.c:619
+#: src/net.c:661
+msgid "Public key for tinc daemon required!"
+msgstr ""
+
+#: src/net.c:690
 #, fuzzy
 msgid "Unable to set up a listening socket!"
 msgstr "No puedo configurar un `socket' a la escucha"
 
 #, fuzzy
 msgid "Unable to set up a listening socket!"
 msgstr "No puedo configurar un `socket' a la escucha"
 
-#: src/net.c:625
+#: src/net.c:696
 #, fuzzy
 msgid "Unable to set up an incoming vpn data socket!"
 msgstr "No puedo configurar un `socket' para recibir datos de la vpn"
 
 #, fuzzy
 msgid "Unable to set up an incoming vpn data socket!"
 msgstr "No puedo configurar un `socket' para recibir datos de la vpn"
 
-#: src/net.c:632
+#: src/net.c:703
 #, fuzzy, c-format
 msgid "Ready: listening on port %hd"
 msgstr "Listo: escuchando en el puerto %d."
 
 #, fuzzy, c-format
 msgid "Ready: listening on port %hd"
 msgstr "Listo: escuchando en el puerto %d."
 
-#: src/net.c:660
+#: src/net.c:734
 #, fuzzy, c-format
 msgid "Still failed to connect to other, will retry in %d seconds"
 msgstr "Siguo sin poder conectar con el otro. Lo reintentaré en %d segundos."
 
 #, fuzzy, c-format
 msgid "Still failed to connect to other, will retry in %d seconds"
 msgstr "Siguo sin poder conectar con el otro. Lo reintentaré en %d segundos."
 
-#: src/net.c:698
+#: src/net.c:772
 #, fuzzy, c-format
 msgid "Trying to re-establish outgoing connection in %d seconds"
 msgstr "Intento re-establecer la conexión saliente en 5 segundos."
 
 #, fuzzy, c-format
 msgid "Trying to re-establish outgoing connection in %d seconds"
 msgstr "Intento re-establecer la conexión saliente en 5 segundos."
 
-#: src/net.c:736
+#: src/net.c:810
 #, fuzzy
 msgid "Terminating"
 msgstr "Terminando."
 
 #, fuzzy
 msgid "Terminating"
 msgstr "Terminando."
 
-#: src/net.c:750
+#: src/net.c:824
 #, fuzzy, c-format
 msgid "Opening UDP socket to %s"
 msgstr "Abriendo `socket' UDP a "
 
 #, fuzzy, c-format
 msgid "Opening UDP socket to %s"
 msgstr "Abriendo `socket' UDP a "
 
-#: src/net.c:755
+#: src/net.c:829
 #, fuzzy, c-format
 msgid "Creating UDP socket failed: %m"
 msgstr "Error al crear el `socket': %m"
 
 #, fuzzy, c-format
 msgid "Creating UDP socket failed: %m"
 msgstr "Error al crear el `socket': %m"
 
-#: src/net.c:765
+#: src/net.c:839
 #, fuzzy, c-format
 msgid "Connecting to %s port %d failed: %m"
 msgstr "Error al crear `socket' de datos: %m"
 
 #, fuzzy, c-format
 msgid "Connecting to %s port %d failed: %m"
 msgstr "Error al crear `socket' de datos: %m"
 
-#: src/net.c:798
+#: src/net.c:872
 #, c-format
 msgid "Error: getpeername: %m"
 msgstr "Error: getpeername(): %m"
 
 #, c-format
 msgid "Error: getpeername: %m"
 msgstr "Error: getpeername(): %m"
 
-#: src/net.c:813
+#: src/net.c:887
 #, fuzzy, c-format
 msgid "Connection from %s port %d"
 msgstr "Conexión desde %s:%d"
 
 #, fuzzy, c-format
 msgid "Connection from %s port %d"
 msgstr "Conexión desde %s:%d"
 
-#: src/net.c:861
+#: src/net.c:931
 #, fuzzy, c-format
 msgid "This is a bug: %s:%d: %d:%m"
 msgstr "Esto es un `bug': %s:%d: %d:%m"
 
 #, fuzzy, c-format
 msgid "This is a bug: %s:%d: %d:%m"
 msgstr "Esto es un `bug': %s:%d: %d:%m"
 
-#: src/net.c:867
+#: src/net.c:937
 #, fuzzy, c-format
 msgid "Incoming data socket error: %s"
 msgstr "Error en el `socket' de recepción de datos: %s"
 
 #, fuzzy, c-format
 msgid "Incoming data socket error: %s"
 msgstr "Error en el `socket' de recepción de datos: %s"
 
-#: src/net.c:873
+#: src/net.c:943
 #, fuzzy, c-format
 msgid "Receiving packet failed: %m"
 msgstr "Error recibiendo datos: %m"
 
 #, fuzzy, c-format
 msgid "Receiving packet failed: %m"
 msgstr "Error recibiendo datos: %m"
 
-#: src/net.c:894
+#: src/net.c:964
 #, fuzzy, c-format
 msgid "Closing connection with %s (%s)"
 msgstr "Cerrando conexión con %s."
 
 #, fuzzy, c-format
 msgid "Closing connection with %s (%s)"
 msgstr "Cerrando conexión con %s."
 
-#: src/net.c:937
+#: src/net.c:1007
 #, fuzzy
 msgid "Trying to re-establish outgoing connection in 5 seconds"
 msgstr "Intento re-establecer la conexión saliente en 5 segundos."
 
 #, fuzzy
 msgid "Trying to re-establish outgoing connection in 5 seconds"
 msgstr "Intento re-establecer la conexión saliente en 5 segundos."
 
-#: src/net.c:967
+#: src/net.c:1037
 #, c-format
 msgid "%s (%s) didn't respond to PING"
 msgstr ""
 
 #, c-format
 msgid "%s (%s) didn't respond to PING"
 msgstr ""
 
-#: src/net.c:998
+#: src/net.c:1068
 #, c-format
 msgid "Accepting a new connection failed: %m"
 msgstr "Error al aceptar una nueva conexión: %m"
 
 #, c-format
 msgid "Accepting a new connection failed: %m"
 msgstr "Error al aceptar una nueva conexión: %m"
 
-#: src/net.c:1006
+#: src/net.c:1076
 #, fuzzy
 msgid "Closed attempted connection"
 msgstr "Se ha cerrado la conexión que se intentaba realizar."
 
 #, fuzzy
 msgid "Closed attempted connection"
 msgstr "Se ha cerrado la conexión que se intentaba realizar."
 
-#: src/net.c:1041
+#: src/net.c:1111
 #, fuzzy, c-format
 msgid "Outgoing data socket error for %s (%s): %s"
 msgstr "Error en el `socket' de datos salientes: %s"
 
 #, fuzzy, c-format
 msgid "Outgoing data socket error for %s (%s): %s"
 msgstr "Error en el `socket' de datos salientes: %s"
 
-#: src/net.c:1077
+#: src/net.c:1150 src/net.c:1159
 #, c-format
 msgid "Error while reading from tapdevice: %m"
 msgstr "Error leyendo del dispositivo tap: %m"
 
 #, c-format
 msgid "Error while reading from tapdevice: %m"
 msgstr "Error leyendo del dispositivo tap: %m"
 
-#: src/net.c:1087
+#: src/net.c:1171
 #, fuzzy, c-format
 msgid "Non-IP ethernet frame %04x from %02x:%02x:%02x:%02x:%02x:%02x"
 msgstr "Trama ethernet no-IP %04x de "
 
 #, fuzzy, c-format
 msgid "Non-IP ethernet frame %04x from %02x:%02x:%02x:%02x:%02x:%02x"
 msgstr "Trama ethernet no-IP %04x de "
 
-#: src/net.c:1094
+#: src/net.c:1178
 #, c-format
 msgid "Dropping short packet from %02x:%02x:%02x:%02x:%02x:%02x"
 msgstr ""
 
 #, c-format
 msgid "Dropping short packet from %02x:%02x:%02x:%02x:%02x:%02x"
 msgstr ""
 
-#: src/net.c:1133
+#: src/net.c:1213
 #, c-format
 msgid "Error while waiting for input: %m"
 msgstr "Error esperando entrada: %m"
 #, c-format
 msgid "Error while waiting for input: %m"
 msgstr "Error esperando entrada: %m"
@@ -415,275 +406,285 @@ msgstr "Error al procesar la petici
 msgid "Bogus data received from %s (%s)"
 msgstr "Se han recibido datos sin sentido."
 
 msgid "Bogus data received from %s (%s)"
 msgstr "Se han recibido datos sin sentido."
 
-#: src/protocol.c:167
+#: src/protocol.c:170
 #, fuzzy, c-format
 msgid "Got bad ID from %s"
 msgstr "recibí una petición BASIC_INFO incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad ID from %s"
 msgstr "recibí una petición BASIC_INFO incorrecta: %s"
 
-#: src/protocol.c:175
+#: src/protocol.c:178
 #, fuzzy, c-format
 msgid "Peer %s (%s) uses incompatible version %d"
 msgstr ""
 "La máquina remota usa una versión incompatible del protocolo (versión %d)."
 
 #, fuzzy, c-format
 msgid "Peer %s (%s) uses incompatible version %d"
 msgstr ""
 "La máquina remota usa una versión incompatible del protocolo (versión %d)."
 
-#: src/protocol.c:184
+#: src/protocol.c:187
 #, c-format
 msgid "Peer %s uses invalid identity name"
 msgstr ""
 
 #, c-format
 msgid "Peer %s uses invalid identity name"
 msgstr ""
 
-#: src/protocol.c:192
+#: src/protocol.c:195
 #, c-format
 msgid "Peer %s had unknown identity (%s)"
 msgstr ""
 
 #, c-format
 msgid "Peer %s had unknown identity (%s)"
 msgstr ""
 
-#: src/protocol.c:207
+#: src/protocol.c:209
 #, c-format
 msgid "Uplink %s (%s) is already in our connection list"
 msgstr ""
 
 #, c-format
 msgid "Uplink %s (%s) is already in our connection list"
 msgstr ""
 
-#: src/protocol.c:253
+#: src/protocol.c:219
+#, c-format
+msgid "No public key known for %s (%s)"
+msgstr ""
+
+#: src/protocol.c:258 src/protocol.c:312
+#, c-format
+msgid "Error during encryption of challenge for %s (%s)"
+msgstr ""
+
+#: src/protocol.c:284
 #, fuzzy, c-format
 msgid "Got bad CHALLENGE from %s (%s)"
 msgstr "recibí KEY_CHANGED de "
 
 #, fuzzy, c-format
 msgid "Got bad CHALLENGE from %s (%s)"
 msgstr "recibí KEY_CHANGED de "
 
-#: src/protocol.c:261
+#: src/protocol.c:294
 #, c-format
 msgid "Intruder: wrong challenge length from %s (%s)"
 msgstr ""
 
 #, c-format
 msgid "Intruder: wrong challenge length from %s (%s)"
 msgstr ""
 
-#: src/protocol.c:287
+#: src/protocol.c:330
 #, c-format
 msgid "Trying to send CHAL_REPLY to %s (%s) without a valid CHALLENGE"
 msgstr ""
 
 #, c-format
 msgid "Trying to send CHAL_REPLY to %s (%s) without a valid CHALLENGE"
 msgstr ""
 
-#: src/protocol.c:318
+#: src/protocol.c:361
 #, fuzzy, c-format
 msgid "Got bad CHAL_REPLY from %s (%s)"
 msgstr "recibí una petición ANS_KEY incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad CHAL_REPLY from %s (%s)"
 msgstr "recibí una petición ANS_KEY incorrecta: %s"
 
-#: src/protocol.c:327
+#: src/protocol.c:370
 #, c-format
 msgid "Intruder: wrong challenge reply length from %s (%s)"
 msgstr ""
 
 #, c-format
 msgid "Intruder: wrong challenge reply length from %s (%s)"
 msgstr ""
 
-#: src/protocol.c:344
+#: src/protocol.c:387
 #, c-format
 msgid "Intruder: wrong challenge reply from %s (%s)"
 msgstr ""
 
 #, c-format
 msgid "Intruder: wrong challenge reply from %s (%s)"
 msgstr ""
 
-#: src/protocol.c:386
+#: src/protocol.c:425
 #, c-format
 msgid "Removing old entry for %s at %s in favour of new connection from %s"
 msgstr ""
 
 #, c-format
 msgid "Removing old entry for %s at %s in favour of new connection from %s"
 msgstr ""
 
-#: src/protocol.c:398
+#: src/protocol.c:437
 #, fuzzy, c-format
 msgid "Connection with %s (%s) activated"
 msgstr "Activada la conexión con %s."
 
 #, fuzzy, c-format
 msgid "Connection with %s (%s) activated"
 msgstr "Activada la conexión con %s."
 
-#: src/protocol.c:438
+#: src/protocol.c:477
 #, fuzzy, c-format
 msgid "Got bad ADD_SUBNET from %s (%s)"
 msgstr "recibí una petición ADD_HOST incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad ADD_SUBNET from %s (%s)"
 msgstr "recibí una petición ADD_HOST incorrecta: %s"
 
-#: src/protocol.c:447
+#: src/protocol.c:486
 #, fuzzy, c-format
 msgid "Got bad ADD_SUBNET from %s (%s): invalid identity name"
 msgstr "recibí una petición ADD_HOST incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad ADD_SUBNET from %s (%s): invalid identity name"
 msgstr "recibí una petición ADD_HOST incorrecta: %s"
 
-#: src/protocol.c:456
+#: src/protocol.c:495
 #, fuzzy, c-format
 msgid "Got bad ADD_SUBNET from %s (%s): invalid subnet string"
 msgstr "recibí una petición ADD_HOST incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad ADD_SUBNET from %s (%s): invalid subnet string"
 msgstr "recibí una petición ADD_HOST incorrecta: %s"
 
-#: src/protocol.c:467
+#: src/protocol.c:506
 #, c-format
 msgid "Warning: got ADD_SUBNET from %s (%s) for ourself, restarting"
 msgstr ""
 
 #, c-format
 msgid "Warning: got ADD_SUBNET from %s (%s) for ourself, restarting"
 msgstr ""
 
-#: src/protocol.c:478
+#: src/protocol.c:517
 #, c-format
 msgid "Got ADD_SUBNET for %s from %s (%s) which is not in our connection list"
 msgstr ""
 
 #, c-format
 msgid "Got ADD_SUBNET for %s from %s (%s) which is not in our connection list"
 msgstr ""
 
-#: src/protocol.c:506
+#: src/protocol.c:545
 #, fuzzy, c-format
 msgid "Got bad DEL_SUBNET from %s (%s)"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad DEL_SUBNET from %s (%s)"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
-#: src/protocol.c:515
+#: src/protocol.c:554
 #, fuzzy, c-format
 msgid "Got bad DEL_SUBNET from %s (%s): invalid identity name"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad DEL_SUBNET from %s (%s): invalid identity name"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
-#: src/protocol.c:524
+#: src/protocol.c:563
 #, fuzzy, c-format
 msgid "Got bad DEL_SUBNET from %s (%s): invalid subnet string"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad DEL_SUBNET from %s (%s): invalid subnet string"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
-#: src/protocol.c:535
+#: src/protocol.c:574
 #, c-format
 msgid "Warning: got DEL_SUBNET from %s (%s) for ourself, restarting"
 msgstr ""
 
 #, c-format
 msgid "Warning: got DEL_SUBNET from %s (%s) for ourself, restarting"
 msgstr ""
 
-#: src/protocol.c:546
+#: src/protocol.c:585
 #, c-format
 msgid "Got DEL_SUBNET for %s from %s (%s) which is not in our connection list"
 msgstr ""
 
 #, c-format
 msgid "Got DEL_SUBNET for %s from %s (%s) which is not in our connection list"
 msgstr ""
 
-#: src/protocol.c:577
+#: src/protocol.c:616
 #, fuzzy, c-format
 msgid "Got bad ADD_HOST from %s (%s)"
 msgstr "recibí una petición ADD_HOST incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad ADD_HOST from %s (%s)"
 msgstr "recibí una petición ADD_HOST incorrecta: %s"
 
-#: src/protocol.c:585
+#: src/protocol.c:624
 #, fuzzy, c-format
 msgid "Got bad ADD_HOST from %s (%s): invalid identity name"
 msgstr "recibí una petición ADD_HOST incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad ADD_HOST from %s (%s): invalid identity name"
 msgstr "recibí una petición ADD_HOST incorrecta: %s"
 
-#: src/protocol.c:594
+#: src/protocol.c:633
 #, c-format
 msgid "Warning: got ADD_HOST from %s (%s) for ourself, restarting"
 msgstr ""
 
 #, c-format
 msgid "Warning: got ADD_HOST from %s (%s) for ourself, restarting"
 msgstr ""
 
-#: src/protocol.c:604
+#: src/protocol.c:643
 #, c-format
 msgid "Warning: got ADD_HOST from %s (%s) from ourself, restarting"
 msgstr ""
 
 #, c-format
 msgid "Warning: got ADD_HOST from %s (%s) from ourself, restarting"
 msgstr ""
 
-#: src/protocol.c:614
+#: src/protocol.c:653
 #, c-format
 msgid ""
 "Got ADD_HOST from %s (%s) with origin %s which is not in our connection list"
 msgstr ""
 
 #, c-format
 msgid ""
 "Got ADD_HOST from %s (%s) with origin %s which is not in our connection list"
 msgstr ""
 
-#: src/protocol.c:633
+#: src/protocol.c:672
 #, c-format
 msgid "Got duplicate ADD_HOST for %s (%s) from %s (%s)"
 msgstr ""
 
 #, c-format
 msgid "Got duplicate ADD_HOST for %s (%s) from %s (%s)"
 msgstr ""
 
-#: src/protocol.c:640
+#: src/protocol.c:679
 #, c-format
 msgid "Removing old entry for %s (%s)"
 msgstr ""
 
 #, c-format
 msgid "Removing old entry for %s (%s)"
 msgstr ""
 
-#: src/protocol.c:683
+#: src/protocol.c:722
 #, fuzzy, c-format
 msgid "Got bad DEL_HOST from %s (%s)"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad DEL_HOST from %s (%s)"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
-#: src/protocol.c:692
+#: src/protocol.c:731
 #, fuzzy, c-format
 msgid "Got bad DEL_HOST from %s (%s): invalid identity name"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad DEL_HOST from %s (%s): invalid identity name"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
-#: src/protocol.c:701
+#: src/protocol.c:740
 #, c-format
 msgid "Warning: got DEL_HOST from %s (%s) for ourself, restarting"
 msgstr ""
 
 #, c-format
 msgid "Warning: got DEL_HOST from %s (%s) for ourself, restarting"
 msgstr ""
 
-#: src/protocol.c:712
+#: src/protocol.c:751
 #, c-format
 msgid "Warning: got DEL_HOST from %s (%s) from ourself, restarting"
 msgstr ""
 
 #, c-format
 msgid "Warning: got DEL_HOST from %s (%s) from ourself, restarting"
 msgstr ""
 
-#: src/protocol.c:722
+#: src/protocol.c:761
 #, c-format
 msgid ""
 "Got DEL_HOST from %s (%s) with origin %s which is not in our connection list"
 msgstr ""
 
 #, c-format
 msgid ""
 "Got DEL_HOST from %s (%s) with origin %s which is not in our connection list"
 msgstr ""
 
-#: src/protocol.c:734
+#: src/protocol.c:773
 #, c-format
 msgid "Got DEL_HOST from %s (%s) for %s which is not in our connection list"
 msgstr ""
 
 #, c-format
 msgid "Got DEL_HOST from %s (%s) for %s which is not in our connection list"
 msgstr ""
 
-#: src/protocol.c:744
+#: src/protocol.c:783
 #, fuzzy, c-format
 msgid "Got DEL_HOST from %s (%s) for %s which doesn't match"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got DEL_HOST from %s (%s) for %s which doesn't match"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
-#: src/protocol.c:776
+#: src/protocol.c:815
 #, fuzzy, c-format
 msgid "Got bad STATUS from %s (%s)"
 msgstr "recibí una petición ANS_KEY incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad STATUS from %s (%s)"
 msgstr "recibí una petición ANS_KEY incorrecta: %s"
 
-#: src/protocol.c:783
+#: src/protocol.c:822
 #, fuzzy, c-format
 msgid "Status message from %s (%s): %s: %s"
 msgstr "He recibido una petición: %s"
 
 #, fuzzy, c-format
 msgid "Status message from %s (%s): %s: %s"
 msgstr "He recibido una petición: %s"
 
-#: src/protocol.c:807
+#: src/protocol.c:846
 #, fuzzy, c-format
 msgid "Got bad ERROR from %s (%s)"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad ERROR from %s (%s)"
 msgstr "recibí una petición DEL_HOST incorrecta: %s"
 
-#: src/protocol.c:814
+#: src/protocol.c:853
 #, fuzzy, c-format
 msgid "Error message from %s (%s): %s: %s"
 msgstr "He recibido una petición: %s"
 
 #, fuzzy, c-format
 msgid "Error message from %s (%s): %s: %s"
 msgstr "He recibido una petición: %s"
 
-#: src/protocol.c:892
+#: src/protocol.c:931
 #, fuzzy, c-format
 msgid "Got bad KEY_CHANGED from %s (%s)"
 msgstr "recibí KEY_CHANGED de "
 
 #, fuzzy, c-format
 msgid "Got bad KEY_CHANGED from %s (%s)"
 msgstr "recibí KEY_CHANGED de "
 
-#: src/protocol.c:899
+#: src/protocol.c:938
 #, c-format
 msgid ""
 "Got KEY_CHANGED from %s (%s) origin %s which does not exist in our "
 "connection list"
 msgstr ""
 
 #, c-format
 msgid ""
 "Got KEY_CHANGED from %s (%s) origin %s which does not exist in our "
 "connection list"
 msgstr ""
 
-#: src/protocol.c:929
+#: src/protocol.c:968
 #, fuzzy, c-format
 msgid "Got bad REQ_KEY from %s (%s)"
 msgstr "recibí REQ_KEY de "
 
 #, fuzzy, c-format
 msgid "Got bad REQ_KEY from %s (%s)"
 msgstr "recibí REQ_KEY de "
 
-#: src/protocol.c:936
+#: src/protocol.c:975
 #, c-format
 msgid ""
 "Got REQ_KEY from %s (%s) origin %s which does not exist in our connection "
 "list"
 msgstr ""
 
 #, c-format
 msgid ""
 "Got REQ_KEY from %s (%s) origin %s which does not exist in our connection "
 "list"
 msgstr ""
 
-#: src/protocol.c:952
+#: src/protocol.c:991
 #, c-format
 msgid ""
 "Got REQ_KEY from %s (%s) destination %s which does not exist in our "
 "connection list"
 msgstr ""
 
 #, c-format
 msgid ""
 "Got REQ_KEY from %s (%s) destination %s which does not exist in our "
 "connection list"
 msgstr ""
 
-#: src/protocol.c:980
+#: src/protocol.c:1019
 #, fuzzy, c-format
 msgid "Got bad ANS_KEY from %s (%s)"
 msgstr "recibí una petición ANS_KEY incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad ANS_KEY from %s (%s)"
 msgstr "recibí una petición ANS_KEY incorrecta: %s"
 
-#: src/protocol.c:987
+#: src/protocol.c:1026
 #, c-format
 msgid ""
 "Got ANS_KEY from %s (%s) origin %s which does not exist in our connection "
 "list"
 msgstr ""
 
 #, c-format
 msgid ""
 "Got ANS_KEY from %s (%s) origin %s which does not exist in our connection "
 "list"
 msgstr ""
 
-#: src/protocol.c:1003
+#: src/protocol.c:1042
 #, fuzzy, c-format
 msgid "Got bad ANS_KEY from %s (%s) origin %s: invalid key"
 msgstr "recibí una petición ANS_KEY incorrecta: %s"
 
 #, fuzzy, c-format
 msgid "Got bad ANS_KEY from %s (%s) origin %s: invalid key"
 msgstr "recibí una petición ANS_KEY incorrecta: %s"
 
-#: src/protocol.c:1016
+#: src/protocol.c:1055
 #, c-format
 msgid ""
 "Got ANS_KEY from %s (%s) destination %s which does not exist in our "
 "connection list"
 msgstr ""
 
 #, c-format
 msgid ""
 "Got ANS_KEY from %s (%s) destination %s which does not exist in our "
 "connection list"
 msgstr ""
 
-#: src/tincd.c:94
+#: src/tincd.c:99
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Pruebe `%s --help' para más información.\n"
 
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Pruebe `%s --help' para más información.\n"
 
-#: src/tincd.c:97
+#: src/tincd.c:102
 #, c-format
 msgid ""
 "Usage: %s [option]...\n"
 #, c-format
 msgid ""
 "Usage: %s [option]...\n"
@@ -692,7 +693,7 @@ msgstr ""
 "Modo de empleo: %s [opción]...\n"
 "\n"
 
 "Modo de empleo: %s [opción]...\n"
 "\n"
 
-#: src/tincd.c:98
+#: src/tincd.c:103
 #, fuzzy
 msgid ""
 "  -c, --config=DIR      Read configuration options from DIR.\n"
 #, fuzzy
 msgid ""
 "  -c, --config=DIR      Read configuration options from DIR.\n"
@@ -700,7 +701,6 @@ msgid ""
 "  -d                    Increase debug level.\n"
 "  -k, --kill            Attempt to kill a running tincd and exit.\n"
 "  -n, --net=NETNAME     Connect to net NETNAME.\n"
 "  -d                    Increase debug level.\n"
 "  -k, --kill            Attempt to kill a running tincd and exit.\n"
 "  -n, --net=NETNAME     Connect to net NETNAME.\n"
-"  -t, --timeout=TIMEOUT Seconds to wait before giving a timeout.\n"
 msgstr ""
 "  -c, --config=FICHERO  Lee opciones de configuración del FICHERO.\n"
 "  -D, --no-detach       No hagas fork() y liberes la terminal.\n"
 msgstr ""
 "  -c, --config=FICHERO  Lee opciones de configuración del FICHERO.\n"
 "  -D, --no-detach       No hagas fork() y liberes la terminal.\n"
@@ -710,8 +710,10 @@ msgstr ""
 "  -t, --timeout=TIEMPO  Segundos a esperar antes de cancelar una "
 "trasmisión.\n"
 
 "  -t, --timeout=TIEMPO  Segundos a esperar antes de cancelar una "
 "trasmisión.\n"
 
-#: src/tincd.c:104
+#: src/tincd.c:108
+#, fuzzy
 msgid ""
 msgid ""
+"  -K, --keygen[=BITS]   Generate public/private RSA keypair.\n"
 "      --help            Display this help and exit.\n"
 "      --version         Output version information and exit.\n"
 "\n"
 "      --help            Display this help and exit.\n"
 "      --version         Output version information and exit.\n"
 "\n"
@@ -720,72 +722,99 @@ msgstr ""
 "      --version         Muestra información de la versión y termina.\n"
 "\n"
 
 "      --version         Muestra información de la versión y termina.\n"
 "\n"
 
-#: src/tincd.c:106
+#: src/tincd.c:111
 msgid "Report bugs to tinc@nl.linux.org.\n"
 msgstr "Comunicar `bugs' a tinc@nl.linux.org.\n"
 
 msgid "Report bugs to tinc@nl.linux.org.\n"
 msgstr "Comunicar `bugs' a tinc@nl.linux.org.\n"
 
-#: src/tincd.c:144
-#, c-format
-msgid "Invalid timeout value `%s'.\n"
-msgstr "Valor de `timeout' no válido `%s'.\n"
+#: src/tincd.c:152
+msgid "Invalid argument! BITS must be a number equal to or greater than 512.\n"
+msgstr ""
+
+#: src/tincd.c:207
+msgid ""
+"Seeding the PRNG: please press some keys or move\n"
+"the mouse if this program seems to have halted...\n"
+msgstr ""
+
+#. OpenSSL PRNG state apparently uses 1024 bytes, but it seems pretty sufficient anyway :)
+#: src/tincd.c:210
+#, fuzzy, c-format
+msgid "Generating %d bits keys:\n"
+msgstr "Generando claves de %d bits."
+
+#: src/tincd.c:214
+msgid "Error during key generation!"
+msgstr ""
+
+#: src/tincd.c:218
+#, fuzzy
+msgid "Done.\n"
+msgstr ": hecho.\n"
 
 
-#: src/tincd.c:158
+#: src/tincd.c:220
+msgid ""
+"Please copy the private key to tinc.conf and the\n"
+"public key to your host configuration file:\n"
+"\n"
+msgstr ""
+
+#: src/tincd.c:230
 #, fuzzy, c-format
 msgid "Memory exhausted (last is %s:%d) (couldn't allocate %d bytes), exiting."
 msgstr ""
 "Memoria agotada (la última es %s:%d) (no pude asignar %d bytes); terminando."
 
 #, fuzzy, c-format
 msgid "Memory exhausted (last is %s:%d) (couldn't allocate %d bytes), exiting."
 msgstr ""
 "Memoria agotada (la última es %s:%d) (no pude asignar %d bytes); terminando."
 
-#: src/tincd.c:213
+#: src/tincd.c:285
 #, fuzzy, c-format
 msgid "tincd %s (%s %s) starting, debug level %d"
 msgstr "tincd %s (%s %s) comenzando, nivel de depuración %d."
 
 #, fuzzy, c-format
 msgid "tincd %s (%s %s) starting, debug level %d"
 msgstr "tincd %s (%s %s) comenzando, nivel de depuración %d."
 
-#: src/tincd.c:216
+#: src/tincd.c:288
 #, fuzzy, c-format
 msgid "tincd %s starting"
 msgstr "tincd %s comenzando, nivel de depuración %d."
 
 #, fuzzy, c-format
 msgid "tincd %s starting"
 msgstr "tincd %s comenzando, nivel de depuración %d."
 
-#: src/tincd.c:231
+#: src/tincd.c:303
 #, fuzzy, c-format
 msgid "Total bytes written: tap %d, socket %d; bytes read: tap %d, socket %d"
 msgstr ""
 "Total de bytes escritos: tap %d, socket %d; bytes leidos: tap %d, socket %d."
 
 #, fuzzy, c-format
 msgid "Total bytes written: tap %d, socket %d; bytes read: tap %d, socket %d"
 msgstr ""
 "Total de bytes escritos: tap %d, socket %d; bytes leidos: tap %d, socket %d."
 
-#: src/tincd.c:249
+#: src/tincd.c:321
 #, c-format
 msgid "A tincd is already running for net `%s' with pid %d.\n"
 msgstr ""
 "Un tincd está actualmente en ejecución para la red `%s' con el pid %d.\n"
 
 #, c-format
 msgid "A tincd is already running for net `%s' with pid %d.\n"
 msgstr ""
 "Un tincd está actualmente en ejecución para la red `%s' con el pid %d.\n"
 
-#: src/tincd.c:252
+#: src/tincd.c:324
 #, c-format
 msgid "A tincd is already running with pid %d.\n"
 msgstr "Un tincd está actualmente en ejecución con el pid %d.\n"
 
 #, c-format
 msgid "A tincd is already running with pid %d.\n"
 msgstr "Un tincd está actualmente en ejecución con el pid %d.\n"
 
-#: src/tincd.c:273
+#: src/tincd.c:345
 #, c-format
 msgid "No other tincd is running for net `%s'.\n"
 msgstr "No hay ningún otro tincd en ejecución para la red `%s'.\n"
 
 #, c-format
 msgid "No other tincd is running for net `%s'.\n"
 msgstr "No hay ningún otro tincd en ejecución para la red `%s'.\n"
 
-#: src/tincd.c:275
+#: src/tincd.c:347
 msgid "No other tincd is running.\n"
 msgstr "No hay ningún otro tincd en ejecución.\n"
 
 msgid "No other tincd is running.\n"
 msgstr "No hay ningún otro tincd en ejecución.\n"
 
-#: src/tincd.c:282
+#: src/tincd.c:354
 msgid "Removing stale lock file.\n"
 msgstr "Borrando fichero de bloqueo en desuso.\n"
 
 #. Do some intl stuff right now
 msgid "Removing stale lock file.\n"
 msgstr "Borrando fichero de bloqueo en desuso.\n"
 
 #. Do some intl stuff right now
-#: src/tincd.c:325
+#: src/tincd.c:397
 msgid "unknown"
 msgstr ""
 
 msgid "unknown"
 msgstr ""
 
-#: src/tincd.c:331
+#: src/tincd.c:403
 #, c-format
 msgid "%s version %s (built %s %s, protocol %d)\n"
 msgstr ""
 
 #, c-format
 msgid "%s version %s (built %s %s, protocol %d)\n"
 msgstr ""
 
-#: src/tincd.c:332
+#: src/tincd.c:404
 #, fuzzy
 msgid ""
 "Copyright (C) 1998,1999,2000 Ivo Timmermans, Guus Sliepen and others.\n"
 #, fuzzy
 msgid ""
 "Copyright (C) 1998,1999,2000 Ivo Timmermans, Guus Sliepen and others.\n"
@@ -802,66 +831,75 @@ msgstr ""
 "y puede ser redistribuido bajo ciertas condiciones;\n"
 "vea el fichero COPYING para los detalles.\n"
 
 "y puede ser redistribuido bajo ciertas condiciones;\n"
 "vea el fichero COPYING para los detalles.\n"
 
-#: src/tincd.c:346
+#: src/tincd.c:418
 #, fuzzy
 msgid "You must be root to run this program. Sorry.\n"
 msgstr ""
 "Usted debe ser el superusuario para ejecutar este programa. Lo siento.\n"
 
 #, fuzzy
 msgid "You must be root to run this program. Sorry.\n"
 msgstr ""
 "Usted debe ser el superusuario para ejecutar este programa. Lo siento.\n"
 
-#: src/tincd.c:377
+#: src/tincd.c:452
 msgid "Unrecoverable error"
 msgstr ""
 
 msgid "Unrecoverable error"
 msgstr ""
 
-#: src/tincd.c:382
+#: src/tincd.c:457
 #, c-format
 msgid "Restarting in %d seconds!"
 msgstr ""
 
 #, c-format
 msgid "Restarting in %d seconds!"
 msgstr ""
 
-#: src/tincd.c:387 src/tincd.c:433
+#: src/tincd.c:462 src/tincd.c:508
 msgid "Aieee! Not restarting."
 msgstr ""
 
 msgid "Aieee! Not restarting."
 msgstr ""
 
-#: src/tincd.c:397
+#: src/tincd.c:472
 msgid "Got TERM signal"
 msgstr "Recibí la señal TERM"
 
 msgid "Got TERM signal"
 msgstr "Recibí la señal TERM"
 
-#: src/tincd.c:405
+#: src/tincd.c:480
 msgid "Got QUIT signal"
 msgstr "Recibí la señal QUIT"
 
 msgid "Got QUIT signal"
 msgstr "Recibí la señal QUIT"
 
-#: src/tincd.c:412
+#: src/tincd.c:487
 msgid "Got another SEGV signal: not restarting"
 msgstr "Recibí otra señal SEGV: no reinicio"
 
 msgid "Got another SEGV signal: not restarting"
 msgstr "Recibí otra señal SEGV: no reinicio"
 
-#: src/tincd.c:419
+#: src/tincd.c:494
 #, fuzzy
 msgid "Got SEGV signal"
 msgstr "Recibí la señal TERM"
 
 #, fuzzy
 msgid "Got SEGV signal"
 msgstr "Recibí la señal TERM"
 
-#: src/tincd.c:424
+#: src/tincd.c:499
 #, fuzzy
 msgid "Trying to re-execute in 5 seconds..."
 msgstr "Intento re-establecer la conexión saliente en 5 segundos."
 
 #, fuzzy
 msgid "Trying to re-execute in 5 seconds..."
 msgstr "Intento re-establecer la conexión saliente en 5 segundos."
 
-#: src/tincd.c:442
+#: src/tincd.c:517
 msgid "Got HUP signal, rereading configuration and restarting"
 msgstr ""
 
 msgid "Got HUP signal, rereading configuration and restarting"
 msgstr ""
 
-#: src/tincd.c:450
+#: src/tincd.c:525
 #, fuzzy
 msgid "Got INT signal, exiting"
 msgstr "Recibí la señal INT"
 
 #, fuzzy
 msgid "Got INT signal, exiting"
 msgstr "Recibí la señal INT"
 
-#: src/tincd.c:464
+#: src/tincd.c:539
 #, fuzzy
 msgid "Got USR2 signal, forcing new key generation"
 msgstr "Forzando generación de una nueva clave"
 
 #, fuzzy
 msgid "Got USR2 signal, forcing new key generation"
 msgstr "Forzando generación de una nueva clave"
 
-#: src/tincd.c:473
+#: src/tincd.c:548
 #, fuzzy, c-format
 msgid "Got unexpected signal %d (%s)"
 msgstr "Recibí una señal inesperada (%d)."
 
 #, fuzzy, c-format
 msgid "Got unexpected signal %d (%s)"
 msgstr "Recibí una señal inesperada (%d)."
 
+#~ msgid "Usage: %s bits\n"
+#~ msgstr "Uso: %s bits\n"
+
+#~ msgid "Illegal number: %s\n"
+#~ msgstr "Número ilegal: %s\n"
+
+#~ msgid "Invalid timeout value `%s'.\n"
+#~ msgstr "Valor de `timeout' no válido `%s'.\n"
+
 #~ msgid "Illegal passphrase in %s; size would be %d"
 #~ msgstr "Frase de paso ilegal en %s; el tamaño debe ser %d"
 
 #~ msgid "Illegal passphrase in %s; size would be %d"
 #~ msgstr "Frase de paso ilegal en %s; el tamaño debe ser %d"
 
index 44e097f..8282032 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: tinc 1.0pre3\n"
 msgid ""
 msgstr ""
 "Project-Id-Version: tinc 1.0pre3\n"
-"POT-Creation-Date: 2000-10-15 02:53+0200\n"
+"POT-Creation-Date: 2000-10-20 18:35+0200\n"
 "PO-Revision-Date: 2000-05-31 20:14+02:00\n"
 "Last-Translator: Guus Sliepen <guus@sliepen.warande.net>\n"
 "Language-Team: Dutch <vertaling@nl.linux.org>\n"
 "PO-Revision-Date: 2000-05-31 20:14+02:00\n"
 "Last-Translator: Guus Sliepen <guus@sliepen.warande.net>\n"
 "Language-Team: Dutch <vertaling@nl.linux.org>\n"
@@ -39,36 +39,6 @@ msgstr ""
 "Ongeldige waarde voor variabele op regel %d  tijdens het lezen van "
 "configuratie bestand %s"
 
 "Ongeldige waarde voor variabele op regel %d  tijdens het lezen van "
 "configuratie bestand %s"
 
-#: src/genauth.c:78
-#, c-format
-msgid "Usage: %s bits\n"
-msgstr "Gebruik: %s bits\n"
-
-#: src/genauth.c:89
-#, c-format
-msgid "Illegal number: %s\n"
-msgstr "Ongeldig nummer: %s\n"
-
-#. Align to bytes for easy mallocing and reading
-#: src/genauth.c:95
-#, c-format
-msgid "Generating %d bits keys:\n"
-msgstr "Bezig met genereren van een %d bits sleutel:\n"
-
-#: src/genauth.c:99
-msgid "Done.\n"
-msgstr "Klaar.\n"
-
-#: src/genauth.c:101
-#, c-format
-msgid "Public key:  %s\n"
-msgstr "Publieke sleutel: %s\n"
-
-#: src/genauth.c:102
-#, c-format
-msgid "Private key: %s\n"
-msgstr "Privé sleutel:    %s\n"
-
 #: src/meta.c:42
 #, c-format
 msgid "Sending %d bytes of metadata to %s (%s): %s"
 #: src/meta.c:42
 #, c-format
 msgid "Sending %d bytes of metadata to %s (%s): %s"
@@ -79,7 +49,7 @@ msgstr "Verzending %d bytes metadata naar %s (%s): %s"
 msgid "Sending meta data to %s (%s) failed: %m"
 msgstr "Fout tijdens verzenden metadata naar %s (%s): %m"
 
 msgid "Sending meta data to %s (%s) failed: %m"
 msgstr "Fout tijdens verzenden metadata naar %s (%s): %m"
 
-#: src/meta.c:85 src/net.c:773
+#: src/meta.c:85 src/net.c:847
 #, c-format
 msgid "This is a bug: %s:%d: %d:%m %s (%s)"
 msgstr "Dit is een programmeerfout: %s:%d: %d:%m %s (%s)"
 #, c-format
 msgid "This is a bug: %s:%d: %d:%m %s (%s)"
 msgstr "Dit is een programmeerfout: %s:%d: %d:%m %s (%s)"
@@ -109,274 +79,296 @@ msgstr "Kreeg verzoek van %s (%s): %s"
 msgid "Metadata read buffer overflow for %s (%s)"
 msgstr "Metadata leesbuffer overvol voor %s (%s)"
 
 msgid "Metadata read buffer overflow for %s (%s)"
 msgstr "Metadata leesbuffer overvol voor %s (%s)"
 
-#: src/net.c:106
+#: src/net.c:107
 #, c-format
 msgid "Sending packet of %d bytes to %s (%s)"
 msgstr "Verzending pakket van %d bytes naar %s (%s)"
 
 #, c-format
 msgid "Sending packet of %d bytes to %s (%s)"
 msgstr "Verzending pakket van %d bytes naar %s (%s)"
 
-#: src/net.c:115
+#: src/net.c:116
 #, c-format
 msgid "Error sending packet to %s (%s): %m"
 msgstr "Fout tijdens verzenden pakket naar %s (%s): %m"
 
 #, c-format
 msgid "Error sending packet to %s (%s): %m"
 msgstr "Fout tijdens verzenden pakket naar %s (%s): %m"
 
-#: src/net.c:129
+#: src/net.c:130
 #, c-format
 msgid "Receiving packet of %d bytes"
 msgstr "Ontvangst pakket van %d bytes"
 
 #, c-format
 msgid "Receiving packet of %d bytes"
 msgstr "Ontvangst pakket van %d bytes"
 
-#: src/net.c:142
+#: src/net.c:143
 #, c-format
 msgid "Can't write to tap device: %m"
 msgstr "Kan niet naar tap apparaat schrijven: %m"
 
 #, c-format
 msgid "Can't write to tap device: %m"
 msgstr "Kan niet naar tap apparaat schrijven: %m"
 
-#: src/net.c:242
+#: src/net.c:243
 msgid "Queue flushed"
 msgstr "Wachtrij leeggemaakt"
 
 msgid "Queue flushed"
 msgstr "Wachtrij leeggemaakt"
 
-#: src/net.c:257
+#: src/net.c:258
 #, c-format
 msgid "Flushing send queue for %s (%s)"
 msgstr "Legen van verzend-wachtrij voor %s (%s)"
 
 #, c-format
 msgid "Flushing send queue for %s (%s)"
 msgstr "Legen van verzend-wachtrij voor %s (%s)"
 
-#: src/net.c:265
+#: src/net.c:266
 #, c-format
 msgid "Flushing receive queue for %s (%s)"
 msgstr "Legen van de ontvangst-wachtrij voor %s (%s)"
 
 #, c-format
 msgid "Flushing receive queue for %s (%s)"
 msgstr "Legen van de ontvangst-wachtrij voor %s (%s)"
 
-#: src/net.c:283
+#: src/net.c:284
 #, c-format
 msgid "Trying to look up %d.%d.%d.%d in connection list failed!"
 msgstr "Poging tot opzoeken %d.%d.%d.%d in verbindingslijst mislukte!"
 
 #, c-format
 msgid "Trying to look up %d.%d.%d.%d in connection list failed!"
 msgstr "Poging tot opzoeken %d.%d.%d.%d in verbindingslijst mislukte!"
 
-#: src/net.c:297
+#: src/net.c:298
 #, c-format
 msgid "Could not open UDP connection to %s (%s)"
 msgstr "Kon geen UDP verbinding openen naar %s (%s)"
 
 #, c-format
 msgid "Could not open UDP connection to %s (%s)"
 msgstr "Kon geen UDP verbinding openen naar %s (%s)"
 
-#: src/net.c:305
+#: src/net.c:306
 #, c-format
 msgid "No valid key known yet for %s (%s), queueing packet"
 msgstr ""
 "Nog geen geldige sleutel bekend voor %s (%s), pakket wordt in de wachtrij "
 "gezet"
 
 #, c-format
 msgid "No valid key known yet for %s (%s), queueing packet"
 msgstr ""
 "Nog geen geldige sleutel bekend voor %s (%s), pakket wordt in de wachtrij "
 "gezet"
 
-#: src/net.c:316
+#: src/net.c:317
 #, c-format
 msgid "%s (%s) is not ready, queueing packet"
 msgstr "%s (%s) is niet gereed, pakket wordt in de wachtrij gezet"
 
 #, c-format
 msgid "%s (%s) is not ready, queueing packet"
 msgstr "%s (%s) is niet gereed, pakket wordt in de wachtrij gezet"
 
-#: src/net.c:344
+#: src/net.c:352
 #, c-format
 msgid "Could not open %s: %m"
 msgstr "Kon %s niet openen: %m"
 
 #, c-format
 msgid "Could not open %s: %m"
 msgstr "Kon %s niet openen: %m"
 
-#: src/net.c:360
+#: src/net.c:370
 #, c-format
 msgid "%s is a new style tun/tap device"
 msgstr "%s is een nieuwe stijl tun/tap apparaat"
 
 #, c-format
 msgid "%s is a new style tun/tap device"
 msgstr "%s is een nieuwe stijl tun/tap apparaat"
 
-#: src/net.c:362
+#: src/net.c:373
 msgid "tun/tap device will be left unconfigured"
 msgstr "tun/tap apparaat wordt ongeconfigureerd gelaten"
 
 msgid "tun/tap device will be left unconfigured"
 msgstr "tun/tap apparaat wordt ongeconfigureerd gelaten"
 
-#: src/net.c:384
+#: src/net.c:396
 #, c-format
 msgid "Creating metasocket failed: %m"
 msgstr "Aanmaak van metasocket mislukt: %m"
 
 #, c-format
 msgid "Creating metasocket failed: %m"
 msgstr "Aanmaak van metasocket mislukt: %m"
 
-#: src/net.c:390 src/net.c:396 src/net.c:458
+#: src/net.c:402 src/net.c:408 src/net.c:470
 #, c-format
 msgid "setsockopt: %m"
 msgstr "setsockopt: %m"
 
 #, c-format
 msgid "setsockopt: %m"
 msgstr "setsockopt: %m"
 
-#: src/net.c:403 src/net.c:465
+#: src/net.c:415 src/net.c:477
 #, c-format
 msgid "fcntl: %m"
 msgstr "fcntl: %m"
 
 #, c-format
 msgid "fcntl: %m"
 msgstr "fcntl: %m"
 
-#: src/net.c:411
+#: src/net.c:423
 #, c-format
 msgid "Unable to bind listen socket to interface %s: %m"
 msgstr "Kon luistersocket niet binden aan interface %s: %m"
 
 #, c-format
 msgid "Unable to bind listen socket to interface %s: %m"
 msgstr "Kon luistersocket niet binden aan interface %s: %m"
 
-#: src/net.c:427
+#: src/net.c:439
 #, c-format
 msgid "Can't bind to port %hd/tcp: %m"
 msgstr "Kan niet aan poort %hd/tcp binden: %m"
 
 #, c-format
 msgid "Can't bind to port %hd/tcp: %m"
 msgstr "Kan niet aan poort %hd/tcp binden: %m"
 
-#: src/net.c:433
+#: src/net.c:445
 #, c-format
 msgid "listen: %m"
 msgstr "listen: %m"
 
 #, c-format
 msgid "listen: %m"
 msgstr "listen: %m"
 
-#: src/net.c:452
+#: src/net.c:464
 #, c-format
 msgid "Creating socket failed: %m"
 msgstr "Aanmaak socket mislukte: %m"
 
 #, c-format
 msgid "Creating socket failed: %m"
 msgstr "Aanmaak socket mislukte: %m"
 
-#: src/net.c:476
+#: src/net.c:488
 #, c-format
 msgid "Can't bind to port %hd/udp: %m"
 msgstr "Kan niet aan poort %hd/udp binden: %m"
 
 #, c-format
 msgid "Can't bind to port %hd/udp: %m"
 msgstr "Kan niet aan poort %hd/udp binden: %m"
 
-#: src/net.c:493
+#: src/net.c:505
 #, c-format
 msgid "Trying to connect to %s"
 msgstr "Poging tot verbinding met %s"
 
 #, c-format
 msgid "Trying to connect to %s"
 msgstr "Poging tot verbinding met %s"
 
-#: src/net.c:503
+#: src/net.c:515
 #, c-format
 msgid "Creating socket for %s port %d failed: %m"
 msgstr "Aanmaken socket voor %s poort %d mislukt: %m"
 
 #, c-format
 msgid "Creating socket for %s port %d failed: %m"
 msgstr "Aanmaken socket voor %s poort %d mislukt: %m"
 
-#: src/net.c:514
+#: src/net.c:526
 #, c-format
 msgid "%s port %hd: %m"
 msgstr "%s poort %hd: %m"
 
 #, c-format
 msgid "%s port %hd: %m"
 msgstr "%s poort %hd: %m"
 
-#: src/net.c:521
+#: src/net.c:533
 #, c-format
 msgid "fcntl for %s port %d: %m"
 msgstr "fcntl voor %s poort %d: %m"
 
 #, c-format
 msgid "fcntl for %s port %d: %m"
 msgstr "fcntl voor %s poort %d: %m"
 
-#: src/net.c:527
+#: src/net.c:539
 #, c-format
 msgid "Connected to %s port %hd"
 msgstr "Verbonden met %s poort %hd"
 
 #, c-format
 msgid "Connected to %s port %hd"
 msgstr "Verbonden met %s poort %hd"
 
-#: src/net.c:547
+#: src/net.c:562
+msgid "Invalid name for outgoing connection"
+msgstr "Ongelige naam voor uitgaande verbinding"
+
+#: src/net.c:571
+#, c-format
+msgid "Error reading host configuration file for %s"
+msgstr "Fout tijdens lezen host configuratie bestand voor %s"
+
+#: src/net.c:578
+#, c-format
+msgid "No address specified for %s"
+msgstr "Geen adres gespecificeerd voor %s"
+
+#: src/net.c:585
 #, c-format
 msgid "Error looking up `%s': %m"
 msgstr "Fout bij het opzoeken van `%s': %m"
 
 #, c-format
 msgid "Error looking up `%s': %m"
 msgstr "Fout bij het opzoeken van `%s': %m"
 
-#: src/net.c:557
+#: src/net.c:595
 #, c-format
 msgid "Could not set up a meta connection to %s"
 msgstr "Kon geen metaverbinding aangaan met %s"
 
 #, c-format
 msgid "Could not set up a meta connection to %s"
 msgstr "Kon geen metaverbinding aangaan met %s"
 
-#: src/net.c:586
+#: src/net.c:629
 msgid "Name for tinc daemon required!"
 msgstr "Naam voor tinc daemon verplicht!"
 
 msgid "Name for tinc daemon required!"
 msgstr "Naam voor tinc daemon verplicht!"
 
-#: src/net.c:594
+#: src/net.c:637
 msgid "Invalid name for myself!"
 msgstr "Ongelige naam voor mijzelf!"
 
 msgid "Invalid name for myself!"
 msgstr "Ongelige naam voor mijzelf!"
 
-#: src/net.c:600
+#: src/net.c:643
+msgid "Private key for tinc daemon required!"
+msgstr "Privé sleutel voor tinc daemon verplicht!"
+
+#: src/net.c:655
 msgid "Cannot open host configuration file for myself!"
 msgstr "Kan host configuratie bestand voor mijzelf niet openen!"
 
 msgid "Cannot open host configuration file for myself!"
 msgstr "Kan host configuratie bestand voor mijzelf niet openen!"
 
-#: src/net.c:619
+#: src/net.c:661
+msgid "Public key for tinc daemon required!"
+msgstr "Publieke sleutel voor tinc daemon verplicht!"
+
+#: src/net.c:690
 msgid "Unable to set up a listening socket!"
 msgstr "Kon geen luistersocket aanmaken!"
 
 msgid "Unable to set up a listening socket!"
 msgstr "Kon geen luistersocket aanmaken!"
 
-#: src/net.c:625
+#: src/net.c:696
 msgid "Unable to set up an incoming vpn data socket!"
 msgstr "Kon geen socket maken voor inkomend vpn verkeer!"
 
 msgid "Unable to set up an incoming vpn data socket!"
 msgstr "Kon geen socket maken voor inkomend vpn verkeer!"
 
-#: src/net.c:632
+#: src/net.c:703
 #, c-format
 msgid "Ready: listening on port %hd"
 msgstr "Gereed: luisterend op poort %hd"
 
 #, c-format
 msgid "Ready: listening on port %hd"
 msgstr "Gereed: luisterend op poort %hd"
 
-#: src/net.c:660
+#: src/net.c:734
 #, c-format
 msgid "Still failed to connect to other, will retry in %d seconds"
 msgstr "Wederom niet verbonden met de ander, nieuwe poging over %d seconden"
 
 #, c-format
 msgid "Still failed to connect to other, will retry in %d seconds"
 msgstr "Wederom niet verbonden met de ander, nieuwe poging over %d seconden"
 
-#: src/net.c:698
+#: src/net.c:772
 #, c-format
 msgid "Trying to re-establish outgoing connection in %d seconds"
 msgstr "Poging tot herstellen van uitgaande verbinding over %d seconden"
 
 #, c-format
 msgid "Trying to re-establish outgoing connection in %d seconds"
 msgstr "Poging tot herstellen van uitgaande verbinding over %d seconden"
 
-#: src/net.c:736
+#: src/net.c:810
 msgid "Terminating"
 msgstr "Beëindigen"
 
 msgid "Terminating"
 msgstr "Beëindigen"
 
-#: src/net.c:750
+#: src/net.c:824
 #, c-format
 msgid "Opening UDP socket to %s"
 msgstr "Bezig met openen UDP socket naar %s"
 
 #, c-format
 msgid "Opening UDP socket to %s"
 msgstr "Bezig met openen UDP socket naar %s"
 
-#: src/net.c:755
+#: src/net.c:829
 #, c-format
 msgid "Creating UDP socket failed: %m"
 msgstr "Aanmaak UDP socket mislukte: %m"
 
 #, c-format
 msgid "Creating UDP socket failed: %m"
 msgstr "Aanmaak UDP socket mislukte: %m"
 
-#: src/net.c:765
+#: src/net.c:839
 #, c-format
 msgid "Connecting to %s port %d failed: %m"
 msgstr "Verbinding naar %s poort %d mislukt: %m"
 
 #, c-format
 msgid "Connecting to %s port %d failed: %m"
 msgstr "Verbinding naar %s poort %d mislukt: %m"
 
-#: src/net.c:798
+#: src/net.c:872
 #, c-format
 msgid "Error: getpeername: %m"
 msgstr "Fout: getpeername: %m"
 
 #, c-format
 msgid "Error: getpeername: %m"
 msgstr "Fout: getpeername: %m"
 
-#: src/net.c:813
+#: src/net.c:887
 #, c-format
 msgid "Connection from %s port %d"
 msgstr "Verbinding van %s poort %d"
 
 #, c-format
 msgid "Connection from %s port %d"
 msgstr "Verbinding van %s poort %d"
 
-#: src/net.c:861
+#: src/net.c:931
 #, c-format
 msgid "This is a bug: %s:%d: %d:%m"
 msgstr "Dit is een programmeerfout: %s:%d: %d:%m"
 
 #, c-format
 msgid "This is a bug: %s:%d: %d:%m"
 msgstr "Dit is een programmeerfout: %s:%d: %d:%m"
 
-#: src/net.c:867
+#: src/net.c:937
 #, c-format
 msgid "Incoming data socket error: %s"
 msgstr "Fout op socket voor inkomend verkeer: %s"
 
 #, c-format
 msgid "Incoming data socket error: %s"
 msgstr "Fout op socket voor inkomend verkeer: %s"
 
-#: src/net.c:873
+#: src/net.c:943
 #, c-format
 msgid "Receiving packet failed: %m"
 msgstr "Ontvangst pakket mislukt: %m"
 
 #, c-format
 msgid "Receiving packet failed: %m"
 msgstr "Ontvangst pakket mislukt: %m"
 
-#: src/net.c:894
+#: src/net.c:964
 #, c-format
 msgid "Closing connection with %s (%s)"
 msgstr "Beëindigen verbinding met %s (%s)"
 
 #, c-format
 msgid "Closing connection with %s (%s)"
 msgstr "Beëindigen verbinding met %s (%s)"
 
-#: src/net.c:937
+#: src/net.c:1007
 msgid "Trying to re-establish outgoing connection in 5 seconds"
 msgstr "Poging tot herstellen van uitgaande verbinding over 5 seconden"
 
 msgid "Trying to re-establish outgoing connection in 5 seconds"
 msgstr "Poging tot herstellen van uitgaande verbinding over 5 seconden"
 
-#: src/net.c:967
+#: src/net.c:1037
 #, c-format
 msgid "%s (%s) didn't respond to PING"
 msgstr "%s (%s) antwoordde niet op ping"
 
 #, c-format
 msgid "%s (%s) didn't respond to PING"
 msgstr "%s (%s) antwoordde niet op ping"
 
-#: src/net.c:998
+#: src/net.c:1068
 #, c-format
 msgid "Accepting a new connection failed: %m"
 msgstr "Aanname van nieuwe verbinding is mislukt: %m"
 
 #, c-format
 msgid "Accepting a new connection failed: %m"
 msgstr "Aanname van nieuwe verbinding is mislukt: %m"
 
-#: src/net.c:1006
+#: src/net.c:1076
 msgid "Closed attempted connection"
 msgstr "Aangenomen verbinding verbroken"
 
 msgid "Closed attempted connection"
 msgstr "Aangenomen verbinding verbroken"
 
-#: src/net.c:1041
+#: src/net.c:1111
 #, c-format
 msgid "Outgoing data socket error for %s (%s): %s"
 msgstr "Fout op socket voor uitgaand verkeer voor %s (%s): %s"
 
 #, c-format
 msgid "Outgoing data socket error for %s (%s): %s"
 msgstr "Fout op socket voor uitgaand verkeer voor %s (%s): %s"
 
-#: src/net.c:1077
+#: src/net.c:1150 src/net.c:1159
 #, c-format
 msgid "Error while reading from tapdevice: %m"
 msgstr "Fout tijdens lezen van tap-apparaatbestand tijdens lezen: %m"
 
 #, c-format
 msgid "Error while reading from tapdevice: %m"
 msgstr "Fout tijdens lezen van tap-apparaatbestand tijdens lezen: %m"
 
-#: src/net.c:1087
+#: src/net.c:1171
 #, c-format
 msgid "Non-IP ethernet frame %04x from %02x:%02x:%02x:%02x:%02x:%02x"
 msgstr "Niet-IP ethernet pakket %04x van %02x:%02x:%02x:%02x:%02x:%02x"
 
 #, c-format
 msgid "Non-IP ethernet frame %04x from %02x:%02x:%02x:%02x:%02x:%02x"
 msgstr "Niet-IP ethernet pakket %04x van %02x:%02x:%02x:%02x:%02x:%02x"
 
-#: src/net.c:1094
+#: src/net.c:1178
 #, c-format
 msgid "Dropping short packet from %02x:%02x:%02x:%02x:%02x:%02x"
 msgstr "Te kort pakket van %02x:%02x:%02x:%02x:%02x:%02x genegeerd"
 
 #, c-format
 msgid "Dropping short packet from %02x:%02x:%02x:%02x:%02x:%02x"
 msgstr "Te kort pakket van %02x:%02x:%02x:%02x:%02x:%02x genegeerd"
 
-#: src/net.c:1133
+#: src/net.c:1213
 #, c-format
 msgid "Error while waiting for input: %m"
 msgstr "Fout tijdens wachten op invoer: %m"
 #, c-format
 msgid "Error while waiting for input: %m"
 msgstr "Fout tijdens wachten op invoer: %m"
@@ -416,148 +408,158 @@ msgstr "Fout tijdens afhandelen %s van %s (%s)"
 msgid "Bogus data received from %s (%s)"
 msgstr "Onzinnige data ontvangen van %s (%s)"
 
 msgid "Bogus data received from %s (%s)"
 msgstr "Onzinnige data ontvangen van %s (%s)"
 
-#: src/protocol.c:167
+#: src/protocol.c:170
 #, c-format
 msgid "Got bad ID from %s"
 msgstr "Kreeg ongeldige ID van %s"
 
 #, c-format
 msgid "Got bad ID from %s"
 msgstr "Kreeg ongeldige ID van %s"
 
-#: src/protocol.c:175
+#: src/protocol.c:178
 #, c-format
 msgid "Peer %s (%s) uses incompatible version %d"
 msgstr "Ander %s (%s) gebruikt een niet-compatibel protocol versie %d"
 
 #, c-format
 msgid "Peer %s (%s) uses incompatible version %d"
 msgstr "Ander %s (%s) gebruikt een niet-compatibel protocol versie %d"
 
-#: src/protocol.c:184
+#: src/protocol.c:187
 #, c-format
 msgid "Peer %s uses invalid identity name"
 msgstr "Ander %s gebruikt een ongeldige identiteitsnaam"
 
 #, c-format
 msgid "Peer %s uses invalid identity name"
 msgstr "Ander %s gebruikt een ongeldige identiteitsnaam"
 
-#: src/protocol.c:192
+#: src/protocol.c:195
 #, c-format
 msgid "Peer %s had unknown identity (%s)"
 msgstr "Ander %s heeft een onbekende identiteit (%s)"
 
 #, c-format
 msgid "Peer %s had unknown identity (%s)"
 msgstr "Ander %s heeft een onbekende identiteit (%s)"
 
-#: src/protocol.c:207
+#: src/protocol.c:209
 #, c-format
 msgid "Uplink %s (%s) is already in our connection list"
 msgstr "%s (%s) staat al in onze verbindingslijst"
 
 #, c-format
 msgid "Uplink %s (%s) is already in our connection list"
 msgstr "%s (%s) staat al in onze verbindingslijst"
 
-#: src/protocol.c:253
+#: src/protocol.c:219
+#, c-format
+msgid "No public key known for %s (%s)"
+msgstr "Geen publieke sleutel bekend voor %s (%s)"
+
+#: src/protocol.c:258 src/protocol.c:312
+#, c-format
+msgid "Error during encryption of challenge for %s (%s)"
+msgstr "Fout tijdens versleuteling van uitdaging voor %s (%s)"
+
+#: src/protocol.c:284
 #, c-format
 msgid "Got bad CHALLENGE from %s (%s)"
 msgstr "Kreeg ongeldige CHALLENGE van %s (%s)"
 
 #, c-format
 msgid "Got bad CHALLENGE from %s (%s)"
 msgstr "Kreeg ongeldige CHALLENGE van %s (%s)"
 
-#: src/protocol.c:261
+#: src/protocol.c:294
 #, c-format
 msgid "Intruder: wrong challenge length from %s (%s)"
 msgstr "Indringer: verkeerde lengte voor uitdaging van %s (%s)"
 
 #, c-format
 msgid "Intruder: wrong challenge length from %s (%s)"
 msgstr "Indringer: verkeerde lengte voor uitdaging van %s (%s)"
 
-#: src/protocol.c:287
+#: src/protocol.c:330
 #, c-format
 msgid "Trying to send CHAL_REPLY to %s (%s) without a valid CHALLENGE"
 msgstr "Poging tot zenden CHAL_REPLY naar %s (%s) zonder een geldige CHALLENGE"
 
 #, c-format
 msgid "Trying to send CHAL_REPLY to %s (%s) without a valid CHALLENGE"
 msgstr "Poging tot zenden CHAL_REPLY naar %s (%s) zonder een geldige CHALLENGE"
 
-#: src/protocol.c:318
+#: src/protocol.c:361
 #, c-format
 msgid "Got bad CHAL_REPLY from %s (%s)"
 msgstr "Kreeg ongeldige CHAL_REPLY van %s (%s)"
 
 #, c-format
 msgid "Got bad CHAL_REPLY from %s (%s)"
 msgstr "Kreeg ongeldige CHAL_REPLY van %s (%s)"
 
-#: src/protocol.c:327
+#: src/protocol.c:370
 #, c-format
 msgid "Intruder: wrong challenge reply length from %s (%s)"
 msgstr "Indringer: verkeerde lengte van antwoord op uitdaging van %s (%s)"
 
 #, c-format
 msgid "Intruder: wrong challenge reply length from %s (%s)"
 msgstr "Indringer: verkeerde lengte van antwoord op uitdaging van %s (%s)"
 
-#: src/protocol.c:344
+#: src/protocol.c:387
 #, c-format
 msgid "Intruder: wrong challenge reply from %s (%s)"
 msgstr "Indringer: verkeerd antwoord op de uitdaging van %s (%s)"
 
 #, c-format
 msgid "Intruder: wrong challenge reply from %s (%s)"
 msgstr "Indringer: verkeerd antwoord op de uitdaging van %s (%s)"
 
-#: src/protocol.c:386
+#: src/protocol.c:425
 #, c-format
 msgid "Removing old entry for %s at %s in favour of new connection from %s"
 msgstr ""
 "Verwijdering oude verbinding voor %s op %s in voordeel van nieuwe verbinding "
 "van %s"
 
 #, c-format
 msgid "Removing old entry for %s at %s in favour of new connection from %s"
 msgstr ""
 "Verwijdering oude verbinding voor %s op %s in voordeel van nieuwe verbinding "
 "van %s"
 
-#: src/protocol.c:398
+#: src/protocol.c:437
 #, c-format
 msgid "Connection with %s (%s) activated"
 msgstr "Verbinding met %s (%s) geactiveerd"
 
 #, c-format
 msgid "Connection with %s (%s) activated"
 msgstr "Verbinding met %s (%s) geactiveerd"
 
-#: src/protocol.c:438
+#: src/protocol.c:477
 #, c-format
 msgid "Got bad ADD_SUBNET from %s (%s)"
 msgstr "Kreeg ongeldige ADD_SUBNET van %s (%s)"
 
 #, c-format
 msgid "Got bad ADD_SUBNET from %s (%s)"
 msgstr "Kreeg ongeldige ADD_SUBNET van %s (%s)"
 
-#: src/protocol.c:447
+#: src/protocol.c:486
 #, c-format
 msgid "Got bad ADD_SUBNET from %s (%s): invalid identity name"
 msgstr "Kreeg ongeldige ADD_SUBNET van %s (%s): ongeldige identiteitsnaam"
 
 #, c-format
 msgid "Got bad ADD_SUBNET from %s (%s): invalid identity name"
 msgstr "Kreeg ongeldige ADD_SUBNET van %s (%s): ongeldige identiteitsnaam"
 
-#: src/protocol.c:456
+#: src/protocol.c:495
 #, c-format
 msgid "Got bad ADD_SUBNET from %s (%s): invalid subnet string"
 msgstr "Kreeg ongeldige ADD_SUBNET van %s (%s): ongeldig subnet"
 
 #, c-format
 msgid "Got bad ADD_SUBNET from %s (%s): invalid subnet string"
 msgstr "Kreeg ongeldige ADD_SUBNET van %s (%s): ongeldig subnet"
 
-#: src/protocol.c:467
+#: src/protocol.c:506
 #, c-format
 msgid "Warning: got ADD_SUBNET from %s (%s) for ourself, restarting"
 msgstr "Waarschuwing: kreeg ADD_SUBNET van %s (%s) voor onszelf, herstart"
 
 #, c-format
 msgid "Warning: got ADD_SUBNET from %s (%s) for ourself, restarting"
 msgstr "Waarschuwing: kreeg ADD_SUBNET van %s (%s) voor onszelf, herstart"
 
-#: src/protocol.c:478
+#: src/protocol.c:517
 #, c-format
 msgid "Got ADD_SUBNET for %s from %s (%s) which is not in our connection list"
 msgstr ""
 "Kreeg DEL_SUBNET voor %d.%d.%d.%d van %s (%s) die niet voorkomt in onze "
 "verbindingslijst"
 
 #, c-format
 msgid "Got ADD_SUBNET for %s from %s (%s) which is not in our connection list"
 msgstr ""
 "Kreeg DEL_SUBNET voor %d.%d.%d.%d van %s (%s) die niet voorkomt in onze "
 "verbindingslijst"
 
-#: src/protocol.c:506
+#: src/protocol.c:545
 #, c-format
 msgid "Got bad DEL_SUBNET from %s (%s)"
 msgstr "Kreeg ongeldige DEL_SUBNET van %s (%s)"
 
 #, c-format
 msgid "Got bad DEL_SUBNET from %s (%s)"
 msgstr "Kreeg ongeldige DEL_SUBNET van %s (%s)"
 
-#: src/protocol.c:515
+#: src/protocol.c:554
 #, c-format
 msgid "Got bad DEL_SUBNET from %s (%s): invalid identity name"
 msgstr "Kreeg ongeldige DEL_SUBNET van %s (%s): ongeldige identiteitsnaam"
 
 #, c-format
 msgid "Got bad DEL_SUBNET from %s (%s): invalid identity name"
 msgstr "Kreeg ongeldige DEL_SUBNET van %s (%s): ongeldige identiteitsnaam"
 
-#: src/protocol.c:524
+#: src/protocol.c:563
 #, c-format
 msgid "Got bad DEL_SUBNET from %s (%s): invalid subnet string"
 msgstr "Kreeg ongeldige DEL_SUBNET van %s (%s): ongeldige identiteitsnaam"
 
 #, c-format
 msgid "Got bad DEL_SUBNET from %s (%s): invalid subnet string"
 msgstr "Kreeg ongeldige DEL_SUBNET van %s (%s): ongeldige identiteitsnaam"
 
-#: src/protocol.c:535
+#: src/protocol.c:574
 #, c-format
 msgid "Warning: got DEL_SUBNET from %s (%s) for ourself, restarting"
 msgstr "Waarschuwing: kreeg DEL_SUBNET van %s (%s) voor onszelf, herstart"
 
 #, c-format
 msgid "Warning: got DEL_SUBNET from %s (%s) for ourself, restarting"
 msgstr "Waarschuwing: kreeg DEL_SUBNET van %s (%s) voor onszelf, herstart"
 
-#: src/protocol.c:546
+#: src/protocol.c:585
 #, c-format
 msgid "Got DEL_SUBNET for %s from %s (%s) which is not in our connection list"
 msgstr ""
 "Kreeg DEL_SUBNET voor %d.%d.%d.%d van %s (%s) die niet voorkomt in onze "
 "verbindingslijst"
 
 #, c-format
 msgid "Got DEL_SUBNET for %s from %s (%s) which is not in our connection list"
 msgstr ""
 "Kreeg DEL_SUBNET voor %d.%d.%d.%d van %s (%s) die niet voorkomt in onze "
 "verbindingslijst"
 
-#: src/protocol.c:577
+#: src/protocol.c:616
 #, c-format
 msgid "Got bad ADD_HOST from %s (%s)"
 msgstr "Kreeg ongeldige ADD_HOST van %s (%s)"
 
 #, c-format
 msgid "Got bad ADD_HOST from %s (%s)"
 msgstr "Kreeg ongeldige ADD_HOST van %s (%s)"
 
-#: src/protocol.c:585
+#: src/protocol.c:624
 #, c-format
 msgid "Got bad ADD_HOST from %s (%s): invalid identity name"
 msgstr "Kreeg ongeldige ADD_HOST van %s (%s): ongeldige identiteitsnaam"
 
 #, c-format
 msgid "Got bad ADD_HOST from %s (%s): invalid identity name"
 msgstr "Kreeg ongeldige ADD_HOST van %s (%s): ongeldige identiteitsnaam"
 
-#: src/protocol.c:594
+#: src/protocol.c:633
 #, c-format
 msgid "Warning: got ADD_HOST from %s (%s) for ourself, restarting"
 msgstr "Waarschuwing: kreeg ADD_HOST van %s (%s) voor onszelf, herstart"
 
 #, c-format
 msgid "Warning: got ADD_HOST from %s (%s) for ourself, restarting"
 msgstr "Waarschuwing: kreeg ADD_HOST van %s (%s) voor onszelf, herstart"
 
-#: src/protocol.c:604
+#: src/protocol.c:643
 #, c-format
 msgid "Warning: got ADD_HOST from %s (%s) from ourself, restarting"
 msgstr "Waarschuwing: kreeg ADD_HOST van %s (%s) van onszelf, herstart"
 
 #, c-format
 msgid "Warning: got ADD_HOST from %s (%s) from ourself, restarting"
 msgstr "Waarschuwing: kreeg ADD_HOST van %s (%s) van onszelf, herstart"
 
-#: src/protocol.c:614
+#: src/protocol.c:653
 #, c-format
 msgid ""
 "Got ADD_HOST from %s (%s) with origin %s which is not in our connection list"
 #, c-format
 msgid ""
 "Got ADD_HOST from %s (%s) with origin %s which is not in our connection list"
@@ -565,37 +567,37 @@ msgstr ""
 "Kreeg ADD_HOST van %s (%s) met herkomst %s die niet in onze verbindingslijst "
 "voorkomt"
 
 "Kreeg ADD_HOST van %s (%s) met herkomst %s die niet in onze verbindingslijst "
 "voorkomt"
 
-#: src/protocol.c:633
+#: src/protocol.c:672
 #, c-format
 msgid "Got duplicate ADD_HOST for %s (%s) from %s (%s)"
 msgstr "Kreeg een tweede ADD_HOST voor %s (%s) van %s (%s)"
 
 #, c-format
 msgid "Got duplicate ADD_HOST for %s (%s) from %s (%s)"
 msgstr "Kreeg een tweede ADD_HOST voor %s (%s) van %s (%s)"
 
-#: src/protocol.c:640
+#: src/protocol.c:679
 #, c-format
 msgid "Removing old entry for %s (%s)"
 msgstr "Verwijdering oude verbinding voor %s (%s)"
 
 #, c-format
 msgid "Removing old entry for %s (%s)"
 msgstr "Verwijdering oude verbinding voor %s (%s)"
 
-#: src/protocol.c:683
+#: src/protocol.c:722
 #, c-format
 msgid "Got bad DEL_HOST from %s (%s)"
 msgstr "Kreeg ongeldige DEL_HOST van %s (%s)"
 
 #, c-format
 msgid "Got bad DEL_HOST from %s (%s)"
 msgstr "Kreeg ongeldige DEL_HOST van %s (%s)"
 
-#: src/protocol.c:692
+#: src/protocol.c:731
 #, c-format
 msgid "Got bad DEL_HOST from %s (%s): invalid identity name"
 msgstr "Kreeg ongeldige DEL_HOST van %s (%s): ongeldige identiteitsnaam"
 
 #, c-format
 msgid "Got bad DEL_HOST from %s (%s): invalid identity name"
 msgstr "Kreeg ongeldige DEL_HOST van %s (%s): ongeldige identiteitsnaam"
 
-#: src/protocol.c:701
+#: src/protocol.c:740
 #, c-format
 msgid "Warning: got DEL_HOST from %s (%s) for ourself, restarting"
 msgstr "Waarschuwing: kreeg DEL_HOST van %s (%s) voor onszelf, herstart"
 
 #, c-format
 msgid "Warning: got DEL_HOST from %s (%s) for ourself, restarting"
 msgstr "Waarschuwing: kreeg DEL_HOST van %s (%s) voor onszelf, herstart"
 
-#: src/protocol.c:712
+#: src/protocol.c:751
 #, c-format
 msgid "Warning: got DEL_HOST from %s (%s) from ourself, restarting"
 msgstr "Waarschuwing: kreeg DEL_HOST van %s (%s) van onszelf, herstart"
 
 #, c-format
 msgid "Warning: got DEL_HOST from %s (%s) from ourself, restarting"
 msgstr "Waarschuwing: kreeg DEL_HOST van %s (%s) van onszelf, herstart"
 
-#: src/protocol.c:722
+#: src/protocol.c:761
 #, c-format
 msgid ""
 "Got DEL_HOST from %s (%s) with origin %s which is not in our connection list"
 #, c-format
 msgid ""
 "Got DEL_HOST from %s (%s) with origin %s which is not in our connection list"
@@ -603,43 +605,43 @@ msgstr ""
 "Kreeg DEL_HOST voor %s (%s) met herkomst %s die niet in onze "
 "verbindingslijst voorkomt"
 
 "Kreeg DEL_HOST voor %s (%s) met herkomst %s die niet in onze "
 "verbindingslijst voorkomt"
 
-#: src/protocol.c:734
+#: src/protocol.c:773
 #, c-format
 msgid "Got DEL_HOST from %s (%s) for %s which is not in our connection list"
 msgstr ""
 "Kreeg DEL_HOST van %s (%s) voor %s die niet in onze verbindingslijst voorkomt"
 
 #, c-format
 msgid "Got DEL_HOST from %s (%s) for %s which is not in our connection list"
 msgstr ""
 "Kreeg DEL_HOST van %s (%s) voor %s die niet in onze verbindingslijst voorkomt"
 
-#: src/protocol.c:744
+#: src/protocol.c:783
 #, c-format
 msgid "Got DEL_HOST from %s (%s) for %s which doesn't match"
 msgstr "Kreeg DEL_HOST van %s (%s) voor %s wat niet overeenkomt"
 
 #, c-format
 msgid "Got DEL_HOST from %s (%s) for %s which doesn't match"
 msgstr "Kreeg DEL_HOST van %s (%s) voor %s wat niet overeenkomt"
 
-#: src/protocol.c:776
+#: src/protocol.c:815
 #, c-format
 msgid "Got bad STATUS from %s (%s)"
 msgstr "Kreeg ongeldige STATUS van %s (%s)"
 
 #, c-format
 msgid "Got bad STATUS from %s (%s)"
 msgstr "Kreeg ongeldige STATUS van %s (%s)"
 
-#: src/protocol.c:783
+#: src/protocol.c:822
 #, c-format
 msgid "Status message from %s (%s): %s: %s"
 msgstr "Ontving statusbericht van %s (%s): %s: %s"
 
 #, c-format
 msgid "Status message from %s (%s): %s: %s"
 msgstr "Ontving statusbericht van %s (%s): %s: %s"
 
-#: src/protocol.c:807
+#: src/protocol.c:846
 #, c-format
 msgid "Got bad ERROR from %s (%s)"
 msgstr "Kreeg ongeldige ERROR van %s (%s)"
 
 #, c-format
 msgid "Got bad ERROR from %s (%s)"
 msgstr "Kreeg ongeldige ERROR van %s (%s)"
 
-#: src/protocol.c:814
+#: src/protocol.c:853
 #, c-format
 msgid "Error message from %s (%s): %s: %s"
 msgstr "Ontving foutmelding van %s (%s): %s: %s"
 
 #, c-format
 msgid "Error message from %s (%s): %s: %s"
 msgstr "Ontving foutmelding van %s (%s): %s: %s"
 
-#: src/protocol.c:892
+#: src/protocol.c:931
 #, c-format
 msgid "Got bad KEY_CHANGED from %s (%s)"
 msgstr "Kreeg ongeldige KEY_CHANGED van %s (%s)"
 
 #, c-format
 msgid "Got bad KEY_CHANGED from %s (%s)"
 msgstr "Kreeg ongeldige KEY_CHANGED van %s (%s)"
 
-#: src/protocol.c:899
+#: src/protocol.c:938
 #, c-format
 msgid ""
 "Got KEY_CHANGED from %s (%s) origin %s which does not exist in our "
 #, c-format
 msgid ""
 "Got KEY_CHANGED from %s (%s) origin %s which does not exist in our "
@@ -648,12 +650,12 @@ msgstr ""
 "Kreeg KEY_CHANGED van %s (%s) met herkomst %s die niet in onze "
 "verbindingslijst voorkomt"
 
 "Kreeg KEY_CHANGED van %s (%s) met herkomst %s die niet in onze "
 "verbindingslijst voorkomt"
 
-#: src/protocol.c:929
+#: src/protocol.c:968
 #, c-format
 msgid "Got bad REQ_KEY from %s (%s)"
 msgstr "Kreeg ongeldige REQ_KEY van %s (%s)"
 
 #, c-format
 msgid "Got bad REQ_KEY from %s (%s)"
 msgstr "Kreeg ongeldige REQ_KEY van %s (%s)"
 
-#: src/protocol.c:936
+#: src/protocol.c:975
 #, c-format
 msgid ""
 "Got REQ_KEY from %s (%s) origin %s which does not exist in our connection "
 #, c-format
 msgid ""
 "Got REQ_KEY from %s (%s) origin %s which does not exist in our connection "
@@ -662,7 +664,7 @@ msgstr ""
 "Kreeg REQ_KEY van %s (%s) herkomst %s die niet in onze verbindingslijst "
 "voorkomt"
 
 "Kreeg REQ_KEY van %s (%s) herkomst %s die niet in onze verbindingslijst "
 "voorkomt"
 
-#: src/protocol.c:952
+#: src/protocol.c:991
 #, c-format
 msgid ""
 "Got REQ_KEY from %s (%s) destination %s which does not exist in our "
 #, c-format
 msgid ""
 "Got REQ_KEY from %s (%s) destination %s which does not exist in our "
@@ -670,12 +672,12 @@ msgid ""
 msgstr ""
 "Kreeg REQ_KEY van %s (%s) doel %s die niet in onze verbindingslijst voorkomt"
 
 msgstr ""
 "Kreeg REQ_KEY van %s (%s) doel %s die niet in onze verbindingslijst voorkomt"
 
-#: src/protocol.c:980
+#: src/protocol.c:1019
 #, c-format
 msgid "Got bad ANS_KEY from %s (%s)"
 msgstr "Kreeg ongeldige ANS_KEY van %s (%s)"
 
 #, c-format
 msgid "Got bad ANS_KEY from %s (%s)"
 msgstr "Kreeg ongeldige ANS_KEY van %s (%s)"
 
-#: src/protocol.c:987
+#: src/protocol.c:1026
 #, c-format
 msgid ""
 "Got ANS_KEY from %s (%s) origin %s which does not exist in our connection "
 #, c-format
 msgid ""
 "Got ANS_KEY from %s (%s) origin %s which does not exist in our connection "
@@ -684,12 +686,12 @@ msgstr ""
 "Kreeg ANS_KEY van %s (%s) met herkomst %s die niet in onze verbindingslijst "
 "voorkomt"
 
 "Kreeg ANS_KEY van %s (%s) met herkomst %s die niet in onze verbindingslijst "
 "voorkomt"
 
-#: src/protocol.c:1003
+#: src/protocol.c:1042
 #, c-format
 msgid "Got bad ANS_KEY from %s (%s) origin %s: invalid key"
 msgstr "Kreeg ongeldige ANS_KEY van %s (%s) herkomst %s: ongeldige sleutel"
 
 #, c-format
 msgid "Got bad ANS_KEY from %s (%s) origin %s: invalid key"
 msgstr "Kreeg ongeldige ANS_KEY van %s (%s) herkomst %s: ongeldige sleutel"
 
-#: src/protocol.c:1016
+#: src/protocol.c:1055
 #, c-format
 msgid ""
 "Got ANS_KEY from %s (%s) destination %s which does not exist in our "
 #, c-format
 msgid ""
 "Got ANS_KEY from %s (%s) destination %s which does not exist in our "
@@ -697,12 +699,12 @@ msgid ""
 msgstr ""
 "Kreeg ANS_KEY van %s (%s) doel %s die niet in onze verbindingslijst voorkomt"
 
 msgstr ""
 "Kreeg ANS_KEY van %s (%s) doel %s die niet in onze verbindingslijst voorkomt"
 
-#: src/tincd.c:94
+#: src/tincd.c:99
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Probeer `%s --help' voor meer informatie.\n"
 
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Probeer `%s --help' voor meer informatie.\n"
 
-#: src/tincd.c:97
+#: src/tincd.c:102
 #, c-format
 msgid ""
 "Usage: %s [option]...\n"
 #, c-format
 msgid ""
 "Usage: %s [option]...\n"
@@ -711,100 +713,132 @@ msgstr ""
 "Gebruik: %s [optie]...\n"
 "\n"
 
 "Gebruik: %s [optie]...\n"
 "\n"
 
-#: src/tincd.c:98
+#: src/tincd.c:103
 msgid ""
 "  -c, --config=DIR      Read configuration options from DIR.\n"
 "  -D, --no-detach       Don't fork and detach.\n"
 "  -d                    Increase debug level.\n"
 "  -k, --kill            Attempt to kill a running tincd and exit.\n"
 "  -n, --net=NETNAME     Connect to net NETNAME.\n"
 msgid ""
 "  -c, --config=DIR      Read configuration options from DIR.\n"
 "  -D, --no-detach       Don't fork and detach.\n"
 "  -d                    Increase debug level.\n"
 "  -k, --kill            Attempt to kill a running tincd and exit.\n"
 "  -n, --net=NETNAME     Connect to net NETNAME.\n"
-"  -t, --timeout=TIMEOUT Seconds to wait before giving a timeout.\n"
 msgstr ""
 "  -c, --config=MAP      Lees configuratie uit MAP.\n"
 "  -D, --no-detach       Start geen nieuw proces.\n"
 "  -d                    Verhoog debugniveau.\n"
 "  -k, --kill            Poging tot doden van lopende tincd en beëindig.\n"
 "  -n, --net=NETNAAM     Verbind met net NETNAAM.\n"
 msgstr ""
 "  -c, --config=MAP      Lees configuratie uit MAP.\n"
 "  -D, --no-detach       Start geen nieuw proces.\n"
 "  -d                    Verhoog debugniveau.\n"
 "  -k, --kill            Poging tot doden van lopende tincd en beëindig.\n"
 "  -n, --net=NETNAAM     Verbind met net NETNAAM.\n"
-"  -t, --timeout=TIMEOUT Seconden wachten op timeout.\n"
 
 
-#: src/tincd.c:104
+#: src/tincd.c:108
 msgid ""
 msgid ""
+"  -K, --keygen[=BITS]   Generate public/private RSA keypair.\n"
 "      --help            Display this help and exit.\n"
 "      --version         Output version information and exit.\n"
 "\n"
 msgstr ""
 "      --help            Display this help and exit.\n"
 "      --version         Output version information and exit.\n"
 "\n"
 msgstr ""
+"  -K, --keygen[=BITS]   Genereer publiek/privé RSA sleutelpaar.\n"
 "      --help            Geef deze hulp en beëindig.\n"
 "      --version         Geef versie informatie en beëindig.\n"
 "\n"
 
 "      --help            Geef deze hulp en beëindig.\n"
 "      --version         Geef versie informatie en beëindig.\n"
 "\n"
 
-#: src/tincd.c:106
+#: src/tincd.c:111
 msgid "Report bugs to tinc@nl.linux.org.\n"
 msgstr ""
 "Meld fouten in het programma aan tinc@nl.linux.org;\n"
 "Meld fouten in de vertaling aan vertaling@nl.linux.org.\n"
 
 msgid "Report bugs to tinc@nl.linux.org.\n"
 msgstr ""
 "Meld fouten in het programma aan tinc@nl.linux.org;\n"
 "Meld fouten in de vertaling aan vertaling@nl.linux.org.\n"
 
-#: src/tincd.c:144
+#: src/tincd.c:152
+msgid "Invalid argument! BITS must be a number equal to or greater than 512.\n"
+msgstr ""
+"Ongeldig argument! BITS moet een nummer zijn gelijk aan of groter dan 512.\n"
+
+#: src/tincd.c:207
+msgid ""
+"Seeding the PRNG: please press some keys or move\n"
+"the mouse if this program seems to have halted...\n"
+msgstr ""
+"Initialisatie van PRNG: druk op de toetsen of beweeg\n"
+"de muis als het programma gestopt lijkt te zijn...\n"
+
+#. OpenSSL PRNG state apparently uses 1024 bytes, but it seems pretty sufficient anyway :)
+#: src/tincd.c:210
 #, c-format
 #, c-format
-msgid "Invalid timeout value `%s'.\n"
-msgstr "Ongeldige timeout waarde `%s'.\n"
+msgid "Generating %d bits keys:\n"
+msgstr "Bezig met genereren van een %d bits sleutel:\n"
 
 
-#: src/tincd.c:158
+#: src/tincd.c:214
+msgid "Error during key generation!"
+msgstr "Fout tijdens genereren sleutel!"
+
+#: src/tincd.c:218
+msgid "Done.\n"
+msgstr "Klaar.\n"
+
+#: src/tincd.c:220
+msgid ""
+"Please copy the private key to tinc.conf and the\n"
+"public key to your host configuration file:\n"
+"\n"
+msgstr ""
+"Copiëer de privé sleutel naar tinc.conf en de\n"
+"publieke sleutel naar het host configuratie bestand:\n"
+"\n"
+
+#: src/tincd.c:230
 #, c-format
 msgid "Memory exhausted (last is %s:%d) (couldn't allocate %d bytes), exiting."
 msgstr ""
 "Geheugen is vol (laatste %s:%d) (kon geen %d bytes vrijmaken), beëindigen."
 
 #, c-format
 msgid "Memory exhausted (last is %s:%d) (couldn't allocate %d bytes), exiting."
 msgstr ""
 "Geheugen is vol (laatste %s:%d) (kon geen %d bytes vrijmaken), beëindigen."
 
-#: src/tincd.c:213
+#: src/tincd.c:285
 #, c-format
 msgid "tincd %s (%s %s) starting, debug level %d"
 msgstr "tincd %s (%s %s) gestart, debugniveau %d"
 
 #, c-format
 msgid "tincd %s (%s %s) starting, debug level %d"
 msgstr "tincd %s (%s %s) gestart, debugniveau %d"
 
-#: src/tincd.c:216
+#: src/tincd.c:288
 #, c-format
 msgid "tincd %s starting"
 msgstr "tincd %s gestart"
 
 #, c-format
 msgid "tincd %s starting"
 msgstr "tincd %s gestart"
 
-#: src/tincd.c:231
+#: src/tincd.c:303
 #, c-format
 msgid "Total bytes written: tap %d, socket %d; bytes read: tap %d, socket %d"
 msgstr ""
 "Totaal aantal bytes geschreven: tap %d, socket %d; bytes gelezen: top %d, "
 "socket %d."
 
 #, c-format
 msgid "Total bytes written: tap %d, socket %d; bytes read: tap %d, socket %d"
 msgstr ""
 "Totaal aantal bytes geschreven: tap %d, socket %d; bytes gelezen: top %d, "
 "socket %d."
 
-#: src/tincd.c:249
+#: src/tincd.c:321
 #, c-format
 msgid "A tincd is already running for net `%s' with pid %d.\n"
 msgstr "Een tincd voor net `%s' draait al met procesnummer %d.\n"
 
 #, c-format
 msgid "A tincd is already running for net `%s' with pid %d.\n"
 msgstr "Een tincd voor net `%s' draait al met procesnummer %d.\n"
 
-#: src/tincd.c:252
+#: src/tincd.c:324
 #, c-format
 msgid "A tincd is already running with pid %d.\n"
 msgstr "Een tincd draait al met procesnummer %d.\n"
 
 #, c-format
 msgid "A tincd is already running with pid %d.\n"
 msgstr "Een tincd draait al met procesnummer %d.\n"
 
-#: src/tincd.c:273
+#: src/tincd.c:345
 #, c-format
 msgid "No other tincd is running for net `%s'.\n"
 msgstr "Geen andere tincd gevonden voor net `%s'.\n"
 
 #, c-format
 msgid "No other tincd is running for net `%s'.\n"
 msgstr "Geen andere tincd gevonden voor net `%s'.\n"
 
-#: src/tincd.c:275
+#: src/tincd.c:347
 msgid "No other tincd is running.\n"
 msgstr "Geen andere tincd gevonden.\n"
 
 msgid "No other tincd is running.\n"
 msgstr "Geen andere tincd gevonden.\n"
 
-#: src/tincd.c:282
+#: src/tincd.c:354
 msgid "Removing stale lock file.\n"
 msgstr "Ongebruikt vergrendelingsbestand verwijderd.\n"
 
 #. Do some intl stuff right now
 msgid "Removing stale lock file.\n"
 msgstr "Ongebruikt vergrendelingsbestand verwijderd.\n"
 
 #. Do some intl stuff right now
-#: src/tincd.c:325
+#: src/tincd.c:397
 msgid "unknown"
 msgstr "onbekend"
 
 msgid "unknown"
 msgstr "onbekend"
 
-#: src/tincd.c:331
+#: src/tincd.c:403
 #, c-format
 msgid "%s version %s (built %s %s, protocol %d)\n"
 msgstr "%s versie %s (gemaakt %s %s, protocol %d)\n"
 
 #, c-format
 msgid "%s version %s (built %s %s, protocol %d)\n"
 msgstr "%s versie %s (gemaakt %s %s, protocol %d)\n"
 
-#: src/tincd.c:332
+#: src/tincd.c:404
 msgid ""
 "Copyright (C) 1998,1999,2000 Ivo Timmermans, Guus Sliepen and others.\n"
 "See the AUTHORS file for a complete list.\n"
 msgid ""
 "Copyright (C) 1998,1999,2000 Ivo Timmermans, Guus Sliepen and others.\n"
 "See the AUTHORS file for a complete list.\n"
@@ -821,61 +855,70 @@ msgstr ""
 "en je bent welkom om het te distribueren onder bepaalde voorwaarden;\n"
 "zie het bestand COPYING voor details.\n"
 
 "en je bent welkom om het te distribueren onder bepaalde voorwaarden;\n"
 "zie het bestand COPYING voor details.\n"
 
-#: src/tincd.c:346
+#: src/tincd.c:418
 msgid "You must be root to run this program. Sorry.\n"
 msgstr ""
 "Je moet systeembeheerder zijn om dit programma te kunnen draaien. Sorry.\n"
 
 msgid "You must be root to run this program. Sorry.\n"
 msgstr ""
 "Je moet systeembeheerder zijn om dit programma te kunnen draaien. Sorry.\n"
 
-#: src/tincd.c:377
+#: src/tincd.c:452
 msgid "Unrecoverable error"
 msgstr "Onherstelbare fout"
 
 msgid "Unrecoverable error"
 msgstr "Onherstelbare fout"
 
-#: src/tincd.c:382
+#: src/tincd.c:457
 #, c-format
 msgid "Restarting in %d seconds!"
 msgstr "Herstart in %d seconden!"
 
 #, c-format
 msgid "Restarting in %d seconds!"
 msgstr "Herstart in %d seconden!"
 
-#: src/tincd.c:387 src/tincd.c:433
+#: src/tincd.c:462 src/tincd.c:508
 msgid "Aieee! Not restarting."
 msgstr "Waaah! Geen herstart."
 
 msgid "Aieee! Not restarting."
 msgstr "Waaah! Geen herstart."
 
-#: src/tincd.c:397
+#: src/tincd.c:472
 msgid "Got TERM signal"
 msgstr "Kreeg TERM signaal"
 
 msgid "Got TERM signal"
 msgstr "Kreeg TERM signaal"
 
-#: src/tincd.c:405
+#: src/tincd.c:480
 msgid "Got QUIT signal"
 msgstr "Kreeg QUIT signaal"
 
 msgid "Got QUIT signal"
 msgstr "Kreeg QUIT signaal"
 
-#: src/tincd.c:412
+#: src/tincd.c:487
 msgid "Got another SEGV signal: not restarting"
 msgstr "Kreeg nog een SEGV signaal: niet herstarten"
 
 msgid "Got another SEGV signal: not restarting"
 msgstr "Kreeg nog een SEGV signaal: niet herstarten"
 
-#: src/tincd.c:419
+#: src/tincd.c:494
 msgid "Got SEGV signal"
 msgstr "Kreeg SEGV signaal"
 
 msgid "Got SEGV signal"
 msgstr "Kreeg SEGV signaal"
 
-#: src/tincd.c:424
+#: src/tincd.c:499
 msgid "Trying to re-execute in 5 seconds..."
 msgstr "Poging tot herstaren over 5 seconden..."
 
 msgid "Trying to re-execute in 5 seconds..."
 msgstr "Poging tot herstaren over 5 seconden..."
 
-#: src/tincd.c:442
+#: src/tincd.c:517
 msgid "Got HUP signal, rereading configuration and restarting"
 msgstr "Kreeg HUP signaal, herlezen configuratie en herstarten"
 
 msgid "Got HUP signal, rereading configuration and restarting"
 msgstr "Kreeg HUP signaal, herlezen configuratie en herstarten"
 
-#: src/tincd.c:450
+#: src/tincd.c:525
 msgid "Got INT signal, exiting"
 msgstr "Kreeg INT signaal, beëindigen"
 
 msgid "Got INT signal, exiting"
 msgstr "Kreeg INT signaal, beëindigen"
 
-#: src/tincd.c:464
+#: src/tincd.c:539
 msgid "Got USR2 signal, forcing new key generation"
 msgstr "Kreeg USR2 signaal, nieuwe sleutels geforceerd"
 
 msgid "Got USR2 signal, forcing new key generation"
 msgstr "Kreeg USR2 signaal, nieuwe sleutels geforceerd"
 
-#: src/tincd.c:473
+#: src/tincd.c:548
 #, c-format
 msgid "Got unexpected signal %d (%s)"
 msgstr "Kreeg onverwacht signaal %d (%s)"
 
 #, c-format
 msgid "Got unexpected signal %d (%s)"
 msgstr "Kreeg onverwacht signaal %d (%s)"
 
+#~ msgid "Usage: %s bits\n"
+#~ msgstr "Gebruik: %s bits\n"
+
+#~ msgid "Illegal number: %s\n"
+#~ msgstr "Ongeldig nummer: %s\n"
+
+#~ msgid "Invalid timeout value `%s'.\n"
+#~ msgstr "Ongeldige timeout waarde `%s'.\n"
+
 #~ msgid "Illegal passphrase in %s; size would be %d"
 #~ msgstr "Ongeldig wachtwoord in %s; grootte zou %d zijn"
 
 #~ msgid "Illegal passphrase in %s; size would be %d"
 #~ msgstr "Ongeldig wachtwoord in %s; grootte zou %d zijn"
 
index 9755bae..81e5797 100644 (file)
@@ -1,9 +1,8 @@
 ## Produce this file with automake to get Makefile.in
 ## Produce this file with automake to get Makefile.in
-# $Id: Makefile.am,v 1.4.4.2 2000/10/11 10:35:15 guus Exp $
+# $Id: Makefile.am,v 1.4.4.3 2000/10/20 16:49:20 guus Exp $
 
 
-sbin_PROGRAMS = tincd genauth
+sbin_PROGRAMS = tincd
 
 
-genauth_SOURCES = genauth.c
 tincd_SOURCES = conf.c connlist.c meta.c net.c netutl.c protocol.c subnet.c tincd.c
 
 INCLUDES = -I$(top_builddir) -I$(top_srcdir)/cipher -I$(top_srcdir)/lib -I$(top_srcdir)/intl
 tincd_SOURCES = conf.c connlist.c meta.c net.c netutl.c protocol.c subnet.c tincd.c
 
 INCLUDES = -I$(top_builddir) -I$(top_srcdir)/cipher -I$(top_srcdir)/lib -I$(top_srcdir)/intl
diff --git a/src/genauth.c b/src/genauth.c
deleted file mode 100644 (file)
index 78c567d..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
-    genauth.c -- generate public/private keypairs
-    Copyright (C) 1998,1999,2000 Ivo Timmermans <zarq@iname.com>
-                            2000 Guus Sliepen <guus@sliepen.warande.net>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-    $Id: genauth.c,v 1.7.4.4 2000/10/20 15:34:35 guus Exp $
-*/
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <openssl/rsa.h>
-#include <openssl/rand.h>
-
-#include <xalloc.h>
-
-#include "system.h"
-
-#define RSA_PUBLIC_EXPONENT 65535
-
-void indicator(int a, int b, void *p)
-{
-  switch(a)
-  {
-    case 0:
-      fprintf(stderr, ".");
-      break;
-    case 1:
-      fprintf(stderr, "+");
-      break;
-    case 2:
-      fprintf(stderr, "-");
-      break;
-    case 3:
-      switch(b)
-        {
-          case 0:
-            fprintf(stderr, " p\n");      
-            break;
-          case 1:
-            fprintf(stderr, " q\n");
-            break;
-          default:
-            fprintf(stderr, "?");
-         }
-       break;
-    default:
-      fprintf(stderr, "?");
-  }
-}
-
-int main(int argc, char **argv)
-{
-  int bits;
-  RSA *key;
-
-  setlocale (LC_ALL, "");
-  bindtextdomain (PACKAGE, LOCALEDIR);
-  textdomain (PACKAGE);
-
-  if(argc > 2 || (argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))))
-    {
-      fprintf(stderr, _("Usage: %s bits\n"), argv[0]);
-      return 1;
-    }
-
-  if(!argv[1])
-    argv[1] = "1024";
-    
-  bits = atol(argv[1]);
-
-  if(bits<32)
-    {
-      fprintf(stderr, _("Illegal number: %s\n"), argv[1]);
-      return 1;
-    }
-    
-  bits = ((bits - 1) | 7) + 1;         /* Align to bytes for easy mallocing and reading */
-
-  fprintf(stderr, _("Seeding the PRNG: please press some keys or move\nthe mouse if this program seems to have halted...\n"));
-
-  RAND_load_file("/dev/random", 1024); /* OpenSSL PRNG state apparently uses 1024 bytes */
-
-  fprintf(stderr, _("Generating %d bits keys:\n"), bits);
-
-  key = RSA_generate_key(bits, RSA_PUBLIC_EXPONENT, indicator, NULL);
-
-  fprintf(stderr, _("Done.\n"));
-
-  printf(_("Public key:  %s\n"), BN_bn2hex(key->n));
-  printf(_("Private key: %s\n"), BN_bn2hex(key->d));
-  printf(_("Public exp:  %s\n"), BN_bn2hex(key->e));
-
-  fflush(stdin);       /* Flush any input caused by random keypresses */
-
-  return 0;
-}
index 0536d96..f007252 100644 (file)
@@ -17,7 +17,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id: tincd.c,v 1.10.4.12 2000/10/15 00:59:37 guus Exp $
+    $Id: tincd.c,v 1.10.4.13 2000/10/20 16:49:20 guus Exp $
 */
 
 #include "config.h"
 */
 
 #include "config.h"
@@ -31,6 +31,8 @@
 #include <syslog.h>
 #include <unistd.h>
 #include <signal.h>
 #include <syslog.h>
 #include <unistd.h>
 #include <signal.h>
+#include <openssl/rand.h>
+#include <openssl/rsa.h>
 
 #ifdef HAVE_SYS_IOCTL_H
 # include <sys/ioctl.h>
 
 #ifdef HAVE_SYS_IOCTL_H
 # include <sys/ioctl.h>
@@ -63,6 +65,9 @@ static int kill_tincd = 0;
 /* If zero, don't detach from the terminal. */
 static int do_detach = 1;
 
 /* If zero, don't detach from the terminal. */
 static int do_detach = 1;
 
+/* If nonzero, generate public/private keypair for this host/net. */
+static int generate_keys = 0;
+
 char *identname;                 /* program name for syslog */
 char *pidfilename;               /* pid file location */
 static pid_t ppid;               /* pid of non-detached part */
 char *identname;                 /* program name for syslog */
 char *pidfilename;               /* pid file location */
 static pid_t ppid;               /* pid of non-detached part */
@@ -80,10 +85,10 @@ static struct option const long_options[] =
 {
   { "kill", no_argument, NULL, 'k' },
   { "net", required_argument, NULL, 'n' },
 {
   { "kill", no_argument, NULL, 'k' },
   { "net", required_argument, NULL, 'n' },
-  { "timeout", required_argument, NULL, 'p' },
   { "help", no_argument, &show_help, 1 },
   { "version", no_argument, &show_version, 1 },
   { "no-detach", no_argument, &do_detach, 0 },
   { "help", no_argument, &show_help, 1 },
   { "version", no_argument, &show_version, 1 },
   { "no-detach", no_argument, &do_detach, 0 },
+  { "keygen", optional_argument, NULL, 'K'},
   { NULL, 0, NULL, 0 }
 };
 
   { NULL, 0, NULL, 0 }
 };
 
@@ -99,9 +104,9 @@ usage(int status)
               "  -D, --no-detach       Don't fork and detach.\n"
               "  -d                    Increase debug level.\n"
               "  -k, --kill            Attempt to kill a running tincd and exit.\n"
               "  -D, --no-detach       Don't fork and detach.\n"
               "  -d                    Increase debug level.\n"
               "  -k, --kill            Attempt to kill a running tincd and exit.\n"
-              "  -n, --net=NETNAME     Connect to net NETNAME.\n"
-              "  -t, --timeout=TIMEOUT Seconds to wait before giving a timeout.\n"));
-      printf(_("      --help            Display this help and exit.\n"
+              "  -n, --net=NETNAME     Connect to net NETNAME.\n"));
+      printf(_("  -K, --keygen[=BITS]   Generate public/private RSA keypair.\n"
+               "      --help            Display this help and exit.\n"
               "      --version         Output version information and exit.\n\n"));
       printf(_("Report bugs to tinc@nl.linux.org.\n"));
     }
               "      --version         Output version information and exit.\n\n"));
       printf(_("Report bugs to tinc@nl.linux.org.\n"));
     }
@@ -115,7 +120,7 @@ parse_options(int argc, char **argv, char **envp)
   int option_index = 0;
   config_t *p;
 
   int option_index = 0;
   config_t *p;
 
-  while((r = getopt_long(argc, argv, "c:Ddkn:t:", long_options, &option_index)) != EOF)
+  while((r = getopt_long(argc, argv, "c:Ddkn:K::", long_options, &option_index)) != EOF)
     {
       switch(r)
         {
     {
       switch(r)
         {
@@ -138,12 +143,19 @@ parse_options(int argc, char **argv, char **envp)
          netname = xmalloc(strlen(optarg)+1);
          strcpy(netname, optarg);
          break;
          netname = xmalloc(strlen(optarg)+1);
          strcpy(netname, optarg);
          break;
-       case 't': /* timeout */
-         if(!(p = add_config_val(&config, TYPE_INT, optarg)))
-           {
-             printf(_("Invalid timeout value `%s'.\n"), optarg);
-             usage(1);
-           }
+       case 'K': /* generate public/private keypair */
+          if(optarg)
+            {
+              generate_keys = atoi(optarg);
+              if(generate_keys < 512)
+                {
+                  fprintf(stderr, _("Invalid argument! BITS must be a number equal to or greater than 512.\n"));
+                  usage(1);
+                }
+              generate_keys &= ~7;     /* Round it to bytes */
+            }
+          else
+            generate_keys = 1024;
          break;
         case '?':
           usage(1);
          break;
         case '?':
           usage(1);
@@ -153,6 +165,66 @@ parse_options(int argc, char **argv, char **envp)
     }
 }
 
     }
 }
 
+/* This function prettyprints the key generation process */
+
+void indicator(int a, int b, void *p)
+{
+  switch(a)
+  {
+    case 0:
+      fprintf(stderr, ".");
+      break;
+    case 1:
+      fprintf(stderr, "+");
+      break;
+    case 2:
+      fprintf(stderr, "-");
+      break;
+    case 3:
+      switch(b)
+        {
+          case 0:
+            fprintf(stderr, " p\n");      
+            break;
+          case 1:
+            fprintf(stderr, " q\n");
+            break;
+          default:
+            fprintf(stderr, "?");
+         }
+       break;
+    default:
+      fprintf(stderr, "?");
+  }
+}
+
+/* Generate a public/private RSA keypair, and possibly store it into the configuration file. */
+
+int keygen(int bits)
+{
+  RSA *rsa_key;
+
+  fprintf(stderr, _("Seeding the PRNG: please press some keys or move\nthe mouse if this program seems to have halted...\n"));
+  RAND_load_file("/dev/random", 1024); /* OpenSSL PRNG state apparently uses 1024 bytes, but it seems pretty sufficient anyway :) */
+
+  fprintf(stderr, _("Generating %d bits keys:\n"), bits);
+  rsa_key = RSA_generate_key(bits, 0xFFFF, indicator, NULL);
+  if(!rsa_key)
+    {
+      fprintf(stderr, _("Error during key generation!"));
+      return -1;
+     }
+  else
+    fprintf(stderr, _("Done.\n"));
+
+  fprintf(stderr, _("Please copy the private key to tinc.conf and the\npublic key to your host configuration file:\n\n"));
+  printf("PublicKey = %s\n", BN_bn2hex(rsa_key->n));
+  printf("PrivateKey = %s\n", BN_bn2hex(rsa_key->d));
+  
+  fflush(stdin);
+  return 0;
+}
+
 void memory_full(int size)
 {
   syslog(LOG_ERR, _("Memory exhausted (last is %s:%d) (couldn't allocate %d bytes), exiting."), cp_file, cp_line, size);
 void memory_full(int size)
 {
   syslog(LOG_ERR, _("Memory exhausted (last is %s:%d) (couldn't allocate %d bytes), exiting."), cp_file, cp_line, size);
@@ -351,6 +423,9 @@ main(int argc, char **argv, char **envp)
 
   make_names();
 
 
   make_names();
 
+  if(generate_keys)
+    exit(keygen(generate_keys));
+
   if(kill_tincd)
     exit(kill_other());
 
   if(kill_tincd)
     exit(kill_other());