gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [gnunet] branch master updated: work on new gnunet-nat tool


From: gnunet
Subject: [GNUnet-SVN] [gnunet] branch master updated: work on new gnunet-nat tool, towards new NAT API
Date: Sun, 27 Nov 2016 12:41:33 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository gnunet.

The following commit(s) were added to refs/heads/master by this push:
     new b035390  work on new gnunet-nat tool, towards new NAT API
b035390 is described below

commit b035390c73b241ddb513f420671043e9113c237c
Author: Christian Grothoff <address@hidden>
AuthorDate: Sun Nov 27 12:07:07 2016 +0100

    work on new gnunet-nat tool, towards new NAT API
---
 po/de.po             |  76 ++++++++-------
 po/es.po             |  76 ++++++++-------
 po/fr.po             |  76 ++++++++-------
 po/sv.po             |  76 ++++++++-------
 po/vi.po             |  76 ++++++++-------
 po/zh_CN.po          |  76 ++++++++-------
 src/nat/gnunet-nat.c | 271 ++++++++++++++++++++++++++++++++++++++++-----------
 7 files changed, 459 insertions(+), 268 deletions(-)

diff --git a/po/de.po b/po/de.po
index fdc37d3..58a71e4 100644
--- a/po/de.po
+++ b/po/de.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet 0.10.1\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2016-11-21 18:08+0100\n"
+"POT-Creation-Date: 2016-11-27 09:18+0100\n"
 "PO-Revision-Date: 2015-03-08 16:16+0100\n"
 "Last-Translator: Mario Blättermann <address@hidden>\n"
 "Language-Team: German <address@hidden>\n"
@@ -243,7 +243,7 @@ msgid "Control services and the Automated Restart Manager 
(ARM)"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:374 src/transport/plugin_transport_tcp.c:633
-#: src/util/service.c:565 src/util/service_new.c:604
+#: src/util/service.c:565 src/util/service_new.c:612
 #, c-format
 msgid ""
 "Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -253,25 +253,26 @@ msgstr ""
 #: src/transport/plugin_transport_tcp.c:652
 #: src/transport/plugin_transport_tcp.c:658
 #: src/transport/plugin_transport_tcp.c:3299 src/util/service.c:584
-#: src/util/service.c:590 src/util/service_new.c:629 src/util/service_new.c:635
+#: src/util/service.c:590 src/util/service_new.c:637
+#: src/util/service_new.c:643
 #, c-format
 msgid "Require valid port number for service `%s' in configuration!\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:689
-#: src/util/client_new.c:464 src/util/service.c:621 src/util/service_new.c:674
+#: src/util/client_new.c:464 src/util/service.c:621 src/util/service_new.c:682
 #, c-format
 msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:693
-#: src/util/client_new.c:469 src/util/service.c:625 src/util/service_new.c:679
+#: src/util/client_new.c:469 src/util/service.c:625 src/util/service_new.c:687
 #, c-format
 msgid "Using `%s' instead\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:465 src/transport/plugin_transport_tcp.c:724
-#: src/util/service.c:656 src/util/service_new.c:715
+#: src/util/service.c:656 src/util/service_new.c:723
 #, c-format
 msgid ""
 "Disabling UNIX domain socket support for service `%s', failed to create UNIX "
@@ -279,7 +280,7 @@ msgid ""
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:482 src/transport/plugin_transport_tcp.c:741
-#: src/util/service.c:673 src/util/service_new.c:733
+#: src/util/service.c:673 src/util/service_new.c:741
 #, c-format
 msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
 msgstr ""
@@ -287,7 +288,7 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:513
 #: src/transport/plugin_transport_http_server.c:2617
 #: src/transport/plugin_transport_tcp.c:772 src/util/service.c:704
-#: src/util/service_new.c:774
+#: src/util/service_new.c:782
 #, c-format
 msgid "Failed to resolve `%s': %s\n"
 msgstr "»%s« konnte nicht aufgelöst werden: %s\n"
@@ -295,7 +296,7 @@ msgstr "»%s« konnte nicht aufgelöst werden: %s\n"
 #: src/arm/gnunet-service-arm.c:532
 #: src/transport/plugin_transport_http_server.c:2635
 #: src/transport/plugin_transport_tcp.c:791 src/util/service.c:723
-#: src/util/service_new.c:794
+#: src/util/service_new.c:802
 #, fuzzy, c-format
 msgid "Failed to find %saddress for `%s'.\n"
 msgstr "Fehler beim Lesen der Freunde-Liste von `%s'\n"
@@ -387,11 +388,13 @@ msgid ""
 "%llu\n"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:3293 src/ats-tests/gnunet-solver-eval.c:935
+#: src/ats/gnunet-ats-solver-eval.c:3293
+#: src/ats-tests/gnunet-solver-eval.c:935
 msgid "solver to use"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:3296 src/ats-tests/gnunet-solver-eval.c:938
+#: src/ats/gnunet-ats-solver-eval.c:3296
+#: src/ats-tests/gnunet-solver-eval.c:938
 #: src/ats-tests/gnunet-solver-eval.c:941
 msgid "experiment to use"
 msgstr ""
@@ -1890,7 +1893,8 @@ msgstr ""
 msgid "Prints all packets that go through the DHT."
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:1161
+#: src/testbed/gnunet-testbed-profiler.c:255
 #, c-format
 msgid "Exiting as the number of peers is %u\n"
 msgstr ""
@@ -2070,7 +2074,8 @@ msgstr ""
 msgid "# GET requests given to datacache"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_hello.c:84 src/dht/gnunet-service-xdht_hello.c:82
+#: src/dht/gnunet-service-dht_hello.c:84
+#: src/dht/gnunet-service-xdht_hello.c:82
 msgid "# HELLOs obtained from peerinfo"
 msgstr ""
 
@@ -5113,7 +5118,8 @@ msgstr ""
 msgid "Invalid public key for reverse lookup `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:979 src/peerinfo-tool/gnunet-peerinfo.c:775
+#: src/namestore/gnunet-namestore.c:979
+#: src/peerinfo-tool/gnunet-peerinfo.c:775
 #, fuzzy, c-format
 msgid "Invalid URI `%s'\n"
 msgstr "Ungültiger Parameter: `%s'\n"
@@ -8082,7 +8088,7 @@ msgstr "RSA Signaturüberprüfung fehlgeschlagen bei %s:%d: 
%s\n"
 msgid "Expected `%s' to be a directory!\n"
 msgstr "`%s' erwartet, dass `%s' ein Verzeichnis ist!\n"
 
-#: src/util/disk.c:1486 src/util/service.c:1322 src/util/service_new.c:1371
+#: src/util/disk.c:1486 src/util/service.c:1322 src/util/service_new.c:1379
 #, fuzzy, c-format
 msgid "Cannot obtain information about user `%s': %s\n"
 msgstr "Fehler beim Speichern der Konfigurationsdatei: `%s': %s.\n"
@@ -8434,17 +8440,17 @@ msgstr "`%s' fehlgeschlagen für die Bibliothek `%s'. 
Ort: %s:%d. Fehler: %s\n"
 msgid "Could not determine plugin installation path.\n"
 msgstr "Öffentliche IP-Adresse konnte nicht ermittelt werden.\n"
 
-#: src/util/program.c:244 src/util/service.c:1456 src/util/service_new.c:1801
+#: src/util/program.c:244 src/util/service.c:1456 src/util/service_new.c:1809
 #, fuzzy, c-format
 msgid "Malformed configuration file `%s', exit ...\n"
 msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n"
 
-#: src/util/program.c:256 src/util/service.c:1471 src/util/service_new.c:1818
+#: src/util/program.c:256 src/util/service.c:1471 src/util/service_new.c:1826
 #, fuzzy, c-format
 msgid "Could not access configuration file `%s'\n"
 msgstr "Konfigurationsdatei `%s' konnte nicht geparst werden.\n"
 
-#: src/util/program.c:261 src/util/service.c:1466 src/util/service_new.c:1812
+#: src/util/program.c:261 src/util/service.c:1466 src/util/service_new.c:1820
 #, fuzzy
 msgid "Malformed configuration, exit ...\n"
 msgstr "GNUnet Konfiguration"
@@ -8485,17 +8491,17 @@ msgstr "Standarddienst »%s« ist nicht korrekt 
eingerichtet!\n"
 msgid "Could not resolve our FQDN: %s\n"
 msgstr "`%s' konnte nicht aufgelöst werden: %s\n"
 
-#: src/util/server.c:478 src/util/service_new.c:1103
+#: src/util/server.c:478 src/util/service_new.c:1111
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s).\n"
 msgstr "`%s' fehlgeschlagen für Laufwerk %s: %u\n"
 
-#: src/util/server.c:488 src/util/service_new.c:1113
+#: src/util/server.c:488 src/util/service_new.c:1121
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s): address already in use\n"
 msgstr "`%s' schlug fehl für Port %d: %s. Läuft gnunetd bereits?\n"
 
-#: src/util/server.c:494 src/util/service_new.c:1119
+#: src/util/server.c:494 src/util/service_new.c:1127
 #, fuzzy, c-format
 msgid "`%s' failed for `%s': address already in use\n"
 msgstr "%s schlug fehl, Nachrichten Typ %d ist bereits in Verwendung.\n"
@@ -8507,7 +8513,7 @@ msgid ""
 "`GNUNET_SERVER_receive_done' after %s\n"
 msgstr ""
 
-#: src/util/service.c:347 src/util/service_new.c:2335
+#: src/util/service.c:347 src/util/service_new.c:2343
 #, c-format
 msgid "Unknown address family %d\n"
 msgstr ""
@@ -8517,26 +8523,26 @@ msgstr ""
 msgid "Access from `%s' denied to service `%s'\n"
 msgstr ""
 
-#: src/util/service.c:410 src/util/service_new.c:431
+#: src/util/service.c:410 src/util/service_new.c:439
 #, c-format
 msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/util/service.c:448 src/util/service_new.c:474
+#: src/util/service.c:448 src/util/service_new.c:482
 #, c-format
 msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/util/service.c:912 src/util/service_new.c:1034
+#: src/util/service.c:912 src/util/service_new.c:1042
 msgid "Could not access a pre-bound socket, will try to bind myself\n"
 msgstr ""
 
-#: src/util/service.c:961 src/util/service.c:979 src/util/service_new.c:1186
+#: src/util/service.c:961 src/util/service.c:979 src/util/service_new.c:1194
 #, c-format
 msgid "Specified value for `%s' of service `%s' is invalid\n"
 msgstr ""
 
-#: src/util/service.c:1004 src/util/service_new.c:1218
+#: src/util/service.c:1004 src/util/service_new.c:1226
 #, c-format
 msgid "Could not access pre-bound socket %u, will try to bind myself\n"
 msgstr ""
@@ -8551,37 +8557,37 @@ msgstr "Es konnte keine Verbindung mit gnunetd 
hergestellt werden.\n"
 msgid "Service `%s' runs at %s\n"
 msgstr "Dienst »%s« läuft auf %s\n"
 
-#: src/util/service.c:1260 src/util/service_new.c:1493
+#: src/util/service.c:1260 src/util/service_new.c:1501
 msgid "Service process failed to initialize\n"
 msgstr ""
 
-#: src/util/service.c:1264 src/util/service_new.c:1497
+#: src/util/service.c:1264 src/util/service_new.c:1505
 msgid "Service process could not initialize server function\n"
 msgstr ""
 
-#: src/util/service.c:1268 src/util/service_new.c:1501
+#: src/util/service.c:1268 src/util/service_new.c:1509
 msgid "Service process failed to report status\n"
 msgstr ""
 
-#: src/util/service.c:1323 src/util/service_new.c:1373
+#: src/util/service.c:1323 src/util/service_new.c:1381
 msgid "No such user"
 msgstr ""
 
-#: src/util/service.c:1336 src/util/service_new.c:1392
+#: src/util/service.c:1336 src/util/service_new.c:1400
 #, c-format
 msgid "Cannot change user/group to `%s': %s\n"
 msgstr "Benutzer/Gruppe kann nicht zu »%s« geändert werden: %s\n"
 
-#: src/util/service.c:1406 src/util/service_new.c:1729
+#: src/util/service.c:1406 src/util/service_new.c:1737
 msgid "do daemonize (detach from terminal)"
 msgstr ""
 
-#: src/util/service_new.c:1298
+#: src/util/service_new.c:1306
 msgid ""
 "Could not bind to any of the ports I was supposed to, refusing to run!\n"
 msgstr ""
 
-#: src/util/service_new.c:2085
+#: src/util/service_new.c:2093
 #, c-format
 msgid ""
 "Processing code for message of type %u did not call "
diff --git a/po/es.po b/po/es.po
index efa53e4..8df52f5 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet 0.9.5a\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2016-11-21 18:08+0100\n"
+"POT-Creation-Date: 2016-11-27 09:18+0100\n"
 "PO-Revision-Date: 2013-02-23 17:50+0100\n"
 "Last-Translator: Miguel Ángel Arruga Vivas <address@hidden>\n"
 "Language-Team: Spanish <address@hidden>\n"
@@ -249,7 +249,7 @@ msgstr ""
 "Servicios de control y el Gestor de Reinicio Automático (ARM en inglés)"
 
 #: src/arm/gnunet-service-arm.c:374 src/transport/plugin_transport_tcp.c:633
-#: src/util/service.c:565 src/util/service_new.c:604
+#: src/util/service.c:565 src/util/service_new.c:612
 #, c-format
 msgid ""
 "Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -261,7 +261,8 @@ msgstr ""
 #: src/transport/plugin_transport_tcp.c:652
 #: src/transport/plugin_transport_tcp.c:658
 #: src/transport/plugin_transport_tcp.c:3299 src/util/service.c:584
-#: src/util/service.c:590 src/util/service_new.c:629 src/util/service_new.c:635
+#: src/util/service.c:590 src/util/service_new.c:637
+#: src/util/service_new.c:643
 #, c-format
 msgid "Require valid port number for service `%s' in configuration!\n"
 msgstr ""
@@ -269,20 +270,20 @@ msgstr ""
 "configuración!\n"
 
 #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:689
-#: src/util/client_new.c:464 src/util/service.c:621 src/util/service_new.c:674
+#: src/util/client_new.c:464 src/util/service.c:621 src/util/service_new.c:682
 #, c-format
 msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
 msgstr ""
 "La ruta tipo UNIX «%s» es demasiado larga, la longitud máxima es %llu\n"
 
 #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:693
-#: src/util/client_new.c:469 src/util/service.c:625 src/util/service_new.c:679
+#: src/util/client_new.c:469 src/util/service.c:625 src/util/service_new.c:687
 #, c-format
 msgid "Using `%s' instead\n"
 msgstr "Usando «%s» en su defecto\n"
 
 #: src/arm/gnunet-service-arm.c:465 src/transport/plugin_transport_tcp.c:724
-#: src/util/service.c:656 src/util/service_new.c:715
+#: src/util/service.c:656 src/util/service_new.c:723
 #, c-format
 msgid ""
 "Disabling UNIX domain socket support for service `%s', failed to create UNIX "
@@ -292,7 +293,7 @@ msgstr ""
 "«%s», no se pudo crear un «socket» UNIX: %s\n"
 
 #: src/arm/gnunet-service-arm.c:482 src/transport/plugin_transport_tcp.c:741
-#: src/util/service.c:673 src/util/service_new.c:733
+#: src/util/service.c:673 src/util/service_new.c:741
 #, c-format
 msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
 msgstr ""
@@ -302,7 +303,7 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:513
 #: src/transport/plugin_transport_http_server.c:2617
 #: src/transport/plugin_transport_tcp.c:772 src/util/service.c:704
-#: src/util/service_new.c:774
+#: src/util/service_new.c:782
 #, c-format
 msgid "Failed to resolve `%s': %s\n"
 msgstr "Se produjo un fallo al resolver «%s»: %s\n"
@@ -310,7 +311,7 @@ msgstr "Se produjo un fallo al resolver «%s»: %s\n"
 #: src/arm/gnunet-service-arm.c:532
 #: src/transport/plugin_transport_http_server.c:2635
 #: src/transport/plugin_transport_tcp.c:791 src/util/service.c:723
-#: src/util/service_new.c:794
+#: src/util/service_new.c:802
 #, c-format
 msgid "Failed to find %saddress for `%s'.\n"
 msgstr "No se encontró la dirección %s para «%s».\n"
@@ -415,12 +416,14 @@ msgstr ""
 "No hay configurada una cuota de salida para la red «%s», asignando el ancho "
 "de banda predeterminado %llu\n"
 
-#: src/ats/gnunet-ats-solver-eval.c:3293 src/ats-tests/gnunet-solver-eval.c:935
+#: src/ats/gnunet-ats-solver-eval.c:3293
+#: src/ats-tests/gnunet-solver-eval.c:935
 #, fuzzy
 msgid "solver to use"
 msgstr "valor a establecer"
 
-#: src/ats/gnunet-ats-solver-eval.c:3296 src/ats-tests/gnunet-solver-eval.c:938
+#: src/ats/gnunet-ats-solver-eval.c:3296
+#: src/ats-tests/gnunet-solver-eval.c:938
 #: src/ats-tests/gnunet-solver-eval.c:941
 msgid "experiment to use"
 msgstr ""
@@ -1973,7 +1976,8 @@ msgstr "cuanto tiempo debe ejecutarse el comando de 
monitorización"
 msgid "Prints all packets that go through the DHT."
 msgstr "Imprime todos los paquetes que pasan por la DHT."
 
-#: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:1161
+#: src/testbed/gnunet-testbed-profiler.c:255
 #, fuzzy, c-format
 msgid "Exiting as the number of peers is %u\n"
 msgstr "El número máximo de conexiones es %u\n"
@@ -2157,7 +2161,8 @@ msgstr "¡Tipo de bloque no soportado (%u) en respuesta 
local!\n"
 msgid "# GET requests given to datacache"
 msgstr "# Peticiones «GET» realizadas a la caché de datos"
 
-#: src/dht/gnunet-service-dht_hello.c:84 src/dht/gnunet-service-xdht_hello.c:82
+#: src/dht/gnunet-service-dht_hello.c:84
+#: src/dht/gnunet-service-xdht_hello.c:82
 msgid "# HELLOs obtained from peerinfo"
 msgstr "# «HELLO» obtenidos de «peerinfo»"
 
@@ -5274,7 +5279,8 @@ msgstr "borrar"
 msgid "Invalid public key for reverse lookup `%s'\n"
 msgstr "Parámetro no válido «%s»\n"
 
-#: src/namestore/gnunet-namestore.c:979 src/peerinfo-tool/gnunet-peerinfo.c:775
+#: src/namestore/gnunet-namestore.c:979
+#: src/peerinfo-tool/gnunet-peerinfo.c:775
 #, c-format
 msgid "Invalid URI `%s'\n"
 msgstr "URI no válida: «%s»\n"
@@ -8377,7 +8383,7 @@ msgstr "La verificación de la firma RSA fallo en %s:%d: 
%s\n"
 msgid "Expected `%s' to be a directory!\n"
 msgstr "¡Se esperaba que «%s» fuera un directorio!\n"
 
-#: src/util/disk.c:1486 src/util/service.c:1322 src/util/service_new.c:1371
+#: src/util/disk.c:1486 src/util/service.c:1322 src/util/service_new.c:1379
 #, c-format
 msgid "Cannot obtain information about user `%s': %s\n"
 msgstr "No se pudo obtener información acerca del usuario «%s»: %s\n"
@@ -8733,17 +8739,17 @@ msgstr "Falló «%s» para la biblioteca «%s» con error: 
%s\n"
 msgid "Could not determine plugin installation path.\n"
 msgstr "No se pudo determinar la ruta de instalación de los módulos.\n"
 
-#: src/util/program.c:244 src/util/service.c:1456 src/util/service_new.c:1801
+#: src/util/program.c:244 src/util/service.c:1456 src/util/service_new.c:1809
 #, fuzzy, c-format
 msgid "Malformed configuration file `%s', exit ...\n"
 msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
 
-#: src/util/program.c:256 src/util/service.c:1471 src/util/service_new.c:1818
+#: src/util/program.c:256 src/util/service.c:1471 src/util/service_new.c:1826
 #, c-format
 msgid "Could not access configuration file `%s'\n"
 msgstr "No se pudo acceder al fichero de configuración «%s»\n"
 
-#: src/util/program.c:261 src/util/service.c:1466 src/util/service_new.c:1812
+#: src/util/program.c:261 src/util/service.c:1466 src/util/service_new.c:1820
 #, fuzzy
 msgid "Malformed configuration, exit ...\n"
 msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
@@ -8788,17 +8794,17 @@ msgid "Could not resolve our FQDN: %s\n"
 msgstr ""
 "No se pudo resolver nuestro nombre de dominio cualificado (FQDN) : %s\n"
 
-#: src/util/server.c:478 src/util/service_new.c:1103
+#: src/util/server.c:478 src/util/service_new.c:1111
 #, c-format
 msgid "`%s' failed for port %d (%s).\n"
 msgstr "«%s» falló para el puerto %d (%s).\n"
 
-#: src/util/server.c:488 src/util/service_new.c:1113
+#: src/util/server.c:488 src/util/service_new.c:1121
 #, c-format
 msgid "`%s' failed for port %d (%s): address already in use\n"
 msgstr "«%s» falló para el puerto %d (%s): dirección en uso actualmente\n"
 
-#: src/util/server.c:494 src/util/service_new.c:1119
+#: src/util/server.c:494 src/util/service_new.c:1127
 #, fuzzy, c-format
 msgid "`%s' failed for `%s': address already in use\n"
 msgstr "«%s» falló para «%.*s»: dirección en uso actualmente\n"
@@ -8812,7 +8818,7 @@ msgstr ""
 "El código de procesado para el mensaje del tipo %u no llamó a "
 "«GNUNET_SERVER_receive_done» después de %s\n"
 
-#: src/util/service.c:347 src/util/service_new.c:2335
+#: src/util/service.c:347 src/util/service_new.c:2343
 #, c-format
 msgid "Unknown address family %d\n"
 msgstr "Familia de direcciones %d desconocida\n"
@@ -8822,28 +8828,28 @@ msgstr "Familia de direcciones %d desconocida\n"
 msgid "Access from `%s' denied to service `%s'\n"
 msgstr "Acceso denegado desde «%s» al servicio «%s»\n"
 
-#: src/util/service.c:410 src/util/service_new.c:431
+#: src/util/service.c:410 src/util/service_new.c:439
 #, c-format
 msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
 msgstr "No se pudo procesar la especificación de red IPv4 «%s» para «%s:%s»\n"
 
-#: src/util/service.c:448 src/util/service_new.c:474
+#: src/util/service.c:448 src/util/service_new.c:482
 #, c-format
 msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
 msgstr "No se pudo procesar la especificación de red IPv6 «%s» para «%s:%s»\n"
 
-#: src/util/service.c:912 src/util/service_new.c:1034
+#: src/util/service.c:912 src/util/service_new.c:1042
 msgid "Could not access a pre-bound socket, will try to bind myself\n"
 msgstr ""
 "No se pudo acceder a un «socket» pre-ascociado, lo intentaré asociar yo "
 "mismo\n"
 
-#: src/util/service.c:961 src/util/service.c:979 src/util/service_new.c:1186
+#: src/util/service.c:961 src/util/service.c:979 src/util/service_new.c:1194
 #, c-format
 msgid "Specified value for `%s' of service `%s' is invalid\n"
 msgstr "El valor especificado «%s» para el servicio «%s» no es válido\n"
 
-#: src/util/service.c:1004 src/util/service_new.c:1218
+#: src/util/service.c:1004 src/util/service_new.c:1226
 #, c-format
 msgid "Could not access pre-bound socket %u, will try to bind myself\n"
 msgstr ""
@@ -8860,38 +8866,38 @@ msgstr "Se produjo un fallo al inciar «%s» en «%s»\n"
 msgid "Service `%s' runs at %s\n"
 msgstr "El servicio «%s» se ejecuta en %s\n"
 
-#: src/util/service.c:1260 src/util/service_new.c:1493
+#: src/util/service.c:1260 src/util/service_new.c:1501
 msgid "Service process failed to initialize\n"
 msgstr "No se pudo inicializar el proceso del servicio\n"
 
-#: src/util/service.c:1264 src/util/service_new.c:1497
+#: src/util/service.c:1264 src/util/service_new.c:1505
 msgid "Service process could not initialize server function\n"
 msgstr ""
 "No se pudo inicializar la función del servidor en el proceso del servicio\n"
 
-#: src/util/service.c:1268 src/util/service_new.c:1501
+#: src/util/service.c:1268 src/util/service_new.c:1509
 msgid "Service process failed to report status\n"
 msgstr "El proceso del servicio no devolvió un estado\n"
 
-#: src/util/service.c:1323 src/util/service_new.c:1373
+#: src/util/service.c:1323 src/util/service_new.c:1381
 msgid "No such user"
 msgstr "No existe tal usuario"
 
-#: src/util/service.c:1336 src/util/service_new.c:1392
+#: src/util/service.c:1336 src/util/service_new.c:1400
 #, c-format
 msgid "Cannot change user/group to `%s': %s\n"
 msgstr "Imposible cambiar el usuario/grupo a «%s»: %s\n"
 
-#: src/util/service.c:1406 src/util/service_new.c:1729
+#: src/util/service.c:1406 src/util/service_new.c:1737
 msgid "do daemonize (detach from terminal)"
 msgstr "demonizar (desasociar del terminal)"
 
-#: src/util/service_new.c:1298
+#: src/util/service_new.c:1306
 msgid ""
 "Could not bind to any of the ports I was supposed to, refusing to run!\n"
 msgstr ""
 
-#: src/util/service_new.c:2085
+#: src/util/service_new.c:2093
 #, fuzzy, c-format
 msgid ""
 "Processing code for message of type %u did not call "
diff --git a/po/fr.po b/po/fr.po
index 063dbe1..a4df4ae 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet 0.10.1\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2016-11-21 18:08+0100\n"
+"POT-Creation-Date: 2016-11-27 09:18+0100\n"
 "PO-Revision-Date: 2015-12-24 01:20+0100\n"
 "Last-Translator: Stéphane  Aulery <address@hidden>\n"
 "Language-Team: French <address@hidden>\n"
@@ -235,7 +235,7 @@ msgid "Control services and the Automated Restart Manager 
(ARM)"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:374 src/transport/plugin_transport_tcp.c:633
-#: src/util/service.c:565 src/util/service_new.c:604
+#: src/util/service.c:565 src/util/service_new.c:612
 #, c-format
 msgid ""
 "Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -245,25 +245,26 @@ msgstr ""
 #: src/transport/plugin_transport_tcp.c:652
 #: src/transport/plugin_transport_tcp.c:658
 #: src/transport/plugin_transport_tcp.c:3299 src/util/service.c:584
-#: src/util/service.c:590 src/util/service_new.c:629 src/util/service_new.c:635
+#: src/util/service.c:590 src/util/service_new.c:637
+#: src/util/service_new.c:643
 #, c-format
 msgid "Require valid port number for service `%s' in configuration!\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:689
-#: src/util/client_new.c:464 src/util/service.c:621 src/util/service_new.c:674
+#: src/util/client_new.c:464 src/util/service.c:621 src/util/service_new.c:682
 #, c-format
 msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:693
-#: src/util/client_new.c:469 src/util/service.c:625 src/util/service_new.c:679
+#: src/util/client_new.c:469 src/util/service.c:625 src/util/service_new.c:687
 #, c-format
 msgid "Using `%s' instead\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:465 src/transport/plugin_transport_tcp.c:724
-#: src/util/service.c:656 src/util/service_new.c:715
+#: src/util/service.c:656 src/util/service_new.c:723
 #, c-format
 msgid ""
 "Disabling UNIX domain socket support for service `%s', failed to create UNIX "
@@ -271,7 +272,7 @@ msgid ""
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:482 src/transport/plugin_transport_tcp.c:741
-#: src/util/service.c:673 src/util/service_new.c:733
+#: src/util/service.c:673 src/util/service_new.c:741
 #, c-format
 msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
 msgstr ""
@@ -279,7 +280,7 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:513
 #: src/transport/plugin_transport_http_server.c:2617
 #: src/transport/plugin_transport_tcp.c:772 src/util/service.c:704
-#: src/util/service_new.c:774
+#: src/util/service_new.c:782
 #, c-format
 msgid "Failed to resolve `%s': %s\n"
 msgstr "Résolution de « %s » échouée : %s\n"
@@ -287,7 +288,7 @@ msgstr "Résolution de « %s » échouée : %s\n"
 #: src/arm/gnunet-service-arm.c:532
 #: src/transport/plugin_transport_http_server.c:2635
 #: src/transport/plugin_transport_tcp.c:791 src/util/service.c:723
-#: src/util/service_new.c:794
+#: src/util/service_new.c:802
 #, c-format
 msgid "Failed to find %saddress for `%s'.\n"
 msgstr ""
@@ -379,11 +380,13 @@ msgid ""
 "%llu\n"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:3293 src/ats-tests/gnunet-solver-eval.c:935
+#: src/ats/gnunet-ats-solver-eval.c:3293
+#: src/ats-tests/gnunet-solver-eval.c:935
 msgid "solver to use"
 msgstr "solveur utilisé"
 
-#: src/ats/gnunet-ats-solver-eval.c:3296 src/ats-tests/gnunet-solver-eval.c:938
+#: src/ats/gnunet-ats-solver-eval.c:3296
+#: src/ats-tests/gnunet-solver-eval.c:938
 #: src/ats-tests/gnunet-solver-eval.c:941
 msgid "experiment to use"
 msgstr ""
@@ -1830,7 +1833,8 @@ msgstr ""
 msgid "Prints all packets that go through the DHT."
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:1161
+#: src/testbed/gnunet-testbed-profiler.c:255
 #, c-format
 msgid "Exiting as the number of peers is %u\n"
 msgstr ""
@@ -2006,7 +2010,8 @@ msgstr ""
 msgid "# GET requests given to datacache"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_hello.c:84 src/dht/gnunet-service-xdht_hello.c:82
+#: src/dht/gnunet-service-dht_hello.c:84
+#: src/dht/gnunet-service-xdht_hello.c:82
 msgid "# HELLOs obtained from peerinfo"
 msgstr ""
 
@@ -4913,7 +4918,8 @@ msgstr "supprimer"
 msgid "Invalid public key for reverse lookup `%s'\n"
 msgstr ""
 
-#: src/namestore/gnunet-namestore.c:979 src/peerinfo-tool/gnunet-peerinfo.c:775
+#: src/namestore/gnunet-namestore.c:979
+#: src/peerinfo-tool/gnunet-peerinfo.c:775
 #, c-format
 msgid "Invalid URI `%s'\n"
 msgstr "URI invalide « %s »\n"
@@ -7770,7 +7776,7 @@ msgstr ""
 msgid "Expected `%s' to be a directory!\n"
 msgstr ""
 
-#: src/util/disk.c:1486 src/util/service.c:1322 src/util/service_new.c:1371
+#: src/util/disk.c:1486 src/util/service.c:1322 src/util/service_new.c:1379
 #, c-format
 msgid "Cannot obtain information about user `%s': %s\n"
 msgstr ""
@@ -8115,17 +8121,17 @@ msgstr ""
 msgid "Could not determine plugin installation path.\n"
 msgstr ""
 
-#: src/util/program.c:244 src/util/service.c:1456 src/util/service_new.c:1801
+#: src/util/program.c:244 src/util/service.c:1456 src/util/service_new.c:1809
 #, c-format
 msgid "Malformed configuration file `%s', exit ...\n"
 msgstr ""
 
-#: src/util/program.c:256 src/util/service.c:1471 src/util/service_new.c:1818
+#: src/util/program.c:256 src/util/service.c:1471 src/util/service_new.c:1826
 #, c-format
 msgid "Could not access configuration file `%s'\n"
 msgstr ""
 
-#: src/util/program.c:261 src/util/service.c:1466 src/util/service_new.c:1812
+#: src/util/program.c:261 src/util/service.c:1466 src/util/service_new.c:1820
 msgid "Malformed configuration, exit ...\n"
 msgstr ""
 
@@ -8162,17 +8168,17 @@ msgstr ""
 msgid "Could not resolve our FQDN: %s\n"
 msgstr "Résolution de « %s » échouée : %s\n"
 
-#: src/util/server.c:478 src/util/service_new.c:1103
+#: src/util/server.c:478 src/util/service_new.c:1111
 #, c-format
 msgid "`%s' failed for port %d (%s).\n"
 msgstr ""
 
-#: src/util/server.c:488 src/util/service_new.c:1113
+#: src/util/server.c:488 src/util/service_new.c:1121
 #, c-format
 msgid "`%s' failed for port %d (%s): address already in use\n"
 msgstr ""
 
-#: src/util/server.c:494 src/util/service_new.c:1119
+#: src/util/server.c:494 src/util/service_new.c:1127
 #, c-format
 msgid "`%s' failed for `%s': address already in use\n"
 msgstr ""
@@ -8184,7 +8190,7 @@ msgid ""
 "`GNUNET_SERVER_receive_done' after %s\n"
 msgstr ""
 
-#: src/util/service.c:347 src/util/service_new.c:2335
+#: src/util/service.c:347 src/util/service_new.c:2343
 #, c-format
 msgid "Unknown address family %d\n"
 msgstr ""
@@ -8194,26 +8200,26 @@ msgstr ""
 msgid "Access from `%s' denied to service `%s'\n"
 msgstr ""
 
-#: src/util/service.c:410 src/util/service_new.c:431
+#: src/util/service.c:410 src/util/service_new.c:439
 #, c-format
 msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/util/service.c:448 src/util/service_new.c:474
+#: src/util/service.c:448 src/util/service_new.c:482
 #, c-format
 msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/util/service.c:912 src/util/service_new.c:1034
+#: src/util/service.c:912 src/util/service_new.c:1042
 msgid "Could not access a pre-bound socket, will try to bind myself\n"
 msgstr ""
 
-#: src/util/service.c:961 src/util/service.c:979 src/util/service_new.c:1186
+#: src/util/service.c:961 src/util/service.c:979 src/util/service_new.c:1194
 #, c-format
 msgid "Specified value for `%s' of service `%s' is invalid\n"
 msgstr ""
 
-#: src/util/service.c:1004 src/util/service_new.c:1218
+#: src/util/service.c:1004 src/util/service_new.c:1226
 #, c-format
 msgid "Could not access pre-bound socket %u, will try to bind myself\n"
 msgstr ""
@@ -8228,37 +8234,37 @@ msgstr ""
 msgid "Service `%s' runs at %s\n"
 msgstr ""
 
-#: src/util/service.c:1260 src/util/service_new.c:1493
+#: src/util/service.c:1260 src/util/service_new.c:1501
 msgid "Service process failed to initialize\n"
 msgstr ""
 
-#: src/util/service.c:1264 src/util/service_new.c:1497
+#: src/util/service.c:1264 src/util/service_new.c:1505
 msgid "Service process could not initialize server function\n"
 msgstr ""
 
-#: src/util/service.c:1268 src/util/service_new.c:1501
+#: src/util/service.c:1268 src/util/service_new.c:1509
 msgid "Service process failed to report status\n"
 msgstr ""
 
-#: src/util/service.c:1323 src/util/service_new.c:1373
+#: src/util/service.c:1323 src/util/service_new.c:1381
 msgid "No such user"
 msgstr "Aucun utilisateur trouvé"
 
-#: src/util/service.c:1336 src/util/service_new.c:1392
+#: src/util/service.c:1336 src/util/service_new.c:1400
 #, c-format
 msgid "Cannot change user/group to `%s': %s\n"
 msgstr ""
 
-#: src/util/service.c:1406 src/util/service_new.c:1729
+#: src/util/service.c:1406 src/util/service_new.c:1737
 msgid "do daemonize (detach from terminal)"
 msgstr ""
 
-#: src/util/service_new.c:1298
+#: src/util/service_new.c:1306
 msgid ""
 "Could not bind to any of the ports I was supposed to, refusing to run!\n"
 msgstr ""
 
-#: src/util/service_new.c:2085
+#: src/util/service_new.c:2093
 #, c-format
 msgid ""
 "Processing code for message of type %u did not call "
diff --git a/po/sv.po b/po/sv.po
index bf57333..5b3effd 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNUnet 0.7.0b\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2016-11-21 18:08+0100\n"
+"POT-Creation-Date: 2016-11-27 09:18+0100\n"
 "PO-Revision-Date: 2006-01-21 17:16+0100\n"
 "Last-Translator: Daniel Nylander <address@hidden>\n"
 "Language-Team: Swedish <address@hidden>\n"
@@ -242,7 +242,7 @@ msgid "Control services and the Automated Restart Manager 
(ARM)"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:374 src/transport/plugin_transport_tcp.c:633
-#: src/util/service.c:565 src/util/service_new.c:604
+#: src/util/service.c:565 src/util/service_new.c:612
 #, c-format
 msgid ""
 "Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -252,25 +252,26 @@ msgstr ""
 #: src/transport/plugin_transport_tcp.c:652
 #: src/transport/plugin_transport_tcp.c:658
 #: src/transport/plugin_transport_tcp.c:3299 src/util/service.c:584
-#: src/util/service.c:590 src/util/service_new.c:629 src/util/service_new.c:635
+#: src/util/service.c:590 src/util/service_new.c:637
+#: src/util/service_new.c:643
 #, c-format
 msgid "Require valid port number for service `%s' in configuration!\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:689
-#: src/util/client_new.c:464 src/util/service.c:621 src/util/service_new.c:674
+#: src/util/client_new.c:464 src/util/service.c:621 src/util/service_new.c:682
 #, c-format
 msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:693
-#: src/util/client_new.c:469 src/util/service.c:625 src/util/service_new.c:679
+#: src/util/client_new.c:469 src/util/service.c:625 src/util/service_new.c:687
 #, fuzzy, c-format
 msgid "Using `%s' instead\n"
 msgstr "%s: flagga \"%s\" är tvetydig\n"
 
 #: src/arm/gnunet-service-arm.c:465 src/transport/plugin_transport_tcp.c:724
-#: src/util/service.c:656 src/util/service_new.c:715
+#: src/util/service.c:656 src/util/service_new.c:723
 #, c-format
 msgid ""
 "Disabling UNIX domain socket support for service `%s', failed to create UNIX "
@@ -278,7 +279,7 @@ msgid ""
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:482 src/transport/plugin_transport_tcp.c:741
-#: src/util/service.c:673 src/util/service_new.c:733
+#: src/util/service.c:673 src/util/service_new.c:741
 #, c-format
 msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
 msgstr ""
@@ -286,7 +287,7 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:513
 #: src/transport/plugin_transport_http_server.c:2617
 #: src/transport/plugin_transport_tcp.c:772 src/util/service.c:704
-#: src/util/service_new.c:774
+#: src/util/service_new.c:782
 #, fuzzy, c-format
 msgid "Failed to resolve `%s': %s\n"
 msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
@@ -294,7 +295,7 @@ msgstr "Misslyckades att leverera \"%s\" meddelande.\n"
 #: src/arm/gnunet-service-arm.c:532
 #: src/transport/plugin_transport_http_server.c:2635
 #: src/transport/plugin_transport_tcp.c:791 src/util/service.c:723
-#: src/util/service_new.c:794
+#: src/util/service_new.c:802
 #, fuzzy, c-format
 msgid "Failed to find %saddress for `%s'.\n"
 msgstr "Misslyckades att binda till UDP-port %d.\n"
@@ -387,11 +388,13 @@ msgid ""
 "%llu\n"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:3293 src/ats-tests/gnunet-solver-eval.c:935
+#: src/ats/gnunet-ats-solver-eval.c:3293
+#: src/ats-tests/gnunet-solver-eval.c:935
 msgid "solver to use"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:3296 src/ats-tests/gnunet-solver-eval.c:938
+#: src/ats/gnunet-ats-solver-eval.c:3296
+#: src/ats-tests/gnunet-solver-eval.c:938
 #: src/ats-tests/gnunet-solver-eval.c:941
 msgid "experiment to use"
 msgstr ""
@@ -1920,7 +1923,8 @@ msgstr ""
 msgid "Prints all packets that go through the DHT."
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:1161
+#: src/testbed/gnunet-testbed-profiler.c:255
 #, fuzzy, c-format
 msgid "Exiting as the number of peers is %u\n"
 msgstr "Maximalt antal chattklienter uppnått.\n"
@@ -2105,7 +2109,8 @@ msgstr ""
 msgid "# GET requests given to datacache"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_hello.c:84 src/dht/gnunet-service-xdht_hello.c:82
+#: src/dht/gnunet-service-dht_hello.c:84
+#: src/dht/gnunet-service-xdht_hello.c:82
 #, fuzzy
 msgid "# HELLOs obtained from peerinfo"
 msgstr "Meddelande mottaget från klient är ogiltig.\n"
@@ -5151,7 +5156,8 @@ msgstr ""
 msgid "Invalid public key for reverse lookup `%s'\n"
 msgstr "Ogiltigt argument: \"%s\"\n"
 
-#: src/namestore/gnunet-namestore.c:979 src/peerinfo-tool/gnunet-peerinfo.c:775
+#: src/namestore/gnunet-namestore.c:979
+#: src/peerinfo-tool/gnunet-peerinfo.c:775
 #, fuzzy, c-format
 msgid "Invalid URI `%s'\n"
 msgstr "Ogiltiga argument: "
@@ -8179,7 +8185,7 @@ msgstr "\"%s\" misslyckades vid %s:%d med fel: \"%s\".\n"
 msgid "Expected `%s' to be a directory!\n"
 msgstr "\"%s\" förväntade att \"%s\" skulle vara en katalog!\n"
 
-#: src/util/disk.c:1486 src/util/service.c:1322 src/util/service_new.c:1371
+#: src/util/disk.c:1486 src/util/service.c:1322 src/util/service_new.c:1379
 #, fuzzy, c-format
 msgid "Cannot obtain information about user `%s': %s\n"
 msgstr "Kan inte öppna konfigurationsfil \"%s\".\n"
@@ -8531,17 +8537,17 @@ msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
 msgid "Could not determine plugin installation path.\n"
 msgstr "Kunde inte fastställa min publika IPv6-adress.\n"
 
-#: src/util/program.c:244 src/util/service.c:1456 src/util/service_new.c:1801
+#: src/util/program.c:244 src/util/service.c:1456 src/util/service_new.c:1809
 #, fuzzy, c-format
 msgid "Malformed configuration file `%s', exit ...\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
-#: src/util/program.c:256 src/util/service.c:1471 src/util/service_new.c:1818
+#: src/util/program.c:256 src/util/service.c:1471 src/util/service_new.c:1826
 #, fuzzy, c-format
 msgid "Could not access configuration file `%s'\n"
 msgstr "Kunde inte tolka konfigurationsfil \"%s\".\n"
 
-#: src/util/program.c:261 src/util/service.c:1466 src/util/service_new.c:1812
+#: src/util/program.c:261 src/util/service.c:1466 src/util/service_new.c:1820
 #, fuzzy
 msgid "Malformed configuration, exit ...\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
@@ -8582,17 +8588,17 @@ msgid "Could not resolve our FQDN: %s\n"
 msgstr "Kunde inte slå upp \"%s\": %s\n"
 
 # drive = hard drive ?
-#: src/util/server.c:478 src/util/service_new.c:1103
+#: src/util/server.c:478 src/util/service_new.c:1111
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s).\n"
 msgstr "\"%s\" misslyckades för enhet %s: %u\n"
 
-#: src/util/server.c:488 src/util/service_new.c:1113
+#: src/util/server.c:488 src/util/service_new.c:1121
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s): address already in use\n"
 msgstr "\"%s\" misslyckades för port %d: %s. Körs verkligen gnunetd?\n"
 
-#: src/util/server.c:494 src/util/service_new.c:1119
+#: src/util/server.c:494 src/util/service_new.c:1127
 #, fuzzy, c-format
 msgid "`%s' failed for `%s': address already in use\n"
 msgstr "\"%s\" misslyckades för port %d: %s. Körs verkligen gnunetd?\n"
@@ -8604,7 +8610,7 @@ msgid ""
 "`GNUNET_SERVER_receive_done' after %s\n"
 msgstr ""
 
-#: src/util/service.c:347 src/util/service_new.c:2335
+#: src/util/service.c:347 src/util/service_new.c:2343
 #, fuzzy, c-format
 msgid "Unknown address family %d\n"
 msgstr "Okänd operation \"%s\"\n"
@@ -8614,26 +8620,26 @@ msgstr "Okänd operation \"%s\"\n"
 msgid "Access from `%s' denied to service `%s'\n"
 msgstr ""
 
-#: src/util/service.c:410 src/util/service_new.c:431
+#: src/util/service.c:410 src/util/service_new.c:439
 #, c-format
 msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/util/service.c:448 src/util/service_new.c:474
+#: src/util/service.c:448 src/util/service_new.c:482
 #, c-format
 msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/util/service.c:912 src/util/service_new.c:1034
+#: src/util/service.c:912 src/util/service_new.c:1042
 msgid "Could not access a pre-bound socket, will try to bind myself\n"
 msgstr ""
 
-#: src/util/service.c:961 src/util/service.c:979 src/util/service_new.c:1186
+#: src/util/service.c:961 src/util/service.c:979 src/util/service_new.c:1194
 #, c-format
 msgid "Specified value for `%s' of service `%s' is invalid\n"
 msgstr ""
 
-#: src/util/service.c:1004 src/util/service_new.c:1218
+#: src/util/service.c:1004 src/util/service_new.c:1226
 #, c-format
 msgid "Could not access pre-bound socket %u, will try to bind myself\n"
 msgstr ""
@@ -8648,37 +8654,37 @@ msgstr "Fel vid %s:%d.\n"
 msgid "Service `%s' runs at %s\n"
 msgstr "Motpart \"%s\" med pålitlighet %8u och adress \"%s\"\n"
 
-#: src/util/service.c:1260 src/util/service_new.c:1493
+#: src/util/service.c:1260 src/util/service_new.c:1501
 msgid "Service process failed to initialize\n"
 msgstr ""
 
-#: src/util/service.c:1264 src/util/service_new.c:1497
+#: src/util/service.c:1264 src/util/service_new.c:1505
 msgid "Service process could not initialize server function\n"
 msgstr ""
 
-#: src/util/service.c:1268 src/util/service_new.c:1501
+#: src/util/service.c:1268 src/util/service_new.c:1509
 msgid "Service process failed to report status\n"
 msgstr ""
 
-#: src/util/service.c:1323 src/util/service_new.c:1373
+#: src/util/service.c:1323 src/util/service_new.c:1381
 msgid "No such user"
 msgstr ""
 
-#: src/util/service.c:1336 src/util/service_new.c:1392
+#: src/util/service.c:1336 src/util/service_new.c:1400
 #, c-format
 msgid "Cannot change user/group to `%s': %s\n"
 msgstr "Kan inte ändra användare/grupp till \"%s\": %s\n"
 
-#: src/util/service.c:1406 src/util/service_new.c:1729
+#: src/util/service.c:1406 src/util/service_new.c:1737
 msgid "do daemonize (detach from terminal)"
 msgstr ""
 
-#: src/util/service_new.c:1298
+#: src/util/service_new.c:1306
 msgid ""
 "Could not bind to any of the ports I was supposed to, refusing to run!\n"
 msgstr ""
 
-#: src/util/service_new.c:2085
+#: src/util/service_new.c:2093
 #, c-format
 msgid ""
 "Processing code for message of type %u did not call "
diff --git a/po/vi.po b/po/vi.po
index 8f0c7a8..7e9b43b 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet 0.8.0a\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2016-11-21 18:08+0100\n"
+"POT-Creation-Date: 2016-11-27 09:18+0100\n"
 "PO-Revision-Date: 2008-09-10 22:05+0930\n"
 "Last-Translator: Clytie Siddall <address@hidden>\n"
 "Language-Team: Vietnamese <address@hidden>\n"
@@ -248,7 +248,7 @@ msgid "Control services and the Automated Restart Manager 
(ARM)"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:374 src/transport/plugin_transport_tcp.c:633
-#: src/util/service.c:565 src/util/service_new.c:604
+#: src/util/service.c:565 src/util/service_new.c:612
 #, c-format
 msgid ""
 "Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -258,25 +258,26 @@ msgstr ""
 #: src/transport/plugin_transport_tcp.c:652
 #: src/transport/plugin_transport_tcp.c:658
 #: src/transport/plugin_transport_tcp.c:3299 src/util/service.c:584
-#: src/util/service.c:590 src/util/service_new.c:629 src/util/service_new.c:635
+#: src/util/service.c:590 src/util/service_new.c:637
+#: src/util/service_new.c:643
 #, c-format
 msgid "Require valid port number for service `%s' in configuration!\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:689
-#: src/util/client_new.c:464 src/util/service.c:621 src/util/service_new.c:674
+#: src/util/client_new.c:464 src/util/service.c:621 src/util/service_new.c:682
 #, c-format
 msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:693
-#: src/util/client_new.c:469 src/util/service.c:625 src/util/service_new.c:679
+#: src/util/client_new.c:469 src/util/service.c:625 src/util/service_new.c:687
 #, fuzzy, c-format
 msgid "Using `%s' instead\n"
 msgstr "%s: tùy chọn « %s » là mơ hồ\n"
 
 #: src/arm/gnunet-service-arm.c:465 src/transport/plugin_transport_tcp.c:724
-#: src/util/service.c:656 src/util/service_new.c:715
+#: src/util/service.c:656 src/util/service_new.c:723
 #, c-format
 msgid ""
 "Disabling UNIX domain socket support for service `%s', failed to create UNIX "
@@ -284,7 +285,7 @@ msgid ""
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:482 src/transport/plugin_transport_tcp.c:741
-#: src/util/service.c:673 src/util/service_new.c:733
+#: src/util/service.c:673 src/util/service_new.c:741
 #, c-format
 msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
 msgstr ""
@@ -292,7 +293,7 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:513
 #: src/transport/plugin_transport_http_server.c:2617
 #: src/transport/plugin_transport_tcp.c:772 src/util/service.c:704
-#: src/util/service_new.c:774
+#: src/util/service_new.c:782
 #, fuzzy, c-format
 msgid "Failed to resolve `%s': %s\n"
 msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
@@ -300,7 +301,7 @@ msgstr "Lỗi mở tập tin ghi sự kiện « %s »: %s\n"
 #: src/arm/gnunet-service-arm.c:532
 #: src/transport/plugin_transport_http_server.c:2635
 #: src/transport/plugin_transport_tcp.c:791 src/util/service.c:723
-#: src/util/service_new.c:794
+#: src/util/service_new.c:802
 #, fuzzy, c-format
 msgid "Failed to find %saddress for `%s'.\n"
 msgstr "Lỗi đóng kết đến cổng %s %d.\n"
@@ -393,11 +394,13 @@ msgid ""
 "%llu\n"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:3293 src/ats-tests/gnunet-solver-eval.c:935
+#: src/ats/gnunet-ats-solver-eval.c:3293
+#: src/ats-tests/gnunet-solver-eval.c:935
 msgid "solver to use"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:3296 src/ats-tests/gnunet-solver-eval.c:938
+#: src/ats/gnunet-ats-solver-eval.c:3296
+#: src/ats-tests/gnunet-solver-eval.c:938
 #: src/ats-tests/gnunet-solver-eval.c:941
 msgid "experiment to use"
 msgstr ""
@@ -1940,7 +1943,8 @@ msgstr ""
 msgid "Prints all packets that go through the DHT."
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:1161
+#: src/testbed/gnunet-testbed-profiler.c:255
 #, fuzzy, c-format
 msgid "Exiting as the number of peers is %u\n"
 msgstr "tăng sổ tối đa các kết nối TCP/IP"
@@ -2124,7 +2128,8 @@ msgstr ""
 msgid "# GET requests given to datacache"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet-service-dht_hello.c:84 src/dht/gnunet-service-xdht_hello.c:82
+#: src/dht/gnunet-service-dht_hello.c:84
+#: src/dht/gnunet-service-xdht_hello.c:82
 #, fuzzy
 msgid "# HELLOs obtained from peerinfo"
 msgstr "Nhận được thông báo « %s » sai từ đồng đẳng « %s ».\n"
@@ -5202,7 +5207,8 @@ msgstr ""
 msgid "Invalid public key for reverse lookup `%s'\n"
 msgstr "Đối số không hợp lệ cho « %s ».\n"
 
-#: src/namestore/gnunet-namestore.c:979 src/peerinfo-tool/gnunet-peerinfo.c:775
+#: src/namestore/gnunet-namestore.c:979
+#: src/peerinfo-tool/gnunet-peerinfo.c:775
 #, fuzzy, c-format
 msgid "Invalid URI `%s'\n"
 msgstr "Dữ liệu nhập không hợp lệ.\n"
@@ -8233,7 +8239,7 @@ msgstr "Lỗi thẩm tra chữ ký RSA tại %s:%d: %s\n"
 msgid "Expected `%s' to be a directory!\n"
 msgstr "Mong đợi « %s » là một thư mục.\n"
 
-#: src/util/disk.c:1486 src/util/service.c:1322 src/util/service_new.c:1371
+#: src/util/disk.c:1486 src/util/service.c:1322 src/util/service_new.c:1379
 #, c-format
 msgid "Cannot obtain information about user `%s': %s\n"
 msgstr "Không thể lấy thông tin về người dùng « %s »: %s\n"
@@ -8584,17 +8590,17 @@ msgstr "« %s » thất bại cho thư viện « %s » với lỗi: 
%s\n"
 msgid "Could not determine plugin installation path.\n"
 msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
 
-#: src/util/program.c:244 src/util/service.c:1456 src/util/service_new.c:1801
+#: src/util/program.c:244 src/util/service.c:1456 src/util/service_new.c:1809
 #, fuzzy, c-format
 msgid "Malformed configuration file `%s', exit ...\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
-#: src/util/program.c:256 src/util/service.c:1471 src/util/service_new.c:1818
+#: src/util/program.c:256 src/util/service.c:1471 src/util/service_new.c:1826
 #, fuzzy, c-format
 msgid "Could not access configuration file `%s'\n"
 msgstr "Không thể truy cập đến tập tin gnunet-directory « %s »\n"
 
-#: src/util/program.c:261 src/util/service.c:1466 src/util/service_new.c:1812
+#: src/util/program.c:261 src/util/service.c:1466 src/util/service_new.c:1820
 #, fuzzy
 msgid "Malformed configuration, exit ...\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
@@ -8632,17 +8638,17 @@ msgstr ""
 msgid "Could not resolve our FQDN: %s\n"
 msgstr "Không thể giải quyết « %s » (%s): %s\n"
 
-#: src/util/server.c:478 src/util/service_new.c:1103
+#: src/util/server.c:478 src/util/service_new.c:1111
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s).\n"
 msgstr "« %s » thất bại cho ổ đĩa « %s »: %u\n"
 
-#: src/util/server.c:488 src/util/service_new.c:1113
+#: src/util/server.c:488 src/util/service_new.c:1121
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s): address already in use\n"
 msgstr "« %s » bị lỗi cho cổng %d. Trình gnunetd có chạy chưa?\n"
 
-#: src/util/server.c:494 src/util/service_new.c:1119
+#: src/util/server.c:494 src/util/service_new.c:1127
 #, fuzzy, c-format
 msgid "`%s' failed for `%s': address already in use\n"
 msgstr "« %s » bị lỗi cho cổng %d. Trình gnunetd có chạy chưa?\n"
@@ -8654,7 +8660,7 @@ msgid ""
 "`GNUNET_SERVER_receive_done' after %s\n"
 msgstr ""
 
-#: src/util/service.c:347 src/util/service_new.c:2335
+#: src/util/service.c:347 src/util/service_new.c:2343
 #, fuzzy, c-format
 msgid "Unknown address family %d\n"
 msgstr "\tKhông rõ miền tên « %s »\n"
@@ -8664,26 +8670,26 @@ msgstr "\tKhông rõ miền tên « %s »\n"
 msgid "Access from `%s' denied to service `%s'\n"
 msgstr ""
 
-#: src/util/service.c:410 src/util/service_new.c:431
+#: src/util/service.c:410 src/util/service_new.c:439
 #, c-format
 msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/util/service.c:448 src/util/service_new.c:474
+#: src/util/service.c:448 src/util/service_new.c:482
 #, c-format
 msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/util/service.c:912 src/util/service_new.c:1034
+#: src/util/service.c:912 src/util/service_new.c:1042
 msgid "Could not access a pre-bound socket, will try to bind myself\n"
 msgstr ""
 
-#: src/util/service.c:961 src/util/service.c:979 src/util/service_new.c:1186
+#: src/util/service.c:961 src/util/service.c:979 src/util/service_new.c:1194
 #, c-format
 msgid "Specified value for `%s' of service `%s' is invalid\n"
 msgstr ""
 
-#: src/util/service.c:1004 src/util/service_new.c:1218
+#: src/util/service.c:1004 src/util/service_new.c:1226
 #, c-format
 msgid "Could not access pre-bound socket %u, will try to bind myself\n"
 msgstr ""
@@ -8698,37 +8704,37 @@ msgstr "Lỗi chạy %s: %s %d\n"
 msgid "Service `%s' runs at %s\n"
 msgstr "Đồng đẳng « %s » có mức tin cậy %8u\n"
 
-#: src/util/service.c:1260 src/util/service_new.c:1493
+#: src/util/service.c:1260 src/util/service_new.c:1501
 msgid "Service process failed to initialize\n"
 msgstr ""
 
-#: src/util/service.c:1264 src/util/service_new.c:1497
+#: src/util/service.c:1264 src/util/service_new.c:1505
 msgid "Service process could not initialize server function\n"
 msgstr ""
 
-#: src/util/service.c:1268 src/util/service_new.c:1501
+#: src/util/service.c:1268 src/util/service_new.c:1509
 msgid "Service process failed to report status\n"
 msgstr ""
 
-#: src/util/service.c:1323 src/util/service_new.c:1373
+#: src/util/service.c:1323 src/util/service_new.c:1381
 msgid "No such user"
 msgstr "Không có người dùng như vậy"
 
-#: src/util/service.c:1336 src/util/service_new.c:1392
+#: src/util/service.c:1336 src/util/service_new.c:1400
 #, c-format
 msgid "Cannot change user/group to `%s': %s\n"
 msgstr "Không thể thay đổi người dùng/nhóm thành « %s »: %s\n"
 
-#: src/util/service.c:1406 src/util/service_new.c:1729
+#: src/util/service.c:1406 src/util/service_new.c:1737
 msgid "do daemonize (detach from terminal)"
 msgstr ""
 
-#: src/util/service_new.c:1298
+#: src/util/service_new.c:1306
 msgid ""
 "Could not bind to any of the ports I was supposed to, refusing to run!\n"
 msgstr ""
 
-#: src/util/service_new.c:2085
+#: src/util/service_new.c:2093
 #, c-format
 msgid ""
 "Processing code for message of type %u did not call "
diff --git a/po/zh_CN.po b/po/zh_CN.po
index f930317..16fee9b 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet-0.8.1\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2016-11-21 18:08+0100\n"
+"POT-Creation-Date: 2016-11-27 09:18+0100\n"
 "PO-Revision-Date: 2011-07-09 12:12+0800\n"
 "Last-Translator: Wylmer Wang <address@hidden>\n"
 "Language-Team: Chinese (simplified) <address@hidden>\n"
@@ -241,7 +241,7 @@ msgid "Control services and the Automated Restart Manager 
(ARM)"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:374 src/transport/plugin_transport_tcp.c:633
-#: src/util/service.c:565 src/util/service_new.c:604
+#: src/util/service.c:565 src/util/service_new.c:612
 #, c-format
 msgid ""
 "Disabling IPv6 support for service `%s', failed to create IPv6 socket: %s\n"
@@ -251,25 +251,26 @@ msgstr ""
 #: src/transport/plugin_transport_tcp.c:652
 #: src/transport/plugin_transport_tcp.c:658
 #: src/transport/plugin_transport_tcp.c:3299 src/util/service.c:584
-#: src/util/service.c:590 src/util/service_new.c:629 src/util/service_new.c:635
+#: src/util/service.c:590 src/util/service_new.c:637
+#: src/util/service_new.c:643
 #, c-format
 msgid "Require valid port number for service `%s' in configuration!\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:430 src/transport/plugin_transport_tcp.c:689
-#: src/util/client_new.c:464 src/util/service.c:621 src/util/service_new.c:674
+#: src/util/client_new.c:464 src/util/service.c:621 src/util/service_new.c:682
 #, c-format
 msgid "UNIXPATH `%s' too long, maximum length is %llu\n"
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:434 src/transport/plugin_transport_tcp.c:693
-#: src/util/client_new.c:469 src/util/service.c:625 src/util/service_new.c:679
+#: src/util/client_new.c:469 src/util/service.c:625 src/util/service_new.c:687
 #, fuzzy, c-format
 msgid "Using `%s' instead\n"
 msgstr "%s:选项“%s”有歧义\n"
 
 #: src/arm/gnunet-service-arm.c:465 src/transport/plugin_transport_tcp.c:724
-#: src/util/service.c:656 src/util/service_new.c:715
+#: src/util/service.c:656 src/util/service_new.c:723
 #, c-format
 msgid ""
 "Disabling UNIX domain socket support for service `%s', failed to create UNIX "
@@ -277,7 +278,7 @@ msgid ""
 msgstr ""
 
 #: src/arm/gnunet-service-arm.c:482 src/transport/plugin_transport_tcp.c:741
-#: src/util/service.c:673 src/util/service_new.c:733
+#: src/util/service.c:673 src/util/service_new.c:741
 #, c-format
 msgid "Have neither PORT nor UNIXPATH for service `%s', but one is required\n"
 msgstr ""
@@ -285,7 +286,7 @@ msgstr ""
 #: src/arm/gnunet-service-arm.c:513
 #: src/transport/plugin_transport_http_server.c:2617
 #: src/transport/plugin_transport_tcp.c:772 src/util/service.c:704
-#: src/util/service_new.c:774
+#: src/util/service_new.c:782
 #, fuzzy, c-format
 msgid "Failed to resolve `%s': %s\n"
 msgstr "打开日志文件“%s”失败:%s\n"
@@ -293,7 +294,7 @@ msgstr "打开日志文件“%s”失败:%s\n"
 #: src/arm/gnunet-service-arm.c:532
 #: src/transport/plugin_transport_http_server.c:2635
 #: src/transport/plugin_transport_tcp.c:791 src/util/service.c:723
-#: src/util/service_new.c:794
+#: src/util/service_new.c:802
 #, fuzzy, c-format
 msgid "Failed to find %saddress for `%s'.\n"
 msgstr "找不到接口“%s”的一个 IP 地址。\n"
@@ -386,11 +387,13 @@ msgid ""
 "%llu\n"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:3293 src/ats-tests/gnunet-solver-eval.c:935
+#: src/ats/gnunet-ats-solver-eval.c:3293
+#: src/ats-tests/gnunet-solver-eval.c:935
 msgid "solver to use"
 msgstr ""
 
-#: src/ats/gnunet-ats-solver-eval.c:3296 src/ats-tests/gnunet-solver-eval.c:938
+#: src/ats/gnunet-ats-solver-eval.c:3296
+#: src/ats-tests/gnunet-solver-eval.c:938
 #: src/ats-tests/gnunet-solver-eval.c:941
 msgid "experiment to use"
 msgstr ""
@@ -1873,7 +1876,8 @@ msgstr ""
 msgid "Prints all packets that go through the DHT."
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:1161 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:1161
+#: src/testbed/gnunet-testbed-profiler.c:255
 #, fuzzy, c-format
 msgid "Exiting as the number of peers is %u\n"
 msgstr "增加 TCP/IP 的最大连接数"
@@ -2050,7 +2054,8 @@ msgstr ""
 msgid "# GET requests given to datacache"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_hello.c:84 src/dht/gnunet-service-xdht_hello.c:82
+#: src/dht/gnunet-service-dht_hello.c:84
+#: src/dht/gnunet-service-xdht_hello.c:82
 msgid "# HELLOs obtained from peerinfo"
 msgstr ""
 
@@ -4989,7 +4994,8 @@ msgstr ""
 msgid "Invalid public key for reverse lookup `%s'\n"
 msgstr "“%s”的参数无效。\n"
 
-#: src/namestore/gnunet-namestore.c:979 src/peerinfo-tool/gnunet-peerinfo.c:775
+#: src/namestore/gnunet-namestore.c:979
+#: src/peerinfo-tool/gnunet-peerinfo.c:775
 #, fuzzy, c-format
 msgid "Invalid URI `%s'\n"
 msgstr "无效条目。\n"
@@ -7936,7 +7942,7 @@ msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
 msgid "Expected `%s' to be a directory!\n"
 msgstr "“%s”应为目录!\n"
 
-#: src/util/disk.c:1486 src/util/service.c:1322 src/util/service_new.c:1371
+#: src/util/disk.c:1486 src/util/service.c:1322 src/util/service_new.c:1379
 #, c-format
 msgid "Cannot obtain information about user `%s': %s\n"
 msgstr "无法获取有关用户“%s”的信息:%s\n"
@@ -8284,17 +8290,17 @@ msgstr ""
 msgid "Could not determine plugin installation path.\n"
 msgstr "无法确定用户界面定义文件。"
 
-#: src/util/program.c:244 src/util/service.c:1456 src/util/service_new.c:1801
+#: src/util/program.c:244 src/util/service.c:1456 src/util/service_new.c:1809
 #, fuzzy, c-format
 msgid "Malformed configuration file `%s', exit ...\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/util/program.c:256 src/util/service.c:1471 src/util/service_new.c:1818
+#: src/util/program.c:256 src/util/service.c:1471 src/util/service_new.c:1826
 #, fuzzy, c-format
 msgid "Could not access configuration file `%s'\n"
 msgstr "找不到接口“%s”的一个 IP 地址。\n"
 
-#: src/util/program.c:261 src/util/service.c:1466 src/util/service_new.c:1812
+#: src/util/program.c:261 src/util/service.c:1466 src/util/service_new.c:1820
 #, fuzzy
 msgid "Malformed configuration, exit ...\n"
 msgstr "解析配置文件“%s”失败\n"
@@ -8332,17 +8338,17 @@ msgstr ""
 msgid "Could not resolve our FQDN: %s\n"
 msgstr "无法解析“%s”(%s):%s\n"
 
-#: src/util/server.c:478 src/util/service_new.c:1103
+#: src/util/server.c:478 src/util/service_new.c:1111
 #, fuzzy, c-format
 msgid "`%s' failed for port %d (%s).\n"
 msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
 
-#: src/util/server.c:488 src/util/service_new.c:1113
+#: src/util/server.c:488 src/util/service_new.c:1121
 #, c-format
 msgid "`%s' failed for port %d (%s): address already in use\n"
 msgstr ""
 
-#: src/util/server.c:494 src/util/service_new.c:1119
+#: src/util/server.c:494 src/util/service_new.c:1127
 #, fuzzy, c-format
 msgid "`%s' failed for `%s': address already in use\n"
 msgstr "对驱动器“%2$s”的“%1$s”操作失败:%3$u\n"
@@ -8354,7 +8360,7 @@ msgid ""
 "`GNUNET_SERVER_receive_done' after %s\n"
 msgstr ""
 
-#: src/util/service.c:347 src/util/service_new.c:2335
+#: src/util/service.c:347 src/util/service_new.c:2343
 #, c-format
 msgid "Unknown address family %d\n"
 msgstr ""
@@ -8364,26 +8370,26 @@ msgstr ""
 msgid "Access from `%s' denied to service `%s'\n"
 msgstr ""
 
-#: src/util/service.c:410 src/util/service_new.c:431
+#: src/util/service.c:410 src/util/service_new.c:439
 #, c-format
 msgid "Could not parse IPv4 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/util/service.c:448 src/util/service_new.c:474
+#: src/util/service.c:448 src/util/service_new.c:482
 #, c-format
 msgid "Could not parse IPv6 network specification `%s' for `%s:%s'\n"
 msgstr ""
 
-#: src/util/service.c:912 src/util/service_new.c:1034
+#: src/util/service.c:912 src/util/service_new.c:1042
 msgid "Could not access a pre-bound socket, will try to bind myself\n"
 msgstr ""
 
-#: src/util/service.c:961 src/util/service.c:979 src/util/service_new.c:1186
+#: src/util/service.c:961 src/util/service.c:979 src/util/service_new.c:1194
 #, c-format
 msgid "Specified value for `%s' of service `%s' is invalid\n"
 msgstr ""
 
-#: src/util/service.c:1004 src/util/service_new.c:1218
+#: src/util/service.c:1004 src/util/service_new.c:1226
 #, c-format
 msgid "Could not access pre-bound socket %u, will try to bind myself\n"
 msgstr ""
@@ -8398,37 +8404,37 @@ msgstr "运行 %s失败:%s %d\n"
 msgid "Service `%s' runs at %s\n"
 msgstr ""
 
-#: src/util/service.c:1260 src/util/service_new.c:1493
+#: src/util/service.c:1260 src/util/service_new.c:1501
 msgid "Service process failed to initialize\n"
 msgstr ""
 
-#: src/util/service.c:1264 src/util/service_new.c:1497
+#: src/util/service.c:1264 src/util/service_new.c:1505
 msgid "Service process could not initialize server function\n"
 msgstr ""
 
-#: src/util/service.c:1268 src/util/service_new.c:1501
+#: src/util/service.c:1268 src/util/service_new.c:1509
 msgid "Service process failed to report status\n"
 msgstr ""
 
-#: src/util/service.c:1323 src/util/service_new.c:1373
+#: src/util/service.c:1323 src/util/service_new.c:1381
 msgid "No such user"
 msgstr "无此用户"
 
-#: src/util/service.c:1336 src/util/service_new.c:1392
+#: src/util/service.c:1336 src/util/service_new.c:1400
 #, c-format
 msgid "Cannot change user/group to `%s': %s\n"
 msgstr "无法更改用户/组为“%s”:%s\n"
 
-#: src/util/service.c:1406 src/util/service_new.c:1729
+#: src/util/service.c:1406 src/util/service_new.c:1737
 msgid "do daemonize (detach from terminal)"
 msgstr ""
 
-#: src/util/service_new.c:1298
+#: src/util/service_new.c:1306
 msgid ""
 "Could not bind to any of the ports I was supposed to, refusing to run!\n"
 msgstr ""
 
-#: src/util/service_new.c:2085
+#: src/util/service_new.c:2093
 #, c-format
 msgid ""
 "Processing code for message of type %u did not call "
diff --git a/src/nat/gnunet-nat.c b/src/nat/gnunet-nat.c
index fcd61a1..10d5aef 100644
--- a/src/nat/gnunet-nat.c
+++ b/src/nat/gnunet-nat.c
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     Copyright (C) 2015 GNUnet e.V.
+     Copyright (C) 2015, 2016 GNUnet e.V.
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -26,13 +26,101 @@
  */
 #include "platform.h"
 #include "gnunet_util_lib.h"
-#include "gnunet_nat_lib.h"
-#include "gnunet_protocols.h"
-#include "nat.h"
+#include "gnunet_nat_service.h"
 
+/**
+ * Value to return from #main().
+ */
+static int global_ret;
+
+/**
+ * Handle to ongoing autoconfiguration.
+ */
+static struct GNUNET_NAT_AutoHandle *ah;
+
+/**
+ * Port we use.
+ */ 
+static unsigned int port;
+
+/**
+ * Flag set to 1 if we use IPPROTO_UDP.
+ */
+static int use_udp;
+
+/**
+ * Flag set to 1 if we are to listen for connection reversal requests.
+ */
+static int listen_reversal;
+
+/**
+ * Flag set to 1 if we use IPPROTO_TCP.
+ */
+static int use_tcp;
+
+/**
+ * Protocol to use.
+ */
+static uint8_t proto;
+
+/**
+ * Address we are bound to (in test), or should bind to
+ * (if #do_stun is set).
+ */
+static char *bind_addr;
 
-struct GNUNET_CONFIGURATION_Handle *cfg;
+/**
+ * External IP address and port to use for the test.
+ * If not set, use #bind_addr.
+ */
+static char *extern_addr;
 
+/**
+ * Local address to use for connection reversal request.
+ */
+static char *local_addr;
+
+/**
+ * Remote address to use for connection reversal request.
+ */
+static char *remote_addr;
+
+/**
+ * Should we actually bind to #bind_addr and receive and process STUN requests?
+ */
+static unsigned int do_stun;
+
+/**
+ * Should we run autoconfiguration?
+ */
+static unsigned int do_auto;
+
+/**
+ * Handle to a NAT test operation.
+ */
+static struct GNUNET_NAT_Test *nt;
+
+/**
+ * Handle to NAT operation.
+ */
+static struct GNUNET_NAT_Handle *nh;
+
+
+/**
+ * Test if all activities have finished, and if so,
+ * terminate.
+ */
+static void
+test_finished ()
+{
+  if (NULL != ah)
+    return;
+  if (NULL != nt)
+    return;
+  if (NULL != nh)
+    return;
+  GNUNET_SCHEDULER_shutdown ();
+}
 
 
 /**
@@ -49,12 +137,12 @@ auto_conf_iter (void *cls,
                 const char *option,
                 const char *value)
 {
-
-  PRINTF ( "%s: %s \n", option, value);
+  PRINTF ("%s: %s\n",
+         option,
+         value);
 }
 
 
-
 /**
  * Function called with the result from the autoconfiguration.
  *
@@ -64,15 +152,16 @@ auto_conf_iter (void *cls,
  * @param result #GNUNET_NAT_ERROR_SUCCESS on success, otherwise the specific 
error code
  * @param type what the situation of the NAT
  */
-
-void
-auto_config_cb(void *cls,
-               const struct GNUNET_CONFIGURATION_Handle *diff,
-               enum GNUNET_NAT_StatusCode result, enum GNUNET_NAT_Type type)
+static void
+auto_config_cb (void *cls,
+               const struct GNUNET_CONFIGURATION_Handle *diff,
+               enum GNUNET_NAT_StatusCode result,
+               enum GNUNET_NAT_Type type)
 {
-  char* nat_type;
+  const char *nat_type;
   char unknown_type[64];
 
+  ah = NULL;
   switch (type)
   {
     case GNUNET_NAT_TYPE_NO_NAT:
@@ -88,24 +177,50 @@ auto_config_cb(void *cls,
       nat_type = "NAT but UPNP opened the ports";
       break;
     default:
-      SPRINTF (unknown_type, "NAT unknown, type %u", type);
+      SPRINTF (unknown_type,
+              "NAT unknown, type %u",
+              type);
       nat_type = unknown_type;
   }
 
-  PRINTF ("NAT status: %s \n", nat_type );
-  PRINTF ("SUGGESTED CHANGES: \n" );
-
+  PRINTF ("NAT status: %s/%s\n",
+         GNUNET_NAT_status2string (result),
+         nat_type);
+  
+  PRINTF ("SUGGESTED CHANGES:\n");
   GNUNET_CONFIGURATION_iterate_section_values (diff,
                                                "nat",
                                                &auto_conf_iter,
                                                NULL);
-
-  //TODO: Save config
-
+  // Have option to save config
+  test_finished ();
 }
 
 
-
+/**
+ * Task run on shutdown.
+ *
+ * @param cls NULL
+ */
+static void
+do_shutdown (void *cls)
+{
+  if (NULL != ah)
+  {
+    GNUNET_NAT_autoconfig_cancel (ah);
+    ah = NULL;
+  }
+  if (NULL != nt)
+  {
+    GNUNET_NAT_test_stop (nt);
+    nt = NULL;
+  }
+  if (NULL != nh)
+  {
+    GNUNET_NAT_unregister (nh);
+    nh = NULL;
+  }
+}
 
 
 /**
@@ -117,10 +232,39 @@ auto_config_cb(void *cls,
  * @param c configuration
  */
 static void
-run (void *cls, char *const *args, const char *cfgfile,
+run (void *cls,
+     char *const *args,
+     const char *cfgfile,
      const struct GNUNET_CONFIGURATION_Handle *c)
 {
-  GNUNET_NAT_autoconfig_start (c, auto_config_cb, NULL);
+  if (use_tcp && use_udp)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
+               "Cannot use TCP and UDP\n");
+    global_ret = 1;
+    return;
+  }
+  proto = 0;
+  if (use_tcp)
+    proto = IPPROTO_TCP;
+  if (use_udp)
+    proto = IPPROTO_UDP;
+  if (0 == proto)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
+               "Must specify either TCP or UDP\n");
+    global_ret = 1;
+    return;
+  }
+  if (do_auto)
+  {
+    ah = GNUNET_NAT_autoconfig_start (c,
+                                     &auto_config_cb,
+                                     NULL);
+  }
+  GNUNET_SCHEDULER_add_shutdown (&do_shutdown,
+                                NULL);
+  test_finished ();
 }
 
 
@@ -132,49 +276,60 @@ run (void *cls, char *const *args, const char *cfgfile,
  * @return 0 on success, -1 on error
  */
 int
-main (int argc, char *const argv[])
+main (int argc,
+      char *const argv[])
 {
   static const struct GNUNET_GETOPT_CommandLineOption options[] = {
-    GNUNET_GETOPT_OPTION_END
+    {'a', "auto", NULL,
+     gettext_noop ("run autoconfiguration"),
+     GNUNET_NO, &GNUNET_GETOPT_set_one, &do_auto },
+    {'b', "bind", "ADDRESS",
+     gettext_noop ("which IP and port are we bound to"),
+     GNUNET_YES, &GNUNET_GETOPT_set_string, &bind_addr},
+    {'e', "external", "ADDRESS",
+     gettext_noop ("which external IP and port should be used to test"),
+     GNUNET_YES, &GNUNET_GETOPT_set_string, &extern_addr},
+    {'l', "local", "ADDRESS",
+     gettext_noop ("which IP and port are we locally using to listen to for 
connection reversals"),
+     GNUNET_YES, &GNUNET_GETOPT_set_string, &local_addr},
+    {'r', "remote", "ADDRESS",
+     gettext_noop ("which remote IP and port should be asked for connection 
reversal"),
+     GNUNET_YES, &GNUNET_GETOPT_set_string, &remote_addr},
+    {'L', "listen", NULL,
+     gettext_noop ("listen for connection reversal requests"),
+     GNUNET_NO, &GNUNET_GETOPT_set_one, &listen_reversal },
+    {'p', "port", NULL,
+     gettext_noop ("port to use"),
+     GNUNET_YES, &GNUNET_GETOPT_set_uint, &port},
+    {'s', "stun", NULL,
+     gettext_noop ("enable STUN processing"),
+     GNUNET_NO, &GNUNET_GETOPT_set_one, &do_stun },
+    {'t', "tcp", NULL,
+     gettext_noop ("use TCP"),
+     GNUNET_NO, &GNUNET_GETOPT_set_one, &use_tcp },
+    {'u', "udp", NULL,
+     gettext_noop ("use UDP"),
+     GNUNET_NO, &GNUNET_GETOPT_set_one, &use_udp },
+   GNUNET_GETOPT_OPTION_END
   };
 
-  int ret = 0;
-  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
+  if (GNUNET_OK !=
+      GNUNET_STRINGS_get_utf8_args (argc, argv,
+                                   &argc, &argv))
     return 2;
-
-  /* Lets start resolver */
-  char *fn;
-  struct GNUNET_OS_Process *proc;
-
-  fn = GNUNET_OS_get_libexec_binary_path ("gnunet-service-resolver");
-  proc = GNUNET_OS_start_process (GNUNET_YES,
-                                  GNUNET_OS_INHERIT_STD_OUT_AND_ERR,
-                                  NULL, NULL, NULL,
-                                  fn,
-                                  "gnunet-service-resolver");
-  GNUNET_assert (NULL != proc);
-
   if (GNUNET_OK !=
-      GNUNET_PROGRAM_run (argc, argv, "gnunet-nat [options]",
-                          _("GNUnet NAT traversal autoconfigure daemon"), 
options,
-                          &run, NULL))
+      GNUNET_PROGRAM_run (argc, argv,
+                         "gnunet-nat [options]",
+                          _("GNUnet NAT traversal autoconfigure daemon"),
+                         options,
+                          &run,
+                         NULL))
   {
-      ret = 1;
+    global_ret = 1;
   }
-
-  /* Now kill the resolver */
-  if (0 != GNUNET_OS_process_kill (proc, GNUNET_TERM_SIG))
-  {
-      GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill");
-  }
-  GNUNET_OS_process_wait (proc);
-  GNUNET_OS_process_destroy (proc);
-  proc = NULL;
-
-
   GNUNET_free ((void*) argv);
-  return ret;
+  return global_ret;
 }
 
 
-/* end of gnunet-nat-server.c */
+/* end of gnunet-nat.c */

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]