--- /dev/null
+## Process this file with automake to get Makefile.in
+
+# Nothing to see here, go away!
--- /dev/null
+/*
+ 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;
+}
--- /dev/null
+/*
+ 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__ */
lib/pidfile.c
lib/utils.c
src/conf.c
-src/genauth.c
src/meta.c
src/net.c
src/netutl.c
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"
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"
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"
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"
-#: src/net.c:115
+#: src/net.c:116
#, 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 "
-#: 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"
-#: src/net.c:242
+#: src/net.c:243
#, 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 "
-#: 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 "
-#: src/net.c:283
+#: src/net.c:284
#, 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"
-#: src/net.c:305
+#: src/net.c:306
#, 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 ""
-#: src/net.c:344
+#: src/net.c:352
#, 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 ""
-#: src/net.c:362
+#: src/net.c:373
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"
-#: 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"
-#: src/net.c:403 src/net.c:465
+#: src/net.c:415 src/net.c:477
#, 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 ""
-#: 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"
-#: src/net.c:433
+#: src/net.c:445
#, 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"
-#: 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"
-#: src/net.c:493
+#: src/net.c:505
#, 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"
-#: src/net.c:514
+#: src/net.c:526
#, 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 ""
-#: src/net.c:527
+#: src/net.c:539
#, 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"
-#: 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."
-#: src/net.c:586
+#: src/net.c:629
msgid "Name for tinc daemon required!"
msgstr ""
-#: src/net.c:594
+#: src/net.c:637
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 ""
-#: 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"
-#: 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"
-#: src/net.c:632
+#: src/net.c:703
#, 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."
-#: 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."
-#: src/net.c:736
+#: src/net.c:810
#, 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 "
-#: src/net.c:755
+#: src/net.c:829
#, 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"
-#: src/net.c:798
+#: src/net.c:872
#, 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"
-#: 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"
-#: 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"
-#: src/net.c:873
+#: src/net.c:943
#, 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."
-#: 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."
-#: src/net.c:967
+#: src/net.c:1037
#, 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"
-#: src/net.c:1006
+#: src/net.c:1076
#, 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"
-#: 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"
-#: 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 "
-#: src/net.c:1094
+#: src/net.c:1178
#, 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"
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"
-#: 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)."
-#: src/protocol.c:184
+#: src/protocol.c:187
#, 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 ""
-#: src/protocol.c:207
+#: src/protocol.c:209
#, 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 "
-#: src/protocol.c:261
+#: src/protocol.c:294
#, 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 ""
-#: 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"
-#: src/protocol.c:327
+#: src/protocol.c:370
#, 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 ""
-#: 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 ""
-#: src/protocol.c:398
+#: src/protocol.c:437
#, 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"
-#: 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"
-#: 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"
-#: src/protocol.c:467
+#: src/protocol.c:506
#, 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 ""
-#: 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"
-#: 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"
-#: 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"
-#: src/protocol.c:535
+#: src/protocol.c:574
#, 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 ""
-#: 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"
-#: 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"
-#: src/protocol.c:594
+#: src/protocol.c:633
#, 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 ""
-#: 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 ""
-#: src/protocol.c:633
+#: src/protocol.c:672
#, 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 ""
-#: 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"
-#: 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"
-#: src/protocol.c:701
+#: src/protocol.c:740
#, 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 ""
-#: 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 ""
-#: 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 ""
-#: 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"
-#: 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"
-#: 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"
-#: 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"
-#: 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"
-#: src/protocol.c:892
+#: src/protocol.c:931
#, 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 ""
-#: src/protocol.c:929
+#: src/protocol.c:968
#, 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 ""
-#: 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 ""
-#: 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"
-#: 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 ""
-#: 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"
-#: 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 ""
-#: 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"
-#: src/tincd.c:97
+#: src/tincd.c:102
#, c-format
msgid ""
"Usage: %s [option]...\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"
" -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"
" -t, --timeout=TIEMPO Segundos a esperar antes de cancelar una "
"trasmisión.\n"
-#: src/tincd.c:104
+#: src/tincd.c:108
+#, fuzzy
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"
" --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"
-#: 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."
-#: 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."
-#: src/tincd.c:216
+#: src/tincd.c:288
#, 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."
-#: 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"
-#: 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"
-#: 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"
-#: 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"
-#: 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
-#: src/tincd.c:325
+#: src/tincd.c:397
msgid "unknown"
msgstr ""
-#: src/tincd.c:331
+#: src/tincd.c:403
#, 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"
"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"
-#: src/tincd.c:377
+#: src/tincd.c:452
msgid "Unrecoverable error"
msgstr ""
-#: src/tincd.c:382
+#: src/tincd.c:457
#, 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 ""
-#: src/tincd.c:397
+#: src/tincd.c:472
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"
-#: src/tincd.c:412
+#: src/tincd.c:487
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"
-#: 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."
-#: src/tincd.c:442
+#: src/tincd.c:517
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"
-#: 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"
-#: src/tincd.c:473
+#: src/tincd.c:548
#, 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 ""
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"
"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"
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)"
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)"
-#: 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"
-#: src/net.c:129
+#: src/net.c:130
#, 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"
-#: src/net.c:242
+#: src/net.c:243
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)"
-#: 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)"
-#: 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!"
-#: 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)"
-#: 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"
-#: 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"
-#: src/net.c:344
+#: src/net.c:352
#, 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"
-#: src/net.c:362
+#: src/net.c:373
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"
-#: 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"
-#: src/net.c:403 src/net.c:465
+#: src/net.c:415 src/net.c:477
#, 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"
-#: 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"
-#: src/net.c:433
+#: src/net.c:445
#, 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"
-#: 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"
-#: src/net.c:493
+#: src/net.c:505
#, 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"
-#: src/net.c:514
+#: src/net.c:526
#, 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"
-#: src/net.c:527
+#: src/net.c:539
#, 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"
-#: 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"
-#: src/net.c:586
+#: src/net.c:629
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!"
-#: 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!"
-#: 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!"
-#: 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!"
-#: src/net.c:632
+#: src/net.c:703
#, 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"
-#: 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"
-#: src/net.c:736
+#: src/net.c:810
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"
-#: src/net.c:755
+#: src/net.c:829
#, 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"
-#: src/net.c:798
+#: src/net.c:872
#, 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"
-#: 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"
-#: src/net.c:867
+#: src/net.c:937
#, 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"
-#: src/net.c:894
+#: src/net.c:964
#, 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"
-#: 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"
-#: 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"
-#: src/net.c:1006
+#: src/net.c:1076
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"
-#: 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"
-#: 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"
-#: 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"
-#: src/net.c:1133
+#: src/net.c:1213
#, c-format
msgid "Error while waiting for input: %m"
msgstr "Fout tijdens wachten op invoer: %m"
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"
-#: 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"
-#: src/protocol.c:184
+#: src/protocol.c:187
#, 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)"
-#: 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"
-#: 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)"
-#: 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)"
-#: 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"
-#: 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)"
-#: 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)"
-#: 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)"
-#: 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"
-#: src/protocol.c:398
+#: src/protocol.c:437
#, 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)"
-#: 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"
-#: 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"
-#: 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"
-#: 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"
-#: 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)"
-#: 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"
-#: 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"
-#: 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"
-#: 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"
-#: 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)"
-#: 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"
-#: 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"
-#: 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"
-#: 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"
"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)"
-#: src/protocol.c:640
+#: src/protocol.c:679
#, 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)"
-#: 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"
-#: 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"
-#: 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"
-#: 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"
"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"
-#: 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"
-#: src/protocol.c:776
+#: src/protocol.c:815
#, 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"
-#: src/protocol.c:807
+#: src/protocol.c:846
#, 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"
-#: 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)"
-#: 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 "
"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)"
-#: 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 "
"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 "
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)"
-#: 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 "
"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"
-#: 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 "
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"
-#: src/tincd.c:97
+#: src/tincd.c:102
#, c-format
msgid ""
"Usage: %s [option]...\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"
-" -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"
-" -t, --timeout=TIMEOUT Seconden wachten op timeout.\n"
-#: src/tincd.c:104
+#: src/tincd.c:108
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 ""
+" -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"
-#: 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"
-#: 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
-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."
-#: 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"
-#: src/tincd.c:216
+#: src/tincd.c:288
#, 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."
-#: 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"
-#: 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"
-#: 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"
-#: src/tincd.c:275
+#: src/tincd.c:347
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
-#: src/tincd.c:325
+#: src/tincd.c:397
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"
-#: 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"
"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"
-#: src/tincd.c:377
+#: src/tincd.c:452
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!"
-#: src/tincd.c:387 src/tincd.c:433
+#: src/tincd.c:462 src/tincd.c:508
msgid "Aieee! Not restarting."
msgstr "Waaah! Geen herstart."
-#: src/tincd.c:397
+#: src/tincd.c:472
msgid "Got TERM signal"
msgstr "Kreeg TERM signaal"
-#: src/tincd.c:405
+#: src/tincd.c:480
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"
-#: src/tincd.c:419
+#: src/tincd.c:494
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..."
-#: src/tincd.c:442
+#: src/tincd.c:517
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"
-#: src/tincd.c:464
+#: src/tincd.c:539
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)"
+#~ 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"
## 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
+++ /dev/null
-/*
- 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;
-}
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 <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>
/* 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 */
{
{ "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 },
+ { "keygen", optional_argument, NULL, 'K'},
{ NULL, 0, NULL, 0 }
};
" -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"));
}
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)
{
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);
}
}
+/* 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);
make_names();
+ if(generate_keys)
+ exit(keygen(generate_keys));
+
if(kill_tincd)
exit(kill_other());