gnunet-svn
[Top][All Lists]
Advanced

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

[gnunet] branch master updated (fab39a608 -> a4139ab91)


From: gnunet
Subject: [gnunet] branch master updated (fab39a608 -> a4139ab91)
Date: Tue, 09 Nov 2021 19:45:11 +0100

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

t3sserakt pushed a change to branch master
in repository gnunet.

    from fab39a608 -better logging
     new d7fa05799 - add generic topology configuration by file - cmd simple 
send using file configuration from file - added cmd to check the logs for 
backchannel encapsulation - added cmd which notifies the master loop of local 
loop being prepared to finish - added logging to helper.c - moved code from 
connecting peers cmd into global functions - added parameters given to the 
connecting peers cmd - added assertion when notifying the transport service 
about a new queue, if the communicato [...]
     new d190d2383 fixed unset port forwarding variable bug in netjail script, 
fixed end cmd without shutdown bug, smaller fixes
     new 513f23e74 Merge branch 'master' into dev/t3ss/tng
     new 1609d627e changes to reflect the changes in testing_api_loop.c
     new 6fb788ca2 - fixed coverity issues
     new 8cd4dadfb - moved global netjail methods to its own header file. - 
added configuration by string in test skript instead of config file. - moved 
netjail scripts to contrib/netjail and install them into the share/gnunet 
directory.
     new 7b575e69c Merge branch 'master' into dev/t3ss/tng
     new a4139ab91 - using switch statement to identify different helper 
messages

The 8 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 contrib/Makefile.am                                |  11 +
 {src/testing => contrib/netjail}/netjail_core.sh   |   2 +-
 {src/testing => contrib/netjail}/netjail_exec.sh   |   4 +-
 {src/testing => contrib/netjail}/netjail_start.sh  |  13 +-
 {src/testing => contrib/netjail}/netjail_stop.sh   |  12 +-
 {src/testing => contrib/netjail}/topo.sh           |  34 +-
 po/POTFILES.in                                     |  14 +-
 po/de.po                                           | 303 +++++------
 po/es.po                                           | 324 +++++------
 po/fr.po                                           | 265 ++++-----
 po/it.po                                           | 266 ++++-----
 po/sr.po                                           | 462 ++++++----------
 po/sv.po                                           | 306 ++++++-----
 po/vi.po                                           | 301 +++++------
 po/zh_CN.po                                        | 291 +++++-----
 src/dhtu/test_dhtu_ip.c                            |   2 +-
 src/dhtu/testing_dhtu_cmd_send.c                   |   1 +
 src/include/Makefile.am                            |   1 +
 src/include/gnunet_protocols.h                     |   6 +-
 src/include/gnunet_testing_netjail_lib.h           | 463 ++++++++++++++++
 src/include/gnunet_testing_ng_lib.h                | 173 ++++--
 src/include/gnunet_testing_plugin.h                |  12 +-
 src/testing/Makefile.am                            |  41 +-
 src/testing/gnunet-cmds-helper.c                   |  51 +-
 src/testing/test_testing_api_cmd_netjail.c         |  87 ---
 src/testing/test_testing_hello_world.c             |  68 ---
 src/testing/test_testing_plugin_testcmd.c          | 123 -----
 src/testing/testing.c                              | 467 ++++++++++++++--
 ...testing_api_cmd_block_until_all_peers_started.c | 107 ----
 .../testing_api_cmd_block_until_external_trigger.c |   1 +
 src/testing/testing_api_cmd_finish.c               |   2 +
 src/testing/testing_api_cmd_hello_world.c          | 126 -----
 src/testing/testing_api_cmd_hello_world_birth.c    | 161 ------
 src/testing/testing_api_cmd_local_test_finished.c  |   2 +-
 src/testing/testing_api_cmd_local_test_prepared.c  | 146 +++++
 src/testing/testing_api_cmd_netjail_start.c        |  43 +-
 .../testing_api_cmd_netjail_start_testsystem.c     | 418 ++++++++------
 src/testing/testing_api_cmd_netjail_stop.c         |  77 ++-
 .../testing_api_cmd_netjail_stop_testsystem.c      |  38 +-
 src/testing/testing_api_cmd_send_peer_ready.c      |   2 +-
 src/testing/testing_api_cmd_system_create.c        |   1 +
 src/testing/testing_api_cmd_system_destroy.c       |   1 +
 src/testing/testing_cmds.h                         |  17 +
 src/testing/topo.sh                                |   8 +-
 src/transport/Makefile.am                          |   3 +
 src/transport/gnunet-communicator-tcp.c            |  49 +-
 src/transport/gnunet-communicator-udp.c            | 142 +++--
 src/transport/gnunet-service-tng.c                 | 287 +++++++++-
 .../test_transport_plugin_cmd_simple_send.c        |  92 +++-
 .../test_transport_plugin_cmd_udp_backchannel.c    |  82 ++-
 src/transport/test_transport_simple_send.sh        |   7 +-
 src/transport/test_transport_simple_send_string.sh |  16 +
 src/transport/test_transport_simple_send_topo.conf |   6 +
 src/transport/test_transport_start_with_config.c   |  76 ++-
 src/transport/test_transport_udp_backchannel.sh    |   7 +
 src/transport/transport-testing-cmds.h             |  42 +-
 src/transport/transport_api2_communication.c       |   9 +-
 .../transport_api_cmd_backchannel_check.c          | 602 +++++++++++++++++++++
 src/transport/transport_api_cmd_connecting_peers.c | 286 +---------
 src/transport/transport_api_cmd_send_simple.c      | 120 ++--
 src/transport/transport_api_cmd_start_peer.c       |  19 +-
 src/transport/transport_api_cmd_stop_peer.c        |   1 +
 src/util/helper.c                                  |   4 +
 63 files changed, 4221 insertions(+), 2882 deletions(-)
 copy {src/testing => contrib/netjail}/netjail_core.sh (98%)
 copy {src/testing => contrib/netjail}/netjail_exec.sh (55%)
 copy {src/testing => contrib/netjail}/netjail_start.sh (91%)
 copy {src/testing => contrib/netjail}/netjail_stop.sh (87%)
 copy {src/testing => contrib/netjail}/topo.sh (80%)
 create mode 100644 src/include/gnunet_testing_netjail_lib.h
 delete mode 100644 src/testing/test_testing_api_cmd_netjail.c
 delete mode 100644 src/testing/test_testing_hello_world.c
 delete mode 100644 src/testing/test_testing_plugin_testcmd.c
 delete mode 100644 src/testing/testing_api_cmd_block_until_all_peers_started.c
 delete mode 100644 src/testing/testing_api_cmd_hello_world.c
 delete mode 100644 src/testing/testing_api_cmd_hello_world_birth.c
 create mode 100644 src/testing/testing_api_cmd_local_test_prepared.c
 create mode 100755 src/transport/test_transport_simple_send_string.sh
 create mode 100644 src/transport/test_transport_simple_send_topo.conf
 create mode 100644 src/transport/transport_api_cmd_backchannel_check.c

diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index 464016ee8..44b0ff76d 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -24,6 +24,10 @@ dist_pkgdata_DATA = \
   branding/logo/gnunet-logo-big.png \
   branding/logo/gnunet-logo.pdf \
   testing_hostkeys.ecc \
+  netjail/netjail_core.sh \
+  netjail/netjail_start.sh \
+  netjail/netjail_stop.sh \
+  netjail/topo.sh \
   $(BUILDCOMMON_SHLIB_FILES)
 
 INITD_FILES = \
@@ -240,4 +244,11 @@ aclocaldir = $(datadir)/aclocal
 aclocal_DATA = \
   gnunet.m4
 
+install-data-hook:
+       chmod o+x $(pkgdatadir)/netjail_core.sh
+       chmod o+x $(pkgdatadir)/netjail_start.sh
+       chmod o+x $(pkgdatadir)/netjail_stop.sh
+       chmod o+x $(pkgdatadir)/netjail_exec.sh
+       chmod o+x $(pkgdatadir)/topo.sh
+
 ## EOF
diff --git a/src/testing/netjail_core.sh b/contrib/netjail/netjail_core.sh
similarity index 98%
copy from src/testing/netjail_core.sh
copy to contrib/netjail/netjail_core.sh
index ef0a54a5e..ed363cf35 100755
--- a/src/testing/netjail_core.sh
+++ b/contrib/netjail/netjail_core.sh
@@ -157,7 +157,7 @@ netjail_node_link_bridge() {
        ip link set $LINK_IF netns $NODE
        ip link set $LINK_BR master $BRIDGE
 
-       ip -n $NODE addr add "$ADDRESS/$MASK" dev $LINK_IF
+       ip -n $NODE addr add "$ADDRESS/$MASK" broadcast + dev $LINK_IF
        ip -n $NODE link set $LINK_IF up
        ip -n $NODE link set up dev lo
 
diff --git a/src/testing/netjail_exec.sh b/contrib/netjail/netjail_exec.sh
similarity index 55%
copy from src/testing/netjail_exec.sh
copy to contrib/netjail/netjail_exec.sh
index cd993a39b..ab4aad5b8 100755
--- a/src/testing/netjail_exec.sh
+++ b/contrib/netjail/netjail_exec.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-. "./../testing/netjail_core.sh"
+. "$(dirname $0)/netjail_core.sh"
 
 set -eu
 set -x
@@ -11,4 +11,4 @@ N=$2
 
 NODE=$6
 
-netjail_node_exec_without_fds_and_sudo $NODE $3 $4 $5 $1 $2 
+netjail_node_exec_without_fds_and_sudo $NODE $3 $4 $5 $1 $2 $7 $8
diff --git a/src/testing/netjail_start.sh b/contrib/netjail/netjail_start.sh
similarity index 91%
copy from src/testing/netjail_start.sh
copy to contrib/netjail/netjail_start.sh
index 1dfe1dfdf..997ad0a95 100755
--- a/src/testing/netjail_start.sh
+++ b/contrib/netjail/netjail_start.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
-. "./../testing/netjail_core.sh"
-. "./../testing/topo.sh"
+. "$(dirname $0)/netjail_core.sh"
+. "$(dirname $0)/topo.sh"
 
 set -eu
 set -x
@@ -9,8 +9,15 @@ export 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
 
 filename=$1
 PREFIX=$2
+readfile=$3
 
-read_topology $filename
+if [ $readfile -eq 0 ]
+then
+    read_topology_string "$filename"
+else
+    echo read file
+    read_topology $filename
+fi
 
 shift 2
 
diff --git a/src/testing/netjail_stop.sh b/contrib/netjail/netjail_stop.sh
similarity index 87%
copy from src/testing/netjail_stop.sh
copy to contrib/netjail/netjail_stop.sh
index abfaf3acf..c8739dc94 100755
--- a/src/testing/netjail_stop.sh
+++ b/contrib/netjail/netjail_stop.sh
@@ -1,6 +1,6 @@
 #!/bin/bash
-. "./../testing/netjail_core.sh"
-. "./../testing/topo.sh"
+. "$(dirname $0)/netjail_core.sh"
+. "$(dirname $0)/topo.sh"
 
 set -eu
 set -x
@@ -9,8 +9,14 @@ export 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
 
 filename=$1
 PREFIX=$2
+readfile=$3
 
-read_topology $filename
+if [ $readfile -eq 0 ]
+then
+    read_topology_string $filename
+else
+    read_topology $filename
+fi
 
 declare -A NODES
 declare -A NODE_LINKS
diff --git a/src/testing/topo.sh b/contrib/netjail/topo.sh
similarity index 80%
copy from src/testing/topo.sh
copy to contrib/netjail/topo.sh
index 090c3053f..9af017ff0 100755
--- a/src/testing/topo.sh
+++ b/contrib/netjail/topo.sh
@@ -20,8 +20,7 @@ extract_attributes()
        number=$(echo $line|cut -d \| -f 1| cut -c 2-|cut -d : -f 2 )
        echo $number
     fi
-       
-    
+
     nf=$(echo $line|awk -F: '{print NF}')
     for ((i=2;i<=$nf;i++))
     do
@@ -52,11 +51,8 @@ extract_attributes()
     done
 }
 
-read_topology(){
-    
-local filename=$1
-while read line; do
-# reading each line
+parse_line(){
+    line=$1
     echo $line
     key=$(cut -c -1 <<< $line)
     if [ "$key" = "M" ]
@@ -67,6 +63,11 @@ while read line; do
     then
        GLOBAL_N=$(cut -d : -f 2 <<< $line)
        echo $GLOBAL_N
+    for ((i=1;i<=$GLOBAL_N;i++))
+    do
+        R_TCP[$i]=0
+        R_UDP[$i]=0
+    done    
     elif [ "$key" = "X" ]
     then
        KNOWN=$(cut -d : -f 2 <<< $line)
@@ -88,7 +89,24 @@ while read line; do
        echo node
        extract_attributes $key $line
     fi
-done < $filename
+}
+
+read_topology_string(){
+    string=$1
+    IFS=' ' read -r -a array <<< $string
+    for element in "${array[@]}"
+    do
+        echo $element
+        parse_line $element
+    done
+}
+
+read_topology(){
+    local filename=$1
+    while read line; do
+        # reading each line
+        parse_line $line
+    done < $filename
 }
 
 
diff --git a/po/POTFILES.in b/po/POTFILES.in
index e34cb25f4..ef74c2472 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -423,21 +423,15 @@ src/testing/gnunet-testing.c
 src/testing/list-keys.c
 src/testing/testing.c
 src/testing/testing_api_cmd_batch.c
-src/testing/testing_api_cmd_block_until_all_peers_started.c
 src/testing/testing_api_cmd_block_until_external_trigger.c
 src/testing/testing_api_cmd_end.c
 src/testing/testing_api_cmd_finish.c
-src/testing/testing_api_cmd_hello_world.c
-src/testing/testing_api_cmd_hello_world_birth.c
 src/testing/testing_api_cmd_local_test_finished.c
+src/testing/testing_api_cmd_local_test_prepared.c
 src/testing/testing_api_cmd_netjail_start.c
 src/testing/testing_api_cmd_netjail_start_testsystem.c
-src/testing/testing_api_cmd_netjail_start_testsystem_v2.c
-src/testing/testing_api_cmd_netjail_start_v2.c
 src/testing/testing_api_cmd_netjail_stop.c
 src/testing/testing_api_cmd_netjail_stop_testsystem.c
-src/testing/testing_api_cmd_netjail_stop_testsystem_v2.c
-src/testing/testing_api_cmd_netjail_stop_v2.c
 src/testing/testing_api_cmd_send_peer_ready.c
 src/testing/testing_api_cmd_system_create.c
 src/testing/testing_api_cmd_system_destroy.c
@@ -496,14 +490,10 @@ src/transport/transport_api2_core.c
 src/transport/transport_api2_monitor.c
 src/transport/transport_api_address_to_string.c
 src/transport/transport_api_blacklist.c
+src/transport/transport_api_cmd_backchannel_check.c
 src/transport/transport_api_cmd_connecting_peers.c
-src/transport/transport_api_cmd_connecting_peers_v2.c
-src/transport/transport_api_cmd_connecting_peers_v3.c
 src/transport/transport_api_cmd_send_simple.c
-src/transport/transport_api_cmd_send_simple_v2.c
 src/transport/transport_api_cmd_start_peer.c
-src/transport/transport_api_cmd_start_peer_v2.c
-src/transport/transport_api_cmd_start_peer_v3.c
 src/transport/transport_api_cmd_stop_peer.c
 src/transport/transport_api_core.c
 src/transport/transport_api_hello_get.c
diff --git a/po/de.po b/po/de.po
index 07d38fcad..dc8abce9b 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: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2021-08-28 16:52+0200\n"
+"POT-Creation-Date: 2021-10-15 10:46+0200\n"
 "PO-Revision-Date: 2015-03-08 16:16+0100\n"
 "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
@@ -2168,102 +2168,102 @@ msgstr ""
 msgid "# FIND PEER messages initiated"
 msgstr "# PING Nachrichten erstellt"
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:855
 #, fuzzy
 msgid "# requests TTL-dropped"
 msgstr "# dht Anfragen weitergeleitet"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1035
-#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1042
+#: src/dht/gnunet-service-dht_neighbours.c:1079
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1045
-#: src/dht/gnunet-service-dht_neighbours.c:1088
+#: src/dht/gnunet-service-dht_neighbours.c:1052
+#: src/dht/gnunet-service-dht_neighbours.c:1095
 #, fuzzy
 msgid "# Peer selection failed"
 msgstr " Verbindung fehlgeschlagen\n"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1246
+#: src/dht/gnunet-service-dht_neighbours.c:1253
 #, fuzzy
 msgid "# PUT requests routed"
 msgstr "# dht Anfragen weitergeleitet"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1280
+#: src/dht/gnunet-service-dht_neighbours.c:1287
 msgid "# PUT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1292
-#: src/dht/gnunet-service-dht_neighbours.c:1434
-#: src/dht/gnunet-service-dht_neighbours.c:1538
+#: src/dht/gnunet-service-dht_neighbours.c:1299
+#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1545
 msgid "# P2P messages dropped due to full queue"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1377
+#: src/dht/gnunet-service-dht_neighbours.c:1384
 #, fuzzy
 msgid "# GET requests routed"
 msgstr "# dht Anfragen weitergeleitet"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1421
+#: src/dht/gnunet-service-dht_neighbours.c:1428
 msgid "# GET messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1553
+#: src/dht/gnunet-service-dht_neighbours.c:1560
 msgid "# RESULT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1656
+#: src/dht/gnunet-service-dht_neighbours.c:1663
 #, fuzzy
 msgid "# Expired PUTs discarded"
 msgstr "# verworfener Nachrichten"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1664
+#: src/dht/gnunet-service-dht_neighbours.c:1671
 #, fuzzy
 msgid "# P2P PUT requests received"
 msgstr "# Client Trace-Anfragen empfangen"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1668
+#: src/dht/gnunet-service-dht_neighbours.c:1675
 #, fuzzy
 msgid "# P2P PUT bytes received"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1900
+#: src/dht/gnunet-service-dht_neighbours.c:1907
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1909
+#: src/dht/gnunet-service-dht_neighbours.c:1916
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2072
+#: src/dht/gnunet-service-dht_neighbours.c:2079
 #, fuzzy
 msgid "# P2P GET requests received"
 msgstr "# Client Trace-Anfragen empfangen"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2076
+#: src/dht/gnunet-service-dht_neighbours.c:2083
 #, fuzzy
 msgid "# P2P GET bytes received"
 msgstr "# Bytes empfangen über TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2142
+#: src/dht/gnunet-service-dht_neighbours.c:2149
 msgid "# P2P FIND PEER requests processed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2163
+#: src/dht/gnunet-service-dht_neighbours.c:2170
 #, fuzzy
 msgid "# P2P GET requests ONLY routed"
 msgstr "# dht Anfragen weitergeleitet"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2341
+#: src/dht/gnunet-service-dht_neighbours.c:2348
 #, fuzzy
 msgid "# Expired results discarded"
 msgstr "# verworfener Nachrichten"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2358
+#: src/dht/gnunet-service-dht_neighbours.c:2365
 msgid "# P2P RESULTS received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2362
+#: src/dht/gnunet-service-dht_neighbours.c:2369
 #, fuzzy
 msgid "# P2P RESULT bytes received"
 msgstr "# Bytes empfangen über TCP"
@@ -2306,7 +2306,7 @@ msgstr ""
 msgid "# DHT requests combined"
 msgstr "# dht Anfragen weitergeleitet"
 
-#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:253
 #, c-format
 msgid "Exiting as the number of peers is %u\n"
 msgstr ""
@@ -2321,7 +2321,7 @@ msgid "number of PUTs to perform per peer"
 msgstr ""
 
 #: src/dht/gnunet_dht_profiler.c:967 src/nse/gnunet-nse-profiler.c:872
-#: src/testbed/gnunet-testbed-profiler.c:305
+#: src/testbed/gnunet-testbed-profiler.c:302
 msgid "name of the file with the login information for the testbed"
 msgstr ""
 
@@ -6626,7 +6626,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr "Ungültiger Parameter für `%s' bei %s:%d.\n"
 
 #: src/testbed/generate-underlay-topology.c:366
-#: src/testbed/gnunet-testbed-profiler.c:284
+#: src/testbed/gnunet-testbed-profiler.c:282
 msgid "create COUNT number of peers"
 msgstr ""
 
@@ -6665,7 +6665,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:234 src/testing/list-keys.c:47
-#: src/testing/testing.c:278 src/util/gnunet-ecc.c:318
+#: src/testing/testing.c:289 src/util/gnunet-ecc.c:318
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr ""
@@ -6735,29 +6735,17 @@ msgstr ""
 msgid "%.s Unknown result code."
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:290
+#: src/testbed/gnunet-testbed-profiler.c:288
 msgid "tolerate COUNT number of continuous timeout failures"
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:295
+#: src/testbed/gnunet-testbed-profiler.c:293
 msgid ""
 "run profiler in non-interactive mode where upon testbed setup the profiler "
 "does not wait for a keystroke but continues to run until a termination "
 "signal is received"
 msgstr ""
 
-#: src/testbed/gnunet_testbed_mpi_spawn.c:119
-#, fuzzy
-msgid "Waiting for child to exit.\n"
-msgstr ""
-"Warte darauf, dass sich andere Knoten verbinden (%u Iterationen "
-"verbleiben)...\n"
-
-#: src/testbed/gnunet_testbed_mpi_spawn.c:242
-#, fuzzy, c-format
-msgid "Spawning process `%s'\n"
-msgstr "Ungültige Antwort auf `%s'.\n"
-
 #: src/testbed/testbed_api.c:399
 #, fuzzy, c-format
 msgid "Adding host %u failed with error: %s\n"
@@ -6778,11 +6766,6 @@ msgstr ""
 msgid "Hosts file %s cannot be read\n"
 msgstr ""
 
-#: src/testbed/testbed_api_hosts.c:589
-#, c-format
-msgid "The function %s is only available when compiled with (--with-ll)\n"
-msgstr ""
-
 #: src/testbed/testbed_api_testbed.c:822
 msgid "Linking controllers failed. Exiting"
 msgstr ""
@@ -6814,43 +6797,39 @@ msgstr "GNUnet testbed Controller starten."
 msgid "Shutting down testbed due to timeout while setup.\n"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1274
-msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
-msgstr ""
-
-#: src/testbed/testbed_api_testbed.c:1286
+#: src/testbed/testbed_api_testbed.c:1276
 msgid "No hosts loaded. Need at least one host\n"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1312
+#: src/testbed/testbed_api_testbed.c:1301
 msgid "Specified topology must be supported by testbed"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1368
+#: src/testbed/testbed_api_testbed.c:1357
 #, c-format
 msgid ""
 "Maximum number of edges a peer can have in a scale free topology cannot be "
 "more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1385
+#: src/testbed/testbed_api_testbed.c:1374
 #, c-format
 msgid ""
 "The number of edges that can established when adding a new node to scale "
 "free topology cannot be more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1033
+#: src/testbed/testbed_api_topology.c:1033 src/testing/testing.c:2320
 #, c-format
 msgid "Topology file %s not found\n"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1041
+#: src/testbed/testbed_api_topology.c:1041 src/testing/testing.c:2328
 #, c-format
 msgid "Topology file %s has no data\n"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1049
+#: src/testbed/testbed_api_topology.c:1049 src/testing/testing.c:2336
 #, c-format
 msgid "Topology file %s cannot be read\n"
 msgstr ""
@@ -6924,57 +6903,57 @@ msgstr ""
 msgid "list COUNT number of keys"
 msgstr ""
 
-#: src/testing/testing.c:261
+#: src/testing/testing.c:272
 #, c-format
 msgid "Hostkeys file not found: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:714
+#: src/testing/testing.c:725
 #, c-format
 msgid "Key number %u does not exist\n"
 msgstr ""
 
-#: src/testing/testing.c:1188
+#: src/testing/testing.c:1199
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
 "precompute more hostkeys first.\n"
 msgstr ""
 
-#: src/testing/testing.c:1197
+#: src/testing/testing.c:1208
 #, fuzzy, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr "SQLite Datenbank konnte nicht initialisiert werden.\n"
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1218
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr ""
 
-#: src/testing/testing.c:1220
+#: src/testing/testing.c:1231
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr ""
 
-#: src/testing/testing.c:1236
+#: src/testing/testing.c:1247
 #, fuzzy, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr "Konfigurationsdatei `%s' konnte nicht geöffnet werden.\n"
 
-#: src/testing/testing.c:1250
+#: src/testing/testing.c:1261
 #, fuzzy, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr "Datei wurde als `%s' gespeichert.\n"
 
-#: src/testing/testing.c:1278
+#: src/testing/testing.c:1289
 #, fuzzy, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr "Fehler beim Speichern der Konfigurationsdatei `%s':"
 
-#: src/testing/testing.c:1384
+#: src/testing/testing.c:1395
 #, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr "»%s« konnte nicht gestartet werden: %s\n"
 
-#: src/testing/testing.c:1683
+#: src/testing/testing.c:1694
 #, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr "Konfiguration konnte nicht aus %s geladen werden\n"
@@ -7050,18 +7029,18 @@ msgstr "# HELLO-Meldungen empfangen"
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:3317
-#: src/transport/gnunet-communicator-udp.c:3790
-#: src/transport/gnunet-service-tng.c:10223
+#: src/transport/gnunet-communicator-tcp.c:3329
+#: src/transport/gnunet-communicator-udp.c:3814
+#: src/transport/gnunet-service-tng.c:10388
 #: src/transport/gnunet-service-transport.c:2627
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:3655
+#: src/transport/gnunet-communicator-tcp.c:3671
 msgid "GNUnet TCP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-udp.c:3862
+#: src/transport/gnunet-communicator-udp.c:3889
 msgid "GNUnet UDP communicator"
 msgstr ""
 
@@ -8265,50 +8244,50 @@ msgstr ""
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr ""
 
-#: src/util/common_logging.c:1106
+#: src/util/common_logging.c:1108
 msgid "ERROR"
 msgstr "FEHLER"
 
-#: src/util/common_logging.c:1108
+#: src/util/common_logging.c:1110
 msgid "WARNING"
 msgstr "WARNUNG"
 
-#: src/util/common_logging.c:1110
+#: src/util/common_logging.c:1112
 msgid "MESSAGE"
 msgstr ""
 
-#: src/util/common_logging.c:1112
+#: src/util/common_logging.c:1114
 msgid "INFO"
 msgstr "INFO"
 
-#: src/util/common_logging.c:1114
+#: src/util/common_logging.c:1116
 msgid "DEBUG"
 msgstr "DEBUG"
 
-#: src/util/common_logging.c:1116
+#: src/util/common_logging.c:1118
 msgid "NONE"
 msgstr ""
 
-#: src/util/common_logging.c:1117
+#: src/util/common_logging.c:1119
 msgid "INVALID"
 msgstr ""
 
-#: src/util/common_logging.c:1398
+#: src/util/common_logging.c:1400
 msgid "unknown address"
 msgstr "Unbekannte Adresse"
 
-#: src/util/common_logging.c:1443
+#: src/util/common_logging.c:1445
 msgid "invalid address"
 msgstr "Ungültige Adresse"
 
-#: src/util/common_logging.c:1462
+#: src/util/common_logging.c:1464
 #, fuzzy, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr ""
 "Die Konfigurationsdatei muss in der Sektion `%s' unter `%s' ein Verzeichnis "
 "angeben, in dem FS Daten gespeichert werden.\n"
 
-#: src/util/common_logging.c:1485
+#: src/util/common_logging.c:1487
 #, fuzzy, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8384,6 +8363,26 @@ msgid ""
 "as an environmental variable\n"
 msgstr ""
 
+#: src/util/configuration_helper.c:133
+#, c-format
+msgid "The following sections are available:\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:147
+#, fuzzy, c-format
+msgid "%s, %s or %s argument is required\n"
+msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n"
+
+#: src/util/configuration_helper.c:218
+#, c-format
+msgid "--option argument required to set value\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:262
+#, fuzzy, c-format
+msgid "failed to load configuration defaults"
+msgstr "Konfiguration konnte nicht aus %s geladen werden\n"
+
 #: src/util/container_bloomfilter.c:553
 #, c-format
 msgid ""
@@ -8610,66 +8609,27 @@ msgstr ""
 msgid "run decoder modus, otherwise runs as encoder"
 msgstr ""
 
-#: src/util/gnunet-config.c:187
-#, c-format
-msgid "The following sections are available:\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:201
-#, fuzzy, c-format
-msgid "%s, %s or %s argument is required\n"
-msgstr "Option `%s' macht keinen Sinn ohne die Option `%s'.\n"
-
-#: src/util/gnunet-config.c:266
-#, c-format
-msgid "--option argument required to set value\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:309
-#, fuzzy, c-format
-msgid "failed to load configuration defaults"
-msgstr "Konfiguration konnte nicht aus %s geladen werden\n"
-
-#: src/util/gnunet-config.c:354
+#: src/util/gnunet-config.c:139
 msgid "test if the current installation supports the specified BACKEND"
 msgstr ""
 
-#: src/util/gnunet-config.c:360
-#, fuzzy
-msgid "write the full configuration file, including default values"
-msgstr "Konfiguration konnte nicht aus %s geladen werden\n"
-
-#: src/util/gnunet-config.c:365
-msgid "interpret option value as a filename (with $-expansion)"
-msgstr ""
-
-#: src/util/gnunet-config.c:370
-msgid "name of the option to access"
-msgstr ""
-
-#: src/util/gnunet-config.c:376
-#, fuzzy
-msgid "rewrite the configuration file, even if nothing changed"
-msgstr "Keine Konfigurationsdatei angegeben. Abbruch\n"
-
-#: src/util/gnunet-config.c:382
-msgid "output extra diagnostics"
+#: src/util/gnunet-config.c:145
+msgid ""
+"Provide an appropriate value for CFLAGS to applications building on top of "
+"GNUnet"
 msgstr ""
 
-#: src/util/gnunet-config.c:387
-#, fuzzy
-msgid "print available configuration sections"
-msgstr "GNUnet Konfiguration"
-
-#: src/util/gnunet-config.c:393
-msgid "name of the section to access"
+#: src/util/gnunet-config.c:151
+msgid ""
+"Provide an appropriate value for LIBS to applications building on top of "
+"GNUnet"
 msgstr ""
 
-#: src/util/gnunet-config.c:398
-msgid "value to set"
+#: src/util/gnunet-config.c:157
+msgid "Provide the path under which GNUnet was installed"
 msgstr ""
 
-#: src/util/gnunet-config.c:413
+#: src/util/gnunet-config.c:172
 msgid "Manipulate GNUnet configuration files"
 msgstr "GNUnet-Konfigurationsdateien bearbeiten"
 
@@ -8851,7 +8811,7 @@ msgstr "Fehler beim Lesen von »%s«: %s\n"
 msgid "Failed to parse inbound message from helper `%s'\n"
 msgstr "Fehler beim Parsen der Gerätedaten von `%s' bei %s:%d.\n"
 
-#: src/util/helper.c:602
+#: src/util/helper.c:606
 #, fuzzy, c-format
 msgid "Error writing to `%s': %s\n"
 msgstr "Verbindung zu %u.%u.%u.%u:%u fehlgeschlagen: %s\n"
@@ -8889,35 +8849,40 @@ msgstr ""
 msgid "Initialization of plugin mechanism failed: %s!\n"
 msgstr "Initialisierung des Plugin-Mechanismus fehlgeschlagen: %s!\n"
 
-#: src/util/plugin.c:156
+#: src/util/plugin.c:162
 #, fuzzy, c-format
 msgid "`%s' failed to resolve method '%s' with error: %s\n"
 msgstr ""
 "`%s' konnte die Methode '%s%s' nicht auflösen. Ort: %s:%d. Fehler: %s\n"
 
-#: src/util/plugin.c:234
+#: src/util/plugin.c:240
 #, fuzzy, c-format
 msgid "`%s' failed for library `%s' with error: %s\n"
 msgstr "`%s' fehlgeschlagen für die Bibliothek `%s'. Ort: %s:%d. Fehler: %s\n"
 
-#: src/util/plugin.c:414
+#: src/util/plugin.c:420
 #, fuzzy
 msgid "Could not determine plugin installation path.\n"
 msgstr "Öffentliche IP-Adresse konnte nicht ermittelt werden.\n"
 
-#: src/util/program.c:252
+#: src/util/program.c:251
+#, fuzzy, c-format
+msgid "Unreadable configuration file `%s', exiting ...\n"
+msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n"
+
+#: src/util/program.c:263
 #, fuzzy, c-format
-msgid "Unreadable or malformed configuration file `%s', exit ...\n"
+msgid "Malformed configuration file `%s', exiting ...\n"
 msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n"
 
-#: src/util/program.c:272
+#: src/util/program.c:278
 #, fuzzy, c-format
-msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
+msgid "Unreadable configuration file `%s'. Exiting ...\n"
 msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n"
 
-#: src/util/program.c:288
+#: src/util/program.c:293
 #, fuzzy
-msgid "Unreadable or malformed configuration, exit ...\n"
+msgid "Malformed configuration. Exiting ...\n"
 msgstr "GNUnet Konfiguration"
 
 #: src/util/regex.c:139
@@ -9244,26 +9209,56 @@ msgstr "Tunnel über VPN einrichten."
 msgid "Failed to connect to the namestore!\n"
 msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
+#, fuzzy
+#~ msgid "Waiting for child to exit.\n"
+#~ msgstr ""
+#~ "Warte darauf, dass sich andere Knoten verbinden (%u Iterationen "
+#~ "verbleiben)...\n"
+
+#, fuzzy
+#~ msgid "Spawning process `%s'\n"
+#~ msgstr "Ungültige Antwort auf `%s'.\n"
+
+#, fuzzy
+#~ msgid "write the full configuration file, including default values"
+#~ msgstr "Konfiguration konnte nicht aus %s geladen werden\n"
+
+#, fuzzy
+#~ msgid "rewrite the configuration file, even if nothing changed"
+#~ msgstr "Keine Konfigurationsdatei angegeben. Abbruch\n"
+
+#, fuzzy
+#~ msgid "print available configuration sections"
+#~ msgstr "GNUnet Konfiguration"
+
+#, fuzzy
+#~ msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
+#~ msgstr "Konfigurationsdatei `%s' wurde erzeugt.\n"
+
+#, fuzzy
+#~ msgid "Unreadable or malformed configuration, exit ...\n"
+#~ msgstr "GNUnet Konfiguration"
+
 #~ msgid "Stop logging\n"
 #~ msgstr "Protokollierung stoppen\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Start logging `%s'\n"
 #~ msgstr "Collection `%s' begonnen.\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Failed to connect master peer [%u] with slave [%u]\n"
 #~ msgstr "Es konnte keine Verbindung mit gnunetd hergestellt werden.\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Unsupported form value `%s'\n"
 #~ msgstr "Kommando `%s' wird nicht unterstützt. Vorgang wird abgebrochen.\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Failed to create page for `%s'\n"
 #~ msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Failed to setup post processor for `%s'\n"
 #~ msgstr "Fehler beim Aktualisieren der Daten des Moduls `%s'\n"
 
@@ -9294,7 +9289,7 @@ msgstr "Es konnte keine Verbindung mit gnunetd 
hergestellt werden.\n"
 #~ msgid "days"
 #~ msgstr "Tage"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Could not acquire lock on file `%s': %s...\n"
 #~ msgstr "PID konnte nicht in Datei `%s' geschrieben werden: %s.\n"
 
diff --git a/po/es.po b/po/es.po
index b23f36ed6..981034502 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet 0.9.5a\n"
 "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2021-08-28 16:52+0200\n"
+"POT-Creation-Date: 2021-10-15 10:46+0200\n"
 "PO-Revision-Date: 2013-02-23 17:50+0100\n"
 "Last-Translator: Miguel Ángel Arruga Vivas <rosen644835@gmail.com>\n"
 "Language-Team: Spanish <es@li.org>\n"
@@ -2257,96 +2257,96 @@ msgstr "# «HELLO» obtenidos de «peerinfo»"
 msgid "# FIND PEER messages initiated"
 msgstr "# mensajes «FIND PEER» iniciados"
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:855
 #, fuzzy
 msgid "# requests TTL-dropped"
 msgstr "# peticiones unidas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1035
-#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1042
+#: src/dht/gnunet-service-dht_neighbours.c:1079
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr "# Pares excluidos del encaminado debido a «Bloomfilter»"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1045
-#: src/dht/gnunet-service-dht_neighbours.c:1088
+#: src/dht/gnunet-service-dht_neighbours.c:1052
+#: src/dht/gnunet-service-dht_neighbours.c:1095
 msgid "# Peer selection failed"
 msgstr "# Selecciones de pares fallidas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1246
+#: src/dht/gnunet-service-dht_neighbours.c:1253
 msgid "# PUT requests routed"
 msgstr "# Peticiones «PUT» encaminadas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1280
+#: src/dht/gnunet-service-dht_neighbours.c:1287
 msgid "# PUT messages queued for transmission"
 msgstr "# mensajes «PUT» encolados para transmisión"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1292
-#: src/dht/gnunet-service-dht_neighbours.c:1434
-#: src/dht/gnunet-service-dht_neighbours.c:1538
+#: src/dht/gnunet-service-dht_neighbours.c:1299
+#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1545
 msgid "# P2P messages dropped due to full queue"
 msgstr "# Mensajes P2P omitidos debido a saturación de la cola"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1377
+#: src/dht/gnunet-service-dht_neighbours.c:1384
 msgid "# GET requests routed"
 msgstr "# Peticiones «GET» encaminadas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1421
+#: src/dht/gnunet-service-dht_neighbours.c:1428
 msgid "# GET messages queued for transmission"
 msgstr "# Mensajes «GET» encolados para transmisión"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1553
+#: src/dht/gnunet-service-dht_neighbours.c:1560
 msgid "# RESULT messages queued for transmission"
 msgstr "# Mensajes «RESULT» encolados para transmisión"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1656
+#: src/dht/gnunet-service-dht_neighbours.c:1663
 #, fuzzy
 msgid "# Expired PUTs discarded"
 msgstr "# respuestas irrelevantes descartadas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1664
+#: src/dht/gnunet-service-dht_neighbours.c:1671
 msgid "# P2P PUT requests received"
 msgstr "# Peticiones «PUT» P2P recibidas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1668
+#: src/dht/gnunet-service-dht_neighbours.c:1675
 #, fuzzy
 msgid "# P2P PUT bytes received"
 msgstr "# Peticiones «PUT» P2P recibidas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1900
+#: src/dht/gnunet-service-dht_neighbours.c:1907
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr "# Peticiones «FIND PEER» ignoradas debido a «Bloomfilter»"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1909
+#: src/dht/gnunet-service-dht_neighbours.c:1916
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr "# Peticiones «FIND PEER» ignoradas debido a falta de «HELLO»"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2072
+#: src/dht/gnunet-service-dht_neighbours.c:2079
 msgid "# P2P GET requests received"
 msgstr "# Peticiones «GET» P2P recibidas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2076
+#: src/dht/gnunet-service-dht_neighbours.c:2083
 #, fuzzy
 msgid "# P2P GET bytes received"
 msgstr "# Peticiones «GET» P2P recibidas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2142
+#: src/dht/gnunet-service-dht_neighbours.c:2149
 msgid "# P2P FIND PEER requests processed"
 msgstr "# Peticiones «FIND PEER» P2P procesadas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2163
+#: src/dht/gnunet-service-dht_neighbours.c:2170
 msgid "# P2P GET requests ONLY routed"
 msgstr "# Peticiones «GET» P2P SOLAMENTE encaminadas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2341
+#: src/dht/gnunet-service-dht_neighbours.c:2348
 #, fuzzy
 msgid "# Expired results discarded"
 msgstr "# respuestas irrelevantes descartadas"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2358
+#: src/dht/gnunet-service-dht_neighbours.c:2365
 msgid "# P2P RESULTS received"
 msgstr "# Resultados (RESULTS) P2P recibidos"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2362
+#: src/dht/gnunet-service-dht_neighbours.c:2369
 #, fuzzy
 msgid "# P2P RESULT bytes received"
 msgstr "# Resultados (RESULTS) P2P recibidos"
@@ -2393,7 +2393,7 @@ msgstr "# Entradas añadidas a la tabla de encaminamiento"
 msgid "# DHT requests combined"
 msgstr "# Peticiones a la DHT combinadas"
 
-#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:253
 #, fuzzy, c-format
 msgid "Exiting as the number of peers is %u\n"
 msgstr "El número máximo de conexiones es %u\n"
@@ -2407,7 +2407,7 @@ msgid "number of PUTs to perform per peer"
 msgstr ""
 
 #: src/dht/gnunet_dht_profiler.c:967 src/nse/gnunet-nse-profiler.c:872
-#: src/testbed/gnunet-testbed-profiler.c:305
+#: src/testbed/gnunet-testbed-profiler.c:302
 msgid "name of the file with the login information for the testbed"
 msgstr ""
 "nombre del fichero con la información de acceso usada para la batería de "
@@ -6834,7 +6834,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr "Argumento no válido para '%s' en %s:%d.\n"
 
 #: src/testbed/generate-underlay-topology.c:366
-#: src/testbed/gnunet-testbed-profiler.c:284
+#: src/testbed/gnunet-testbed-profiler.c:282
 msgid "create COUNT number of peers"
 msgstr "crea «COUNT» número de pares"
 
@@ -6873,7 +6873,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:234 src/testing/list-keys.c:47
-#: src/testing/testing.c:278 src/util/gnunet-ecc.c:318
+#: src/testing/testing.c:289 src/util/gnunet-ecc.c:318
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr "El fichero de máquinas no tiene el formato correcto: %s\n"
@@ -6947,28 +6947,18 @@ msgstr "Petición ignorada porque el ARM se está 
apagando.\n"
 msgid "%.s Unknown result code."
 msgstr "Código de respuesta del ARM desconocido.\n"
 
-#: src/testbed/gnunet-testbed-profiler.c:290
+#: src/testbed/gnunet-testbed-profiler.c:288
 #, fuzzy
 msgid "tolerate COUNT number of continuous timeout failures"
 msgstr "tolerar un número «COUNT» de continuas expiraciones de plazo"
 
-#: src/testbed/gnunet-testbed-profiler.c:295
+#: src/testbed/gnunet-testbed-profiler.c:293
 msgid ""
 "run profiler in non-interactive mode where upon testbed setup the profiler "
 "does not wait for a keystroke but continues to run until a termination "
 "signal is received"
 msgstr ""
 
-#: src/testbed/gnunet_testbed_mpi_spawn.c:119
-#, fuzzy
-msgid "Waiting for child to exit.\n"
-msgstr "Esperando a los pares para conectar (%u ciclos restantes)...\n"
-
-#: src/testbed/gnunet_testbed_mpi_spawn.c:242
-#, fuzzy, c-format
-msgid "Spawning process `%s'\n"
-msgstr "Iniciando el proceso auxiliar (HELPER) «%s»\n"
-
 #: src/testbed/testbed_api.c:399
 #, c-format
 msgid "Adding host %u failed with error: %s\n"
@@ -6989,11 +6979,6 @@ msgstr "El archivo de máquinas %s no tiene datos\n"
 msgid "Hosts file %s cannot be read\n"
 msgstr "El archivo de máquinas %s no puede leerse\n"
 
-#: src/testbed/testbed_api_hosts.c:589
-#, c-format
-msgid "The function %s is only available when compiled with (--with-ll)\n"
-msgstr ""
-
 #: src/testbed/testbed_api_testbed.c:822
 msgid "Linking controllers failed. Exiting"
 msgstr "Los controladores de enlazado fallaron. Saliendo"
@@ -7024,45 +7009,40 @@ msgstr "No se puede iniciar el controlador maestro"
 msgid "Shutting down testbed due to timeout while setup.\n"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1274
-#, fuzzy
-msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
-msgstr "No se han cargado máquinas. Se necesita al menos una máquina.\n"
-
-#: src/testbed/testbed_api_testbed.c:1286
+#: src/testbed/testbed_api_testbed.c:1276
 msgid "No hosts loaded. Need at least one host\n"
 msgstr "No se han cargado máquinas. Se necesita al menos una máquina.\n"
 
-#: src/testbed/testbed_api_testbed.c:1312
+#: src/testbed/testbed_api_testbed.c:1301
 msgid "Specified topology must be supported by testbed"
 msgstr ""
 "La topología especificada debe estar soportada por la batería de pruebas"
 
-#: src/testbed/testbed_api_testbed.c:1368
+#: src/testbed/testbed_api_testbed.c:1357
 #, c-format
 msgid ""
 "Maximum number of edges a peer can have in a scale free topology cannot be "
 "more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1385
+#: src/testbed/testbed_api_testbed.c:1374
 #, c-format
 msgid ""
 "The number of edges that can established when adding a new node to scale "
 "free topology cannot be more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1033
+#: src/testbed/testbed_api_topology.c:1033 src/testing/testing.c:2320
 #, c-format
 msgid "Topology file %s not found\n"
 msgstr "El fichero de topología %s no fue encontrado\n"
 
-#: src/testbed/testbed_api_topology.c:1041
+#: src/testbed/testbed_api_topology.c:1041 src/testing/testing.c:2328
 #, c-format
 msgid "Topology file %s has no data\n"
 msgstr "El fichero de topología %s no tiene datos\n"
 
-#: src/testbed/testbed_api_topology.c:1049
+#: src/testbed/testbed_api_topology.c:1049 src/testing/testing.c:2336
 #, c-format
 msgid "Topology file %s cannot be read\n"
 msgstr "El fichero de topología %s no puede ser leido\n"
@@ -7144,19 +7124,19 @@ msgstr ""
 msgid "list COUNT number of keys"
 msgstr "crea «COUNT» número de pares"
 
-#: src/testing/testing.c:261
+#: src/testing/testing.c:272
 #, c-format
 msgid "Hostkeys file not found: %s\n"
 msgstr "El fichero de máquinas no fue encontrado: %s\n"
 
-#: src/testing/testing.c:714
+#: src/testing/testing.c:725
 #, c-format
 msgid "Key number %u does not exist\n"
 msgstr "El número de clave %u no existe\n"
 
 # Miguel: "testbed" lo he traducido como batería de pruebas, pero
 # no es una traducción muy literal.
-#: src/testing/testing.c:1188
+#: src/testing/testing.c:1199
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
@@ -7165,47 +7145,47 @@ msgstr ""
 "Se ha intentado crear una batería de pruebas con más de %u máquinas.  Por "
 "favor, pre-compute más claves de máquinas primero.\n"
 
-#: src/testing/testing.c:1197
+#: src/testing/testing.c:1208
 #, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr ""
 "Se produjo un fallo al inicializar la clave de la máquina desde el par %u\n"
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1218
 #, fuzzy
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr "¡Falta la opción «%s» en la sección «%s» de la configuración!\n"
 
-#: src/testing/testing.c:1220
+#: src/testing/testing.c:1231
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr ""
 "Se produjo un fallo al crear la configuración para el par (¿no hay "
 "suficientes puertos libres?)\n"
 
-#: src/testing/testing.c:1236
+#: src/testing/testing.c:1247
 #, fuzzy, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr "No se pudo abrir el fichero de claves de máquina: %s\n"
 
-#: src/testing/testing.c:1250
+#: src/testing/testing.c:1261
 #, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr ""
 "Se produjo un fallo al escribir la clave de la máquina para el par %u: %s\n"
 
-#: src/testing/testing.c:1278
+#: src/testing/testing.c:1289
 #, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr ""
 "Se produjo un fallo al escribir el fichero de configuración «%s» para el par "
 "%u: %s\n"
 
-#: src/testing/testing.c:1384
+#: src/testing/testing.c:1395
 #, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr "Se produjo un fallo al arrancar «%s»: %s\n"
 
-#: src/testing/testing.c:1683
+#: src/testing/testing.c:1694
 #, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr "Se produjo un fallo al cargar la configuración de %s\n"
@@ -7289,9 +7269,9 @@ msgstr "# mensajes «HELLO» recibidos"
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:3317
-#: src/transport/gnunet-communicator-udp.c:3790
-#: src/transport/gnunet-service-tng.c:10223
+#: src/transport/gnunet-communicator-tcp.c:3329
+#: src/transport/gnunet-communicator-udp.c:3814
+#: src/transport/gnunet-service-tng.c:10388
 #: src/transport/gnunet-service-transport.c:2627
 #, fuzzy
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
@@ -7299,12 +7279,12 @@ msgstr ""
 "El servicio de transporte carece de opciones de configuración de clave.  "
 "Saliendo.\n"
 
-#: src/transport/gnunet-communicator-tcp.c:3655
+#: src/transport/gnunet-communicator-tcp.c:3671
 #, fuzzy
 msgid "GNUnet TCP communicator"
 msgstr "Configurador Gtk de GNUnet"
 
-#: src/transport/gnunet-communicator-udp.c:3862
+#: src/transport/gnunet-communicator-udp.c:3889
 #, fuzzy
 msgid "GNUnet UDP communicator"
 msgstr "Configurador Gtk de GNUnet"
@@ -8572,48 +8552,48 @@ msgstr ""
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr "Mensaje `%.*s» repetido %u veces en el último %s\n"
 
-#: src/util/common_logging.c:1106
+#: src/util/common_logging.c:1108
 msgid "ERROR"
 msgstr "ERROR"
 
-#: src/util/common_logging.c:1108
+#: src/util/common_logging.c:1110
 msgid "WARNING"
 msgstr "PELIGRO"
 
-#: src/util/common_logging.c:1110
+#: src/util/common_logging.c:1112
 msgid "MESSAGE"
 msgstr "MENSAJE"
 
-#: src/util/common_logging.c:1112
+#: src/util/common_logging.c:1114
 msgid "INFO"
 msgstr "INFORMACIÓN"
 
-#: src/util/common_logging.c:1114
+#: src/util/common_logging.c:1116
 msgid "DEBUG"
 msgstr "DEPURACIÓN"
 
-#: src/util/common_logging.c:1116
+#: src/util/common_logging.c:1118
 msgid "NONE"
 msgstr "NINGUNO"
 
-#: src/util/common_logging.c:1117
+#: src/util/common_logging.c:1119
 msgid "INVALID"
 msgstr "NO VÁLIDO"
 
-#: src/util/common_logging.c:1398
+#: src/util/common_logging.c:1400
 msgid "unknown address"
 msgstr "dirección desconocida"
 
-#: src/util/common_logging.c:1443
+#: src/util/common_logging.c:1445
 msgid "invalid address"
 msgstr "dirección no válida"
 
-#: src/util/common_logging.c:1462
+#: src/util/common_logging.c:1464
 #, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr "¡La configuración no especifica la opción «%s» en la sección «%s»!\n"
 
-#: src/util/common_logging.c:1485
+#: src/util/common_logging.c:1487
 #, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8692,6 +8672,26 @@ msgid ""
 "as an environmental variable\n"
 msgstr ""
 
+#: src/util/configuration_helper.c:133
+#, c-format
+msgid "The following sections are available:\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:147
+#, fuzzy, c-format
+msgid "%s, %s or %s argument is required\n"
+msgstr "el parámetro --section es necesario\n"
+
+#: src/util/configuration_helper.c:218
+#, c-format
+msgid "--option argument required to set value\n"
+msgstr "el parámetro --option es necesario para establecer un valor\n"
+
+#: src/util/configuration_helper.c:262
+#, fuzzy, c-format
+msgid "failed to load configuration defaults"
+msgstr "Se produjo un fallo al cargar la configuración de %s\n"
+
 #: src/util/container_bloomfilter.c:553
 #, c-format
 msgid ""
@@ -8920,69 +8920,27 @@ msgstr ""
 msgid "run decoder modus, otherwise runs as encoder"
 msgstr ""
 
-#: src/util/gnunet-config.c:187
-#, c-format
-msgid "The following sections are available:\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:201
-#, fuzzy, c-format
-msgid "%s, %s or %s argument is required\n"
-msgstr "el parámetro --section es necesario\n"
-
-#: src/util/gnunet-config.c:266
-#, c-format
-msgid "--option argument required to set value\n"
-msgstr "el parámetro --option es necesario para establecer un valor\n"
-
-#: src/util/gnunet-config.c:309
-#, fuzzy, c-format
-msgid "failed to load configuration defaults"
-msgstr "Se produjo un fallo al cargar la configuración de %s\n"
-
-#: src/util/gnunet-config.c:354
+#: src/util/gnunet-config.c:139
 msgid "test if the current installation supports the specified BACKEND"
 msgstr ""
 
-#: src/util/gnunet-config.c:360
-#, fuzzy
-msgid "write the full configuration file, including default values"
+#: src/util/gnunet-config.c:145
+msgid ""
+"Provide an appropriate value for CFLAGS to applications building on top of "
+"GNUnet"
 msgstr ""
-"La configuración no especifica «%s», asumiendo el valor predeterminado."
 
-#: src/util/gnunet-config.c:365
-#, fuzzy
-msgid "interpret option value as a filename (with $-expansion)"
+#: src/util/gnunet-config.c:151
+msgid ""
+"Provide an appropriate value for LIBS to applications building on top of "
+"GNUnet"
 msgstr ""
-"obtener la opción del valor como un nombre de fichero (con expansión del $)"
 
-#: src/util/gnunet-config.c:370
-msgid "name of the option to access"
-msgstr "nombre de la opción a la que acceder"
-
-#: src/util/gnunet-config.c:376
-#, fuzzy
-msgid "rewrite the configuration file, even if nothing changed"
-msgstr "No se ha introducido ningún fichero de configuración. Saliendo\n"
-
-#: src/util/gnunet-config.c:382
-msgid "output extra diagnostics"
+#: src/util/gnunet-config.c:157
+msgid "Provide the path under which GNUnet was installed"
 msgstr ""
 
-#: src/util/gnunet-config.c:387
-#, fuzzy
-msgid "print available configuration sections"
-msgstr "Falta configuración sobre las opciones de claves.\n"
-
-#: src/util/gnunet-config.c:393
-msgid "name of the section to access"
-msgstr "nombre de la sección a la que acceder"
-
-#: src/util/gnunet-config.c:398
-msgid "value to set"
-msgstr "valor a establecer"
-
-#: src/util/gnunet-config.c:413
+#: src/util/gnunet-config.c:172
 msgid "Manipulate GNUnet configuration files"
 msgstr "Manipular ficheros de configuración de GNUnet"
 
@@ -9168,7 +9126,7 @@ msgstr ""
 "Se produjo un fallo al procesar el mensaje interno del programa auxiliar "
 "«%s»\n"
 
-#: src/util/helper.c:602
+#: src/util/helper.c:606
 #, c-format
 msgid "Error writing to `%s': %s\n"
 msgstr "Error escribiendo a «%s»: %s\n"
@@ -9210,33 +9168,38 @@ msgstr ""
 msgid "Initialization of plugin mechanism failed: %s!\n"
 msgstr "¡La inicialización del mecanismo de módulos falló: %s!\n"
 
-#: src/util/plugin.c:156
+#: src/util/plugin.c:162
 #, c-format
 msgid "`%s' failed to resolve method '%s' with error: %s\n"
 msgstr "«%s» falló al resolver el método «%s» con error: %s\n"
 
-#: src/util/plugin.c:234
+#: src/util/plugin.c:240
 #, c-format
 msgid "`%s' failed for library `%s' with error: %s\n"
 msgstr "Falló «%s» para la biblioteca «%s» con error: %s\n"
 
-#: src/util/plugin.c:414
+#: src/util/plugin.c:420
 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:252
+#: src/util/program.c:251
 #, fuzzy, c-format
-msgid "Unreadable or malformed configuration file `%s', exit ...\n"
+msgid "Unreadable configuration file `%s', exiting ...\n"
 msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
 
-#: src/util/program.c:272
+#: src/util/program.c:263
 #, fuzzy, c-format
-msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
+msgid "Malformed configuration file `%s', exiting ...\n"
 msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
 
-#: src/util/program.c:288
+#: src/util/program.c:278
+#, fuzzy, c-format
+msgid "Unreadable configuration file `%s'. Exiting ...\n"
+msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
+
+#: src/util/program.c:293
 #, fuzzy
-msgid "Unreadable or malformed configuration, exit ...\n"
+msgid "Malformed configuration. Exiting ...\n"
 msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
 
 #: src/util/regex.c:139
@@ -9578,32 +9541,75 @@ msgstr "Configurar túneles vía VPN."
 msgid "Failed to connect to the namestore!\n"
 msgstr "¡Se produjo un fallo al conectar con el almacén de nombres!\n"
 
-#, fuzzy, c-format
+#, fuzzy
+#~ msgid "Waiting for child to exit.\n"
+#~ msgstr "Esperando a los pares para conectar (%u ciclos restantes)...\n"
+
+#, fuzzy
+#~ msgid "Spawning process `%s'\n"
+#~ msgstr "Iniciando el proceso auxiliar (HELPER) «%s»\n"
+
+#, fuzzy
+#~ msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
+#~ msgstr "No se han cargado máquinas. Se necesita al menos una máquina.\n"
+
+#, fuzzy
+#~ msgid "write the full configuration file, including default values"
+#~ msgstr ""
+#~ "La configuración no especifica «%s», asumiendo el valor predeterminado."
+
+#, fuzzy
+#~ msgid "interpret option value as a filename (with $-expansion)"
+#~ msgstr ""
+#~ "obtener la opción del valor como un nombre de fichero (con expansión del "
+#~ "$)"
+
+#~ msgid "name of the option to access"
+#~ msgstr "nombre de la opción a la que acceder"
+
+#, fuzzy
+#~ msgid "rewrite the configuration file, even if nothing changed"
+#~ msgstr "No se ha introducido ningún fichero de configuración. Saliendo\n"
+
+#, fuzzy
+#~ msgid "print available configuration sections"
+#~ msgstr "Falta configuración sobre las opciones de claves.\n"
+
+#~ msgid "name of the section to access"
+#~ msgstr "nombre de la sección a la que acceder"
+
+#~ msgid "value to set"
+#~ msgstr "valor a establecer"
+
+#, fuzzy
+#~ msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
+#~ msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
+
+#, fuzzy
+#~ msgid "Unreadable or malformed configuration, exit ...\n"
+#~ msgstr "Se produjo un fallo al borrar el fichero de configuración %s\n"
+
+#, fuzzy
 #~ msgid "Start logging `%s'\n"
 #~ msgstr "Iniciando descarga «%s».\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Failed to connect master peer [%u] with slave [%u]\n"
 #~ msgstr "Fallo al conectar a gnunetd.\n"
 
 # form??
-#, c-format
 #~ msgid "Unsupported form value `%s'\n"
 #~ msgstr "Forma de valor no soportada «%s»\n"
 
-#, c-format
 #~ msgid "Found existing name `%s' for the given key\n"
 #~ msgstr "Encontrado nombre «%s» para la clave dada\n"
 
-#, c-format
 #~ msgid "Found %u existing records for domain `%s'\n"
 #~ msgstr "Encontrados %u registros para el dominio «%s»\n"
 
-#, c-format
 #~ msgid "Failed to create page for `%s'\n"
 #~ msgstr "Se produjo un fallo al crear la página para «%s»\n"
 
-#, c-format
 #~ msgid "Failed to setup post processor for `%s'\n"
 #~ msgstr "Se produjo un fallo al configurar el post-procesador para «%s»\n"
 
@@ -9613,7 +9619,6 @@ msgstr "¡Se produjo un fallo al conectar con el almacén 
de nombres!\n"
 #~ msgid "Domain name must not contain `+'\n"
 #~ msgstr "El nombre de dominio no puede contener «+»\n"
 
-#, c-format
 #~ msgid "Unable to parse PKEY record `%s'\n"
 #~ msgstr "No se pudo procesar el registro PKEY «%s»\n"
 
@@ -9647,11 +9652,9 @@ msgstr "¡Se produjo un fallo al conectar con el almacén 
de nombres!\n"
 #~ msgid "end of time"
 #~ msgstr "fin del plazo"
 
-#, c-format
 #~ msgid "Metadata `%s' failed to deserialize"
 #~ msgstr "Se produjo un fallo al deserializar los metadatos «%s»"
 
-#, c-format
 #~ msgid "Could not acquire lock on file `%s': %s...\n"
 #~ msgstr "No se pudo bloquear el fichero «%s»: %s...\n"
 
@@ -9663,7 +9666,6 @@ msgstr "¡Se produjo un fallo al conectar con el almacén 
de nombres!\n"
 #~ "Esto puede estar bien si alguien está actualmente generando una clave "
 #~ "privada.\n"
 
-#, c-format
 #~ msgid ""
 #~ "When trying to read key file `%s' I found %u bytes but I need at least "
 #~ "%u.\n"
diff --git a/po/fr.po b/po/fr.po
index 34f88c302..8415cfe37 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: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2021-08-28 16:52+0200\n"
+"POT-Creation-Date: 2021-10-15 10:46+0200\n"
 "PO-Revision-Date: 2015-12-24 01:20+0100\n"
 "Last-Translator: Stéphane  Aulery <lkppo@free.fr>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -2104,91 +2104,91 @@ msgstr ""
 msgid "# FIND PEER messages initiated"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:855
 msgid "# requests TTL-dropped"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1035
-#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1042
+#: src/dht/gnunet-service-dht_neighbours.c:1079
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1045
-#: src/dht/gnunet-service-dht_neighbours.c:1088
+#: src/dht/gnunet-service-dht_neighbours.c:1052
+#: src/dht/gnunet-service-dht_neighbours.c:1095
 msgid "# Peer selection failed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1246
+#: src/dht/gnunet-service-dht_neighbours.c:1253
 msgid "# PUT requests routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1280
+#: src/dht/gnunet-service-dht_neighbours.c:1287
 msgid "# PUT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1292
-#: src/dht/gnunet-service-dht_neighbours.c:1434
-#: src/dht/gnunet-service-dht_neighbours.c:1538
+#: src/dht/gnunet-service-dht_neighbours.c:1299
+#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1545
 msgid "# P2P messages dropped due to full queue"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1377
+#: src/dht/gnunet-service-dht_neighbours.c:1384
 msgid "# GET requests routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1421
+#: src/dht/gnunet-service-dht_neighbours.c:1428
 msgid "# GET messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1553
+#: src/dht/gnunet-service-dht_neighbours.c:1560
 msgid "# RESULT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1656
+#: src/dht/gnunet-service-dht_neighbours.c:1663
 msgid "# Expired PUTs discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1664
+#: src/dht/gnunet-service-dht_neighbours.c:1671
 msgid "# P2P PUT requests received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1668
+#: src/dht/gnunet-service-dht_neighbours.c:1675
 msgid "# P2P PUT bytes received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1900
+#: src/dht/gnunet-service-dht_neighbours.c:1907
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1909
+#: src/dht/gnunet-service-dht_neighbours.c:1916
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2072
+#: src/dht/gnunet-service-dht_neighbours.c:2079
 msgid "# P2P GET requests received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2076
+#: src/dht/gnunet-service-dht_neighbours.c:2083
 msgid "# P2P GET bytes received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2142
+#: src/dht/gnunet-service-dht_neighbours.c:2149
 msgid "# P2P FIND PEER requests processed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2163
+#: src/dht/gnunet-service-dht_neighbours.c:2170
 msgid "# P2P GET requests ONLY routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2341
+#: src/dht/gnunet-service-dht_neighbours.c:2348
 msgid "# Expired results discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2358
+#: src/dht/gnunet-service-dht_neighbours.c:2365
 msgid "# P2P RESULTS received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2362
+#: src/dht/gnunet-service-dht_neighbours.c:2369
 msgid "# P2P RESULT bytes received"
 msgstr ""
 
@@ -2228,7 +2228,7 @@ msgstr ""
 msgid "# DHT requests combined"
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:253
 #, c-format
 msgid "Exiting as the number of peers is %u\n"
 msgstr ""
@@ -2243,7 +2243,7 @@ msgid "number of PUTs to perform per peer"
 msgstr ""
 
 #: src/dht/gnunet_dht_profiler.c:967 src/nse/gnunet-nse-profiler.c:872
-#: src/testbed/gnunet-testbed-profiler.c:305
+#: src/testbed/gnunet-testbed-profiler.c:302
 msgid "name of the file with the login information for the testbed"
 msgstr ""
 
@@ -6366,7 +6366,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr ""
 
 #: src/testbed/generate-underlay-topology.c:366
-#: src/testbed/gnunet-testbed-profiler.c:284
+#: src/testbed/gnunet-testbed-profiler.c:282
 msgid "create COUNT number of peers"
 msgstr ""
 
@@ -6405,7 +6405,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:234 src/testing/list-keys.c:47
-#: src/testing/testing.c:278 src/util/gnunet-ecc.c:318
+#: src/testing/testing.c:289 src/util/gnunet-ecc.c:318
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr ""
@@ -6475,26 +6475,17 @@ msgstr ""
 msgid "%.s Unknown result code."
 msgstr "%.s Code d'erreur inconnu"
 
-#: src/testbed/gnunet-testbed-profiler.c:290
+#: src/testbed/gnunet-testbed-profiler.c:288
 msgid "tolerate COUNT number of continuous timeout failures"
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:295
+#: src/testbed/gnunet-testbed-profiler.c:293
 msgid ""
 "run profiler in non-interactive mode where upon testbed setup the profiler "
 "does not wait for a keystroke but continues to run until a termination "
 "signal is received"
 msgstr ""
 
-#: src/testbed/gnunet_testbed_mpi_spawn.c:119
-msgid "Waiting for child to exit.\n"
-msgstr ""
-
-#: src/testbed/gnunet_testbed_mpi_spawn.c:242
-#, c-format
-msgid "Spawning process `%s'\n"
-msgstr ""
-
 #: src/testbed/testbed_api.c:399
 #, c-format
 msgid "Adding host %u failed with error: %s\n"
@@ -6515,11 +6506,6 @@ msgstr ""
 msgid "Hosts file %s cannot be read\n"
 msgstr ""
 
-#: src/testbed/testbed_api_hosts.c:589
-#, c-format
-msgid "The function %s is only available when compiled with (--with-ll)\n"
-msgstr ""
-
 #: src/testbed/testbed_api_testbed.c:822
 msgid "Linking controllers failed. Exiting"
 msgstr ""
@@ -6550,43 +6536,39 @@ msgstr ""
 msgid "Shutting down testbed due to timeout while setup.\n"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1274
-msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
-msgstr ""
-
-#: src/testbed/testbed_api_testbed.c:1286
+#: src/testbed/testbed_api_testbed.c:1276
 msgid "No hosts loaded. Need at least one host\n"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1312
+#: src/testbed/testbed_api_testbed.c:1301
 msgid "Specified topology must be supported by testbed"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1368
+#: src/testbed/testbed_api_testbed.c:1357
 #, c-format
 msgid ""
 "Maximum number of edges a peer can have in a scale free topology cannot be "
 "more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1385
+#: src/testbed/testbed_api_testbed.c:1374
 #, c-format
 msgid ""
 "The number of edges that can established when adding a new node to scale "
 "free topology cannot be more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1033
+#: src/testbed/testbed_api_topology.c:1033 src/testing/testing.c:2320
 #, c-format
 msgid "Topology file %s not found\n"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1041
+#: src/testbed/testbed_api_topology.c:1041 src/testing/testing.c:2328
 #, c-format
 msgid "Topology file %s has no data\n"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1049
+#: src/testbed/testbed_api_topology.c:1049 src/testing/testing.c:2336
 #, c-format
 msgid "Topology file %s cannot be read\n"
 msgstr ""
@@ -6658,57 +6640,57 @@ msgstr ""
 msgid "list COUNT number of keys"
 msgstr ""
 
-#: src/testing/testing.c:261
+#: src/testing/testing.c:272
 #, c-format
 msgid "Hostkeys file not found: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:714
+#: src/testing/testing.c:725
 #, c-format
 msgid "Key number %u does not exist\n"
 msgstr ""
 
-#: src/testing/testing.c:1188
+#: src/testing/testing.c:1199
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
 "precompute more hostkeys first.\n"
 msgstr ""
 
-#: src/testing/testing.c:1197
+#: src/testing/testing.c:1208
 #, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr ""
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1218
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr ""
 
-#: src/testing/testing.c:1220
+#: src/testing/testing.c:1231
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr ""
 
-#: src/testing/testing.c:1236
+#: src/testing/testing.c:1247
 #, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1250
+#: src/testing/testing.c:1261
 #, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1278
+#: src/testing/testing.c:1289
 #, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1384
+#: src/testing/testing.c:1395
 #, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1683
+#: src/testing/testing.c:1694
 #, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr ""
@@ -6782,18 +6764,18 @@ msgstr ""
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:3317
-#: src/transport/gnunet-communicator-udp.c:3790
-#: src/transport/gnunet-service-tng.c:10223
+#: src/transport/gnunet-communicator-tcp.c:3329
+#: src/transport/gnunet-communicator-udp.c:3814
+#: src/transport/gnunet-service-tng.c:10388
 #: src/transport/gnunet-service-transport.c:2627
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:3655
+#: src/transport/gnunet-communicator-tcp.c:3671
 msgid "GNUnet TCP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-udp.c:3862
+#: src/transport/gnunet-communicator-udp.c:3889
 msgid "GNUnet UDP communicator"
 msgstr ""
 
@@ -7952,48 +7934,48 @@ msgstr ""
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr ""
 
-#: src/util/common_logging.c:1106
+#: src/util/common_logging.c:1108
 msgid "ERROR"
 msgstr "ERREUR"
 
-#: src/util/common_logging.c:1108
+#: src/util/common_logging.c:1110
 msgid "WARNING"
 msgstr "AVERTISSEMENT"
 
-#: src/util/common_logging.c:1110
+#: src/util/common_logging.c:1112
 msgid "MESSAGE"
 msgstr ""
 
-#: src/util/common_logging.c:1112
+#: src/util/common_logging.c:1114
 msgid "INFO"
 msgstr "INFO"
 
-#: src/util/common_logging.c:1114
+#: src/util/common_logging.c:1116
 msgid "DEBUG"
 msgstr "DEBUG"
 
-#: src/util/common_logging.c:1116
+#: src/util/common_logging.c:1118
 msgid "NONE"
 msgstr "AUCUN"
 
-#: src/util/common_logging.c:1117
+#: src/util/common_logging.c:1119
 msgid "INVALID"
 msgstr "INVALIDE"
 
-#: src/util/common_logging.c:1398
+#: src/util/common_logging.c:1400
 msgid "unknown address"
 msgstr "adresse inconnue"
 
-#: src/util/common_logging.c:1443
+#: src/util/common_logging.c:1445
 msgid "invalid address"
 msgstr "adresse invalide"
 
-#: src/util/common_logging.c:1462
+#: src/util/common_logging.c:1464
 #, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr ""
 
-#: src/util/common_logging.c:1485
+#: src/util/common_logging.c:1487
 #, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8067,6 +8049,26 @@ msgid ""
 "as an environmental variable\n"
 msgstr ""
 
+#: src/util/configuration_helper.c:133
+#, c-format
+msgid "The following sections are available:\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:147
+#, c-format
+msgid "%s, %s or %s argument is required\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:218
+#, c-format
+msgid "--option argument required to set value\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:262
+#, fuzzy, c-format
+msgid "failed to load configuration defaults"
+msgstr "fornat invalide : « %s »\n"
+
 #: src/util/container_bloomfilter.c:553
 #, c-format
 msgid ""
@@ -8288,64 +8290,27 @@ msgstr ""
 msgid "run decoder modus, otherwise runs as encoder"
 msgstr ""
 
-#: src/util/gnunet-config.c:187
-#, c-format
-msgid "The following sections are available:\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:201
-#, c-format
-msgid "%s, %s or %s argument is required\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:266
-#, c-format
-msgid "--option argument required to set value\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:309
-#, fuzzy, c-format
-msgid "failed to load configuration defaults"
-msgstr "fornat invalide : « %s »\n"
-
-#: src/util/gnunet-config.c:354
+#: src/util/gnunet-config.c:139
 msgid "test if the current installation supports the specified BACKEND"
 msgstr ""
 
-#: src/util/gnunet-config.c:360
-#, fuzzy
-msgid "write the full configuration file, including default values"
-msgstr "fornat invalide : « %s »\n"
-
-#: src/util/gnunet-config.c:365
-msgid "interpret option value as a filename (with $-expansion)"
-msgstr ""
-
-#: src/util/gnunet-config.c:370
-msgid "name of the option to access"
-msgstr ""
-
-#: src/util/gnunet-config.c:376
-msgid "rewrite the configuration file, even if nothing changed"
-msgstr ""
-
-#: src/util/gnunet-config.c:382
-msgid "output extra diagnostics"
-msgstr ""
-
-#: src/util/gnunet-config.c:387
-msgid "print available configuration sections"
+#: src/util/gnunet-config.c:145
+msgid ""
+"Provide an appropriate value for CFLAGS to applications building on top of "
+"GNUnet"
 msgstr ""
 
-#: src/util/gnunet-config.c:393
-msgid "name of the section to access"
+#: src/util/gnunet-config.c:151
+msgid ""
+"Provide an appropriate value for LIBS to applications building on top of "
+"GNUnet"
 msgstr ""
 
-#: src/util/gnunet-config.c:398
-msgid "value to set"
+#: src/util/gnunet-config.c:157
+msgid "Provide the path under which GNUnet was installed"
 msgstr ""
 
-#: src/util/gnunet-config.c:413
+#: src/util/gnunet-config.c:172
 msgid "Manipulate GNUnet configuration files"
 msgstr ""
 
@@ -8525,7 +8490,7 @@ msgstr ""
 msgid "Failed to parse inbound message from helper `%s'\n"
 msgstr ""
 
-#: src/util/helper.c:602
+#: src/util/helper.c:606
 #, c-format
 msgid "Error writing to `%s': %s\n"
 msgstr ""
@@ -8563,33 +8528,38 @@ msgstr ""
 msgid "Initialization of plugin mechanism failed: %s!\n"
 msgstr ""
 
-#: src/util/plugin.c:156
+#: src/util/plugin.c:162
 #, c-format
 msgid "`%s' failed to resolve method '%s' with error: %s\n"
 msgstr ""
 
-#: src/util/plugin.c:234
+#: src/util/plugin.c:240
 #, c-format
 msgid "`%s' failed for library `%s' with error: %s\n"
 msgstr ""
 
-#: src/util/plugin.c:414
+#: src/util/plugin.c:420
 msgid "Could not determine plugin installation path.\n"
 msgstr ""
 
-#: src/util/program.c:252
+#: src/util/program.c:251
 #, fuzzy, c-format
-msgid "Unreadable or malformed configuration file `%s', exit ...\n"
+msgid "Unreadable configuration file `%s', exiting ...\n"
 msgstr "fornat invalide : « %s »\n"
 
-#: src/util/program.c:272
-#, c-format
-msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
-msgstr ""
+#: src/util/program.c:263
+#, fuzzy, c-format
+msgid "Malformed configuration file `%s', exiting ...\n"
+msgstr "fornat invalide : « %s »\n"
 
-#: src/util/program.c:288
+#: src/util/program.c:278
+#, fuzzy, c-format
+msgid "Unreadable configuration file `%s'. Exiting ...\n"
+msgstr "fornat invalide : « %s »\n"
+
+#: src/util/program.c:293
 #, fuzzy
-msgid "Unreadable or malformed configuration, exit ...\n"
+msgid "Malformed configuration. Exiting ...\n"
 msgstr "fornat invalide : « %s »\n"
 
 #: src/util/regex.c:139
@@ -8902,10 +8872,13 @@ msgstr "Configurer des tunnels via VPN."
 msgid "Failed to connect to the namestore!\n"
 msgstr ""
 
+#, fuzzy
+#~ msgid "write the full configuration file, including default values"
+#~ msgstr "fornat invalide : « %s »\n"
+
 #~ msgid "Stop logging\n"
 #~ msgstr "Arrêter la journalisation\n"
 
-#, c-format
 #~ msgid "Start logging `%s'\n"
 #~ msgstr "Démarrer la journalisation « %s »\n"
 
diff --git a/po/it.po b/po/it.po
index f82aaa49b..3aea1cf32 100644
--- a/po/it.po
+++ b/po/it.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet 0.10.1\n"
 "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2021-08-28 16:52+0200\n"
+"POT-Creation-Date: 2021-10-15 10:46+0200\n"
 "PO-Revision-Date: 2019-10-16 11:00+0200\n"
 "Last-Translator: Sebastiano Pistore <sebastianopistore.info@protonmail.ch>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
@@ -2110,91 +2110,91 @@ msgstr ""
 msgid "# FIND PEER messages initiated"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:855
 msgid "# requests TTL-dropped"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1035
-#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1042
+#: src/dht/gnunet-service-dht_neighbours.c:1079
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1045
-#: src/dht/gnunet-service-dht_neighbours.c:1088
+#: src/dht/gnunet-service-dht_neighbours.c:1052
+#: src/dht/gnunet-service-dht_neighbours.c:1095
 msgid "# Peer selection failed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1246
+#: src/dht/gnunet-service-dht_neighbours.c:1253
 msgid "# PUT requests routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1280
+#: src/dht/gnunet-service-dht_neighbours.c:1287
 msgid "# PUT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1292
-#: src/dht/gnunet-service-dht_neighbours.c:1434
-#: src/dht/gnunet-service-dht_neighbours.c:1538
+#: src/dht/gnunet-service-dht_neighbours.c:1299
+#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1545
 msgid "# P2P messages dropped due to full queue"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1377
+#: src/dht/gnunet-service-dht_neighbours.c:1384
 msgid "# GET requests routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1421
+#: src/dht/gnunet-service-dht_neighbours.c:1428
 msgid "# GET messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1553
+#: src/dht/gnunet-service-dht_neighbours.c:1560
 msgid "# RESULT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1656
+#: src/dht/gnunet-service-dht_neighbours.c:1663
 msgid "# Expired PUTs discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1664
+#: src/dht/gnunet-service-dht_neighbours.c:1671
 msgid "# P2P PUT requests received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1668
+#: src/dht/gnunet-service-dht_neighbours.c:1675
 msgid "# P2P PUT bytes received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1900
+#: src/dht/gnunet-service-dht_neighbours.c:1907
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1909
+#: src/dht/gnunet-service-dht_neighbours.c:1916
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2072
+#: src/dht/gnunet-service-dht_neighbours.c:2079
 msgid "# P2P GET requests received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2076
+#: src/dht/gnunet-service-dht_neighbours.c:2083
 msgid "# P2P GET bytes received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2142
+#: src/dht/gnunet-service-dht_neighbours.c:2149
 msgid "# P2P FIND PEER requests processed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2163
+#: src/dht/gnunet-service-dht_neighbours.c:2170
 msgid "# P2P GET requests ONLY routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2341
+#: src/dht/gnunet-service-dht_neighbours.c:2348
 msgid "# Expired results discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2358
+#: src/dht/gnunet-service-dht_neighbours.c:2365
 msgid "# P2P RESULTS received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2362
+#: src/dht/gnunet-service-dht_neighbours.c:2369
 msgid "# P2P RESULT bytes received"
 msgstr ""
 
@@ -2234,7 +2234,7 @@ msgstr ""
 msgid "# DHT requests combined"
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:253
 #, c-format
 msgid "Exiting as the number of peers is %u\n"
 msgstr ""
@@ -2248,7 +2248,7 @@ msgid "number of PUTs to perform per peer"
 msgstr ""
 
 #: src/dht/gnunet_dht_profiler.c:967 src/nse/gnunet-nse-profiler.c:872
-#: src/testbed/gnunet-testbed-profiler.c:305
+#: src/testbed/gnunet-testbed-profiler.c:302
 msgid "name of the file with the login information for the testbed"
 msgstr ""
 
@@ -6392,7 +6392,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr ""
 
 #: src/testbed/generate-underlay-topology.c:366
-#: src/testbed/gnunet-testbed-profiler.c:284
+#: src/testbed/gnunet-testbed-profiler.c:282
 msgid "create COUNT number of peers"
 msgstr ""
 
@@ -6431,7 +6431,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:234 src/testing/list-keys.c:47
-#: src/testing/testing.c:278 src/util/gnunet-ecc.c:318
+#: src/testing/testing.c:289 src/util/gnunet-ecc.c:318
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr ""
@@ -6501,26 +6501,17 @@ msgstr ""
 msgid "%.s Unknown result code."
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:290
+#: src/testbed/gnunet-testbed-profiler.c:288
 msgid "tolerate COUNT number of continuous timeout failures"
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:295
+#: src/testbed/gnunet-testbed-profiler.c:293
 msgid ""
 "run profiler in non-interactive mode where upon testbed setup the profiler "
 "does not wait for a keystroke but continues to run until a termination "
 "signal is received"
 msgstr ""
 
-#: src/testbed/gnunet_testbed_mpi_spawn.c:119
-msgid "Waiting for child to exit.\n"
-msgstr ""
-
-#: src/testbed/gnunet_testbed_mpi_spawn.c:242
-#, c-format
-msgid "Spawning process `%s'\n"
-msgstr ""
-
 #: src/testbed/testbed_api.c:399
 #, c-format
 msgid "Adding host %u failed with error: %s\n"
@@ -6541,11 +6532,6 @@ msgstr ""
 msgid "Hosts file %s cannot be read\n"
 msgstr ""
 
-#: src/testbed/testbed_api_hosts.c:589
-#, c-format
-msgid "The function %s is only available when compiled with (--with-ll)\n"
-msgstr ""
-
 #: src/testbed/testbed_api_testbed.c:822
 msgid "Linking controllers failed. Exiting"
 msgstr ""
@@ -6576,43 +6562,39 @@ msgstr ""
 msgid "Shutting down testbed due to timeout while setup.\n"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1274
-msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
-msgstr ""
-
-#: src/testbed/testbed_api_testbed.c:1286
+#: src/testbed/testbed_api_testbed.c:1276
 msgid "No hosts loaded. Need at least one host\n"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1312
+#: src/testbed/testbed_api_testbed.c:1301
 msgid "Specified topology must be supported by testbed"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1368
+#: src/testbed/testbed_api_testbed.c:1357
 #, c-format
 msgid ""
 "Maximum number of edges a peer can have in a scale free topology cannot be "
 "more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1385
+#: src/testbed/testbed_api_testbed.c:1374
 #, c-format
 msgid ""
 "The number of edges that can established when adding a new node to scale "
 "free topology cannot be more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1033
+#: src/testbed/testbed_api_topology.c:1033 src/testing/testing.c:2320
 #, c-format
 msgid "Topology file %s not found\n"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1041
+#: src/testbed/testbed_api_topology.c:1041 src/testing/testing.c:2328
 #, c-format
 msgid "Topology file %s has no data\n"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1049
+#: src/testbed/testbed_api_topology.c:1049 src/testing/testing.c:2336
 #, c-format
 msgid "Topology file %s cannot be read\n"
 msgstr ""
@@ -6684,57 +6666,57 @@ msgstr ""
 msgid "list COUNT number of keys"
 msgstr ""
 
-#: src/testing/testing.c:261
+#: src/testing/testing.c:272
 #, c-format
 msgid "Hostkeys file not found: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:714
+#: src/testing/testing.c:725
 #, c-format
 msgid "Key number %u does not exist\n"
 msgstr ""
 
-#: src/testing/testing.c:1188
+#: src/testing/testing.c:1199
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
 "precompute more hostkeys first.\n"
 msgstr ""
 
-#: src/testing/testing.c:1197
+#: src/testing/testing.c:1208
 #, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr ""
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1218
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr ""
 
-#: src/testing/testing.c:1220
+#: src/testing/testing.c:1231
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr ""
 
-#: src/testing/testing.c:1236
+#: src/testing/testing.c:1247
 #, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1250
+#: src/testing/testing.c:1261
 #, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1278
+#: src/testing/testing.c:1289
 #, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1384
+#: src/testing/testing.c:1395
 #, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr ""
 
-#: src/testing/testing.c:1683
+#: src/testing/testing.c:1694
 #, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr ""
@@ -6808,18 +6790,18 @@ msgstr ""
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:3317
-#: src/transport/gnunet-communicator-udp.c:3790
-#: src/transport/gnunet-service-tng.c:10223
+#: src/transport/gnunet-communicator-tcp.c:3329
+#: src/transport/gnunet-communicator-udp.c:3814
+#: src/transport/gnunet-service-tng.c:10388
 #: src/transport/gnunet-service-transport.c:2627
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:3655
+#: src/transport/gnunet-communicator-tcp.c:3671
 msgid "GNUnet TCP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-udp.c:3862
+#: src/transport/gnunet-communicator-udp.c:3889
 msgid "GNUnet UDP communicator"
 msgstr ""
 
@@ -8000,48 +7982,48 @@ msgstr ""
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr ""
 
-#: src/util/common_logging.c:1106
+#: src/util/common_logging.c:1108
 msgid "ERROR"
 msgstr "ERRORE"
 
-#: src/util/common_logging.c:1108
+#: src/util/common_logging.c:1110
 msgid "WARNING"
 msgstr "ATTENZIONE"
 
-#: src/util/common_logging.c:1110
+#: src/util/common_logging.c:1112
 msgid "MESSAGE"
 msgstr ""
 
-#: src/util/common_logging.c:1112
+#: src/util/common_logging.c:1114
 msgid "INFO"
 msgstr "INFO"
 
-#: src/util/common_logging.c:1114
+#: src/util/common_logging.c:1116
 msgid "DEBUG"
 msgstr "DEBUG"
 
-#: src/util/common_logging.c:1116
+#: src/util/common_logging.c:1118
 msgid "NONE"
 msgstr "NESSUNA"
 
-#: src/util/common_logging.c:1117
+#: src/util/common_logging.c:1119
 msgid "INVALID"
 msgstr "NON VALIDO"
 
-#: src/util/common_logging.c:1398
+#: src/util/common_logging.c:1400
 msgid "unknown address"
 msgstr "indirizzo sconosciuto"
 
-#: src/util/common_logging.c:1443
+#: src/util/common_logging.c:1445
 msgid "invalid address"
 msgstr "indirizzo non valido"
 
-#: src/util/common_logging.c:1462
+#: src/util/common_logging.c:1464
 #, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr ""
 
-#: src/util/common_logging.c:1485
+#: src/util/common_logging.c:1487
 #, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8115,6 +8097,26 @@ msgid ""
 "as an environmental variable\n"
 msgstr ""
 
+#: src/util/configuration_helper.c:133
+#, c-format
+msgid "The following sections are available:\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:147
+#, c-format
+msgid "%s, %s or %s argument is required\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:218
+#, c-format
+msgid "--option argument required to set value\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:262
+#, c-format
+msgid "failed to load configuration defaults"
+msgstr ""
+
 #: src/util/container_bloomfilter.c:553
 #, c-format
 msgid ""
@@ -8335,63 +8337,27 @@ msgstr ""
 msgid "run decoder modus, otherwise runs as encoder"
 msgstr ""
 
-#: src/util/gnunet-config.c:187
-#, c-format
-msgid "The following sections are available:\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:201
-#, c-format
-msgid "%s, %s or %s argument is required\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:266
-#, c-format
-msgid "--option argument required to set value\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:309
-#, c-format
-msgid "failed to load configuration defaults"
-msgstr ""
-
-#: src/util/gnunet-config.c:354
+#: src/util/gnunet-config.c:139
 msgid "test if the current installation supports the specified BACKEND"
 msgstr ""
 
-#: src/util/gnunet-config.c:360
-msgid "write the full configuration file, including default values"
-msgstr ""
-
-#: src/util/gnunet-config.c:365
-msgid "interpret option value as a filename (with $-expansion)"
-msgstr ""
-
-#: src/util/gnunet-config.c:370
-msgid "name of the option to access"
-msgstr ""
-
-#: src/util/gnunet-config.c:376
-msgid "rewrite the configuration file, even if nothing changed"
-msgstr ""
-
-#: src/util/gnunet-config.c:382
-msgid "output extra diagnostics"
-msgstr ""
-
-#: src/util/gnunet-config.c:387
-msgid "print available configuration sections"
+#: src/util/gnunet-config.c:145
+msgid ""
+"Provide an appropriate value for CFLAGS to applications building on top of "
+"GNUnet"
 msgstr ""
 
-#: src/util/gnunet-config.c:393
-msgid "name of the section to access"
+#: src/util/gnunet-config.c:151
+msgid ""
+"Provide an appropriate value for LIBS to applications building on top of "
+"GNUnet"
 msgstr ""
 
-#: src/util/gnunet-config.c:398
-msgid "value to set"
+#: src/util/gnunet-config.c:157
+msgid "Provide the path under which GNUnet was installed"
 msgstr ""
 
-#: src/util/gnunet-config.c:413
+#: src/util/gnunet-config.c:172
 msgid "Manipulate GNUnet configuration files"
 msgstr ""
 
@@ -8571,7 +8537,7 @@ msgstr "Errore di lettura da '%s': %s\n"
 msgid "Failed to parse inbound message from helper `%s'\n"
 msgstr ""
 
-#: src/util/helper.c:602
+#: src/util/helper.c:606
 #, c-format
 msgid "Error writing to `%s': %s\n"
 msgstr ""
@@ -8609,33 +8575,39 @@ msgstr ""
 msgid "Initialization of plugin mechanism failed: %s!\n"
 msgstr ""
 
-#: src/util/plugin.c:156
+#: src/util/plugin.c:162
 #, c-format
 msgid "`%s' failed to resolve method '%s' with error: %s\n"
 msgstr ""
 
-#: src/util/plugin.c:234
+#: src/util/plugin.c:240
 #, c-format
 msgid "`%s' failed for library `%s' with error: %s\n"
 msgstr ""
 
-#: src/util/plugin.c:414
+#: src/util/plugin.c:420
 msgid "Could not determine plugin installation path.\n"
 msgstr ""
 
-#: src/util/program.c:252
-#, c-format
-msgid "Unreadable or malformed configuration file `%s', exit ...\n"
-msgstr ""
+#: src/util/program.c:251
+#, fuzzy, c-format
+msgid "Unreadable configuration file `%s', exiting ...\n"
+msgstr "Impossibile avviare il servizio ' %s'\n"
 
-#: src/util/program.c:272
-#, c-format
-msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
-msgstr ""
+#: src/util/program.c:263
+#, fuzzy, c-format
+msgid "Malformed configuration file `%s', exiting ...\n"
+msgstr "Impossibile avviare il servizio ' %s'\n"
 
-#: src/util/program.c:288
-msgid "Unreadable or malformed configuration, exit ...\n"
-msgstr ""
+#: src/util/program.c:278
+#, fuzzy, c-format
+msgid "Unreadable configuration file `%s'. Exiting ...\n"
+msgstr "Impossibile avviare il servizio ' %s'\n"
+
+#: src/util/program.c:293
+#, fuzzy
+msgid "Malformed configuration. Exiting ...\n"
+msgstr "Impossibile avviare il servizio ' %s'\n"
 
 #: src/util/regex.c:139
 #, c-format
diff --git a/po/sr.po b/po/sr.po
index 0306e08de..2599a0289 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: gnunet-0.10.1\n"
 "Report-Msgid-Bugs-To: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2021-08-28 16:52+0200\n"
+"POT-Creation-Date: 2021-10-15 10:46+0200\n"
 "PO-Revision-Date: 2020-10-23 18:39+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
@@ -2189,93 +2189,93 @@ msgstr "# „HELLO“-и су добијени из података парња
 msgid "# FIND PEER messages initiated"
 msgstr "# НАЂИ ПАРЊАКА поруке су покренуте"
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:855
 msgid "# requests TTL-dropped"
 msgstr "# захтеви ТТЛ су одбачени"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1035
-#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1042
+#: src/dht/gnunet-service-dht_neighbours.c:1079
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr "# Парњаци су изузети из рутирања због Блумфилтера"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1045
-#: src/dht/gnunet-service-dht_neighbours.c:1088
+#: src/dht/gnunet-service-dht_neighbours.c:1052
+#: src/dht/gnunet-service-dht_neighbours.c:1095
 msgid "# Peer selection failed"
 msgstr "# Бирање парњака није успело"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1246
+#: src/dht/gnunet-service-dht_neighbours.c:1253
 msgid "# PUT requests routed"
 msgstr "# захтеви СТАВИ су рутирани"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1280
+#: src/dht/gnunet-service-dht_neighbours.c:1287
 msgid "# PUT messages queued for transmission"
 msgstr "# СТАВИ поруке су у реду за пренос"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1292
-#: src/dht/gnunet-service-dht_neighbours.c:1434
-#: src/dht/gnunet-service-dht_neighbours.c:1538
+#: src/dht/gnunet-service-dht_neighbours.c:1299
+#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1545
 msgid "# P2P messages dropped due to full queue"
 msgstr "# П2П поруке су одбачене због пуног реда"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1377
+#: src/dht/gnunet-service-dht_neighbours.c:1384
 msgid "# GET requests routed"
 msgstr "# захтеви ДОБАВИ су рутирани"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1421
+#: src/dht/gnunet-service-dht_neighbours.c:1428
 msgid "# GET messages queued for transmission"
 msgstr "# ДОБАВИ поруке су у реду за пренос"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1553
+#: src/dht/gnunet-service-dht_neighbours.c:1560
 msgid "# RESULT messages queued for transmission"
 msgstr "# РЕЗУЛТАТ поруке су у реду за пренос"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1656
+#: src/dht/gnunet-service-dht_neighbours.c:1663
 #, fuzzy
 msgid "# Expired PUTs discarded"
 msgstr "# небитни одговори су одбачени"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1664
+#: src/dht/gnunet-service-dht_neighbours.c:1671
 msgid "# P2P PUT requests received"
 msgstr "# захтеви П2П СТАВИ су примљени"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1668
+#: src/dht/gnunet-service-dht_neighbours.c:1675
 msgid "# P2P PUT bytes received"
 msgstr "# бајтови П2П СТАВИ су примљени"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1900
+#: src/dht/gnunet-service-dht_neighbours.c:1907
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr "# захтеви НАЂИ ПАРЊАКА су занемарени због Блумфилтера"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1909
+#: src/dht/gnunet-service-dht_neighbours.c:1916
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr "# захтеви НАЂИ ПАРЊАКА су занемарени због недостатка „HELLO“-а"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2072
+#: src/dht/gnunet-service-dht_neighbours.c:2079
 msgid "# P2P GET requests received"
 msgstr "# захтеви П2П ДОБАВИ су примљени"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2076
+#: src/dht/gnunet-service-dht_neighbours.c:2083
 msgid "# P2P GET bytes received"
 msgstr "# бајтови П2П ДОБАВИ су примљени"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2142
+#: src/dht/gnunet-service-dht_neighbours.c:2149
 msgid "# P2P FIND PEER requests processed"
 msgstr "# захтеви П2П НАЂИ ПАРЊАКА су обрађени"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2163
+#: src/dht/gnunet-service-dht_neighbours.c:2170
 msgid "# P2P GET requests ONLY routed"
 msgstr "# захтеви П2П ДОБАВИ су САМО рутирани"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2341
+#: src/dht/gnunet-service-dht_neighbours.c:2348
 #, fuzzy
 msgid "# Expired results discarded"
 msgstr "# небитни одговори су одбачени"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2358
+#: src/dht/gnunet-service-dht_neighbours.c:2365
 msgid "# P2P RESULTS received"
 msgstr "# П2П РЕЗУЛТАТИ су примљени"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2362
+#: src/dht/gnunet-service-dht_neighbours.c:2369
 msgid "# P2P RESULT bytes received"
 msgstr "# бајтови П2П РЕЗУЛТАТ су примљени"
 
@@ -2315,7 +2315,7 @@ msgstr "# Уноси су додати у табелу рутирања"
 msgid "# DHT requests combined"
 msgstr "# ДХТ захтеви су комбиновани"
 
-#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:253
 #, c-format
 msgid "Exiting as the number of peers is %u\n"
 msgstr "Излазим јер је број парњака %u\n"
@@ -2331,7 +2331,7 @@ msgid "number of PUTs to perform per peer"
 msgstr "број битова за тражење доказивања о раду"
 
 #: src/dht/gnunet_dht_profiler.c:967 src/nse/gnunet-nse-profiler.c:872
-#: src/testbed/gnunet-testbed-profiler.c:305
+#: src/testbed/gnunet-testbed-profiler.c:302
 msgid "name of the file with the login information for the testbed"
 msgstr "назив датотеке са подацима пријављивања за пробно место"
 
@@ -6633,7 +6633,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr "Неисправан аргумент „%s“; очекујем цео број без знака\n"
 
 #: src/testbed/generate-underlay-topology.c:366
-#: src/testbed/gnunet-testbed-profiler.c:284
+#: src/testbed/gnunet-testbed-profiler.c:282
 msgid "create COUNT number of peers"
 msgstr "ствара УКУПНОСТ број парњака"
 
@@ -6695,7 +6695,7 @@ msgstr ""
 "места"
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:234 src/testing/list-keys.c:47
-#: src/testing/testing.c:278 src/util/gnunet-ecc.c:318
+#: src/testing/testing.c:289 src/util/gnunet-ecc.c:318
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr "Нетачан формат датотеке кључа домаћина: %s\n"
@@ -6767,12 +6767,12 @@ msgstr "„%s“ услуга се не може покренути јер се
 msgid "%.s Unknown result code."
 msgstr "%.s Непознат код резултата."
 
-#: src/testbed/gnunet-testbed-profiler.c:290
+#: src/testbed/gnunet-testbed-profiler.c:288
 #, fuzzy
 msgid "tolerate COUNT number of continuous timeout failures"
 msgstr "толерише УКУПНО број непрекидних неуспеха истека времена"
 
-#: src/testbed/gnunet-testbed-profiler.c:295
+#: src/testbed/gnunet-testbed-profiler.c:293
 msgid ""
 "run profiler in non-interactive mode where upon testbed setup the profiler "
 "does not wait for a keystroke but continues to run until a termination "
@@ -6782,15 +6782,6 @@ msgstr ""
 "профајлер не чека на притисак тастера већ наставља да ради све док се не "
 "прими сигнал окончања"
 
-#: src/testbed/gnunet_testbed_mpi_spawn.c:119
-msgid "Waiting for child to exit.\n"
-msgstr "Чекам на пород да изађе.\n"
-
-#: src/testbed/gnunet_testbed_mpi_spawn.c:242
-#, c-format
-msgid "Spawning process `%s'\n"
-msgstr "Умножавам процес „%s“\n"
-
 #: src/testbed/testbed_api.c:399
 #, c-format
 msgid "Adding host %u failed with error: %s\n"
@@ -6811,11 +6802,6 @@ msgstr "Датотека домаћина „%s“ нема података\n"
 msgid "Hosts file %s cannot be read\n"
 msgstr "Не могу да прочитам датотеку домаћина „%s“\n"
 
-#: src/testbed/testbed_api_hosts.c:589
-#, c-format
-msgid "The function %s is only available when compiled with (--with-ll)\n"
-msgstr "Функција „%s“ је доступна само када је преведена са (--with-ll)\n"
-
 #: src/testbed/testbed_api_testbed.c:822
 msgid "Linking controllers failed. Exiting"
 msgstr "Повезивање контролера није успело. Излазим"
@@ -6846,21 +6832,15 @@ msgstr "Не могу да покренем главног контролора"
 msgid "Shutting down testbed due to timeout while setup.\n"
 msgstr "Гасим пробно место због истека времена приликом подешавања.\n"
 
-#: src/testbed/testbed_api_testbed.c:1274
-msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
-msgstr ""
-"Ниједан домаћин није учитан из „LoadLeveler“-а. Потребан је барем један "
-"домаћин\n"
-
-#: src/testbed/testbed_api_testbed.c:1286
+#: src/testbed/testbed_api_testbed.c:1276
 msgid "No hosts loaded. Need at least one host\n"
 msgstr "Ниједан домаћин није учитан. Потребан је барем један домаћин\n"
 
-#: src/testbed/testbed_api_testbed.c:1312
+#: src/testbed/testbed_api_testbed.c:1301
 msgid "Specified topology must be supported by testbed"
 msgstr "Наведени размештај мора бити подржан пробним местом"
 
-#: src/testbed/testbed_api_testbed.c:1368
+#: src/testbed/testbed_api_testbed.c:1357
 #, c-format
 msgid ""
 "Maximum number of edges a peer can have in a scale free topology cannot be "
@@ -6869,7 +6849,7 @@ msgstr ""
 "Највећи број ивица које парњак може имати у слободном размештају лествице не "
 "може бити већи од %u.  Дато је „%s = %llu“"
 
-#: src/testbed/testbed_api_testbed.c:1385
+#: src/testbed/testbed_api_testbed.c:1374
 #, c-format
 msgid ""
 "The number of edges that can established when adding a new node to scale "
@@ -6878,17 +6858,17 @@ msgstr ""
 "Број ивица које се могу успоставити приликом додавања новог чвора у "
 "слободном размештају лествице не може бити већи од %u.  Дато је „%s = %llu“"
 
-#: src/testbed/testbed_api_topology.c:1033
+#: src/testbed/testbed_api_topology.c:1033 src/testing/testing.c:2320
 #, c-format
 msgid "Topology file %s not found\n"
 msgstr "Нисам нашао датотеку размештаја „%s“\n"
 
-#: src/testbed/testbed_api_topology.c:1041
+#: src/testbed/testbed_api_topology.c:1041 src/testing/testing.c:2328
 #, c-format
 msgid "Topology file %s has no data\n"
 msgstr "Датотека размештаја „%s“ нема података\n"
 
-#: src/testbed/testbed_api_topology.c:1049
+#: src/testbed/testbed_api_topology.c:1049 src/testing/testing.c:2336
 #, c-format
 msgid "Topology file %s cannot be read\n"
 msgstr "Не могу да прочитам датотеку размештаја „%s“\n"
@@ -6967,17 +6947,17 @@ msgstr "Алат линије наредби за приезуп библиот
 msgid "list COUNT number of keys"
 msgstr "исписује УКУПНОСТ број парњака"
 
-#: src/testing/testing.c:261
+#: src/testing/testing.c:272
 #, c-format
 msgid "Hostkeys file not found: %s\n"
 msgstr "Нисам нашао датотеку кључева домаћина: %s\n"
 
-#: src/testing/testing.c:714
+#: src/testing/testing.c:725
 #, c-format
 msgid "Key number %u does not exist\n"
 msgstr "Број кључа %u не постоји\n"
 
-#: src/testing/testing.c:1188
+#: src/testing/testing.c:1199
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
@@ -6986,42 +6966,42 @@ msgstr ""
 "Покушали сте да направите пробно место са више од %u домаћина.  Прво пре "
 "свега израчунајте више кључева домаћина.\n"
 
-#: src/testing/testing.c:1197
+#: src/testing/testing.c:1208
 #, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr "Нисам успео да покренем кључ домаћина за парњака %u\n"
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1218
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr "опција „PRIVATE_KEY“ у одељку „PEER“ недостаје у подешавањима\n"
 
-#: src/testing/testing.c:1220
+#: src/testing/testing.c:1231
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr ""
 "Нисам успео да направим подешавање за парњака (нема довољно слободних "
 "прикључника?)\n"
 
-#: src/testing/testing.c:1236
+#: src/testing/testing.c:1247
 #, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr "Не могу да отворим датотеку кључа домаћина „%s“: %s\n"
 
-#: src/testing/testing.c:1250
+#: src/testing/testing.c:1261
 #, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr "Нисам успео да запишем датотеку кључа домаћина за парњака %u: %s\n"
 
-#: src/testing/testing.c:1278
+#: src/testing/testing.c:1289
 #, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr "Нисам успео да запишем датотеку подешавања „%s“ за парњака %u: %s\n"
 
-#: src/testing/testing.c:1384
+#: src/testing/testing.c:1395
 #, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr "Нисам успео да покренем „%s“: %s\n"
 
-#: src/testing/testing.c:1683
+#: src/testing/testing.c:1694
 #, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr "Нисам успео да учитам подешавање за „%s“\n"
@@ -7101,18 +7081,18 @@ msgstr "# „HELLO“ поруке су примљене"
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:3317
-#: src/transport/gnunet-communicator-udp.c:3790
-#: src/transport/gnunet-service-tng.c:10223
+#: src/transport/gnunet-communicator-tcp.c:3329
+#: src/transport/gnunet-communicator-udp.c:3814
+#: src/transport/gnunet-service-tng.c:10388
 #: src/transport/gnunet-service-transport.c:2627
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr "Услузи преноса недостају поставке подешавања кључа. Излазим.\n"
 
-#: src/transport/gnunet-communicator-tcp.c:3655
+#: src/transport/gnunet-communicator-tcp.c:3671
 msgid "GNUnet TCP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-udp.c:3862
+#: src/transport/gnunet-communicator-udp.c:3889
 msgid "GNUnet UDP communicator"
 msgstr ""
 
@@ -8351,48 +8331,48 @@ msgstr ""
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr "Порука „%.*s“ је поновљена %u пута у прошлости %s\n"
 
-#: src/util/common_logging.c:1106
+#: src/util/common_logging.c:1108
 msgid "ERROR"
 msgstr "ГРЕШКА"
 
-#: src/util/common_logging.c:1108
+#: src/util/common_logging.c:1110
 msgid "WARNING"
 msgstr "УПОЗОРЕЊЕ"
 
-#: src/util/common_logging.c:1110
+#: src/util/common_logging.c:1112
 msgid "MESSAGE"
 msgstr ""
 
-#: src/util/common_logging.c:1112
+#: src/util/common_logging.c:1114
 msgid "INFO"
 msgstr "ПОДАЦИ"
 
-#: src/util/common_logging.c:1114
+#: src/util/common_logging.c:1116
 msgid "DEBUG"
 msgstr "ПРОЧИШЋАВАЊЕ"
 
-#: src/util/common_logging.c:1116
+#: src/util/common_logging.c:1118
 msgid "NONE"
 msgstr "НИШТА"
 
-#: src/util/common_logging.c:1117
+#: src/util/common_logging.c:1119
 msgid "INVALID"
 msgstr "НЕИСПРАВНО"
 
-#: src/util/common_logging.c:1398
+#: src/util/common_logging.c:1400
 msgid "unknown address"
 msgstr "непозната адреса"
 
-#: src/util/common_logging.c:1443
+#: src/util/common_logging.c:1445
 msgid "invalid address"
 msgstr "неисправна адреса"
 
-#: src/util/common_logging.c:1462
+#: src/util/common_logging.c:1464
 #, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr "Подешавање није успело да наведе опцију „%s“ у одељку „%s“!\n"
 
-#: src/util/common_logging.c:1485
+#: src/util/common_logging.c:1487
 #, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8471,6 +8451,26 @@ msgstr ""
 "Нисам успео да раширим „%s“ у „%s“ јер нисам нашао у [ПУТАЊАМА] нити је "
 "дефинисано као променљива окружења\n"
 
+#: src/util/configuration_helper.c:133
+#, c-format
+msgid "The following sections are available:\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:147
+#, fuzzy, c-format
+msgid "%s, %s or %s argument is required\n"
+msgstr "аргумент „--section“ је потребан\n"
+
+#: src/util/configuration_helper.c:218
+#, c-format
+msgid "--option argument required to set value\n"
+msgstr "аргумент „--option“ је потребан за постављање вредности\n"
+
+#: src/util/configuration_helper.c:262
+#, fuzzy, c-format
+msgid "failed to load configuration defaults"
+msgstr "Нисам успео да учитам подешавање за „%s“\n"
+
 #: src/util/container_bloomfilter.c:553
 #, c-format
 msgid ""
@@ -8695,67 +8695,27 @@ msgstr ""
 msgid "run decoder modus, otherwise runs as encoder"
 msgstr ""
 
-#: src/util/gnunet-config.c:187
-#, c-format
-msgid "The following sections are available:\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:201
-#, fuzzy, c-format
-msgid "%s, %s or %s argument is required\n"
-msgstr "аргумент „--section“ је потребан\n"
-
-#: src/util/gnunet-config.c:266
-#, c-format
-msgid "--option argument required to set value\n"
-msgstr "аргумент „--option“ је потребан за постављање вредности\n"
-
-#: src/util/gnunet-config.c:309
-#, fuzzy, c-format
-msgid "failed to load configuration defaults"
-msgstr "Нисам успео да учитам подешавање за „%s“\n"
-
-#: src/util/gnunet-config.c:354
+#: src/util/gnunet-config.c:139
 msgid "test if the current installation supports the specified BACKEND"
 msgstr ""
 
-#: src/util/gnunet-config.c:360
-#, fuzzy
-msgid "write the full configuration file, including default values"
-msgstr "Нисам успео да учитам подешавање за „%s“\n"
-
-#: src/util/gnunet-config.c:365
-#, fuzzy
-msgid "interpret option value as a filename (with $-expansion)"
-msgstr "добија опцију вредности као назив датотеке (са $-ширењем)"
-
-#: src/util/gnunet-config.c:370
-msgid "name of the option to access"
-msgstr "назив опције за приступање"
-
-#: src/util/gnunet-config.c:376
-#, fuzzy
-msgid "rewrite the configuration file, even if nothing changed"
-msgstr "Није дата датотека подешавања. Излазим\n"
-
-#: src/util/gnunet-config.c:382
-msgid "output extra diagnostics"
+#: src/util/gnunet-config.c:145
+msgid ""
+"Provide an appropriate value for CFLAGS to applications building on top of "
+"GNUnet"
 msgstr ""
 
-#: src/util/gnunet-config.c:387
-#, fuzzy
-msgid "print available configuration sections"
-msgstr "Недостају поставке подешавања кључа.\n"
-
-#: src/util/gnunet-config.c:393
-msgid "name of the section to access"
-msgstr "назив одељка за приступање"
+#: src/util/gnunet-config.c:151
+msgid ""
+"Provide an appropriate value for LIBS to applications building on top of "
+"GNUnet"
+msgstr ""
 
-#: src/util/gnunet-config.c:398
-msgid "value to set"
-msgstr "вредност за постављање"
+#: src/util/gnunet-config.c:157
+msgid "Provide the path under which GNUnet was installed"
+msgstr ""
 
-#: src/util/gnunet-config.c:413
+#: src/util/gnunet-config.c:172
 msgid "Manipulate GNUnet configuration files"
 msgstr "Управља ГНУнет датотекама подешавања"
 
@@ -8942,7 +8902,7 @@ msgstr "Грешка читања из „%s“: %s\n"
 msgid "Failed to parse inbound message from helper `%s'\n"
 msgstr "Нисам успео да обрадим долазну поруку са помоћника „%s“\n"
 
-#: src/util/helper.c:602
+#: src/util/helper.c:606
 #, c-format
 msgid "Error writing to `%s': %s\n"
 msgstr "Грешка писања у „%s“: %s\n"
@@ -8985,33 +8945,38 @@ msgstr ""
 msgid "Initialization of plugin mechanism failed: %s!\n"
 msgstr "Покретање механизма прикључка није успело: %s!\n"
 
-#: src/util/plugin.c:156
+#: src/util/plugin.c:162
 #, c-format
 msgid "`%s' failed to resolve method '%s' with error: %s\n"
 msgstr "„%s“ није успело да реши метод '%s' са грешком: %s\n"
 
-#: src/util/plugin.c:234
+#: src/util/plugin.c:240
 #, c-format
 msgid "`%s' failed for library `%s' with error: %s\n"
 msgstr "„%s“ није успело за библиотеку '%s' са грешком: %s\n"
 
-#: src/util/plugin.c:414
+#: src/util/plugin.c:420
 msgid "Could not determine plugin installation path.\n"
 msgstr "Не могу да одредим путању инсталирања прикључка.\n"
 
-#: src/util/program.c:252
+#: src/util/program.c:251
+#, fuzzy, c-format
+msgid "Unreadable configuration file `%s', exiting ...\n"
+msgstr "Лоша датотека подешавања „%s“, излазим ...\n"
+
+#: src/util/program.c:263
 #, fuzzy, c-format
-msgid "Unreadable or malformed configuration file `%s', exit ...\n"
+msgid "Malformed configuration file `%s', exiting ...\n"
 msgstr "Лоша датотека подешавања „%s“, излазим ...\n"
 
-#: src/util/program.c:272
+#: src/util/program.c:278
 #, fuzzy, c-format
-msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
+msgid "Unreadable configuration file `%s'. Exiting ...\n"
 msgstr "Лоша датотека подешавања „%s“, излазим ...\n"
 
-#: src/util/program.c:288
+#: src/util/program.c:293
 #, fuzzy
-msgid "Unreadable or malformed configuration, exit ...\n"
+msgid "Malformed configuration. Exiting ...\n"
 msgstr "Лоше подешавање, излазим ...\n"
 
 #: src/util/regex.c:139
@@ -9335,22 +9300,65 @@ msgstr "Поставља тунеле путем ВПН-а."
 msgid "Failed to connect to the namestore!\n"
 msgstr "Нисам успео да се повежем са смештајем назива!\n"
 
+#~ msgid "Waiting for child to exit.\n"
+#~ msgstr "Чекам на пород да изађе.\n"
+
+#~ msgid "Spawning process `%s'\n"
+#~ msgstr "Умножавам процес „%s“\n"
+
+#~ msgid "The function %s is only available when compiled with (--with-ll)\n"
+#~ msgstr "Функција „%s“ је доступна само када је преведена са (--with-ll)\n"
+
+#~ msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
+#~ msgstr ""
+#~ "Ниједан домаћин није учитан из „LoadLeveler“-а. Потребан је барем један "
+#~ "домаћин\n"
+
+#, fuzzy
+#~ msgid "write the full configuration file, including default values"
+#~ msgstr "Нисам успео да учитам подешавање за „%s“\n"
+
+#, fuzzy
+#~ msgid "interpret option value as a filename (with $-expansion)"
+#~ msgstr "добија опцију вредности као назив датотеке (са $-ширењем)"
+
+#~ msgid "name of the option to access"
+#~ msgstr "назив опције за приступање"
+
+#, fuzzy
+#~ msgid "rewrite the configuration file, even if nothing changed"
+#~ msgstr "Није дата датотека подешавања. Излазим\n"
+
+#, fuzzy
+#~ msgid "print available configuration sections"
+#~ msgstr "Недостају поставке подешавања кључа.\n"
+
+#~ msgid "name of the section to access"
+#~ msgstr "назив одељка за приступање"
+
+#~ msgid "value to set"
+#~ msgstr "вредност за постављање"
+
+#, fuzzy
+#~ msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
+#~ msgstr "Лоша датотека подешавања „%s“, излазим ...\n"
+
+#, fuzzy
+#~ msgid "Unreadable or malformed configuration, exit ...\n"
+#~ msgstr "Лоше подешавање, излазим ...\n"
+
 #~ msgid "Stop logging\n"
 #~ msgstr "Заустављам дневничење\n"
 
-#, c-format
 #~ msgid "Start logging `%s'\n"
 #~ msgstr "Започињем дневничење „%s“\n"
 
-#, c-format
 #~ msgid "Connected master [%u] with slave [%u]\n"
 #~ msgstr "Повезан је надређени [%u] са потчињеним [%u]\n"
 
-#, c-format
 #~ msgid "Failed to connect master peer [%u] with slave [%u]\n"
 #~ msgstr "Нисам успео да повежем надређеног парњака [%u] са потчињеним [%u]\n"
 
-#, c-format
 #~ msgid ""
 #~ "Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u "
 #~ "sec. = %u KiB/s\n"
@@ -9358,26 +9366,21 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Надређени [%u]: послао: %u KiB за %u сек. = %u KiB/s, примио: %u KiB за "
 #~ "%u сек. = %u KiB/s\n"
 
-#, c-format
 #~ msgid "Unsupported form value `%s'\n"
 #~ msgstr "Неподржана вредност облика „%s“\n"
 
 #~ msgid "Error when mapping zone to name\n"
 #~ msgstr "Грешка приликом мапирања зоне у назив\n"
 
-#, c-format
 #~ msgid "Found existing name `%s' for the given key\n"
 #~ msgstr "Нађох постојећи назив „%s“ за дати кључ\n"
 
-#, c-format
 #~ msgid "Found %u existing records for domain `%s'\n"
 #~ msgstr "Нађох %u постојећа записа за домен „%s“\n"
 
-#, c-format
 #~ msgid "Failed to create page for `%s'\n"
 #~ msgstr "Нисам успео да направим страницу за „%s“\n"
 
-#, c-format
 #~ msgid "Failed to setup post processor for `%s'\n"
 #~ msgstr "Нисам успео да поставим постпроцесор за „%s“\n"
 
@@ -9412,7 +9415,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Could not send list result to client\n"
 #~ msgstr "Не могу да пошаљем резултат списка клијенту\n"
 
-#, c-format
 #~ msgid "Starting default services `%s'\n"
 #~ msgstr "Покрећем основне услуге „%s“\n"
 
@@ -9420,19 +9422,15 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "No default services configured, GNUnet will not really start right now.\n"
 #~ msgstr "Основне услуге нису подешене, ГНУнет се неће баш сада покренути.\n"
 
-#, c-format
 #~ msgid "Received %s message\n"
 #~ msgstr "Примих %s поруку\n"
 
-#, c-format
 #~ msgid "Received last message for %s \n"
 #~ msgstr "Примих последњу поруку за %s \n"
 
-#, c-format
 #~ msgid "Outbound quota configure for network `%s' is %llu\n"
 #~ msgstr "Квота одлазности подешена за мрежу „%s“ је %llu\n"
 
-#, c-format
 #~ msgid "Initializing solver `%s '`%s'\n"
 #~ msgstr "Покрећем решавача „%s “„%s“\n"
 
@@ -9442,16 +9440,13 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Problem size too large, cannot allocate memory!\n"
 #~ msgstr "Величина проблема је превелика, не могу да доделим меморију!\n"
 
-#, c-format
 #~ msgid "Adding address for peer `%s' multiple times\n"
 #~ msgstr "Додајем адресу за парњака „%s“ више пута\n"
 
-#, c-format
 #~ msgid "Updating address property `%s' for peer `%s' %p not added before\n"
 #~ msgstr ""
 #~ "Освежавам својство адресе „%s“ за парњака „%s“ %p који није додат раније\n"
 
-#, c-format
 #~ msgid ""
 #~ "Adjusting inconsistent outbound quota configuration for network `%s', is "
 #~ "%llu must be at least %llu\n"
@@ -9459,7 +9454,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Поправљам недоследно подешавање одлазне квоте за мрежу „%s“, која је %llu "
 #~ "а мора бити најмање %llu\n"
 
-#, c-format
 #~ msgid ""
 #~ "Adjusting inconsistent inbound quota configuration for network `%s', is "
 #~ "%llu must be at least %llu\n"
@@ -9467,52 +9461,44 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Поправљам недоследно подешавање долазне квоте за мрежу „%s“, која је %llu "
 #~ "а мора бити најмање %llu\n"
 
-#, c-format
 #~ msgid ""
 #~ "Adjusting outbound quota configuration for network `%s'from %llu to %.0f\n"
 #~ msgstr ""
 #~ "Поправљам недоследно подешавање одлазне квоте за мрежу „%s“ са %llu на "
 #~ "%.0f\n"
 
-#, c-format
 #~ msgid ""
 #~ "Adjusting inbound quota configuration for network `%s' from %llu to %.0f\n"
 #~ msgstr ""
 #~ "Поправљам недоследно подешавање долазне квоте за мрежу „%s“ са %llu на "
 #~ "%.0f\n"
 
-#, c-format
 #~ msgid ""
 #~ "Using default quota configuration for network `%s' (in/out) %llu/%llu\n"
 #~ msgstr ""
 #~ "Користим основно подешавање квоте за мрежу „%s“ (улаз/излаз) %llu/%llu\n"
 
-#, c-format
 #~ msgid "Invalid network type `%u' `%s': Disconnect!\n"
 #~ msgstr "Неисправна врста мреже „%u“ „%s“: Прекидам везу!\n"
 
 #~ msgid "Benchmarking done\n"
 #~ msgstr "Оцењивање је готово\n"
 
-#, c-format
 #~ msgid "Failed to connect peer 0 and %u\n"
 #~ msgstr "Нисам успео да повежем парњака 0 и %u\n"
 
 #~ msgid "Connecting peers on CORE level\n"
 #~ msgstr "Повезујем парњаке на „CORE“ нивоу\n"
 
-#, c-format
 #~ msgid "Connecting master [%u] with slave [%u]\n"
 #~ msgstr "Повезујем надређеног [%u] са потчињеним [%u]\n"
 
-#, c-format
 #~ msgid "Could not connect master [%u] and slave [%u]\n"
 #~ msgstr "Не могу да повежем надређеног [%u] и потчињеног [%u]\n"
 
 #~ msgid "Initialization failed, shutdown\n"
 #~ msgstr "Покретање није успело, гасим\n"
 
-#, c-format
 #~ msgid "Service `%s' is not running\n"
 #~ msgstr "Услуга „%s“ није покренута\n"
 
@@ -9525,14 +9511,12 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Mesh audio channel not ready; audio data dropped\n"
 #~ msgstr "Звучни канал меша није спреман; звучни подаци су одбачени\n"
 
-#, c-format
 #~ msgid ""
 #~ "No available phone for incoming call on line %u, sending HANG_UP signal\n"
 #~ msgstr ""
 #~ "Нема доступних телефона за долазни позив на линији %u, шаљем сигнал "
 #~ "ПРЕКИД\n"
 
-#, c-format
 #~ msgid "Received incoming channel on port %u\n"
 #~ msgstr "Примих долазни канал на прикључник %u\n"
 
@@ -9540,11 +9524,9 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgstr ""
 #~ "Клијент је ископчан са кључне услуге, покушавам поново да се повежем.\n"
 
-#, c-format
 #~ msgid "Peer `%s'\n"
 #~ msgstr "Парњак „%s“\n"
 
-#, c-format
 #~ msgid ""
 #~ "Received PING from `%s' for different identity: I am `%s', PONG identity: "
 #~ "`%s'\n"
@@ -9561,14 +9543,12 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "# encrypted bytes given to transport"
 #~ msgstr "# шифровани бајтови су дати преносу"
 
-#, c-format
 #~ msgid "Unsupported message of type %u (%u bytes) received from peer `%s'\n"
 #~ msgstr "Неподржана порука врсте %u (%u бајта) је примљена са парњака „%s“\n"
 
 #~ msgid "# messages discarded (expired prior to transmission)"
 #~ msgstr "# поруке су одбачене (истекле су пре преноса)"
 
-#, c-format
 #~ msgid "No `%s' specified for `%s' in configuration!\n"
 #~ msgstr "Није наведено „%s“ за „%s“ у подешавањима!\n"
 
@@ -9578,7 +9558,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Sqlite datacache running\n"
 #~ msgstr "Остава података Скулајта ради\n"
 
-#, c-format
 #~ msgid "Failed to close statement %p: %d\n"
 #~ msgstr "Нисам успео да затворим тврдњу „%p“: %d\n"
 
@@ -9612,7 +9591,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Failed to receive response from database.\n"
 #~ msgstr "Нисам успео да примим одговор из базе података.\n"
 
-#, c-format
 #~ msgid "Cannot use the same configuration for source and destination\n"
 #~ msgstr "Не могу да користим исто подешавање за извор и одредиште\n"
 
@@ -9666,7 +9644,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "# Bytes of bandwidth requested from core"
 #~ msgstr "# Бајтови пропусног опсега које захтева језгро"
 
-#, c-format
 #~ msgid ""
 #~ "\n"
 #~ "SUPU %s, %s, %d,my_identity = %s"
@@ -9674,7 +9651,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "\n"
 #~ "SUPU %s, %s, %d,my_identity = %s"
 
-#, c-format
 #~ msgid ""
 #~ "\n"
 #~ "SUPU %s, %s, %d"
@@ -9682,14 +9658,12 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "\n"
 #~ "SUPU %s, %s, %d"
 
-#, c-format
 #~ msgid "Configured DNS exit `%s' is not working / valid.\n"
 #~ msgstr "Подешени ДНС излаз „%s“ не ради / није исправан.\n"
 
 #~ msgid "only monitor DNS replies"
 #~ msgstr "само надгледа ДНС одговоре"
 
-#, c-format
 #~ msgid "`%s' must be installed SUID, refusing to run\n"
 #~ msgstr "„%s“ мора бити инсталиран СУИБ, одбијам да радим\n"
 
@@ -9699,7 +9673,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "# Bytes received from MESH"
 #~ msgstr "# Бајтови су примљени од МЕША"
 
-#, c-format
 #~ msgid "No service %s found for %s on port %d!\n"
 #~ msgstr "Ниједна услуга %s није нађена %s на прикључнику %d!\n"
 
@@ -9721,11 +9694,9 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "GNUnet experimentation daemon"
 #~ msgstr "Демон експериментисања ГНУнет-а"
 
-#, c-format
 #~ msgid "Experiment `%s': Experiment signature is invalid\n"
 #~ msgstr "Експеримент „%s“: Потпис експеримента је неисправан\n"
 
-#, c-format
 #~ msgid ""
 #~ "Adding experiment `%s' running from `%s' to `%s' every %llu sec. for %llu "
 #~ "sec. \n"
@@ -9733,31 +9704,24 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Додајем експеримент „%s“ који ради из „%s“ у „%s“ сваке %llu сек. за %llu "
 #~ "сек. \n"
 
-#, c-format
 #~ msgid "Experiment `%s': Issuer missing\n"
 #~ msgstr "Експеримент „%s“: Недостаје издавач\n"
 
-#, c-format
 #~ msgid "Experiment `%s': Issuer invalid\n"
 #~ msgstr "Експеримент „%s“: Неисправан издавач\n"
 
-#, c-format
 #~ msgid "Experiment `%s': Issuer not accepted!\n"
 #~ msgstr "Експеримент „%s“: Издавач није прихваћен!\n"
 
-#, c-format
 #~ msgid "Experiment `%s': Version missing or invalid \n"
 #~ msgstr "Експеримент „%s“: Недостаје издање или је неисправно \n"
 
-#, c-format
 #~ msgid "Experiment `%s': Required capabilities missing \n"
 #~ msgstr "Експеримент „%s“: Захтеване могућности недостају \n"
 
-#, c-format
 #~ msgid "Experiment `%s': Required capabilities invalid \n"
 #~ msgstr "Експеримент „%s“: Захтеване могућности су неисправне \n"
 
-#, c-format
 #~ msgid "Failed to parse file `%s'\n"
 #~ msgstr "Нисам успео да обрадим датотеку „%s“\n"
 
@@ -9771,57 +9735,44 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Invalid value for public key\n"
 #~ msgstr "Неисправна вредност за јавни кључ\n"
 
-#, c-format
 #~ msgid "Cannot read experiments file `%s'\n"
 #~ msgstr "Не могу да прочитам датотеку експеримената „%s“\n"
 
-#, c-format
 #~ msgid "Cannot send message to peer `%s' for experiment `%s'\n"
 #~ msgstr "Не могу да пошаљем поруку парњаку „%s“ за екперимент „%s“\n"
 
-#, c-format
 #~ msgid "Sending experimentation request to peer %s\n"
 #~ msgstr "Шаљем захтев експериментисања парњаку %s\n"
 
-#, c-format
 #~ msgid "Added peer `%s' as active node\n"
 #~ msgstr "Додат је парњак „%s“ као активан чвор\n"
 
-#, c-format
 #~ msgid "Connected to peer %s\n"
 #~ msgstr "Повезан са парњаком „%s“\n"
 
-#, c-format
 #~ msgid "Disconnected from peer %s\n"
 #~ msgstr "Прекинута је веза са парњаком „%s“\n"
 
-#, c-format
 #~ msgid "Peer `%s' did not respond to request for experiment `%s'\n"
 #~ msgstr "Парњак „%s“ није одговорио на захтев за експериментом „%s“\n"
 
-#, c-format
 #~ msgid "Starting inbound experiment `%s' with peer `%s'\n"
 #~ msgstr "Покрећем експеримент долазности „%s“ са парњаком „%s“\n"
 
-#, c-format
 #~ msgid "Starting outbound experiment `%s' with peer `%s'\n"
 #~ msgstr "Покрећем експеримент одлазности „%s“ са парњаком „%s“\n"
 
-#, c-format
 #~ msgid "Received %s message from peer %s for experiment `%s'\n"
 #~ msgstr "Примих %s поруку са парњака %s за експеримент „%s“\n"
 
-#, c-format
 #~ msgid "Failed to receive response for `%s' request from `%s' service.\n"
 #~ msgstr "Нисам успео да примим одговор за „%s“ захтев од „%s“ услуге.\n"
 
-#, c-format
 #~ msgid ""
 #~ "Failed to receive valid response for `%s' request from `%s' service.\n"
 #~ msgstr ""
 #~ "Нисам успео да примим исправан одговор за „%s“ захтев од „%s“ услуге.\n"
 
-#, c-format
 #~ msgid "Insufficient space for publishing: %s"
 #~ msgstr "Недовољно простора за објављивање: %s"
 
@@ -9843,7 +9794,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "SKS URI malformed"
 #~ msgstr "SKS УРИ је лоше"
 
-#, c-format
 #~ msgid "Could not access hostkey file `%s'.\n"
 #~ msgstr "Не могу да приступим датотеци кључа домаћина „%s“.\n"
 
@@ -9881,11 +9831,9 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Public key of the GNS zone to use (overrides default)"
 #~ msgstr "Јавни кључ ГНС зоне за коришћење (преписује основно)"
 
-#, c-format
 #~ msgid "Ego for `%s' not found, cannot perform lookup.\n"
 #~ msgstr "Нисам нашао его за „%s“, не могу да обавим претрагу.\n"
 
-#, c-format
 #~ msgid ""
 #~ "Ego for `gns-master' not found, cannot perform lookup.  Did you run "
 #~ "gnunet-gns-import.sh?\n"
@@ -9896,7 +9844,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Specify the name of the ego of the zone to lookup the record in"
 #~ msgstr "Наводи назив егоа зоне у којој ће се тражити запис"
 
-#, c-format
 #~ msgid ""
 #~ "Ego for `gns-short' not found. This is not really fatal, but i'll pretend "
 #~ "that it is and refuse to perform a lookup.  Did you run gnunet-gns-import."
@@ -9906,7 +9853,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "јесте и одбићу да обавим претраживање.  Да ли сте покренули „gnunet-gns-"
 #~ "import.sh“?\n"
 
-#, c-format
 #~ msgid "Failed to connect to identity service\n"
 #~ msgstr "Нисам успео да се повежем са услугом идентитета\n"
 
@@ -9916,26 +9862,21 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "No ego configured for `shorten-zone`\n"
 #~ msgstr "Его није подешен за „shorten-zone“\n"
 
-#, c-format
 #~ msgid "No ego configured for `%s`\n"
 #~ msgstr "Није подешен его за `%s`\n"
 
-#, c-format
 #~ msgid "Hostname `%s' is not well-formed, resolution fails\n"
 #~ msgstr "Назив домаћина „%s“ није лепо оформљен, резолуција није успела\n"
 
-#, c-format
 #~ msgid "Unable to parse PKEY record `%s'\n"
 #~ msgstr "Не могу да обрадим „PKEY“ запис „%s“\n"
 
-#, c-format
 #~ msgid "Hostlist file `%s' could not be removed\n"
 #~ msgstr "Датотека списка домаћина „%s“ не може бити уклоњена\n"
 
 #~ msgid "Advertisement message could not be queued by core\n"
 #~ msgstr "Поруку оглашавања језгро не може да стави у ред\n"
 
-#, c-format
 #~ msgid "Invalid tunnel owner `%s'\n"
 #~ msgstr "Неисправан власник тунела „%s“\n"
 
@@ -9948,15 +9889,12 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Wrong CORE service\n"
 #~ msgstr "Погрешна ЈЕЗГРЕНА услуга\n"
 
-#, c-format
 #~ msgid "No default ego configured in identity service\n"
 #~ msgstr "Није подешен основни его у услузи идентитета\n"
 
-#, c-format
 #~ msgid "Identity service is not running\n"
 #~ msgstr "Услуга идентитета није покренута\n"
 
-#, c-format
 #~ msgid "Please pass valid port number as the first argument! (got `%s')\n"
 #~ msgstr ""
 #~ "Проследите исправан број прикључника као први аргумент! (добих „%s“)\n"
@@ -9977,7 +9915,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "malformed"
 #~ msgstr "лоше"
 
-#, c-format
 #~ msgid ""
 #~ "Configuration requires `%s', but binary is not installed properly (SUID "
 #~ "bit not set).  Option disabled.\n"
@@ -9991,7 +9928,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Унутрашња ИП адреса није позната, не могу користити методу ИЦМП НАТ "
 #~ "попречника\n"
 
-#, c-format
 #~ msgid "Running gnunet-helper-nat-client %s %s %u\n"
 #~ msgstr "Извршавам „gnunet-helper-nat-client“ %s %s %u\n"
 
@@ -10014,27 +9950,21 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgstr ""
 #~ "Истекло је време преношења захтева понављања ка услузи „ПОДАЦИ_ПАРЊАКА“."
 
-#, c-format
 #~ msgid "Could not connect to `%s' service.\n"
 #~ msgstr "Не могу да се повежем са „%s“ услугом.\n"
 
-#, c-format
 #~ msgid "Failure: Did not receive %s\n"
 #~ msgstr "Неуспех: Нисам примио „%s“\n"
 
-#, c-format
 #~ msgid "Failure adding HELLO: %s\n"
 #~ msgstr "Неуспех додавања „HELLO“-а: %s\n"
 
-#, c-format
 #~ msgid "Service `%s' is not running, please start GNUnet\n"
 #~ msgstr "Услуга „%s“ није покренута, покрените ГНУнет\n"
 
-#, c-format
 #~ msgid "`%s:%s' failed at %s:%d with error: %s"
 #~ msgstr "`%s:%s' није успело на %s:%d са грешком: %s"
 
-#, c-format
 #~ msgid "Unable to initialize Postgres: %s"
 #~ msgstr "Не могу да покренем Постгрес: %s"
 
@@ -10065,7 +9995,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Failed to begin modifying state!\n"
 #~ msgstr "Нисам успео да започнем стање измене!\n"
 
-#, c-format
 #~ msgid "Unknown operator: %c\n"
 #~ msgstr "Непознат оператор: %c\n"
 
@@ -10087,7 +10016,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Failed to get state variable!\n"
 #~ msgstr "Нисам успео да добавим променљиву стања!\n"
 
-#, c-format
 #~ msgid "`%s' failed at %s:%d with error: %s (%d)\n"
 #~ msgstr "„%s“ није успело на %s:%d са грешком: %s (%d)\n"
 
@@ -10100,7 +10028,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Please give a session key for --input_key!\n"
 #~ msgstr "Дајте кључ сесије за „--input_key“!\n"
 
-#, c-format
 #~ msgid "Could not convert `%s' to integer.\n"
 #~ msgstr "Не могу да претворим „%s“ у цео број.\n"
 
@@ -10111,26 +10038,21 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Зарезом раздвојена маска за бирање који елементи заправо требају бити "
 #~ "поређени."
 
-#, c-format
 #~ msgid "Client (%p) disconnected from us.\n"
 #~ msgstr "Прекинута је веза клијента (%p) са нама.\n"
 
-#, c-format
 #~ msgid "Could not send message to client (%p)!\n"
 #~ msgstr "Не могу да пошаљем поруку клијенту (%p)!\n"
 
-#, c-format
 #~ msgid "Sending session-end notification to client (%p) for session %s\n"
 #~ msgstr "Шаљем обавештење о крају сесије клијенту (%p) за сесију %s\n"
 
-#, c-format
 #~ msgid "Sent result to client (%p), this session (%s) has ended!\n"
 #~ msgstr "Резултати су послати клијенту (%p), ова сесија (%s) је завршена!\n"
 
 #~ msgid "Could not send service-response message via mesh!)\n"
 #~ msgstr "Не могу да пошаљем поруку одговора услуге путем меша!)\n"
 
-#, c-format
 #~ msgid ""
 #~ "Failed to communicate with `%s', scalar product calculation aborted.\n"
 #~ msgstr ""
@@ -10143,7 +10065,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Could not send service-request multipart message to channel!\n"
 #~ msgstr "Не могу да пошаљем вишеделовну поруку захтева услуге каналу!\n"
 
-#, c-format
 #~ msgid "Successfully created new channel to peer (%s)!\n"
 #~ msgstr "Успешно је створен нови канал за парњака (%s)!\n"
 
@@ -10158,7 +10079,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgstr ""
 #~ "Неисправна порука је примљена са клијента, подаци о сесији су нетачни!\n"
 
-#, c-format
 #~ msgid ""
 #~ "Duplicate session information received, cannot create new session with "
 #~ "key `%s'\n"
@@ -10166,7 +10086,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Двоструки подаци сесије су примљени, не могу да направим нову сесију са "
 #~ "кључем „%s“\n"
 
-#, c-format
 #~ msgid ""
 #~ "Got client-request-session with key %s, preparing channel to remote "
 #~ "service.\n"
@@ -10174,11 +10093,9 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Добих сесију захтева клијента са кључем %s, припремам канал за удљену "
 #~ "услугу.\n"
 
-#, c-format
 #~ msgid "Creating new channel for session with key %s.\n"
 #~ msgstr "Стварам нови канал за сесију са кључем „%s“.\n"
 
-#, c-format
 #~ msgid ""
 #~ "Got client-responder-session with key %s and a matching service-request-"
 #~ "session set, processing.\n"
@@ -10186,7 +10103,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Добих сесију одговарача клијента са кључем %s и одговарајући скуп сесије "
 #~ "захтева услуге, обрађујем.\n"
 
-#, c-format
 #~ msgid ""
 #~ "Got client-responder-session with key %s but NO matching service-request-"
 #~ "session set, queuing element for later use.\n"
@@ -10194,27 +10110,22 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Добих сесију одговарача клијента са кључем %s али НЕ и одговарајући скуп "
 #~ "сесије захтева услуге, стављам елемент у ред за касније коришћење.\n"
 
-#, c-format
 #~ msgid "New incoming channel from peer %s.\n"
 #~ msgstr "Нови долазни канал са парњака „%s“.\n"
 
-#, c-format
 #~ msgid "Peer disconnected, terminating session %s with peer (%s)\n"
 #~ msgstr ""
 #~ "Веза са парњаком је прекинута, окончавам сесију %s са парњаком (%s)\n"
 
-#, c-format
 #~ msgid "Got session with key %s and a matching element set, processing.\n"
 #~ msgstr ""
 #~ "Добих сесију са кључем „%s“ и одговарајући скуп елемената, обрађујем.\n"
 
-#, c-format
 #~ msgid "Got session with key %s without a matching element set, queueing.\n"
 #~ msgstr ""
 #~ "Добих сесију са кључем „%s“ без одговарајућег скупа елемената, стављам у "
 #~ "ред.\n"
 
-#, c-format
 #~ msgid ""
 #~ "Got message with duplicate session key (`%s'), ignoring service request.\n"
 #~ msgstr ""
@@ -10242,7 +10153,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Could not connect to mesh service\n"
 #~ msgstr "Не могу да се повежем са меш услугом\n"
 
-#, c-format
 #~ msgid "Trying to connect to remote host, but service `%s' is not running\n"
 #~ msgstr ""
 #~ "Покушавам да се повежем са удаљеним домаћином, али услуга „%s“ није "
@@ -10267,11 +10177,9 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "GNUnet topology control (maintaining P2P mesh and F2F constraints)"
 #~ msgstr "Контрола ГНУнет размештаја (задржавајући П2П меш и Ф2Ф ограничења)"
 
-#, c-format
 #~ msgid "Could not obtain a valid network for `%s' %s (%s)\n"
 #~ msgstr "Не могу да добијем исправну везу за „%s“ %s (%s)\n"
 
-#, c-format
 #~ msgid ""
 #~ "Address or session unknown: failed to update properties for peer `%s' "
 #~ "plugin `%s' address `%s' session %p\n"
@@ -10279,42 +10187,35 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Адреса или сесија је непозната: нисам успео да својства за парњака „%s“ "
 #~ "прикључак „%s“ адресу „%s“ сесију %p\n"
 
-#, c-format
 #~ msgid ""
 #~ "Dropping message of type %u and size %u, have %u/%u messages pending\n"
 #~ msgstr ""
 #~ "Одбацујем поруку врсте %u и величине %u, има %u/%u порука на чекању\n"
 
-#, c-format
 #~ msgid "Rejecting control connection from peer `%s', which is not me!\n"
 #~ msgstr "Одбацујем контролну везу од парњака „%s“, а то нисам ја!\n"
 
-#, c-format
 #~ msgid "Blacklist refuses connection attempt to peer `%s'\n"
 #~ msgstr "Списак забрана одбацује покушај повезивања са парњаком „%s“\n"
 
-#, c-format
 #~ msgid "Blacklist allows connection attempt to peer `%s'\n"
 #~ msgstr "Списак забрана дозвољава покушај повезивања са парњаком „%s“\n"
 
 #~ msgid "# REQUEST CONNECT messages received"
 #~ msgstr "# ЗАХТЕВАЈ ПОВЕЖИ_СЕ поруке су примљене"
 
-#, c-format
 #~ msgid "Received a request connect message for peer `%s'\n"
 #~ msgstr "Примих поруку захтева повезивања за парњака „%s“\n"
 
 #~ msgid "# REQUEST DISCONNECT messages received"
 #~ msgstr "# ЗАХТЕВАЈ ПРЕКИНИ_ВЕЗУ поруке су примљене"
 
-#, c-format
 #~ msgid "Received a request disconnect message for peer `%s'\n"
 #~ msgstr "Примих поруку захтева прекида везе за парњака „%s“\n"
 
 #~ msgid "# keepalives sent"
 #~ msgstr "# одржавања у раду су послата"
 
-#, c-format
 #~ msgid ""
 #~ "Failed to send CONNECT message to peer `%s' using address `%s' session "
 #~ "%p\n"
@@ -10330,7 +10231,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "# SESSION_CONNECT messages sent"
 #~ msgstr "# ПОВЕЗИВАЊЕ_СЕСИЈЕ поруке су послате"
 
-#, c-format
 #~ msgid "Blacklisting disapproved to connect to peer `%s'\n"
 #~ msgstr "Списак забрана није одобрио повезивање са парњаком „%s“\n"
 
@@ -10343,7 +10243,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "# SET QUOTA messages ignored (no such peer)"
 #~ msgstr "# ПОСТАВИ КВОТУ поруке су занемарене (нема таквог парњака)"
 
-#, c-format
 #~ msgid ""
 #~ "Not transmitting `%s' with `%s', message too big (%u bytes!). This should "
 #~ "not happen.\n"
@@ -10354,20 +10253,16 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "# PING without HELLO messages sent"
 #~ msgstr "# ПИНГ без „HELLO“ порука је послат"
 
-#, c-format
 #~ msgid "Received a PING message with validation bug from `%s'\n"
 #~ msgstr "Примих ПИНГ поруку са грешком потврђивања са „%s“\n"
 
-#, c-format
 #~ msgid "Validation received new %s message for peer `%s' with size %u\n"
 #~ msgstr ""
 #~ "Потврђивање је примило нову „%s“ поруку за парњака „%s“ са величином %u\n"
 
-#, c-format
 #~ msgid "Adding `%s' without addresses for peer `%s'\n"
 #~ msgstr "Додајем „%s“ без адреса за парњака „%s“\n"
 
-#, c-format
 #~ msgid ""
 #~ "Peer `%s' %s %s\n"
 #~ "\t%s%s\n"
@@ -10379,22 +10274,18 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "\t%s%s\n"
 #~ "\t%s%s\n"
 
-#, c-format
 #~ msgid "Peer `%s' %s `%s' \n"
 #~ msgstr "Парњак „%s“ %s „%s“ \n"
 
 #~ msgid "No transport plugins configured, peer will never communicate\n"
 #~ msgstr "Нису подешени прикључци преноса, парњак неће никада комуницирати\n"
 
-#, c-format
 #~ msgid "No port configured for plugin `%s', cannot test it\n"
 #~ msgstr "Није подешен прикључник за прикључак „%s“, не могу да га тестирам\n"
 
-#, c-format
 #~ msgid "Successfully connected to `%s'\n"
 #~ msgstr "Успешно је успостављена веза са „%s“\n"
 
-#, c-format
 #~ msgid "Successfully disconnected from `%s'\n"
 #~ msgstr "Успешно је прекинута веза са „%s“\n"
 
@@ -10452,27 +10343,22 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Bluetooth address with invalid size encountered\n"
 #~ msgstr "Наишли смо на адресу блутута са неисправном величином\n"
 
-#, c-format
 #~ msgid "Helper binary `%s' not SUID, cannot run bluetooth transport\n"
 #~ msgstr ""
 #~ "Извршна помоћника „%s“ није СУИБ, не могу да покренем блутут пренос\n"
 
-#, c-format
 #~ msgid "Binding to IPv4 address %s\n"
 #~ msgstr "Свезујем за ИПв4 адресу %s\n"
 
-#, c-format
 #~ msgid "Binding to IPv6 address %s\n"
 #~ msgstr "Свезујем за ИПв6 адресу %s\n"
 
-#, c-format
 #~ msgid "Trying to send with invalid session %p\n"
 #~ msgstr "Покушавам да пошаљем са неисправном сесијом %p\n"
 
 #~ msgid "# IPv4 broadcast HELLO beacons received via udp"
 #~ msgstr "# ИПв4 свеодредишне „HELLO“ ознаке су примљене путем удп-а"
 
-#, c-format
 #~ msgid ""
 #~ "Trying to create session for address of unexpected length %u (should be "
 #~ "%u or %u)\n"
@@ -10480,11 +10366,9 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Покушавам да направим сесију за адресу неочекиване дужине %u (треба бити "
 #~ "%u или %u)\n"
 
-#, c-format
 #~ msgid "Given `%s' option is out of range: %llu > %u\n"
 #~ msgstr "Дата „%s“ опција је ван опсега: %llu > %u\n"
 
-#, c-format
 #~ msgid "Invalid IPv6 address: `%s'\n"
 #~ msgstr "Неисправна ИПв6 адреса: „%s“\n"
 
@@ -10506,18 +10390,15 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "WLAN address with invalid size encountered\n"
 #~ msgstr "Наишли смо на адресу „WLAN“ са неисправном величином\n"
 
-#, c-format
 #~ msgid "Received unexpected message of type %u in %s:%u\n"
 #~ msgstr "Примих неочекивану поруку врсте %u у %s:%u\n"
 
 #~ msgid "Failed to initialize testing library!\n"
 #~ msgstr "Нисам успео да покренем библиотеку тестирања!\n"
 
-#, c-format
 #~ msgid "Metadata `%s' failed to deserialize"
 #~ msgstr "Метаподаци „%s“ нису успели да се десеријализују"
 
-#, c-format
 #~ msgid ""
 #~ "Could not determine valid hostname and port for service `%s' from "
 #~ "configuration.\n"
@@ -10525,24 +10406,20 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Не могу да одредим исправан назив доамћина и прикључник за услугу „%s“ из "
 #~ "подешавања.\n"
 
-#, c-format
 #~ msgid "Could not connect to service `%s', configuration broken.\n"
 #~ msgstr "Не могу да се повежем на услугу „%s“, подешавање је оштећено.\n"
 
-#, c-format
 #~ msgid "Failure to transmit request to service `%s'\n"
 #~ msgstr "Нисам успео да пренесем захтев услузи „%s“\n"
 
 #~ msgid "Could not submit request, not expecting to receive a response.\n"
 #~ msgstr "Не могу да предам захтев, не очекујем да примим одговор.\n"
 
-#, c-format
 #~ msgid "Failed to create or access directory for log file `%s'\n"
 #~ msgstr ""
 #~ "Нисам успео да направим или да приступим директоријуму да забележим "
 #~ "датотеку „%s“\n"
 
-#, c-format
 #~ msgid ""
 #~ "Failed to establish TCP connection to `%s:%u', no further addresses to "
 #~ "try.\n"
@@ -10550,15 +10427,12 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Нисам успео да успоставим ТЦП везу са `%s:%u', нема будућих адреса за "
 #~ "покушавање.\n"
 
-#, c-format
 #~ msgid "Trying to connect to `%s' (%p)\n"
 #~ msgstr "Покушавам да се повежем на „%s“ (%p)\n"
 
-#, c-format
 #~ msgid "Attempt to connect to `%s' failed\n"
 #~ msgstr "Покушај повезивања са „%s“ није успео\n"
 
-#, c-format
 #~ msgid "Could not acquire lock on file `%s': %s...\n"
 #~ msgstr "Не могу да остварим закључавање на датотеци „%s“: %s...\n"
 
@@ -10568,7 +10442,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "This may be ok if someone is currently generating a private key.\n"
 #~ msgstr "Ово може бити у реду ако неко тренутно ствара лични кључ.\n"
 
-#, c-format
 #~ msgid ""
 #~ "When trying to read key file `%s' I found %u bytes but I need at least "
 #~ "%u.\n"
@@ -10579,37 +10452,30 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "This may be ok if someone is currently generating a key.\n"
 #~ msgstr "Ово може бити у реду ако неко тренутно ствара кључ.\n"
 
-#, c-format
 #~ msgid "EdDSA signature verification failed at %s:%d: %s\n"
 #~ msgstr "Провера „EdDSA“ потписа није успела на %s:%d: %s\n"
 
 #~ msgid "print the hash of the public key in ASCII format"
 #~ msgstr "исписује хеш јавног кључа у АСКРИ формату"
 
-#, c-format
 #~ msgid "Could not resolve `%s' (%s): %s\n"
 #~ msgstr "Не могу да решим „%s“ (%s): %s\n"
 
-#, c-format
 #~ msgid "Could not find IP of host `%s': %s\n"
 #~ msgstr "Не могу да нађем ИП домаћина „%s“: %s\n"
 
-#, c-format
 #~ msgid "CreateProcess failed for binary %s (%d).\n"
 #~ msgstr "„CreateProcess“ није успело за извршну „%s“ (%d).\n"
 
-#, c-format
 #~ msgid "GetExitCodeProcess failed for binary %s (%d).\n"
 #~ msgstr "„GetExitCodeProcess“ није успело за извршну „%s“ (%d).\n"
 
-#, c-format
 #~ msgid "Must specify `%s' for `%s' in configuration!\n"
 #~ msgstr "Морате навести „%s“ за „%s“ у подешавањима!\n"
 
 #~ msgid "Looks like we're busy waiting...\n"
 #~ msgstr "Изгледа да смо заузети чекајући...\n"
 
-#, c-format
 #~ msgid "Attempt to cancel dead task %llu!\n"
 #~ msgstr "Покушах да обришем неактиван задатак %llu!\n"
 
@@ -10618,7 +10484,6 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ "Не могу да приступим унапред свезаној прикључници, покушаћу да свежем "
 #~ "себе самог\n"
 
-#, c-format
 #~ msgid "signal (%d, %p) returned %d.\n"
 #~ msgstr "сигнал (%d, %p) је дао %d.\n"
 
@@ -10661,14 +10526,11 @@ msgstr "Нисам успео да се повежем са смештајем 
 #~ msgid "Failed to setup mesh channel!\n"
 #~ msgstr "Нисам успео да поставим меш канал!\n"
 
-#, c-format
 #~ msgid "Assertion failed at %s:%d.\n"
 #~ msgstr "Потврђивање није успело на %s:%d.\n"
 
-#, c-format
 #~ msgid "External protocol violation detected at %s:%d.\n"
 #~ msgstr "Повреда спољног протокола је откривена на %s:%d.\n"
 
-#, c-format
 #~ msgid "`%s' failed on file `%s' at %s:%d with error: %s\n"
 #~ msgstr "„%s“ није успело на датотеци „%s“ на %s:%d са грешком: %s\n"
diff --git a/po/sv.po b/po/sv.po
index dfaa0f839..c87ec92ee 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: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2021-08-28 16:52+0200\n"
+"POT-Creation-Date: 2021-10-15 10:46+0200\n"
 "PO-Revision-Date: 2006-01-21 17:16+0100\n"
 "Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -2205,105 +2205,105 @@ msgstr "Meddelande mottaget från klient är ogiltig.\n"
 msgid "# FIND PEER messages initiated"
 msgstr "# PING-meddelanden skapade"
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:855
 #, fuzzy
 msgid "# requests TTL-dropped"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1035
-#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1042
+#: src/dht/gnunet-service-dht_neighbours.c:1079
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1045
-#: src/dht/gnunet-service-dht_neighbours.c:1088
+#: src/dht/gnunet-service-dht_neighbours.c:1052
+#: src/dht/gnunet-service-dht_neighbours.c:1095
 msgid "# Peer selection failed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1246
+#: src/dht/gnunet-service-dht_neighbours.c:1253
 #, fuzzy
 msgid "# PUT requests routed"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1280
+#: src/dht/gnunet-service-dht_neighbours.c:1287
 #, fuzzy
 msgid "# PUT messages queued for transmission"
 msgstr "# PING-meddelanden skapade"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1292
-#: src/dht/gnunet-service-dht_neighbours.c:1434
-#: src/dht/gnunet-service-dht_neighbours.c:1538
+#: src/dht/gnunet-service-dht_neighbours.c:1299
+#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1545
 #, fuzzy
 msgid "# P2P messages dropped due to full queue"
 msgstr "Nätverksannonsering avstängd i konfigurationen!\n"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1377
+#: src/dht/gnunet-service-dht_neighbours.c:1384
 #, fuzzy
 msgid "# GET requests routed"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1421
+#: src/dht/gnunet-service-dht_neighbours.c:1428
 #, fuzzy
 msgid "# GET messages queued for transmission"
 msgstr "# PING-meddelanden skapade"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1553
+#: src/dht/gnunet-service-dht_neighbours.c:1560
 #, fuzzy
 msgid "# RESULT messages queued for transmission"
 msgstr "# PING-meddelanden skapade"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1656
+#: src/dht/gnunet-service-dht_neighbours.c:1663
 msgid "# Expired PUTs discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1664
+#: src/dht/gnunet-service-dht_neighbours.c:1671
 #, fuzzy
 msgid "# P2P PUT requests received"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1668
+#: src/dht/gnunet-service-dht_neighbours.c:1675
 #, fuzzy
 msgid "# P2P PUT bytes received"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1900
+#: src/dht/gnunet-service-dht_neighbours.c:1907
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1909
+#: src/dht/gnunet-service-dht_neighbours.c:1916
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2072
+#: src/dht/gnunet-service-dht_neighbours.c:2079
 #, fuzzy
 msgid "# P2P GET requests received"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2076
+#: src/dht/gnunet-service-dht_neighbours.c:2083
 #, fuzzy
 msgid "# P2P GET bytes received"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2142
+#: src/dht/gnunet-service-dht_neighbours.c:2149
 #, fuzzy
 msgid "# P2P FIND PEER requests processed"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2163
+#: src/dht/gnunet-service-dht_neighbours.c:2170
 #, fuzzy
 msgid "# P2P GET requests ONLY routed"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2341
+#: src/dht/gnunet-service-dht_neighbours.c:2348
 msgid "# Expired results discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2358
+#: src/dht/gnunet-service-dht_neighbours.c:2365
 #, fuzzy
 msgid "# P2P RESULTS received"
 msgstr "# krypterade PONG-meddelanden mottagna"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2362
+#: src/dht/gnunet-service-dht_neighbours.c:2369
 #, fuzzy
 msgid "# P2P RESULT bytes received"
 msgstr "# krypterade PONG-meddelanden mottagna"
@@ -2346,7 +2346,7 @@ msgstr ""
 msgid "# DHT requests combined"
 msgstr "# byte mottogs via TCP"
 
-#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:253
 #, fuzzy, c-format
 msgid "Exiting as the number of peers is %u\n"
 msgstr "Maximalt antal chattklienter uppnått.\n"
@@ -2361,7 +2361,7 @@ msgid "number of PUTs to perform per peer"
 msgstr ""
 
 #: src/dht/gnunet_dht_profiler.c:967 src/nse/gnunet-nse-profiler.c:872
-#: src/testbed/gnunet-testbed-profiler.c:305
+#: src/testbed/gnunet-testbed-profiler.c:302
 msgid "name of the file with the login information for the testbed"
 msgstr ""
 
@@ -6681,7 +6681,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr "Ogiltigt argument: \"%s\"\n"
 
 #: src/testbed/generate-underlay-topology.c:366
-#: src/testbed/gnunet-testbed-profiler.c:284
+#: src/testbed/gnunet-testbed-profiler.c:282
 msgid "create COUNT number of peers"
 msgstr ""
 
@@ -6720,7 +6720,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:234 src/testing/list-keys.c:47
-#: src/testing/testing.c:278 src/util/gnunet-ecc.c:318
+#: src/testing/testing.c:289 src/util/gnunet-ecc.c:318
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr ""
@@ -6790,27 +6790,17 @@ msgstr ""
 msgid "%.s Unknown result code."
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:290
+#: src/testbed/gnunet-testbed-profiler.c:288
 msgid "tolerate COUNT number of continuous timeout failures"
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:295
+#: src/testbed/gnunet-testbed-profiler.c:293
 msgid ""
 "run profiler in non-interactive mode where upon testbed setup the profiler "
 "does not wait for a keystroke but continues to run until a termination "
 "signal is received"
 msgstr ""
 
-#: src/testbed/gnunet_testbed_mpi_spawn.c:119
-#, fuzzy
-msgid "Waiting for child to exit.\n"
-msgstr "Väntar på att motparter ska ansluta (%u iterationer kvar)...\n"
-
-#: src/testbed/gnunet_testbed_mpi_spawn.c:242
-#, fuzzy, c-format
-msgid "Spawning process `%s'\n"
-msgstr "Startade samling \"%s\".\n"
-
 #: src/testbed/testbed_api.c:399
 #, fuzzy, c-format
 msgid "Adding host %u failed with error: %s\n"
@@ -6831,11 +6821,6 @@ msgstr ""
 msgid "Hosts file %s cannot be read\n"
 msgstr ""
 
-#: src/testbed/testbed_api_hosts.c:589
-#, c-format
-msgid "The function %s is only available when compiled with (--with-ll)\n"
-msgstr ""
-
 #: src/testbed/testbed_api_testbed.c:822
 msgid "Linking controllers failed. Exiting"
 msgstr ""
@@ -6866,43 +6851,39 @@ msgstr ""
 msgid "Shutting down testbed due to timeout while setup.\n"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1274
-msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
-msgstr ""
-
-#: src/testbed/testbed_api_testbed.c:1286
+#: src/testbed/testbed_api_testbed.c:1276
 msgid "No hosts loaded. Need at least one host\n"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1312
+#: src/testbed/testbed_api_testbed.c:1301
 msgid "Specified topology must be supported by testbed"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1368
+#: src/testbed/testbed_api_testbed.c:1357
 #, c-format
 msgid ""
 "Maximum number of edges a peer can have in a scale free topology cannot be "
 "more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1385
+#: src/testbed/testbed_api_testbed.c:1374
 #, c-format
 msgid ""
 "The number of edges that can established when adding a new node to scale "
 "free topology cannot be more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1033
+#: src/testbed/testbed_api_topology.c:1033 src/testing/testing.c:2320
 #, fuzzy, c-format
 msgid "Topology file %s not found\n"
 msgstr "\"%s\" misslyckades: tabell hittades inte!\n"
 
-#: src/testbed/testbed_api_topology.c:1041
+#: src/testbed/testbed_api_topology.c:1041 src/testing/testing.c:2328
 #, c-format
 msgid "Topology file %s has no data\n"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1049
+#: src/testbed/testbed_api_topology.c:1049 src/testing/testing.c:2336
 #, c-format
 msgid "Topology file %s cannot be read\n"
 msgstr ""
@@ -6977,59 +6958,59 @@ msgstr ""
 msgid "list COUNT number of keys"
 msgstr ""
 
-#: src/testing/testing.c:261
+#: src/testing/testing.c:272
 #, c-format
 msgid "Hostkeys file not found: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:714
+#: src/testing/testing.c:725
 #, fuzzy, c-format
 msgid "Key number %u does not exist\n"
 msgstr "antal meddelanden att använda per iteration"
 
-#: src/testing/testing.c:1188
+#: src/testing/testing.c:1199
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
 "precompute more hostkeys first.\n"
 msgstr ""
 
-#: src/testing/testing.c:1197
+#: src/testing/testing.c:1208
 #, fuzzy, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr "Misslyckades att initiera tjänsten \"%s\".\n"
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1218
 #, fuzzy
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr "Inga applikationer definierade i konfiguration!\n"
 
-#: src/testing/testing.c:1220
+#: src/testing/testing.c:1231
 #, fuzzy
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr "Kunde inte komma åt namnrymdsinformation.\n"
 
-#: src/testing/testing.c:1236
+#: src/testing/testing.c:1247
 #, fuzzy, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr "Kunde inte skapa värdnyckel!\n"
 
-#: src/testing/testing.c:1250
+#: src/testing/testing.c:1261
 #, fuzzy, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr "Kunde inte skapa användarkonto:"
 
-#: src/testing/testing.c:1278
+#: src/testing/testing.c:1289
 #, fuzzy, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
-#: src/testing/testing.c:1384
+#: src/testing/testing.c:1395
 #, fuzzy, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr "Fel vid %s:%d.\n"
 
-#: src/testing/testing.c:1683
+#: src/testing/testing.c:1694
 #, fuzzy, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
@@ -7107,19 +7088,19 @@ msgstr "# krypterade PONG-meddelanden mottagna"
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:3317
-#: src/transport/gnunet-communicator-udp.c:3790
-#: src/transport/gnunet-service-tng.c:10223
+#: src/transport/gnunet-communicator-tcp.c:3329
+#: src/transport/gnunet-communicator-udp.c:3814
+#: src/transport/gnunet-service-tng.c:10388
 #: src/transport/gnunet-service-transport.c:2627
 #, fuzzy
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr "GNUnet-konfiguration"
 
-#: src/transport/gnunet-communicator-tcp.c:3655
+#: src/transport/gnunet-communicator-tcp.c:3671
 msgid "GNUnet TCP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-udp.c:3862
+#: src/transport/gnunet-communicator-udp.c:3889
 msgid "GNUnet UDP communicator"
 msgstr ""
 
@@ -8366,48 +8347,48 @@ msgstr ""
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr ""
 
-#: src/util/common_logging.c:1106
+#: src/util/common_logging.c:1108
 msgid "ERROR"
 msgstr "FEL"
 
-#: src/util/common_logging.c:1108
+#: src/util/common_logging.c:1110
 msgid "WARNING"
 msgstr "VARNING"
 
-#: src/util/common_logging.c:1110
+#: src/util/common_logging.c:1112
 msgid "MESSAGE"
 msgstr "MEDDELANDE"
 
-#: src/util/common_logging.c:1112
+#: src/util/common_logging.c:1114
 msgid "INFO"
 msgstr "INFO"
 
-#: src/util/common_logging.c:1114
+#: src/util/common_logging.c:1116
 msgid "DEBUG"
 msgstr "FELSÖKNING"
 
-#: src/util/common_logging.c:1116
+#: src/util/common_logging.c:1118
 msgid "NONE"
 msgstr ""
 
-#: src/util/common_logging.c:1117
+#: src/util/common_logging.c:1119
 msgid "INVALID"
 msgstr ""
 
-#: src/util/common_logging.c:1398
+#: src/util/common_logging.c:1400
 msgid "unknown address"
 msgstr ""
 
-#: src/util/common_logging.c:1443
+#: src/util/common_logging.c:1445
 msgid "invalid address"
 msgstr ""
 
-#: src/util/common_logging.c:1462
+#: src/util/common_logging.c:1464
 #, fuzzy, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr "Konfigurationsfil \"%s\" skapad.\n"
 
-#: src/util/common_logging.c:1485
+#: src/util/common_logging.c:1487
 #, fuzzy, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8482,6 +8463,26 @@ msgid ""
 "as an environmental variable\n"
 msgstr ""
 
+#: src/util/configuration_helper.c:133
+#, c-format
+msgid "The following sections are available:\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:147
+#, fuzzy, c-format
+msgid "%s, %s or %s argument is required\n"
+msgstr "%s: flagga \"%s\" är tvetydig\n"
+
+#: src/util/configuration_helper.c:218
+#, c-format
+msgid "--option argument required to set value\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:262
+#, fuzzy, c-format
+msgid "failed to load configuration defaults"
+msgstr "Kunde inte spara konfigurationsfil \"%s\":"
+
 #: src/util/container_bloomfilter.c:553
 #, c-format
 msgid ""
@@ -8706,67 +8707,27 @@ msgstr ""
 msgid "run decoder modus, otherwise runs as encoder"
 msgstr ""
 
-#: src/util/gnunet-config.c:187
-#, c-format
-msgid "The following sections are available:\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:201
-#, fuzzy, c-format
-msgid "%s, %s or %s argument is required\n"
-msgstr "%s: flagga \"%s\" är tvetydig\n"
-
-#: src/util/gnunet-config.c:266
-#, c-format
-msgid "--option argument required to set value\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:309
-#, fuzzy, c-format
-msgid "failed to load configuration defaults"
-msgstr "Kunde inte spara konfigurationsfil \"%s\":"
-
-#: src/util/gnunet-config.c:354
+#: src/util/gnunet-config.c:139
 msgid "test if the current installation supports the specified BACKEND"
 msgstr ""
 
-#: src/util/gnunet-config.c:360
-#, fuzzy
-msgid "write the full configuration file, including default values"
-msgstr "Konfigurationsfil \"%s\" skapad.\n"
-
-#: src/util/gnunet-config.c:365
-msgid "interpret option value as a filename (with $-expansion)"
-msgstr ""
-
-#: src/util/gnunet-config.c:370
-#, fuzzy
-msgid "name of the option to access"
-msgstr "Visa värde av alternativet"
-
-#: src/util/gnunet-config.c:376
-#, fuzzy
-msgid "rewrite the configuration file, even if nothing changed"
-msgstr "använd konfigurationsfil FILNAMN"
-
-#: src/util/gnunet-config.c:382
-msgid "output extra diagnostics"
+#: src/util/gnunet-config.c:145
+msgid ""
+"Provide an appropriate value for CFLAGS to applications building on top of "
+"GNUnet"
 msgstr ""
 
-#: src/util/gnunet-config.c:387
-#, fuzzy
-msgid "print available configuration sections"
-msgstr "GNUnet-konfiguration"
-
-#: src/util/gnunet-config.c:393
-msgid "name of the section to access"
+#: src/util/gnunet-config.c:151
+msgid ""
+"Provide an appropriate value for LIBS to applications building on top of "
+"GNUnet"
 msgstr ""
 
-#: src/util/gnunet-config.c:398
-msgid "value to set"
+#: src/util/gnunet-config.c:157
+msgid "Provide the path under which GNUnet was installed"
 msgstr ""
 
-#: src/util/gnunet-config.c:413
+#: src/util/gnunet-config.c:172
 #, fuzzy
 msgid "Manipulate GNUnet configuration files"
 msgstr "skriv ut ett värde från konfigurationsfilen till standard ut"
@@ -8947,7 +8908,7 @@ msgstr "Fel vid skapandet av användare"
 msgid "Failed to parse inbound message from helper `%s'\n"
 msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#: src/util/helper.c:602
+#: src/util/helper.c:606
 #, fuzzy, c-format
 msgid "Error writing to `%s': %s\n"
 msgstr "Fel vid skapandet av användare"
@@ -8985,34 +8946,39 @@ msgstr ""
 msgid "Initialization of plugin mechanism failed: %s!\n"
 msgstr "Initiering av insticksmekanism misslyckades: %s!\n"
 
-#: src/util/plugin.c:156
+#: src/util/plugin.c:162
 #, fuzzy, c-format
 msgid "`%s' failed to resolve method '%s' with error: %s\n"
 msgstr "\"%s\" misslyckades för fil \"%s\" vid %s:%d med fel: %s\n"
 
-#: src/util/plugin.c:234
+#: src/util/plugin.c:240
 #, fuzzy, c-format
 msgid "`%s' failed for library `%s' with error: %s\n"
 msgstr "\"%s\" misslyckades vid %s:%d med fel: %s\n"
 
-#: src/util/plugin.c:414
+#: src/util/plugin.c:420
 #, fuzzy
 msgid "Could not determine plugin installation path.\n"
 msgstr "Kunde inte fastställa min publika IPv6-adress.\n"
 
-#: src/util/program.c:252
+#: src/util/program.c:251
 #, fuzzy, c-format
-msgid "Unreadable or malformed configuration file `%s', exit ...\n"
+msgid "Unreadable configuration file `%s', exiting ...\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
-#: src/util/program.c:272
+#: src/util/program.c:263
 #, fuzzy, c-format
-msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
+msgid "Malformed configuration file `%s', exiting ...\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
-#: src/util/program.c:288
+#: src/util/program.c:278
+#, fuzzy, c-format
+msgid "Unreadable configuration file `%s'. Exiting ...\n"
+msgstr "Kunde inte spara konfigurationsfil \"%s\":"
+
+#: src/util/program.c:293
 #, fuzzy
-msgid "Unreadable or malformed configuration, exit ...\n"
+msgid "Malformed configuration. Exiting ...\n"
 msgstr "Kunde inte spara konfigurationsfil \"%s\":"
 
 #: src/util/regex.c:139
@@ -9342,27 +9308,59 @@ msgstr ""
 msgid "Failed to connect to the namestore!\n"
 msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#, fuzzy, c-format
+#, fuzzy
+#~ msgid "Waiting for child to exit.\n"
+#~ msgstr "Väntar på att motparter ska ansluta (%u iterationer kvar)...\n"
+
+#, fuzzy
+#~ msgid "Spawning process `%s'\n"
+#~ msgstr "Startade samling \"%s\".\n"
+
+#, fuzzy
+#~ msgid "write the full configuration file, including default values"
+#~ msgstr "Konfigurationsfil \"%s\" skapad.\n"
+
+#, fuzzy
+#~ msgid "name of the option to access"
+#~ msgstr "Visa värde av alternativet"
+
+#, fuzzy
+#~ msgid "rewrite the configuration file, even if nothing changed"
+#~ msgstr "använd konfigurationsfil FILNAMN"
+
+#, fuzzy
+#~ msgid "print available configuration sections"
+#~ msgstr "GNUnet-konfiguration"
+
+#, fuzzy
+#~ msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
+#~ msgstr "Kunde inte spara konfigurationsfil \"%s\":"
+
+#, fuzzy
+#~ msgid "Unreadable or malformed configuration, exit ...\n"
+#~ msgstr "Kunde inte spara konfigurationsfil \"%s\":"
+
+#, fuzzy
 #~ msgid "Start logging `%s'\n"
 #~ msgstr "Startade samling \"%s\".\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Failed to connect master peer [%u] with slave [%u]\n"
 #~ msgstr "Misslyckades att ansluta till gnunetd.\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Unsupported form value `%s'\n"
 #~ msgstr "Kommando \"%s\" stöds ej.  Avbryter.\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Failed to create page for `%s'\n"
 #~ msgstr "Kunde inte skapa namnrymd \"%s\" (existerar?).\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Failed to setup post processor for `%s'\n"
 #~ msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Unable to parse PKEY record `%s'\n"
 #~ msgstr "Misslyckades att läsa kompislista från \"%s\"\n"
 
@@ -9389,7 +9387,7 @@ msgstr "Misslyckades att ansluta till gnunetd.\n"
 #~ msgid "days"
 #~ msgstr " dagar"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Could not acquire lock on file `%s': %s...\n"
 #~ msgstr "Kunde inte slå upp \"%s\": %s\n"
 
diff --git a/po/vi.po b/po/vi.po
index bfb260eef..1d8f84f90 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: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2021-08-28 16:52+0200\n"
+"POT-Creation-Date: 2021-10-15 10:46+0200\n"
 "PO-Revision-Date: 2008-09-10 22:05+0930\n"
 "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
 "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
@@ -2225,107 +2225,107 @@ msgstr "Nhận được thông báo « %s » sai từ đồng đẳng « 
%s ».\
 msgid "# FIND PEER messages initiated"
 msgstr "# các thông báo PING được tạo"
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:855
 #, fuzzy
 msgid "# requests TTL-dropped"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1035
-#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1042
+#: src/dht/gnunet-service-dht_neighbours.c:1079
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1045
-#: src/dht/gnunet-service-dht_neighbours.c:1088
+#: src/dht/gnunet-service-dht_neighbours.c:1052
+#: src/dht/gnunet-service-dht_neighbours.c:1095
 #, fuzzy
 msgid "# Peer selection failed"
 msgstr "# các cuộc gọi HTTP select (lựa chọn)"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1246
+#: src/dht/gnunet-service-dht_neighbours.c:1253
 #, fuzzy
 msgid "# PUT requests routed"
 msgstr "# các yêu cầu dht được định tuyến"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1280
+#: src/dht/gnunet-service-dht_neighbours.c:1287
 #, fuzzy
 msgid "# PUT messages queued for transmission"
 msgstr "# các thông báo PING được tạo"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1292
-#: src/dht/gnunet-service-dht_neighbours.c:1434
-#: src/dht/gnunet-service-dht_neighbours.c:1538
+#: src/dht/gnunet-service-dht_neighbours.c:1299
+#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1545
 #, fuzzy
 msgid "# P2P messages dropped due to full queue"
 msgstr "# các yêu cầu lỗ hổng bị bỏ do trọng tải"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1377
+#: src/dht/gnunet-service-dht_neighbours.c:1384
 #, fuzzy
 msgid "# GET requests routed"
 msgstr "# các yêu cầu dht được định tuyến"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1421
+#: src/dht/gnunet-service-dht_neighbours.c:1428
 #, fuzzy
 msgid "# GET messages queued for transmission"
 msgstr "# các thông báo PING được tạo"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1553
+#: src/dht/gnunet-service-dht_neighbours.c:1560
 #, fuzzy
 msgid "# RESULT messages queued for transmission"
 msgstr "# các thông báo PING được tạo"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1656
+#: src/dht/gnunet-service-dht_neighbours.c:1663
 msgid "# Expired PUTs discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1664
+#: src/dht/gnunet-service-dht_neighbours.c:1671
 #, fuzzy
 msgid "# P2P PUT requests received"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1668
+#: src/dht/gnunet-service-dht_neighbours.c:1675
 #, fuzzy
 msgid "# P2P PUT bytes received"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1900
+#: src/dht/gnunet-service-dht_neighbours.c:1907
 #, fuzzy
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr "# các yêu cầu được lọc theo bộ lọc bloom"
 
-#: src/dht/gnunet-service-dht_neighbours.c:1909
+#: src/dht/gnunet-service-dht_neighbours.c:1916
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2072
+#: src/dht/gnunet-service-dht_neighbours.c:2079
 #, fuzzy
 msgid "# P2P GET requests received"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2076
+#: src/dht/gnunet-service-dht_neighbours.c:2083
 #, fuzzy
 msgid "# P2P GET bytes received"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2142
+#: src/dht/gnunet-service-dht_neighbours.c:2149
 #, fuzzy
 msgid "# P2P FIND PEER requests processed"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2163
+#: src/dht/gnunet-service-dht_neighbours.c:2170
 #, fuzzy
 msgid "# P2P GET requests ONLY routed"
 msgstr "# các yêu cầu dht được định tuyến"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2341
+#: src/dht/gnunet-service-dht_neighbours.c:2348
 msgid "# Expired results discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2358
+#: src/dht/gnunet-service-dht_neighbours.c:2365
 #, fuzzy
 msgid "# P2P RESULTS received"
 msgstr "# Tín hiệu HTTP PUT được nhận"
 
-#: src/dht/gnunet-service-dht_neighbours.c:2362
+#: src/dht/gnunet-service-dht_neighbours.c:2369
 #, fuzzy
 msgid "# P2P RESULT bytes received"
 msgstr "# Tín hiệu HTTP PUT được nhận"
@@ -2368,7 +2368,7 @@ msgstr ""
 msgid "# DHT requests combined"
 msgstr "# các yêu cầu get (lấy) dht được nhận"
 
-#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:253
 #, 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"
@@ -2383,7 +2383,7 @@ msgid "number of PUTs to perform per peer"
 msgstr ""
 
 #: src/dht/gnunet_dht_profiler.c:967 src/nse/gnunet-nse-profiler.c:872
-#: src/testbed/gnunet-testbed-profiler.c:305
+#: src/testbed/gnunet-testbed-profiler.c:302
 msgid "name of the file with the login information for the testbed"
 msgstr ""
 
@@ -6736,7 +6736,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr "Đối số không hợp lệ cho « %s ».\n"
 
 #: src/testbed/generate-underlay-topology.c:366
-#: src/testbed/gnunet-testbed-profiler.c:284
+#: src/testbed/gnunet-testbed-profiler.c:282
 msgid "create COUNT number of peers"
 msgstr ""
 
@@ -6775,7 +6775,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:234 src/testing/list-keys.c:47
-#: src/testing/testing.c:278 src/util/gnunet-ecc.c:318
+#: src/testing/testing.c:289 src/util/gnunet-ecc.c:318
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr ""
@@ -6845,27 +6845,17 @@ msgstr "« %s » đang tắt.\n"
 msgid "%.s Unknown result code."
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:290
+#: src/testbed/gnunet-testbed-profiler.c:288
 msgid "tolerate COUNT number of continuous timeout failures"
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:295
+#: src/testbed/gnunet-testbed-profiler.c:293
 msgid ""
 "run profiler in non-interactive mode where upon testbed setup the profiler "
 "does not wait for a keystroke but continues to run until a termination "
 "signal is received"
 msgstr ""
 
-#: src/testbed/gnunet_testbed_mpi_spawn.c:119
-#, fuzzy
-msgid "Waiting for child to exit.\n"
-msgstr "Đang đợi các đồng đẳng kết nối"
-
-#: src/testbed/gnunet_testbed_mpi_spawn.c:242
-#, fuzzy, c-format
-msgid "Spawning process `%s'\n"
-msgstr "Đang bắt đầu tài về « %s »\n"
-
 #: src/testbed/testbed_api.c:399
 #, fuzzy, c-format
 msgid "Adding host %u failed with error: %s\n"
@@ -6886,11 +6876,6 @@ msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể 
được
 msgid "Hosts file %s cannot be read\n"
 msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
 
-#: src/testbed/testbed_api_hosts.c:589
-#, c-format
-msgid "The function %s is only available when compiled with (--with-ll)\n"
-msgstr ""
-
 #: src/testbed/testbed_api_testbed.c:822
 msgid "Linking controllers failed. Exiting"
 msgstr ""
@@ -6921,43 +6906,39 @@ msgstr ""
 msgid "Shutting down testbed due to timeout while setup.\n"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1274
-msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
-msgstr ""
-
-#: src/testbed/testbed_api_testbed.c:1286
+#: src/testbed/testbed_api_testbed.c:1276
 msgid "No hosts loaded. Need at least one host\n"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1312
+#: src/testbed/testbed_api_testbed.c:1301
 msgid "Specified topology must be supported by testbed"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1368
+#: src/testbed/testbed_api_testbed.c:1357
 #, c-format
 msgid ""
 "Maximum number of edges a peer can have in a scale free topology cannot be "
 "more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1385
+#: src/testbed/testbed_api_testbed.c:1374
 #, c-format
 msgid ""
 "The number of edges that can established when adding a new node to scale "
 "free topology cannot be more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1033
+#: src/testbed/testbed_api_topology.c:1033 src/testing/testing.c:2320
 #, fuzzy, c-format
 msgid "Topology file %s not found\n"
 msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
 
-#: src/testbed/testbed_api_topology.c:1041
+#: src/testbed/testbed_api_topology.c:1041 src/testing/testing.c:2328
 #, fuzzy, c-format
 msgid "Topology file %s has no data\n"
 msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
 
-#: src/testbed/testbed_api_topology.c:1049
+#: src/testbed/testbed_api_topology.c:1049 src/testing/testing.c:2336
 #, fuzzy, c-format
 msgid "Topology file %s cannot be read\n"
 msgstr "Khoá phiên chạy từ đồng đẳng « %s » không thể được thẩm tra.\n"
@@ -7032,58 +7013,58 @@ msgstr ""
 msgid "list COUNT number of keys"
 msgstr ""
 
-#: src/testing/testing.c:261
+#: src/testing/testing.c:272
 #, c-format
 msgid "Hostkeys file not found: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:714
+#: src/testing/testing.c:725
 #, fuzzy, c-format
 msgid "Key number %u does not exist\n"
 msgstr "đặt số trình nền cần khởi chạy"
 
-#: src/testing/testing.c:1188
+#: src/testing/testing.c:1199
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
 "precompute more hostkeys first.\n"
 msgstr ""
 
-#: src/testing/testing.c:1197
+#: src/testing/testing.c:1208
 #, fuzzy, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr "Lỗi sơ khởi dịch vụ « %s ».\n"
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1218
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr ""
 
-#: src/testing/testing.c:1220
+#: src/testing/testing.c:1231
 #, fuzzy
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr "Không thể truy cập đến thông tin về không gian tên.\n"
 
-#: src/testing/testing.c:1236
+#: src/testing/testing.c:1247
 #, fuzzy, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr "Không thể đọc danh sách bạn bè « %s »\n"
 
-#: src/testing/testing.c:1250
+#: src/testing/testing.c:1261
 #, fuzzy, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr "Lỗi tạo thư mục tạm thời."
 
-#: src/testing/testing.c:1278
+#: src/testing/testing.c:1289
 #, fuzzy, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
-#: src/testing/testing.c:1384
+#: src/testing/testing.c:1395
 #, fuzzy, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr "Lỗi chạy %s: %s %d\n"
 
-#: src/testing/testing.c:1683
+#: src/testing/testing.c:1694
 #, fuzzy, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
@@ -7168,19 +7149,19 @@ msgstr "# các thông báo PONG đã mật mã được nhận"
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:3317
-#: src/transport/gnunet-communicator-udp.c:3790
-#: src/transport/gnunet-service-tng.c:10223
+#: src/transport/gnunet-communicator-tcp.c:3329
+#: src/transport/gnunet-communicator-udp.c:3814
+#: src/transport/gnunet-service-tng.c:10388
 #: src/transport/gnunet-service-transport.c:2627
 #, fuzzy
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr "Lưu cấu hình ngay bây giờ không?"
 
-#: src/transport/gnunet-communicator-tcp.c:3655
+#: src/transport/gnunet-communicator-tcp.c:3671
 msgid "GNUnet TCP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-udp.c:3862
+#: src/transport/gnunet-communicator-udp.c:3889
 msgid "GNUnet UDP communicator"
 msgstr ""
 
@@ -8420,49 +8401,49 @@ msgstr ""
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr "Thông điệp « %.*s » đã lặp lại %u lần trong %llu giây trước\n"
 
-#: src/util/common_logging.c:1106
+#: src/util/common_logging.c:1108
 msgid "ERROR"
 msgstr "LỖI"
 
-#: src/util/common_logging.c:1108
+#: src/util/common_logging.c:1110
 msgid "WARNING"
 msgstr "CẢNH BÁO"
 
-#: src/util/common_logging.c:1110
+#: src/util/common_logging.c:1112
 msgid "MESSAGE"
 msgstr ""
 
-#: src/util/common_logging.c:1112
+#: src/util/common_logging.c:1114
 msgid "INFO"
 msgstr "TIN"
 
-#: src/util/common_logging.c:1114
+#: src/util/common_logging.c:1116
 msgid "DEBUG"
 msgstr "GỠ LỖI"
 
-#: src/util/common_logging.c:1116
+#: src/util/common_logging.c:1118
 msgid "NONE"
 msgstr ""
 
-#: src/util/common_logging.c:1117
+#: src/util/common_logging.c:1119
 msgid "INVALID"
 msgstr ""
 
-#: src/util/common_logging.c:1398
+#: src/util/common_logging.c:1400
 msgid "unknown address"
 msgstr ""
 
-#: src/util/common_logging.c:1443
+#: src/util/common_logging.c:1445
 msgid "invalid address"
 msgstr ""
 
-#: src/util/common_logging.c:1462
+#: src/util/common_logging.c:1464
 #, fuzzy, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr ""
 "Cấu hình không thỏa mãn các ràng buộc của tập tin đặc tả cấu hình « %s ».\n"
 
-#: src/util/common_logging.c:1485
+#: src/util/common_logging.c:1487
 #, fuzzy, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8540,6 +8521,26 @@ msgid ""
 "as an environmental variable\n"
 msgstr ""
 
+#: src/util/configuration_helper.c:133
+#, c-format
+msgid "The following sections are available:\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:147
+#, fuzzy, c-format
+msgid "%s, %s or %s argument is required\n"
+msgstr "đặt tên hiệu cần dùng (cần thiết)"
+
+#: src/util/configuration_helper.c:218
+#, c-format
+msgid "--option argument required to set value\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:262
+#, fuzzy, c-format
+msgid "failed to load configuration defaults"
+msgstr "Không thể lưu tập tin cấu hình « %s »:"
+
 #: src/util/container_bloomfilter.c:553
 #, c-format
 msgid ""
@@ -8766,66 +8767,27 @@ msgstr ""
 msgid "run decoder modus, otherwise runs as encoder"
 msgstr ""
 
-#: src/util/gnunet-config.c:187
-#, c-format
-msgid "The following sections are available:\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:201
-#, fuzzy, c-format
-msgid "%s, %s or %s argument is required\n"
-msgstr "đặt tên hiệu cần dùng (cần thiết)"
-
-#: src/util/gnunet-config.c:266
-#, c-format
-msgid "--option argument required to set value\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:309
-#, fuzzy, c-format
-msgid "failed to load configuration defaults"
-msgstr "Không thể lưu tập tin cấu hình « %s »:"
-
-#: src/util/gnunet-config.c:354
+#: src/util/gnunet-config.c:139
 msgid "test if the current installation supports the specified BACKEND"
 msgstr ""
 
-#: src/util/gnunet-config.c:360
-#, fuzzy
-msgid "write the full configuration file, including default values"
-msgstr "Tập tin cấu hình « %s » đã được ghi.\n"
-
-#: src/util/gnunet-config.c:365
-msgid "interpret option value as a filename (with $-expansion)"
-msgstr ""
-
-#: src/util/gnunet-config.c:370
-msgid "name of the option to access"
-msgstr ""
-
-#: src/util/gnunet-config.c:376
-#, fuzzy
-msgid "rewrite the configuration file, even if nothing changed"
-msgstr "dùng tập tin cấu hình TÊN_TẬP_TIN"
-
-#: src/util/gnunet-config.c:382
-msgid "output extra diagnostics"
+#: src/util/gnunet-config.c:145
+msgid ""
+"Provide an appropriate value for CFLAGS to applications building on top of "
+"GNUnet"
 msgstr ""
 
-#: src/util/gnunet-config.c:387
-#, fuzzy
-msgid "print available configuration sections"
-msgstr "Lưu cấu hình ngay bây giờ không?"
-
-#: src/util/gnunet-config.c:393
-msgid "name of the section to access"
+#: src/util/gnunet-config.c:151
+msgid ""
+"Provide an appropriate value for LIBS to applications building on top of "
+"GNUnet"
 msgstr ""
 
-#: src/util/gnunet-config.c:398
-msgid "value to set"
+#: src/util/gnunet-config.c:157
+msgid "Provide the path under which GNUnet was installed"
 msgstr ""
 
-#: src/util/gnunet-config.c:413
+#: src/util/gnunet-config.c:172
 #, fuzzy
 msgid "Manipulate GNUnet configuration files"
 msgstr "cập nhật một giá trị trong tập tin cấu hình"
@@ -9006,7 +8968,7 @@ msgstr "Gặp lỗi khi tạo người dùng"
 msgid "Failed to parse inbound message from helper `%s'\n"
 msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
-#: src/util/helper.c:602
+#: src/util/helper.c:606
 #, fuzzy, c-format
 msgid "Error writing to `%s': %s\n"
 msgstr "Gặp lỗi khi tạo người dùng"
@@ -9044,34 +9006,39 @@ msgstr ""
 msgid "Initialization of plugin mechanism failed: %s!\n"
 msgstr "Lỗi sơ khởi cơ chế phần bổ sung: %s\n"
 
-#: src/util/plugin.c:156
+#: src/util/plugin.c:162
 #, c-format
 msgid "`%s' failed to resolve method '%s' with error: %s\n"
 msgstr "« %s » không giải quyết được phương pháp « %s », với lỗi: %s\n"
 
-#: src/util/plugin.c:234
+#: src/util/plugin.c:240
 #, c-format
 msgid "`%s' failed for library `%s' with error: %s\n"
 msgstr "« %s » thất bại cho thư viện « %s » với lỗi: %s\n"
 
-#: src/util/plugin.c:414
+#: src/util/plugin.c:420
 #, fuzzy
 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:252
+#: src/util/program.c:251
 #, fuzzy, c-format
-msgid "Unreadable or malformed configuration file `%s', exit ...\n"
+msgid "Unreadable configuration file `%s', exiting ...\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
-#: src/util/program.c:272
+#: src/util/program.c:263
 #, fuzzy, c-format
-msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
+msgid "Malformed configuration file `%s', exiting ...\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
-#: src/util/program.c:288
+#: src/util/program.c:278
+#, fuzzy, c-format
+msgid "Unreadable configuration file `%s'. Exiting ...\n"
+msgstr "Không thể lưu tập tin cấu hình « %s »:"
+
+#: src/util/program.c:293
 #, fuzzy
-msgid "Unreadable or malformed configuration, exit ...\n"
+msgid "Malformed configuration. Exiting ...\n"
 msgstr "Không thể lưu tập tin cấu hình « %s »:"
 
 #: src/util/regex.c:139
@@ -9400,31 +9367,59 @@ msgstr ""
 msgid "Failed to connect to the namestore!\n"
 msgstr "Không kết nối được đến trình nền gnunetd."
 
+#, fuzzy
+#~ msgid "Waiting for child to exit.\n"
+#~ msgstr "Đang đợi các đồng đẳng kết nối"
+
+#, fuzzy
+#~ msgid "Spawning process `%s'\n"
+#~ msgstr "Đang bắt đầu tài về « %s »\n"
+
+#, fuzzy
+#~ msgid "write the full configuration file, including default values"
+#~ msgstr "Tập tin cấu hình « %s » đã được ghi.\n"
+
+#, fuzzy
+#~ msgid "rewrite the configuration file, even if nothing changed"
+#~ msgstr "dùng tập tin cấu hình TÊN_TẬP_TIN"
+
+#, fuzzy
+#~ msgid "print available configuration sections"
+#~ msgstr "Lưu cấu hình ngay bây giờ không?"
+
+#, fuzzy
+#~ msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
+#~ msgstr "Không thể lưu tập tin cấu hình « %s »:"
+
+#, fuzzy
+#~ msgid "Unreadable or malformed configuration, exit ...\n"
+#~ msgstr "Không thể lưu tập tin cấu hình « %s »:"
+
 #, fuzzy
 #~ msgid "Stop logging\n"
 #~ msgstr "Theo dõi"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Start logging `%s'\n"
 #~ msgstr "Đang bắt đầu tài về « %s »\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Failed to connect master peer [%u] with slave [%u]\n"
 #~ msgstr "Lỗi kết nối đến gnunetd.\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Unsupported form value `%s'\n"
 #~ msgstr "Lệnh không được hỗ trợ « %s ». Đang hủy bỏ.\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Failed to create page for `%s'\n"
 #~ msgstr "Không thể tạo miền tên.\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Failed to setup post processor for `%s'\n"
 #~ msgstr "Lỗi cập nhật dữ liệu cho mô-đun « %s »\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Unable to parse PKEY record `%s'\n"
 #~ msgstr "Lỗi đọc danh sách bạn bè từ « %s »\n"
 
@@ -9451,7 +9446,7 @@ msgstr "Không kết nối được đến trình nền gnunetd."
 #~ msgid "days"
 #~ msgstr " ngày"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Could not acquire lock on file `%s': %s...\n"
 #~ msgstr "Lỗi mở tập tin theo dõi « %s »: %s\n"
 
diff --git a/po/zh_CN.po b/po/zh_CN.po
index c68a3c645..1cd864c94 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: gnunet-developers@mail.gnu.org\n"
-"POT-Creation-Date: 2021-08-28 16:52+0200\n"
+"POT-Creation-Date: 2021-10-15 10:46+0200\n"
 "PO-Revision-Date: 2011-07-09 12:12+0800\n"
 "Last-Translator: Wylmer Wang <wantinghard@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
@@ -2140,91 +2140,91 @@ msgstr ""
 msgid "# FIND PEER messages initiated"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:851
+#: src/dht/gnunet-service-dht_neighbours.c:855
 msgid "# requests TTL-dropped"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1035
-#: src/dht/gnunet-service-dht_neighbours.c:1072
+#: src/dht/gnunet-service-dht_neighbours.c:1042
+#: src/dht/gnunet-service-dht_neighbours.c:1079
 msgid "# Peers excluded from routing due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1045
-#: src/dht/gnunet-service-dht_neighbours.c:1088
+#: src/dht/gnunet-service-dht_neighbours.c:1052
+#: src/dht/gnunet-service-dht_neighbours.c:1095
 msgid "# Peer selection failed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1246
+#: src/dht/gnunet-service-dht_neighbours.c:1253
 msgid "# PUT requests routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1280
+#: src/dht/gnunet-service-dht_neighbours.c:1287
 msgid "# PUT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1292
-#: src/dht/gnunet-service-dht_neighbours.c:1434
-#: src/dht/gnunet-service-dht_neighbours.c:1538
+#: src/dht/gnunet-service-dht_neighbours.c:1299
+#: src/dht/gnunet-service-dht_neighbours.c:1441
+#: src/dht/gnunet-service-dht_neighbours.c:1545
 msgid "# P2P messages dropped due to full queue"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1377
+#: src/dht/gnunet-service-dht_neighbours.c:1384
 msgid "# GET requests routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1421
+#: src/dht/gnunet-service-dht_neighbours.c:1428
 msgid "# GET messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1553
+#: src/dht/gnunet-service-dht_neighbours.c:1560
 msgid "# RESULT messages queued for transmission"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1656
+#: src/dht/gnunet-service-dht_neighbours.c:1663
 msgid "# Expired PUTs discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1664
+#: src/dht/gnunet-service-dht_neighbours.c:1671
 msgid "# P2P PUT requests received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1668
+#: src/dht/gnunet-service-dht_neighbours.c:1675
 msgid "# P2P PUT bytes received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1900
+#: src/dht/gnunet-service-dht_neighbours.c:1907
 msgid "# FIND PEER requests ignored due to Bloomfilter"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:1909
+#: src/dht/gnunet-service-dht_neighbours.c:1916
 msgid "# FIND PEER requests ignored due to lack of HELLO"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2072
+#: src/dht/gnunet-service-dht_neighbours.c:2079
 msgid "# P2P GET requests received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2076
+#: src/dht/gnunet-service-dht_neighbours.c:2083
 msgid "# P2P GET bytes received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2142
+#: src/dht/gnunet-service-dht_neighbours.c:2149
 msgid "# P2P FIND PEER requests processed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2163
+#: src/dht/gnunet-service-dht_neighbours.c:2170
 msgid "# P2P GET requests ONLY routed"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2341
+#: src/dht/gnunet-service-dht_neighbours.c:2348
 msgid "# Expired results discarded"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2358
+#: src/dht/gnunet-service-dht_neighbours.c:2365
 msgid "# P2P RESULTS received"
 msgstr ""
 
-#: src/dht/gnunet-service-dht_neighbours.c:2362
+#: src/dht/gnunet-service-dht_neighbours.c:2369
 msgid "# P2P RESULT bytes received"
 msgstr ""
 
@@ -2264,7 +2264,7 @@ msgstr ""
 msgid "# DHT requests combined"
 msgstr ""
 
-#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:255
+#: src/dht/gnunet_dht_profiler.c:922 src/testbed/gnunet-testbed-profiler.c:253
 #, fuzzy, c-format
 msgid "Exiting as the number of peers is %u\n"
 msgstr "增加 TCP/IP 的最大连接数"
@@ -2279,7 +2279,7 @@ msgid "number of PUTs to perform per peer"
 msgstr ""
 
 #: src/dht/gnunet_dht_profiler.c:967 src/nse/gnunet-nse-profiler.c:872
-#: src/testbed/gnunet-testbed-profiler.c:305
+#: src/testbed/gnunet-testbed-profiler.c:302
 msgid "name of the file with the login information for the testbed"
 msgstr ""
 
@@ -6491,7 +6491,7 @@ msgid "Invalid argument `%s'; expecting unsigned int\n"
 msgstr "“%s”的参数无效。\n"
 
 #: src/testbed/generate-underlay-topology.c:366
-#: src/testbed/gnunet-testbed-profiler.c:284
+#: src/testbed/gnunet-testbed-profiler.c:282
 msgid "create COUNT number of peers"
 msgstr ""
 
@@ -6530,7 +6530,7 @@ msgid ""
 msgstr ""
 
 #: src/testbed/gnunet-daemon-testbed-underlay.c:234 src/testing/list-keys.c:47
-#: src/testing/testing.c:278 src/util/gnunet-ecc.c:318
+#: src/testing/testing.c:289 src/util/gnunet-ecc.c:318
 #, c-format
 msgid "Incorrect hostkey file format: %s\n"
 msgstr ""
@@ -6600,26 +6600,17 @@ msgstr ""
 msgid "%.s Unknown result code."
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:290
+#: src/testbed/gnunet-testbed-profiler.c:288
 msgid "tolerate COUNT number of continuous timeout failures"
 msgstr ""
 
-#: src/testbed/gnunet-testbed-profiler.c:295
+#: src/testbed/gnunet-testbed-profiler.c:293
 msgid ""
 "run profiler in non-interactive mode where upon testbed setup the profiler "
 "does not wait for a keystroke but continues to run until a termination "
 "signal is received"
 msgstr ""
 
-#: src/testbed/gnunet_testbed_mpi_spawn.c:119
-msgid "Waiting for child to exit.\n"
-msgstr ""
-
-#: src/testbed/gnunet_testbed_mpi_spawn.c:242
-#, fuzzy, c-format
-msgid "Spawning process `%s'\n"
-msgstr "卸载 GNUnet 服务"
-
 #: src/testbed/testbed_api.c:399
 #, fuzzy, c-format
 msgid "Adding host %u failed with error: %s\n"
@@ -6640,11 +6631,6 @@ msgstr ""
 msgid "Hosts file %s cannot be read\n"
 msgstr ""
 
-#: src/testbed/testbed_api_hosts.c:589
-#, c-format
-msgid "The function %s is only available when compiled with (--with-ll)\n"
-msgstr ""
-
 #: src/testbed/testbed_api_testbed.c:822
 msgid "Linking controllers failed. Exiting"
 msgstr ""
@@ -6675,43 +6661,39 @@ msgstr ""
 msgid "Shutting down testbed due to timeout while setup.\n"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1274
-msgid "No hosts loaded from LoadLeveler. Need at least one host\n"
-msgstr ""
-
-#: src/testbed/testbed_api_testbed.c:1286
+#: src/testbed/testbed_api_testbed.c:1276
 msgid "No hosts loaded. Need at least one host\n"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1312
+#: src/testbed/testbed_api_testbed.c:1301
 msgid "Specified topology must be supported by testbed"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1368
+#: src/testbed/testbed_api_testbed.c:1357
 #, c-format
 msgid ""
 "Maximum number of edges a peer can have in a scale free topology cannot be "
 "more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_testbed.c:1385
+#: src/testbed/testbed_api_testbed.c:1374
 #, c-format
 msgid ""
 "The number of edges that can established when adding a new node to scale "
 "free topology cannot be more than %u.  Given `%s = %llu'"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1033
+#: src/testbed/testbed_api_topology.c:1033 src/testing/testing.c:2320
 #, c-format
 msgid "Topology file %s not found\n"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1041
+#: src/testbed/testbed_api_topology.c:1041 src/testing/testing.c:2328
 #, c-format
 msgid "Topology file %s has no data\n"
 msgstr ""
 
-#: src/testbed/testbed_api_topology.c:1049
+#: src/testbed/testbed_api_topology.c:1049 src/testing/testing.c:2336
 #, c-format
 msgid "Topology file %s cannot be read\n"
 msgstr ""
@@ -6786,58 +6768,58 @@ msgstr ""
 msgid "list COUNT number of keys"
 msgstr ""
 
-#: src/testing/testing.c:261
+#: src/testing/testing.c:272
 #, c-format
 msgid "Hostkeys file not found: %s\n"
 msgstr ""
 
-#: src/testing/testing.c:714
+#: src/testing/testing.c:725
 #, c-format
 msgid "Key number %u does not exist\n"
 msgstr ""
 
-#: src/testing/testing.c:1188
+#: src/testing/testing.c:1199
 #, c-format
 msgid ""
 "You attempted to create a testbed with more than %u hosts.  Please "
 "precompute more hostkeys first.\n"
 msgstr ""
 
-#: src/testing/testing.c:1197
+#: src/testing/testing.c:1208
 #, fuzzy, c-format
 msgid "Failed to initialize hostkey for peer %u\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#: src/testing/testing.c:1207
+#: src/testing/testing.c:1218
 msgid "PRIVATE_KEY option in PEER section missing in configuration\n"
 msgstr ""
 
-#: src/testing/testing.c:1220
+#: src/testing/testing.c:1231
 #, fuzzy
 msgid "Failed to create configuration for peer (not enough free ports?)\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/testing/testing.c:1236
+#: src/testing/testing.c:1247
 #, fuzzy, c-format
 msgid "Cannot open hostkey file `%s': %s\n"
 msgstr "找不到接口“%s”的一个 IP 地址。\n"
 
-#: src/testing/testing.c:1250
+#: src/testing/testing.c:1261
 #, fuzzy, c-format
 msgid "Failed to write hostkey file for peer %u: %s\n"
 msgstr "发送消息失败。\n"
 
-#: src/testing/testing.c:1278
+#: src/testing/testing.c:1289
 #, fuzzy, c-format
 msgid "Failed to write configuration file `%s' for peer %u: %s\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/testing/testing.c:1384
+#: src/testing/testing.c:1395
 #, fuzzy, c-format
 msgid "Failed to start `%s': %s\n"
 msgstr "运行 %s失败:%s %d\n"
 
-#: src/testing/testing.c:1683
+#: src/testing/testing.c:1694
 #, fuzzy, c-format
 msgid "Failed to load configuration from %s\n"
 msgstr "解析配置文件“%s”失败\n"
@@ -6916,19 +6898,19 @@ msgstr ""
 msgid "GNUnet topology control"
 msgstr ""
 
-#: src/transport/gnunet-communicator-tcp.c:3317
-#: src/transport/gnunet-communicator-udp.c:3790
-#: src/transport/gnunet-service-tng.c:10223
+#: src/transport/gnunet-communicator-tcp.c:3329
+#: src/transport/gnunet-communicator-udp.c:3814
+#: src/transport/gnunet-service-tng.c:10388
 #: src/transport/gnunet-service-transport.c:2627
 #, fuzzy
 msgid "Transport service is lacking key configuration settings. Exiting.\n"
 msgstr "立即保存配置?"
 
-#: src/transport/gnunet-communicator-tcp.c:3655
+#: src/transport/gnunet-communicator-tcp.c:3671
 msgid "GNUnet TCP communicator"
 msgstr ""
 
-#: src/transport/gnunet-communicator-udp.c:3862
+#: src/transport/gnunet-communicator-udp.c:3889
 msgid "GNUnet UDP communicator"
 msgstr ""
 
@@ -8115,48 +8097,48 @@ msgstr ""
 msgid "Message `%.*s' repeated %u times in the last %s\n"
 msgstr "消息“%.*s”重复了 %u 次,在最近 %llu 秒内\n"
 
-#: src/util/common_logging.c:1106
+#: src/util/common_logging.c:1108
 msgid "ERROR"
 msgstr "错误"
 
-#: src/util/common_logging.c:1108
+#: src/util/common_logging.c:1110
 msgid "WARNING"
 msgstr "警告"
 
-#: src/util/common_logging.c:1110
+#: src/util/common_logging.c:1112
 msgid "MESSAGE"
 msgstr ""
 
-#: src/util/common_logging.c:1112
+#: src/util/common_logging.c:1114
 msgid "INFO"
 msgstr "信息"
 
-#: src/util/common_logging.c:1114
+#: src/util/common_logging.c:1116
 msgid "DEBUG"
 msgstr "调试"
 
-#: src/util/common_logging.c:1116
+#: src/util/common_logging.c:1118
 msgid "NONE"
 msgstr ""
 
-#: src/util/common_logging.c:1117
+#: src/util/common_logging.c:1119
 msgid "INVALID"
 msgstr ""
 
-#: src/util/common_logging.c:1398
+#: src/util/common_logging.c:1400
 msgid "unknown address"
 msgstr ""
 
-#: src/util/common_logging.c:1443
+#: src/util/common_logging.c:1445
 msgid "invalid address"
 msgstr ""
 
-#: src/util/common_logging.c:1462
+#: src/util/common_logging.c:1464
 #, fuzzy, c-format
 msgid "Configuration fails to specify option `%s' in section `%s'!\n"
 msgstr "配置不满足配置规范文件“%s”的约束!\n"
 
-#: src/util/common_logging.c:1485
+#: src/util/common_logging.c:1487
 #, fuzzy, c-format
 msgid ""
 "Configuration specifies invalid value for option `%s' in section `%s': %s\n"
@@ -8231,6 +8213,26 @@ msgid ""
 "as an environmental variable\n"
 msgstr ""
 
+#: src/util/configuration_helper.c:133
+#, c-format
+msgid "The following sections are available:\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:147
+#, fuzzy, c-format
+msgid "%s, %s or %s argument is required\n"
+msgstr "设置要使用的昵称(必须)"
+
+#: src/util/configuration_helper.c:218
+#, c-format
+msgid "--option argument required to set value\n"
+msgstr ""
+
+#: src/util/configuration_helper.c:262
+#, fuzzy, c-format
+msgid "failed to load configuration defaults"
+msgstr "解析配置文件“%s”失败\n"
+
 #: src/util/container_bloomfilter.c:553
 #, c-format
 msgid ""
@@ -8453,65 +8455,27 @@ msgstr ""
 msgid "run decoder modus, otherwise runs as encoder"
 msgstr ""
 
-#: src/util/gnunet-config.c:187
-#, c-format
-msgid "The following sections are available:\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:201
-#, fuzzy, c-format
-msgid "%s, %s or %s argument is required\n"
-msgstr "设置要使用的昵称(必须)"
-
-#: src/util/gnunet-config.c:266
-#, c-format
-msgid "--option argument required to set value\n"
-msgstr ""
-
-#: src/util/gnunet-config.c:309
-#, fuzzy, c-format
-msgid "failed to load configuration defaults"
-msgstr "解析配置文件“%s”失败\n"
-
-#: src/util/gnunet-config.c:354
+#: src/util/gnunet-config.c:139
 msgid "test if the current installation supports the specified BACKEND"
 msgstr ""
 
-#: src/util/gnunet-config.c:360
-#, fuzzy
-msgid "write the full configuration file, including default values"
-msgstr "配置文件“%s”已写入。\n"
-
-#: src/util/gnunet-config.c:365
-msgid "interpret option value as a filename (with $-expansion)"
-msgstr ""
-
-#: src/util/gnunet-config.c:370
-msgid "name of the option to access"
-msgstr ""
-
-#: src/util/gnunet-config.c:376
-msgid "rewrite the configuration file, even if nothing changed"
-msgstr ""
-
-#: src/util/gnunet-config.c:382
-msgid "output extra diagnostics"
+#: src/util/gnunet-config.c:145
+msgid ""
+"Provide an appropriate value for CFLAGS to applications building on top of "
+"GNUnet"
 msgstr ""
 
-#: src/util/gnunet-config.c:387
-#, fuzzy
-msgid "print available configuration sections"
-msgstr "立即保存配置?"
-
-#: src/util/gnunet-config.c:393
-msgid "name of the section to access"
+#: src/util/gnunet-config.c:151
+msgid ""
+"Provide an appropriate value for LIBS to applications building on top of "
+"GNUnet"
 msgstr ""
 
-#: src/util/gnunet-config.c:398
-msgid "value to set"
+#: src/util/gnunet-config.c:157
+msgid "Provide the path under which GNUnet was installed"
 msgstr ""
 
-#: src/util/gnunet-config.c:413
+#: src/util/gnunet-config.c:172
 #, fuzzy
 msgid "Manipulate GNUnet configuration files"
 msgstr "更改配置文件中的一个值"
@@ -8692,7 +8656,7 @@ msgstr "创建用户出错"
 msgid "Failed to parse inbound message from helper `%s'\n"
 msgstr "打开日志文件“%s”失败:%s\n"
 
-#: src/util/helper.c:602
+#: src/util/helper.c:606
 #, fuzzy, c-format
 msgid "Error writing to `%s': %s\n"
 msgstr "创建用户出错"
@@ -8730,34 +8694,39 @@ msgstr ""
 msgid "Initialization of plugin mechanism failed: %s!\n"
 msgstr "插件机构初始化失败:%s!\n"
 
-#: src/util/plugin.c:156
+#: src/util/plugin.c:162
 #, c-format
 msgid "`%s' failed to resolve method '%s' with error: %s\n"
 msgstr ""
 
-#: src/util/plugin.c:234
+#: src/util/plugin.c:240
 #, c-format
 msgid "`%s' failed for library `%s' with error: %s\n"
 msgstr ""
 
-#: src/util/plugin.c:414
+#: src/util/plugin.c:420
 #, fuzzy
 msgid "Could not determine plugin installation path.\n"
 msgstr "无法确定用户界面定义文件。"
 
-#: src/util/program.c:252
+#: src/util/program.c:251
+#, fuzzy, c-format
+msgid "Unreadable configuration file `%s', exiting ...\n"
+msgstr "解析配置文件“%s”失败\n"
+
+#: src/util/program.c:263
 #, fuzzy, c-format
-msgid "Unreadable or malformed configuration file `%s', exit ...\n"
+msgid "Malformed configuration file `%s', exiting ...\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/util/program.c:272
+#: src/util/program.c:278
 #, fuzzy, c-format
-msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
+msgid "Unreadable configuration file `%s'. Exiting ...\n"
 msgstr "解析配置文件“%s”失败\n"
 
-#: src/util/program.c:288
+#: src/util/program.c:293
 #, fuzzy
-msgid "Unreadable or malformed configuration, exit ...\n"
+msgid "Malformed configuration. Exiting ...\n"
 msgstr "解析配置文件“%s”失败\n"
 
 #: src/util/regex.c:139
@@ -9077,27 +9046,47 @@ msgstr ""
 msgid "Failed to connect to the namestore!\n"
 msgstr "初始化“%s”服务失败。\n"
 
-#, fuzzy, c-format
+#, fuzzy
+#~ msgid "Spawning process `%s'\n"
+#~ msgstr "卸载 GNUnet 服务"
+
+#, fuzzy
+#~ msgid "write the full configuration file, including default values"
+#~ msgstr "配置文件“%s”已写入。\n"
+
+#, fuzzy
+#~ msgid "print available configuration sections"
+#~ msgstr "立即保存配置?"
+
+#, fuzzy
+#~ msgid "Unreadable or malformed default configuration file `%s', exit ...\n"
+#~ msgstr "解析配置文件“%s”失败\n"
+
+#, fuzzy
+#~ msgid "Unreadable or malformed configuration, exit ...\n"
+#~ msgstr "解析配置文件“%s”失败\n"
+
+#, fuzzy
 #~ msgid "Start logging `%s'\n"
 #~ msgstr "未知的命令“%s”。\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Failed to connect master peer [%u] with slave [%u]\n"
 #~ msgstr "初始化“%s”服务失败。\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Unsupported form value `%s'\n"
 #~ msgstr "未知的命令“%s”。\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Failed to create page for `%s'\n"
 #~ msgstr "发送消息失败。\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Failed to setup post processor for `%s'\n"
 #~ msgstr "解析配置文件“%s”失败\n"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Unable to parse PKEY record `%s'\n"
 #~ msgstr "解析配置文件“%s”失败\n"
 
@@ -9124,7 +9113,7 @@ msgstr "初始化“%s”服务失败。\n"
 #~ msgid "days"
 #~ msgstr " 天"
 
-#, fuzzy, c-format
+#, fuzzy
 #~ msgid "Could not acquire lock on file `%s': %s...\n"
 #~ msgstr "无法解析“%s”(%s):%s\n"
 
diff --git a/src/dhtu/test_dhtu_ip.c b/src/dhtu/test_dhtu_ip.c
index c9528053f..7913cfc35 100644
--- a/src/dhtu/test_dhtu_ip.c
+++ b/src/dhtu/test_dhtu_ip.c
@@ -24,7 +24,7 @@
  * @author Christian Grothoff
  */
 #include "platform.h"
-#include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "gnunet_util_lib.h"
 
 #define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 120)
diff --git a/src/dhtu/testing_dhtu_cmd_send.c b/src/dhtu/testing_dhtu_cmd_send.c
index e620e329e..fe8e1c18a 100644
--- a/src/dhtu/testing_dhtu_cmd_send.c
+++ b/src/dhtu/testing_dhtu_cmd_send.c
@@ -25,6 +25,7 @@
  */
 #include "platform.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 
 
 /**
diff --git a/src/include/Makefile.am b/src/include/Makefile.am
index 9c22b5977..e4b02b8ee 100644
--- a/src/include/Makefile.am
+++ b/src/include/Makefile.am
@@ -118,6 +118,7 @@ gnunetinclude_HEADERS = \
   gnunet_testing_lib.h \
   gnunet_testing_plugin.h \
   gnunet_testing_ng_lib.h \
+  gnunet_testing_netjail_lib.h \
   gnunet_time_lib.h \
   gnunet_transport_service.h \
   gnunet_transport_application_service.h \
diff --git a/src/include/gnunet_protocols.h b/src/include/gnunet_protocols.h
index 41f2876e6..9e278eb92 100644
--- a/src/include/gnunet_protocols.h
+++ b/src/include/gnunet_protocols.h
@@ -3579,7 +3579,11 @@ extern "C" {
 
 #define GNUNET_MESSAGE_TYPE_CMDS_HELPER_ALL_PEERS_STARTED 1703
 
-#define GNUNET_MESSAGE_TYPE_CMDS_HELPER_LOCAL_FINISHED 1704
+#define GNUNET_MESSAGE_TYPE_CMDS_HELPER_LOCAL_TEST_PREPARED 1704
+
+#define GNUNET_MESSAGE_TYPE_CMDS_HELPER_ALL_LOCAL_TESTS_PREPARED 1705
+
+#define GNUNET_MESSAGE_TYPE_CMDS_HELPER_LOCAL_FINISHED 1706
 
 
/*********************************************************************************/
 
diff --git a/src/include/gnunet_testing_netjail_lib.h 
b/src/include/gnunet_testing_netjail_lib.h
new file mode 100644
index 000000000..3a5e9f749
--- /dev/null
+++ b/src/include/gnunet_testing_netjail_lib.h
@@ -0,0 +1,463 @@
+/*
+      This file is part of GNUnet
+      Copyright (C) 2021 GNUnet e.V.
+
+      GNUnet is free software: you can redistribute it and/or modify it
+      under the terms of the GNU Affero General Public License as published
+      by the Free Software Foundation, either version 3 of the License,
+      or (at your option) any later version.
+
+      GNUnet 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
+      Affero General Public License for more details.
+
+      You should have received a copy of the GNU Affero General Public License
+      along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+     SPDX-License-Identifier: AGPL3.0-or-later
+ */
+
+/**
+ * @brief API for writing an interpreter to test GNUnet components
+ * @author Christian Grothoff <christian@grothoff.org>
+ * @author Marcello Stanisci
+ * @author t3sserakt
+ */
+#ifndef GNUNET_TESTING_NG_LIB_H
+#define GNUNET_TESTING_NG_LIB_H
+
+#include "gnunet_util_lib.h"
+#include "gnunet_testing_plugin.h"
+#include "gnunet_testing_ng_lib.h"
+
+
+/**
+ * Router of a netjail subnet.
+ */
+struct GNUNET_TESTING_NetjailRouter
+{
+  /**
+   * Will tcp be forwarded?
+   */
+  unsigned int tcp_port;
+
+  /**
+   * Will udp be forwarded?
+   */
+  unsigned int udp_port;
+};
+
+
+/**
+ * Enum for the different types of nodes.
+ */
+enum GNUNET_TESTING_NODE_TYPE
+{
+  /**
+   * Node in a subnet.
+   */
+  GNUNET_TESTING_SUBNET_NODE,
+
+  /**
+   * Global known node.
+   */
+  GNUNET_TESTING_GLOBAL_NODE
+};
+
+/**
+ * Protocol address prefix für a connection between nodes.
+ */
+struct GNUNET_TESTING_AddressPrefix
+{
+  /**
+   * Pointer to the previous prefix in the DLL.
+   */
+  struct GNUNET_TESTING_AddressPrefix *prev;
+
+  /**
+   * Pointer to the next prefix in the DLL.
+   */
+  struct GNUNET_TESTING_AddressPrefix *next;
+
+  /**
+   * The address prefix.
+   */
+  char *address_prefix;
+};
+
+
+/**
+ * Node in a netjail topology.
+ */
+struct GNUNET_TESTING_NetjailNode;
+
+/**
+ * Connection to another node.
+ */
+struct GNUNET_TESTING_NodeConnection
+{
+  /**
+   * Pointer to the previous connection in the DLL.
+   */
+  struct GNUNET_TESTING_NodeConnection *prev;
+
+  /**
+   * Pointer to the next connection in the DLL.
+   */
+  struct GNUNET_TESTING_NodeConnection *next;
+
+  /**
+   * The number of the subnet of the node this connection points to. This is 0,
+   * if the node is a global known node.
+   */
+  unsigned int namespace_n;
+
+  /**
+   * The number of the node this connection points to.
+   */
+  unsigned int node_n;
+
+  /**
+   * The type of the node this connection points to.
+   */
+  enum GNUNET_TESTING_NODE_TYPE node_type;
+
+  /**
+   * The node which establish the connection
+   */
+  struct GNUNET_TESTING_NetjailNode *node;
+
+  /**
+   * Head of the DLL with the address prefixes for the protocolls this node is 
reachable.
+   */
+  struct GNUNET_TESTING_AddressPrefix *address_prefixes_head;
+
+  /**
+   * Tail of the DLL with the address prefixes for the protocolls this node is 
reachable.
+   */
+  struct GNUNET_TESTING_AddressPrefix *address_prefixes_tail;
+};
+
+/**
+ * Node in the netjail topology.
+ */
+struct GNUNET_TESTING_NetjailNode
+{
+  /**
+   * Plugin for the test case to be run on this node.
+   */
+  char *plugin;
+
+  /**
+   * Flag indicating if this node is a global known node.
+   */
+  unsigned int is_global;
+
+  /**
+   * The number of the subnet this node is running in.
+   */
+  unsigned int namespace_n;
+
+  /**
+   * The number of this node in the subnet.
+   */
+  unsigned int node_n;
+
+  /**
+   * Head of the DLL with the connections which shall be established to other 
nodes.
+   */
+  struct GNUNET_TESTING_NodeConnection *node_connections_head;
+
+  /**
+   * Tail of the DLL with the connections which shall be established to other 
nodes.
+   */
+  struct GNUNET_TESTING_NodeConnection *node_connections_tail;
+};
+
+
+/**
+ * Subnet in a topology.
+ */
+struct GNUNET_TESTING_NetjailNamespace
+{
+  /**
+   * The number of the subnet.
+   */
+  unsigned int namespace_n;
+
+  /**
+   * Router of the subnet.
+   */
+  struct GNUNET_TESTING_NetjailRouter *router;
+
+  /**
+   * Hash map containing the nodes in this subnet.
+   */
+  struct GNUNET_CONTAINER_MultiShortmap *nodes;
+};
+
+/**
+ * Toplogy of our netjail setup.
+ */
+struct GNUNET_TESTING_NetjailTopology
+{
+
+  /**
+   * Default plugin for the test case to be run on nodes.
+   */
+  char *plugin;
+
+  /**
+   * Number of subnets.
+   */
+  unsigned int namespaces_n;
+
+  /**
+   * Number of nodes per subnet.
+   */
+  unsigned int nodes_m;
+
+  /**
+   * Number of global known nodes.
+   */
+  unsigned int nodes_x;
+
+  /**
+   * Hash map containing the subnets (for natted nodes) of the topology.
+   */
+  struct GNUNET_CONTAINER_MultiShortmap *map_namespaces;
+
+  /**
+   * Hash map containing the global known nodes which are not natted.
+   */
+  struct GNUNET_CONTAINER_MultiShortmap *map_globals;
+};
+
+/**
+ * Getting the topology from file.
+ *
+ * @param filename The name of the topology file.
+ * @return The GNUNET_TESTING_NetjailTopology
+ */
+struct GNUNET_TESTING_NetjailTopology *
+GNUNET_TESTING_get_topo_from_file (const char *filename);
+
+
+/**
+ * Parse the topology data.
+ *
+ * @param data The topology data.
+ * @return The GNUNET_TESTING_NetjailTopology
+ */
+struct GNUNET_TESTING_NetjailTopology *
+GNUNET_TESTING_get_topo_from_string (char *data);
+
+
+/**
+ * Get the connections to other nodes for a specific node.
+ *
+ * @param num The specific node we want the connections for.
+ * @param topology The topology we get the connections from.
+ * @return The connections of the node.
+ */
+struct GNUNET_TESTING_NodeConnection *
+GNUNET_TESTING_get_connections (unsigned int num, struct
+                                GNUNET_TESTING_NetjailTopology *topology);
+
+
+/**
+ * Get the address for a specific communicator from a connection.
+ *
+ * @param connection The connection we like to have the address from.
+ * @param prefix The communicator protocol prefix.
+ * @return The address of the communicator.
+ */
+char *
+GNUNET_TESTING_get_address (struct GNUNET_TESTING_NodeConnection *connection,
+                            char *prefix);
+
+
+/**
+ * Deallocate memory of the struct GNUNET_TESTING_NetjailTopology.
+ *
+ * @param topology The GNUNET_TESTING_NetjailTopology to be deallocated.
+ */
+void
+GNUNET_TESTING_free_topology (struct GNUNET_TESTING_NetjailTopology *topology);
+
+
+/**
+ * Calculate the unique id identifying a node from a given connction.
+ *
+ * @param node_connection The connection we calculate the id from.
+ * @param topology The topology we get all needed information from.
+ * @return The unique id of the node from the connection.
+ */
+unsigned int
+GNUNET_TESTING_calculate_num (struct
+                              GNUNET_TESTING_NodeConnection *node_connection,
+                              struct GNUNET_TESTING_NetjailTopology *topology);
+
+
+/**
+ * Struct to hold information for callbacks.
+ *
+ */
+struct LocalPreparedState
+{
+  /**
+   * Context for our asynchronous completion.
+   */
+  struct GNUNET_TESTING_AsyncContext *ac;
+
+  /**
+   * Callback to write messages to the master loop.
+   *
+   */
+  TESTING_CMD_HELPER_write_cb write_message;
+};
+
+
+/**
+ * Create command.
+ *
+ * @param label name for command.
+ * @param topology_config Configuration file for the test topology.
+ * @return command.
+ */
+struct GNUNET_TESTING_Command
+GNUNET_TESTING_cmd_netjail_start (const char *label,
+                                  char *topology_config,
+                                  unsigned int *read_file);
+
+
+/**
+ * Create command.
+ *
+ * @param label Name for the command.
+ * @param topology The complete topology information.
+ * @return command.
+ */
+struct GNUNET_TESTING_Command
+GNUNET_TESTING_cmd_netjail_start_testing_system (
+  const char *label,
+  struct GNUNET_TESTING_NetjailTopology *topology);
+
+
+/**
+ * Create command.
+ *
+ * @param label name for command.
+ * @param topology_config Configuration file for the test topology.
+ * @return command.
+ */
+struct GNUNET_TESTING_Command
+GNUNET_TESTING_cmd_netjail_stop (const char *label,
+                                 char *topology_config,
+                                 unsigned int *read_file);
+
+
+/**
+ * Create command.
+ *
+ * @param label name for command.
+ * @param helper_start_label label of the cmd to start the test system.
+ * @param topology The complete topology information.
+ * @return command.
+ */
+struct GNUNET_TESTING_Command
+GNUNET_TESTING_cmd_stop_testing_system (
+  const char *label,
+  const char *helper_start_label,
+  struct GNUNET_TESTING_NetjailTopology *topology);
+
+
+/**
+ * Create a GNUNET_CMDS_LOCAL_FINISHED message.
+ *
+ * @param rv The result of the local test as GNUNET_GenericReturnValue.
+ * @return The GNUNET_CMDS_LOCAL_FINISHED message.
+*/
+struct GNUNET_MessageHeader *
+GNUNET_TESTING_send_local_test_finished_msg (enum GNUNET_GenericReturnValue 
rv);
+
+
+/**
+ * Function to get the trait with the async context.
+ *
+ * @param[out] ac GNUNET_TESTING_AsyncContext.
+ * @return #GNUNET_OK if no error occurred, #GNUNET_SYSERR otherwise.
+ */
+int
+GNUNET_TESTING_get_trait_async_context (
+  const struct GNUNET_TESTING_Command *cmd,
+  struct GNUNET_TESTING_AsyncContext **ac);
+
+
+/**
+ * Offer handles to testing cmd helper from trait
+ *
+ * @param cmd command to extract the message from.
+ * @param pt pointer to message.
+ * @return #GNUNET_OK on success.
+ */
+enum GNUNET_GenericReturnValue
+GNUNET_TESTING_get_trait_helper_handles (
+  const struct GNUNET_TESTING_Command *cmd,
+  struct GNUNET_HELPER_Handle ***helper);
+
+
+struct GNUNET_TESTING_Command
+GNUNET_TESTING_cmd_block_until_all_peers_started (
+  const char *label,
+  unsigned int *all_peers_started);
+
+
+struct GNUNET_TESTING_Command
+GNUNET_TESTING_cmd_block_until_external_trigger (
+  const char *label);
+
+struct GNUNET_TESTING_Command
+GNUNET_TESTING_cmd_send_peer_ready (const char *label,
+                                    TESTING_CMD_HELPER_write_cb write_message);
+
+
+/**
+ * Create command.
+ *
+ * @param label name for command.
+ * @param write_message Callback to write messages to the master loop.
+ * @return command.
+ */
+struct GNUNET_TESTING_Command
+GNUNET_TESTING_cmd_local_test_finished (
+  const char *label,
+  TESTING_CMD_HELPER_write_cb write_message);
+
+/**
+ * Create command.
+ *
+ * @param label name for command.
+ * @param write_message Callback to write messages to the master loop.
+ * @param all_local_tests_prepared Flag which will be set from outside.
+ * @return command.
+ */
+struct GNUNET_TESTING_Command
+GNUNET_TESTING_cmd_local_test_prepared (const char *label,
+                                        TESTING_CMD_HELPER_write_cb
+                                        write_message);
+
+/**
+ * Function to get the trait with the struct LocalPreparedState.
+ *
+ * @param[out] lfs struct LocalPreparedState.
+ * @return #GNUNET_OK if no error occurred, #GNUNET_SYSERR otherwise.
+ *
+ */
+enum GNUNET_GenericReturnValue
+GNUNET_TESTING_get_trait_local_prepared_state (
+  const struct GNUNET_TESTING_Command *cmd,
+  struct LocalPreparedState **lfs);
+
+#endif
diff --git a/src/include/gnunet_testing_ng_lib.h 
b/src/include/gnunet_testing_ng_lib.h
index adf5453e1..2d040ac21 100644
--- a/src/include/gnunet_testing_ng_lib.h
+++ b/src/include/gnunet_testing_ng_lib.h
@@ -17,6 +17,7 @@
 
      SPDX-License-Identifier: AGPL3.0-or-later
  */
+
 /**
  * @brief API for writing an interpreter to test GNUnet components
  * @author Christian Grothoff <christian@grothoff.org>
@@ -83,17 +84,17 @@ enum GNUNET_TESTING_NODE_TYPE
 
 
 // FIXME: this does not belong here!
-struct GNUNET_TESTING_ADDRESS_PREFIX
+struct GNUNET_TESTING_AddressPrefix
 {
   /**
    * Pointer to the previous prefix in the DLL.
    */
-  struct GNUNET_TESTING_ADDRESS_PREFIX *prev;
+  struct GNUNET_TESTING_AddressPrefix *prev;
 
   /**
    * Pointer to the next prefix in the DLL.
    */
-  struct GNUNET_TESTING_ADDRESS_PREFIX *next;
+  struct GNUNET_TESTING_AddressPrefix *next;
 
   /**
    * The address prefix.
@@ -145,12 +146,12 @@ struct GNUNET_TESTING_NodeConnection
   /**
    * Head of the DLL with the address prefixes for the protocolls this node is 
reachable.
    */
-  struct GNUNET_TESTING_ADDRESS_PREFIX *address_prefixes_head;
+  struct GNUNET_TESTING_AddressPrefix *address_prefixes_head;
 
   /**
    * Tail of the DLL with the address prefixes for the protocolls this node is 
reachable.
    */
-  struct GNUNET_TESTING_ADDRESS_PREFIX *address_prefixes_tail;
+  struct GNUNET_TESTING_AddressPrefix *address_prefixes_tail;
 };
 
 /**
@@ -655,6 +656,74 @@ struct GNUNET_TESTING_NetjailTopology *
 GNUNET_TESTING_get_topo_from_file (const char *filename);
 
 
+/**
+ * Parse the topology data.
+ *
+ * @param data The topology data.
+ * @return The GNUNET_TESTING_NetjailTopology
+ */
+struct GNUNET_TESTING_NetjailTopology *
+GNUNET_TESTING_get_topo_from_string (char *data);
+
+
+/**
+ * Get the connections to other nodes for a specific node.
+ *
+ * @param num The specific node we want the connections for.
+ * @param topology The topology we get the connections from.
+ * @return The connections of the node.
+ */
+struct GNUNET_TESTING_NodeConnection *
+GNUNET_TESTING_get_connections (unsigned int num, struct
+                                GNUNET_TESTING_NetjailTopology *topology);
+
+
+/**
+ * Get the address for a specific communicator from a connection.
+ *
+ * @param connection The connection we like to have the address from.
+ * @param prefix The communicator protocol prefix.
+ * @return The address of the communicator.
+ */
+char *
+GNUNET_TESTING_get_address (struct GNUNET_TESTING_NodeConnection *connection,
+                            char *prefix);
+
+
+/**
+ * Deallocate memory of the struct GNUNET_TESTING_NetjailTopology.
+ *
+ * @param topology The GNUNET_TESTING_NetjailTopology to be deallocated.
+ */
+void
+GNUNET_TESTING_free_topology (struct GNUNET_TESTING_NetjailTopology *topology);
+
+
+/**
+ * Calculate the unique id identifying a node from a given connction.
+ *
+ * @param node_connection The connection we calculate the id from.
+ * @param topology The topology we get all needed information from.
+ * @return The unique id of the node from the connection.
+ */
+unsigned int
+GNUNET_TESTING_calculate_num (struct
+                              GNUNET_TESTING_NodeConnection *node_connection,
+                              struct GNUNET_TESTING_NetjailTopology *topology);
+
+
+/**
+ * Retrieve the public key from the test system with the unique node id.
+ *
+ * @param num The unique node id.
+ * @param tl_system The test system.
+ * @return The peer identity wrapping the public key.
+ */
+struct GNUNET_PeerIdentity *
+GNUNET_TESTING_get_pub_key (unsigned int num, struct
+                            GNUNET_TESTING_System *tl_system);
+
+
 /**
  * Obtain performance data from the interpreter.
  *
@@ -996,29 +1065,24 @@ GNUNET_TESTING_make_trait_relative_time (
 
 // FIXME: move these commands into a separate libgnunetestingnetjail lib or so!
 
-
 /**
- * Create command.
+ * Struct to hold information for callbacks.
  *
- * @param label name for command.
- * @param now when the command was started.
- * @return command.
  */
-struct GNUNET_TESTING_Command
-GNUNET_TESTING_cmd_hello_world_birth (const char *label,
-                                      struct GNUNET_TIME_Absolute *now);
+struct LocalPreparedState
+{
+  /**
+   * Context for our asynchronous completion.
+   */
+  struct GNUNET_TESTING_AsyncContext ac;
+
+  /**
+   * Callback to write messages to the master loop.
+   *
+   */
+  TESTING_CMD_HELPER_write_cb write_message;
+};
 
-/**
- * Create command.
- *
- * @param label name for command.
- * @param message initial message.
- * @return command.
- */
-struct GNUNET_TESTING_Command
-GNUNET_TESTING_cmd_hello_world (const char *label,
-                                const char *birthLabel,
-                                char *message);
 
 /**
  * Offer data from trait
@@ -1059,20 +1123,25 @@ GNUNET_TESTING_cmd_system_destroy (const char *label,
  */
 struct GNUNET_TESTING_Command
 GNUNET_TESTING_cmd_netjail_start (const char *label,
-                                  char *topology_config);
+                                  char *topology_config,
+                                  unsigned int *read_file);
 
 
 /**
  * Create command.
  *
  * @param label Name for the command.
- * @param topology_config Configuration file for the test topology.
- * @param rv Pointer to the return value of the test.
+ * @param topology The complete topology information.
+ * @param read_file Flag indicating if the the name of the topology file is 
send to the helper, or a string with the topology data.
+ * @param topology_data If read_file is GNUNET_NO, topology_data holds the 
string with the topology.
  * @return command.
  */
 struct GNUNET_TESTING_Command
-GNUNET_TESTING_cmd_netjail_start_testing_system (const char *label,
-                                                 const char *topology_config);
+GNUNET_TESTING_cmd_netjail_start_testing_system (
+  const char *label,
+  struct GNUNET_TESTING_NetjailTopology *topology,
+  unsigned int *read_file,
+  char *topology_data);
 
 
 /**
@@ -1084,20 +1153,23 @@ GNUNET_TESTING_cmd_netjail_start_testing_system (const 
char *label,
  */
 struct GNUNET_TESTING_Command
 GNUNET_TESTING_cmd_netjail_stop (const char *label,
-                                 char *topology_config);
+                                 char *topology_config,
+                                 unsigned int *read_file);
 
 
 /**
  * Create command.
  *
  * @param label name for command.
- * @param topology_config Configuration file for the test topology.
+ * @param helper_start_label label of the cmd to start the test system.
+ * @param topology The complete topology information.
  * @return command.
  */
 struct GNUNET_TESTING_Command
-GNUNET_TESTING_cmd_stop_testing_system (const char *label,
-                                        const char *helper_start_label,
-                                        const char *topology_config);
+GNUNET_TESTING_cmd_stop_testing_system (
+  const char *label,
+  const char *helper_start_label,
+  struct GNUNET_TESTING_NetjailTopology *topology);
 
 
 /**
@@ -1149,9 +1221,42 @@ struct GNUNET_TESTING_Command
 GNUNET_TESTING_cmd_send_peer_ready (const char *label,
                                     TESTING_CMD_HELPER_write_cb write_message);
 
+
+/**
+ * Create command.
+ *
+ * @param label name for command.
+ * @param write_message Callback to write messages to the master loop.
+ * @return command.
+ */
 struct GNUNET_TESTING_Command
 GNUNET_TESTING_cmd_local_test_finished (
   const char *label,
   TESTING_CMD_HELPER_write_cb write_message);
 
+/**
+ * Create command.
+ *
+ * @param label name for command.
+ * @param write_message Callback to write messages to the master loop.
+ * @param all_local_tests_prepared Flag which will be set from outside.
+ * @return command.
+ */
+struct GNUNET_TESTING_Command
+GNUNET_TESTING_cmd_local_test_prepared (const char *label,
+                                        TESTING_CMD_HELPER_write_cb
+                                        write_message);
+
+/**
+ * Function to get the trait with the struct LocalPreparedState.
+ *
+ * @param[out] lfs struct LocalPreparedState.
+ * @return #GNUNET_OK if no error occurred, #GNUNET_SYSERR otherwise.
+ *
+ */
+enum GNUNET_GenericReturnValue
+GNUNET_TESTING_get_trait_local_prepared_state (
+  const struct GNUNET_TESTING_Command *cmd,
+  struct LocalPreparedState **lfs);
+
 #endif
diff --git a/src/include/gnunet_testing_plugin.h 
b/src/include/gnunet_testing_plugin.h
index 151827d4b..b59d2cea1 100644
--- a/src/include/gnunet_testing_plugin.h
+++ b/src/include/gnunet_testing_plugin.h
@@ -46,11 +46,19 @@ typedef void
                                         char *node_ip,
                                         char *n,
                                         char *m,
-                                        char *local_m);
+                                        char *local_m,
+                                        char *topology_data,
+                                        unsigned int *read_file);
+
 
 typedef void
 (*GNUNET_TESTING_PLUGIN_ALL_PEERS_STARTED) ();
 
+
+typedef void
+(*GNUNET_TESTING_PLUGIN_ALL_LOCAL_TESTS_PREPARED) ();
+
+
 struct GNUNET_TESTING_PluginFunctions
 {
   /**
@@ -61,6 +69,8 @@ struct GNUNET_TESTING_PluginFunctions
   GNUNET_TESTING_PLUGIN_StartTestCase start_testcase;
 
   GNUNET_TESTING_PLUGIN_ALL_PEERS_STARTED all_peers_started;
+
+  GNUNET_TESTING_PLUGIN_ALL_LOCAL_TESTS_PREPARED all_local_tests_prepared;
 };
 
 #if 0                           /* keep Emacsens' auto-indent happy */
diff --git a/src/testing/Makefile.am b/src/testing/Makefile.am
index 39e85c4ac..a9a1b5a02 100644
--- a/src/testing/Makefile.am
+++ b/src/testing/Makefile.am
@@ -18,9 +18,6 @@ libexec_PROGRAMS = \
 
 plugindir = $(libdir)/gnunet
 
-plugin_LTLIBRARIES = \
-  libgnunet_test_testing_plugin_testcmd.la
-
 lib_LTLIBRARIES = \
   libgnunettesting.la
 
@@ -31,24 +28,12 @@ gnunet_cmds_helper_LDADD = $(XLIB) \
  libgnunettesting.la \
  $(LTLIBINTL) $(Z_LIBS)
 
-libgnunet_test_testing_plugin_testcmd_la_SOURCES = \
-  test_testing_plugin_testcmd.c
-libgnunet_test_testing_plugin_testcmd_la_LIBADD = \
-  $(top_builddir)/src/util/libgnunetutil.la \
-  $(top_builddir)/src/arm/libgnunetarm.la \
-  libgnunettesting.la \
-  $(top_builddir)/src/statistics/libgnunetstatistics.la \
-  $(LTLIBINTL)
-libgnunet_test_testing_plugin_testcmd_la_LDFLAGS = \
- $(GN_PLUGIN_LDFLAGS)
-
-
 libgnunettesting_la_SOURCES = \
   testing_api_cmd_end.c \
   testing_api_cmd_finish.c \
   testing_api_cmd_local_test_finished.c \
+  testing_api_cmd_local_test_prepared.c \
   testing_api_cmd_send_peer_ready.c \
-  testing_api_cmd_block_until_all_peers_started.c \
   testing_api_cmd_block_until_external_trigger.c \
   testing_api_cmd_netjail_start.c \
   testing_api_cmd_netjail_start_testsystem.c \
@@ -58,8 +43,6 @@ libgnunettesting_la_SOURCES = \
   testing_api_cmd_system_create.c \
   testing_api_cmd_system_destroy.c \
   testing_api_cmd_batch.c \
-  testing_api_cmd_hello_world.c \
-  testing_api_cmd_hello_world_birth.c \
   testing_api_loop.c \
   testing_api_trait_cmd.c \
   testing_api_trait_process.c \
@@ -93,8 +76,6 @@ list_keys_LDADD = \
 
 
 check_PROGRAMS = \
- test_testing_api_cmd_netjail \
- test_testing_hello_world \
  test_testing_portreservation \
  test_testing_servicestartup \
  test_testing_peerstartup \
@@ -104,32 +85,12 @@ check_PROGRAMS = \
 if ENABLE_TEST_RUN
 AM_TESTS_ENVIRONMENT=export GNUNET_PREFIX=$${GNUNET_PREFIX:-@libdir@};export 
PATH=$${GNUNET_PREFIX:-@prefix@}/bin:$$PATH;unset XDG_DATA_HOME;unset 
XDG_CONFIG_HOME;
 TESTS = \
- test_testing_api_cmd_netjail \
- test_testing_hello_world \
  test_testing_portreservation \
  test_testing_peerstartup \
  test_testing_peerstartup2 \
  test_testing_servicestartup
 endif
 
-#test_testing_topology_SOURCES = \
-# test_testing_topology.c
-#test_testing_topology_LDADD = \
-# libgnunettesting.la \
-# $(top_builddir)/src/util/libgnunetutil.la
-
-test_testing_api_cmd_netjail_SOURCES = \
- test_testing_api_cmd_netjail.c
-test_testing_api_cmd_netjail_LDADD = \
- libgnunettesting.la \
- $(top_builddir)/src/util/libgnunetutil.la
-
-test_testing_hello_world_SOURCES = \
- test_testing_hello_world.c
-test_testing_hello_world_LDADD = \
- libgnunettesting.la \
- $(top_builddir)/src/util/libgnunetutil.la
-
 test_testing_portreservation_SOURCES = \
  test_testing_portreservation.c
 test_testing_portreservation_LDADD = \
diff --git a/src/testing/gnunet-cmds-helper.c b/src/testing/gnunet-cmds-helper.c
index e50db0cf6..f90cc3cc4 100644
--- a/src/testing/gnunet-cmds-helper.c
+++ b/src/testing/gnunet-cmds-helper.c
@@ -142,6 +142,16 @@ struct NodeIdentifier
    *
    */
   char *local_m;
+
+  /**
+   * Shall we read the topology from file, or from a string.
+   */
+  unsigned int *read_file;
+
+  /**
+   * String with topology data or name of topology file.
+   */
+  char *topology_data;
 };
 
 /**
@@ -402,7 +412,8 @@ tokenizer_cb (void *cls, const struct GNUNET_MessageHeader 
*message)
     strcat (node_ip, plugin->m);
 
     plugin->api->start_testcase (&write_message, router_ip, node_ip, plugin->m,
-                                 plugin->n, plugin->local_m);
+                                 plugin->n, plugin->local_m, ni->topology_data,
+                                 ni->read_file);
 
     GNUNET_free (binary);
 
@@ -418,9 +429,19 @@ tokenizer_cb (void *cls, const struct GNUNET_MessageHeader 
*message)
   else if (GNUNET_MESSAGE_TYPE_CMDS_HELPER_ALL_PEERS_STARTED == ntohs (
              message->type))
   {
+    LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "all peers started\n");
     plugin->api->all_peers_started ();
     return GNUNET_OK;
   }
+  else if (GNUNET_MESSAGE_TYPE_CMDS_HELPER_ALL_LOCAL_TESTS_PREPARED == ntohs (
+             message->type))
+  {
+    LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "all local tests prepared\n");
+    plugin->api->all_local_tests_prepared ();
+    return GNUNET_OK;
+  }
   else
   {
     LOG (GNUNET_ERROR_TYPE_WARNING, "Received unexpected message -- 
exiting\n");
@@ -549,6 +570,10 @@ main (int argc, char **argv)
   struct GNUNET_GETOPT_CommandLineOption options[] =
   { GNUNET_GETOPT_OPTION_END };
   int ret;
+  int i;
+  size_t topology_data_length = 0;
+  unsigned int read_file;
+  char cr[1] = "\n";
 
   GNUNET_log_setup ("gnunet-cmds-helper",
                     "DEBUG",
@@ -559,6 +584,30 @@ main (int argc, char **argv)
   ni->m = argv[3];
   ni->n = argv[4];
 
+  sscanf (argv[5], "%u", &read_file);
+
+  if (1 == read_file)
+    ni->topology_data = argv[6];
+  else
+  {
+    for (i = 6; i<argc; i++)
+      topology_data_length += strlen (argv[i]) + 1;
+    LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "topo data length %lu\n",
+         topology_data_length);
+    ni->topology_data = GNUNET_malloc (topology_data_length);
+    for (i = 6; i<argc; i++)
+    {
+      strcat (ni->topology_data, argv[i]);
+      strcat (ni->topology_data, cr);
+    }
+  }
+  ni->read_file = &read_file;
+  ni->topology_data[topology_data_length - 1] = '\0';
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "topo data %s\n",
+       ni->topology_data);
+
   status = GNUNET_OK;
   if (NULL ==
       (sigpipe = GNUNET_DISK_pipe (GNUNET_DISK_PF_NONE)))
diff --git a/src/testing/test_testing_api_cmd_netjail.c 
b/src/testing/test_testing_api_cmd_netjail.c
deleted file mode 100644
index aeddfb7c9..000000000
--- a/src/testing/test_testing_api_cmd_netjail.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-      This file is part of GNUnet
-      Copyright (C) 2021 GNUnet e.V.
-
-      GNUnet is free software: you can redistribute it and/or modify it
-      under the terms of the GNU Affero General Public License as published
-      by the Free Software Foundation, either version 3 of the License,
-      or (at your option) any later version.
-
-      GNUnet 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
-      Affero General Public License for more details.
-
-      You should have received a copy of the GNU Affero General Public License
-      along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-
-/**
- * @file testing/test_testbed_api_cmd_netjail.c
- * @brief Test case executing a script in a network name space.
- * @author t3sserakt
- */
-#include "platform.h"
-#include "gnunet_testing_ng_lib.h"
-#include "gnunet_util_lib.h"
-
-
-/**
-  * Return value of the test.
-  *
-  */
-static unsigned int rv = 0;
-
-
-/**
- * Main function to run the test cases.
- *
- * @param cls not used.
- *
- */
-static void
-run (void *cls)
-{
-  struct GNUNET_TESTING_Command commands[] = {
-    GNUNET_TESTING_cmd_netjail_start ("netjail-start-1",
-                                      "2",
-                                      "2"),
-    GNUNET_TESTING_cmd_netjail_start_testing_system ("netjail-start-testbed-1",
-                                                     "2",
-                                                     "2",
-                                                     
"libgnunet_plugin_testcmd",
-                                                     &rv),
-    GNUNET_TESTING_cmd_stop_testing_system ("stop-testbed",
-                                            "netjail-start-testbed-1",
-                                            "2",
-                                            "2"),
-    GNUNET_TESTING_cmd_netjail_stop ("netjail-stop-1",
-                                     "2",
-                                     "2"),
-    GNUNET_TESTING_cmd_end ()
-  };
-
-  GNUNET_TESTING_run (NULL,
-                      commands,
-                      GNUNET_TIME_UNIT_FOREVER_REL);
-}
-
-
-int
-main (int argc,
-      char *const *argv)
-{
-  int rv = 0;
-
-  GNUNET_log_setup ("test-netjail",
-                    "DEBUG",
-                    NULL);
-  GNUNET_SCHEDULER_run (&run,
-                        NULL);
-
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Test finished!\n");
-  return rv;
-}
diff --git a/src/testing/test_testing_hello_world.c 
b/src/testing/test_testing_hello_world.c
deleted file mode 100644
index 6300e26a4..000000000
--- a/src/testing/test_testing_hello_world.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-      This file is part of GNUnet
-      Copyright (C) 2021 GNUnet e.V.
-
-      GNUnet is free software: you can redistribute it and/or modify it
-      under the terms of the GNU Affero General Public License as published
-      by the Free Software Foundation, either version 3 of the License,
-      or (at your option) any later version.
-
-      GNUnet 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
-      Affero General Public License for more details.
-
-      You should have received a copy of the GNU Affero General Public License
-      along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-
-/**
- * @file testing/test_testing_hello_world.c
- * @brief hello world test case
- * @author t3sserakt
- */
-#include "platform.h"
-#include "gnunet_testing_ng_lib.h"
-#include "gnunet_util_lib.h"
-
-/**
- * Main function to run the test cases.
- *
- * @param cls not used.
- *
- */
-static void
-run (void *cls)
-{
-  (void *) cls;
-  struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get ();
-
-  struct GNUNET_TESTING_Command commands[] = {
-    GNUNET_TESTING_cmd_hello_world_birth ("hello-world-birth-0",
-                                          &now),
-    GNUNET_TESTING_cmd_hello_world ("hello-world-0","hello-world-birth-0",""),
-    GNUNET_TESTING_cmd_end ()
-  };
-
-  GNUNET_TESTING_run (NULL,
-                      commands,
-                      GNUNET_TIME_UNIT_FOREVER_REL);
-}
-
-int
-main (int argc,
-      char *const *argv)
-{
-  int rv = 0;
-
-  GNUNET_log_setup ("test-hello-world",
-                    "DEBUG",
-                    NULL);
-
-  GNUNET_SCHEDULER_run (&run,
-                        NULL);
-
-  return rv;
-}
diff --git a/src/testing/test_testing_plugin_testcmd.c 
b/src/testing/test_testing_plugin_testcmd.c
deleted file mode 100644
index 32e2b38a7..000000000
--- a/src/testing/test_testing_plugin_testcmd.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
-     This file is part of GNUnet
-     Copyright (C) 2021 GNUnet e.V.
-
-     GNUnet is free software: you can redistribute it and/or modify it
-     under the terms of the GNU Affero General Public License as published
-     by the Free Software Foundation, either version 3 of the License,
-     or (at your option) any later version.
-
-     GNUnet 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
-     Affero General Public License for more details.
-
-     You should have received a copy of the GNU Affero General Public License
-     along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-/**
- * @file testbed/plugin_testcmd.c
- * @brief a plugin to provide the API for running test cases.
- * @author t3sserakt
- *
- * // FIXME: too verbose, no logic to return final status, will segv!
- */
-#include "platform.h"
-#include "gnunet_testing_ng_lib.h"
-#include "gnunet_util_lib.h"
-#include "gnunet_testing_ng_lib.h"
-
-/**
- * Generic logging shortcut
- */
-#define LOG(kind, ...) GNUNET_log (kind, __VA_ARGS__)
-
-
-// FIXME: bad global!
-unsigned int are_all_peers_started;
-
-
-static void
-all_peers_started ()
-{
-  are_all_peers_started = GNUNET_YES;
-  LOG (GNUNET_ERROR_TYPE_ERROR,
-       "setting are_all_peers_started: %d\n",
-       are_all_peers_started);
-}
-
-
-static void
-start_testcase (TESTING_CMD_HELPER_write_cb write_message,
-                char *router_ip,
-                char *node_ip,
-                char *n,
-                char *m,
-                char *local_m)
-{
-  struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get ();
-
-  LOG (GNUNET_ERROR_TYPE_ERROR,
-       "We got here 6!\n");
-
-  are_all_peers_started = GNUNET_NO;
-
-  struct GNUNET_TESTING_Command commands[] = {
-    GNUNET_TESTING_cmd_hello_world_birth ("hello-world-birth-0",
-                                          &now),
-    GNUNET_TESTING_cmd_hello_world ("hello-world-0","hello-world-birth-0",""),
-    GNUNET_TESTING_cmd_send_peer_ready ("send-peer-ready-1",
-                                        write_message),
-    GNUNET_TESTING_cmd_block_until_all_peers_started ("block-1",
-                                                      &are_all_peers_started),
-    GNUNET_TESTING_cmd_local_test_finished ("local-test-finished-1",
-                                            write_message)
-  };
-
-  GNUNET_TESTING_run (commands,
-                      GNUNET_TIME_UNIT_FOREVER_REL,
-                      NULL, /* FIXME: pass continuation! */
-                      NULL);
-  LOG (GNUNET_ERROR_TYPE_ERROR,
-       "We got here 7!\n");
-
-}
-
-
-/**
- * Entry point for the plugin.
- *
- * @param cls NULL
- * @return the exported block API
- */
-void *
-libgnunet_plugin_testcmd_init (void *cls)
-{
-  struct GNUNET_TESTING_PluginFunctions *api;
-
-  api = GNUNET_new (struct GNUNET_TESTING_PluginFunctions);
-  api->start_testcase = &start_testcase;
-  api->all_peers_started = &all_peers_started;
-  return api;
-}
-
-
-/**
- * Exit point from the plugin.
- *
- * @param cls the return value from #libgnunet_plugin_block_test_init
- * @return NULL
- */
-void *
-libgnunet_plugin_testcmd_done (void *cls)
-{
-  struct GNUNET_TESTING_PluginFunctions *api = cls;
-
-  GNUNET_free (api);
-  return NULL;
-}
-
-
-
diff --git a/src/testing/testing.c b/src/testing/testing.c
index 766c7b084..4ccf93c6b 100644
--- a/src/testing/testing.c
+++ b/src/testing/testing.c
@@ -33,11 +33,20 @@
 #include "gnunet_util_lib.h"
 #include "gnunet_arm_service.h"
 #include "gnunet_testing_lib.h"
-#include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "testing_cmds.h"
 
 #define LOG(kind, ...) GNUNET_log_from (kind, "testing-api", __VA_ARGS__)
 
+#define CONNECT_ADDRESS_TEMPLATE "%s-192.168.15.%u:60002"
+
+#define ROUTER_CONNECT_ADDRESS_TEMPLATE "%s-92.68.150.%u:60002"
+
+#define KNOWN_CONNECT_ADDRESS_TEMPLATE "%s-92.68.151.%u:60002"
+
+#define PREFIX_TCP "tcp"
+
+#define PREFIX_UDP "udp"
 
 /**
  * Lowest port used for GNUnet testing.  Should be high enough to not
@@ -1789,7 +1798,7 @@ get_first_value (char *line)
   memcpy (copy, line, slen);
   token = strtok_r (copy, ":", &rest);
   token = strtok_r (NULL, ":", &rest);
-  sscanf (token, "%u", &ret);
+  GNUNET_assert (1 == sscanf (token, "%u", &ret));
   GNUNET_free (copy);
   return ret;
 }
@@ -1855,7 +1864,7 @@ get_second_value (char *line)
   token = strtok_r (copy, ":", &rest);
   token = strtok_r (NULL, ":", &rest);
   token = strtok_r (NULL, ":", &rest);
-  sscanf (token, "%u", &ret);
+  GNUNET_assert (1 == sscanf (token, "%u", &ret));
   GNUNET_free (copy);
   return ret;
 }
@@ -1901,7 +1910,7 @@ get_connect_value (char *line, struct 
GNUNET_TESTING_NetjailNode *node)
   unsigned int namespace_n;
   char *rest = NULL;
   char *rest2 = NULL;
-  struct GNUNET_TESTING_ADDRESS_PREFIX *prefix;
+  struct GNUNET_TESTING_AddressPrefix *prefix;
 
   node_connection = GNUNET_new (struct GNUNET_TESTING_NodeConnection);
   node_connection->node = node;
@@ -1914,7 +1923,7 @@ get_connect_value (char *line, struct 
GNUNET_TESTING_NetjailNode *node)
   {
     node_connection->node_type = GNUNET_TESTING_GLOBAL_NODE;
     token = strtok_r (NULL, ":", &rest);
-    sscanf (token, "%u", &node_n);
+    GNUNET_assert (1 == sscanf (token, "%u", &node_n));
     LOG (GNUNET_ERROR_TYPE_ERROR,
          "node_n %u\n",
          node_n);
@@ -1925,19 +1934,21 @@ get_connect_value (char *line, struct 
GNUNET_TESTING_NetjailNode *node)
   {
     node_connection->node_type = GNUNET_TESTING_SUBNET_NODE;
     token = strtok_r (NULL, ":", &rest);
-    sscanf (token, "%u", &node_n);
-    node_connection->node_n = node_n;
-    token = strtok_r (NULL, ":", &rest);
     sscanf (token, "%u", &namespace_n);
     node_connection->namespace_n = namespace_n;
+    token = strtok_r (NULL, ":", &rest);
+    sscanf (token, "%u", &node_n);
+    node_connection->node_n = node_n;
     LOG (GNUNET_ERROR_TYPE_ERROR,
-         "node_n %u namespace_n %u\n",
+         "node_n %u namespace_n %u node->node_n %u node->namespace_n %u\n",
          node_n,
-         namespace_n);
+         namespace_n,
+         node->node_n,
+         node->namespace_n);
   }
   while (NULL != (token = strtok_r (NULL, ":", &rest)))
   {
-    prefix = GNUNET_new (struct GNUNET_TESTING_ADDRESS_PREFIX);
+    prefix = GNUNET_new (struct GNUNET_TESTING_AddressPrefix);
     token2 = strtok_r (token, "}", &rest2);
     if (NULL != token2)
     {
@@ -1959,6 +1970,9 @@ get_connect_value (char *line, struct 
GNUNET_TESTING_NetjailNode *node)
     GNUNET_CONTAINER_DLL_insert (node_connection->address_prefixes_head,
                                  node_connection->address_prefixes_tail,
                                  prefix);
+    LOG (GNUNET_ERROR_TYPE_ERROR,
+         "address_prefix %s\n",
+         prefix->address_prefix);
   }
 
   GNUNET_free (copy);
@@ -1982,13 +1996,16 @@ node_connections (char *line, struct 
GNUNET_TESTING_NetjailNode *node)
   if (NULL != temp)
   {
     slen = strlen (temp) + 1;
-    copy = malloc (slen);
+    copy = GNUNET_malloc (slen);
     memcpy (copy, temp, slen);
     strtok_r (copy, ":", &rest);
     value = strtok_r (rest, "|", &rest2);
 
     while (NULL != value)
     {
+      LOG (GNUNET_ERROR_TYPE_DEBUG,
+           "node_connections value %s\n",
+           value);
       node_connection = get_connect_value (value, node);
       GNUNET_CONTAINER_DLL_insert (node->node_connections_head,
                                    node->node_connections_tail,
@@ -1999,7 +2016,319 @@ node_connections (char *line, struct 
GNUNET_TESTING_NetjailNode *node)
       value = strtok_r (NULL, "|", &rest2);
 
     }
+    GNUNET_free (copy);
+  }
+}
+
+
+static int
+log_nodes (void *cls, const struct GNUNET_ShortHashCode *id, void *value)
+{
+  struct GNUNET_TESTING_NetjailNode *node = value;
+  struct GNUNET_TESTING_NodeConnection *pos_connection;
+  struct GNUNET_TESTING_AddressPrefix *pos_prefix;
+
+  LOG (GNUNET_ERROR_TYPE_ERROR,
+       "plugin: %s space: %u node: %u global: %u\n",
+       node->plugin,
+       node->namespace_n,
+       node->node_n,
+       node->is_global);
+
+  for (pos_connection = node->node_connections_head; NULL != pos_connection;
+       pos_connection = pos_connection->next)
+  {
+
+    LOG (GNUNET_ERROR_TYPE_ERROR,
+         "namespace_n: %u node_n: %u node_type: %u\n",
+         pos_connection->namespace_n,
+         pos_connection->node_n,
+         pos_connection->node_type);
+
+    for (pos_prefix = pos_connection->address_prefixes_head; NULL != 
pos_prefix;
+         pos_prefix =
+           pos_prefix->next)
+    {
+      LOG (GNUNET_ERROR_TYPE_ERROR,
+           "prefix: %s\n",
+           pos_prefix->address_prefix);
+    }
+  }
+  return GNUNET_YES;
+}
+
+
+static int
+log_namespaces (void *cls, const struct GNUNET_ShortHashCode *id, void *value)
+{
+  struct GNUNET_TESTING_NetjailNamespace *namespace = value;
+
+  GNUNET_CONTAINER_multishortmap_iterate (namespace->nodes, &log_nodes, NULL);
+  return GNUNET_YES;
+}
+
+
+static int
+log_topo (struct GNUNET_TESTING_NetjailTopology *topology)
+{
+  LOG (GNUNET_ERROR_TYPE_ERROR,
+       "plugin: %s spaces: %u nodes: %u known: %u\n",
+       topology->plugin,
+       topology->namespaces_n,
+       topology->nodes_m,
+       topology->nodes_x);
+
+  GNUNET_CONTAINER_multishortmap_iterate (topology->map_namespaces,
+                                          log_namespaces, NULL);
+  GNUNET_CONTAINER_multishortmap_iterate (topology->map_globals, &log_nodes,
+                                          NULL);
+  return GNUNET_YES;
+}
+
+
+/**
+ * Get the connections to other nodes for a specific node.
+ *
+ * @param num The specific node we want the connections for.
+ * @param topology The topology we get the connections from.
+ * @return The connections of the node.
+ */
+struct GNUNET_TESTING_NodeConnection *
+GNUNET_TESTING_get_connections (unsigned int num, struct
+                                GNUNET_TESTING_NetjailTopology *topology)
+{
+  struct GNUNET_TESTING_NetjailNode *node;
+  struct GNUNET_ShortHashCode *hkey;
+  struct GNUNET_HashCode hc;
+  struct GNUNET_TESTING_NetjailNamespace *namespace;
+  unsigned int namespace_n, node_m;
+  struct GNUNET_TESTING_NodeConnection *node_connections = NULL;
+
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "gaga 1\n");
+  log_topo (topology);
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "gaga 2\n");
+  hkey = GNUNET_new (struct GNUNET_ShortHashCode);
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "num: %u \n",
+       num);
+  if (topology->nodes_x >= num)
+  {
+
+    GNUNET_CRYPTO_hash (&num, sizeof(num), &hc);
+    memcpy (hkey,
+            &hc,
+            sizeof (*hkey));
+    node = GNUNET_CONTAINER_multishortmap_get (topology->map_globals,
+                                               hkey);
+    node_connections = node->node_connections_head;
+  }
+  else
+  {
+    namespace_n = (unsigned int) ceil ((double) (num - topology->nodes_x)
+                                       / topology->nodes_m);
+    LOG (GNUNET_ERROR_TYPE_ERROR,
+         "ceil num: %u nodes_x: %u nodes_m: %u namespace_n: %u\n",
+         num,
+         topology->nodes_x,
+         topology->nodes_m,
+         namespace_n);
+    hkey = GNUNET_new (struct GNUNET_ShortHashCode);
+    GNUNET_CRYPTO_hash (&namespace_n, sizeof(namespace_n), &hc);
+    memcpy (hkey,
+            &hc,
+            sizeof (*hkey));
+    namespace = GNUNET_CONTAINER_multishortmap_get (topology->map_namespaces,
+                                                    hkey);
+    node_m = num - topology->nodes_x - topology->nodes_m * (namespace_n - 1);
+    hkey = GNUNET_new (struct GNUNET_ShortHashCode);
+    GNUNET_CRYPTO_hash (&node_m, sizeof(node_m), &hc);
+    memcpy (hkey,
+            &hc,
+            sizeof (*hkey));
+    node = GNUNET_CONTAINER_multishortmap_get (namespace->nodes,
+                                               hkey);
+    node_connections = node->node_connections_head;
+  }
+
+  GNUNET_free (hkey);
+  return node_connections;
+}
+
+
+/**
+ * Retrieve the public key from the test system with the unique node id.
+ *
+ * @param num The unique node id.
+ * @param tl_system The test system.
+ * @return The peer identity wrapping the public key.
+ */
+struct GNUNET_PeerIdentity *
+GNUNET_TESTING_get_pub_key (unsigned int num, struct
+                            GNUNET_TESTING_System *tl_system)
+{
+  struct GNUNET_PeerIdentity *peer = GNUNET_new (struct GNUNET_PeerIdentity);
+  struct GNUNET_CRYPTO_EddsaPublicKey *pub_key = GNUNET_new (struct
+                                                             
GNUNET_CRYPTO_EddsaPublicKey);
+  struct GNUNET_CRYPTO_EddsaPrivateKey *priv_key = GNUNET_new (struct
+                                                               
GNUNET_CRYPTO_EddsaPrivateKey);
+
+  priv_key = GNUNET_TESTING_hostkey_get (tl_system,
+                                         num,
+                                         peer);
+
+  GNUNET_CRYPTO_eddsa_key_get_public (priv_key,
+                                      pub_key);
+  peer->public_key = *pub_key;
+  GNUNET_free (priv_key);
+  GNUNET_free (pub_key);
+  return peer;
+}
+
+
+int
+free_nodes_cb (void *cls,
+               const struct GNUNET_ShortHashCode *key,
+               void *value)
+{
+  (void) cls;
+  struct GNUNET_TESTING_NetjailNode *node = value;
+  struct GNUNET_TESTING_NodeConnection *pos_connection;
+  struct GNUNET_TESTING_NodeConnection *tmp_connection;
+  struct GNUNET_TESTING_AddressPrefix *pos_prefix;
+  struct GNUNET_TESTING_AddressPrefix *tmp_prefix;
+
+  pos_connection = node->node_connections_head;
+
+  while (NULL != pos_connection->next)
+  {
+    pos_prefix = pos_connection->address_prefixes_head;
+    while (NULL != pos_prefix->next)
+    {
+      tmp_prefix = pos_prefix->next;
+      GNUNET_free (pos_prefix);
+      pos_prefix = tmp_prefix;
+    }
+    tmp_connection = pos_connection->next;
+    GNUNET_free (pos_connection);
+    pos_connection = tmp_connection;
+  }
+  return GNUNET_OK;
+}
+
+
+int
+free_namespaces_cb (void *cls,
+                    const struct GNUNET_ShortHashCode *key,
+                    void *value)
+{
+  (void) cls;
+  struct GNUNET_TESTING_NetjailNamespace *namespace = value;
+
+  GNUNET_free (namespace->router);
+  GNUNET_CONTAINER_multishortmap_iterate (namespace->nodes, free_nodes_cb,
+                                          NULL);
+  return GNUNET_OK;
+
+}
+
+
+/**
+ * Deallocate memory of the struct GNUNET_TESTING_NetjailTopology.
+ *
+ * @param topology The GNUNET_TESTING_NetjailTopology to be deallocated.
+ */
+void
+GNUNET_TESTING_free_topology (struct GNUNET_TESTING_NetjailTopology *topology)
+{
+  GNUNET_CONTAINER_multishortmap_iterate (topology->map_namespaces,
+                                          free_namespaces_cb, NULL);
+  GNUNET_CONTAINER_multishortmap_iterate (topology->map_globals, free_nodes_cb,
+                                          NULL);
+  GNUNET_free (topology);
+}
+
+/**
+ * Calculate the unique id identifying a node from a given connction.
+ *
+ * @param node_connection The connection we calculate the id from.
+ * @param topology The topology we get all needed information from.
+ * @return The unique id of the node from the connection.
+ */
+unsigned int
+GNUNET_TESTING_calculate_num (struct
+                              GNUNET_TESTING_NodeConnection *node_connection,
+                              struct GNUNET_TESTING_NetjailTopology *topology)
+{
+  unsigned int n, m, num;
+
+  n = node_connection->namespace_n;
+  m = node_connection->node_n;
+
+  if (0 == n)
+    num = m;
+  else
+    num = (n - 1) * topology->nodes_m + m + topology->nodes_x;
+
+  return num;
+}
+
+
+/**
+ * Get the address for a specific communicator from a connection.
+ *
+ * @param connection The connection we like to have the address from.
+ * @param prefix The communicator protocol prefix.
+ * @return The address of the communicator.
+ */
+char *
+GNUNET_TESTING_get_address (struct GNUNET_TESTING_NodeConnection *connection,
+                            char *prefix)
+{
+  struct GNUNET_TESTING_NetjailNode *node;
+  char *addr;
+  char *template;
+
+  LOG (GNUNET_ERROR_TYPE_ERROR,
+       "node_n: %u\n",
+       connection->node_n);
+
+  node = connection->node;
+  if (connection->namespace_n == node->namespace_n)
+  {
+    template = CONNECT_ADDRESS_TEMPLATE;
+  }
+  else if (0 == connection->namespace_n)
+  {
+    template = KNOWN_CONNECT_ADDRESS_TEMPLATE;
+  }
+  else
+  {
+    template = ROUTER_CONNECT_ADDRESS_TEMPLATE;
+  }
+
+  if (0 == strcmp (PREFIX_TCP, prefix))
+  {
+
+    GNUNET_asprintf (&addr,
+                     template,
+                     prefix,
+                     connection->node_n);
+  }
+  else if (0 == strcmp (PREFIX_UDP, prefix))
+  {
+    GNUNET_asprintf (&addr,
+                     template,
+                     prefix,
+                     connection->node_n);
   }
+  else
+  {
+    GNUNET_assert (0);
+  }
+
+  return addr;
 }
 
 
@@ -2029,68 +2358,42 @@ GNUNET_TESTING_send_local_test_finished_msg (enum 
GNUNET_GenericReturnValue rv)
 
 
 /**
- * Getting the topology from file.
+ * Parse the topology data.
  *
- * @param filename The name of the topology file.
+ * @param data The topology data.
  * @return The GNUNET_TESTING_NetjailTopology
  */
 struct GNUNET_TESTING_NetjailTopology *
-GNUNET_TESTING_get_topo_from_file (const char *filename)
+GNUNET_TESTING_get_topo_from_string (char *data)
 {
-  uint64_t fs;
-  char *data;
   char *token;
-  char *key;
+  char *key = NULL;
   unsigned int out;
   char *rest = NULL;
   char *value;
+  char *value2;
   int ret;
-  struct GNUNET_TESTING_NetjailTopology *topo = GNUNET_new (struct
-                                                            
GNUNET_TESTING_NetjailTopology);
+  struct GNUNET_TESTING_NetjailTopology *topo;
   struct GNUNET_TESTING_NetjailNode *node;
   struct GNUNET_TESTING_NetjailRouter *router;
   struct GNUNET_TESTING_NetjailNamespace *namespace;
   struct GNUNET_ShortHashCode *hkey;
   struct GNUNET_HashCode hc;
 
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "data %s\n",
+       data);
+  token = strtok_r (data, "\n", &rest);
+  topo = GNUNET_new (struct GNUNET_TESTING_NetjailTopology);
   topo->map_namespaces =
     GNUNET_CONTAINER_multishortmap_create (1,GNUNET_NO);
   topo->map_globals =
     GNUNET_CONTAINER_multishortmap_create (1,GNUNET_NO);
 
-  if (GNUNET_YES != GNUNET_DISK_file_test (filename))
-  {
-    LOG (GNUNET_ERROR_TYPE_ERROR,
-         _ ("Topology file %s not found\n"),
-         filename);
-    return NULL;
-  }
-  if (GNUNET_OK !=
-      GNUNET_DISK_file_size (filename, &fs, GNUNET_YES, GNUNET_YES))
-  {
-    LOG (GNUNET_ERROR_TYPE_ERROR,
-         _ ("Topology file %s has no data\n"),
-         filename);
-    return NULL;
-  }
-  data = GNUNET_malloc (fs);
-  if (fs != GNUNET_DISK_fn_read (filename, data, fs))
-  {
-    LOG (GNUNET_ERROR_TYPE_ERROR,
-         _ ("Topology file %s cannot be read\n"),
-         filename);
-    GNUNET_free (data);
-    return NULL;
-  }
-
-  LOG (GNUNET_ERROR_TYPE_ERROR,
-       "data: %s\n",
-       data);
-
-  token = strtok_r (data, "\n", &rest);
-
   while (NULL != token)
   {
+    if (NULL != key)
+      free (key);
     key = get_key (token);
     LOG (GNUNET_ERROR_TYPE_ERROR,
          "In the loop with token: %s beginning with %s\n",
@@ -2201,12 +2504,12 @@ GNUNET_TESTING_get_topo_from_file (const char *filename)
 
       LOG (GNUNET_ERROR_TYPE_ERROR,
            "Get value for key udp_port on R.\n");
-      value = get_value ("udp_port", token);
-      ret = sscanf (value, "%u", &(router->udp_port));
+      value2 = get_value ("udp_port", token);
+      ret = sscanf (value2, "%u", &(router->udp_port));
       GNUNET_break (0 != ret && 1 >= router->udp_port);
       LOG (GNUNET_ERROR_TYPE_ERROR,
            "udp_port: %s\n",
-           value);
+           value2);
 
       if (GNUNET_YES == GNUNET_CONTAINER_multishortmap_contains (
             topo->map_namespaces,
@@ -2297,8 +2600,64 @@ GNUNET_TESTING_get_topo_from_file (const char *filename)
       node_connections (token, node);
     }
     token = strtok_r (NULL, "\n", &rest);
+    if (NULL != token)
+      LOG (GNUNET_ERROR_TYPE_ERROR,
+           "Next token %s\n",
+           token);
+  }
+
+  return topo;
+}
+
+
+/**
+ * Getting the topology from file.
+ *
+ * @param filename The name of the topology file.
+ * @return The GNUNET_TESTING_NetjailTopology
+ */
+struct GNUNET_TESTING_NetjailTopology *
+GNUNET_TESTING_get_topo_from_file (const char *filename)
+{
+  uint64_t fs;
+  char *data;
+  struct GNUNET_TESTING_NetjailTopology *topo;
+
+  if (GNUNET_YES != GNUNET_DISK_file_test (filename))
+  {
+    LOG (GNUNET_ERROR_TYPE_ERROR,
+         _ ("Topology file %s not found\n"),
+         filename);
+    return NULL;
+  }
+  if (GNUNET_OK !=
+      GNUNET_DISK_file_size (filename, &fs, GNUNET_YES, GNUNET_YES))
+  {
+    LOG (GNUNET_ERROR_TYPE_ERROR,
+         _ ("Topology file %s has no data\n"),
+         filename);
+    return NULL;
+  }
+  data = GNUNET_malloc (fs);
+  if (fs != GNUNET_DISK_fn_read (filename, data, fs))
+  {
+    LOG (GNUNET_ERROR_TYPE_ERROR,
+         _ ("Topology file %s cannot be read\n"),
+         filename);
+    GNUNET_free (data);
+    return NULL;
   }
 
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "data: %s\n",
+       data);
+
+  data[fs] = '\0';
+
+  topo = GNUNET_TESTING_get_topo_from_string (data);
+
+  GNUNET_free (data);
+
   return topo;
 }
 
diff --git a/src/testing/testing_api_cmd_block_until_all_peers_started.c 
b/src/testing/testing_api_cmd_block_until_all_peers_started.c
deleted file mode 100644
index 763713e15..000000000
--- a/src/testing/testing_api_cmd_block_until_all_peers_started.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-      This file is part of GNUnet
-      Copyright (C) 2021 GNUnet e.V.
-
-      GNUnet is free software: you can redistribute it and/or modify it
-      under the terms of the GNU Affero General Public License as published
-      by the Free Software Foundation, either version 3 of the License,
-      or (at your option) any later version.
-
-      GNUnet 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
-      Affero General Public License for more details.
-
-      You should have received a copy of the GNU Affero General Public License
-      along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-
-/**
- * @file testing_api_cmd_block_until_all_peers_started.c
- * @brief cmd to block the interpreter loop until all peers started.
- * @author t3sserakt
- */
-#include "platform.h"
-#include "gnunet_util_lib.h"
-#include "gnunet_testing_ng_lib.h"
-
-/**
- * Generic logging shortcut
- */
-#define LOG(kind, ...) GNUNET_log (kind, __VA_ARGS__)
-
-/**
- * Struct with information for callbacks.
- *
- */
-struct BlockState
-{
-  /**
-   * Context for our asynchronous completion.
-   */
-  struct GNUNET_TESTING_AsyncContext ac;
-
-  /**
-   * Flag to indicate if all peers have started.
-   *
-   */
-  unsigned int *all_peers_started;
-};
-
-
-/**
- * The cleanup function of this cmd frees resources the cmd allocated.
- *
- */
-static void
-block_until_all_peers_started_cleanup (void *cls)
-{
-  struct BlockState *bs = cls;
-
-  GNUNET_free (bs);
-}
-
-
-/**
- * This function does nothing but to start the cmd.
- *
- */
-static void
-block_until_all_peers_started_run (void *cls,
-                                   struct GNUNET_TESTING_Interpreter *is)
-{
-  LOG (GNUNET_ERROR_TYPE_DEBUG,
-       "block_until_all_peers_started_run!\n");
-}
-
-
-/**
- * Create command.
- *
- * @param label name for command.
- * @param all_peers_started Flag which will be set from outside.
- * @return command.
- */
-struct GNUNET_TESTING_Command
-GNUNET_TESTING_cmd_block_until_all_peers_started (const char *label,
-                                                  unsigned int *
-                                                  all_peers_started)
-{
-  struct BlockState *bs;
-
-  bs = GNUNET_new (struct BlockState);
-  bs->all_peers_started = all_peers_started;
-  {
-    struct GNUNET_TESTING_Command cmd = {
-      .cls = bs,
-      .label = label,
-      .run = &block_until_all_peers_started_run,
-      .ac = &bs->ac,
-      .cleanup = &block_until_all_peers_started_cleanup
-    };
-
-    return cmd;
-  }
-}
diff --git a/src/testing/testing_api_cmd_block_until_external_trigger.c 
b/src/testing/testing_api_cmd_block_until_external_trigger.c
index aeb9ffda3..7ff554280 100644
--- a/src/testing/testing_api_cmd_block_until_external_trigger.c
+++ b/src/testing/testing_api_cmd_block_until_external_trigger.c
@@ -26,6 +26,7 @@
 #include "platform.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 
 /**
  * Generic logging shortcut
diff --git a/src/testing/testing_api_cmd_finish.c 
b/src/testing/testing_api_cmd_finish.c
index 3ac0871a5..47199d3d6 100644
--- a/src/testing/testing_api_cmd_finish.c
+++ b/src/testing/testing_api_cmd_finish.c
@@ -25,6 +25,8 @@
 #include "platform.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
+
 
 /**
  * Struct to use for command-specific context information closure of a command 
waiting
diff --git a/src/testing/testing_api_cmd_hello_world.c 
b/src/testing/testing_api_cmd_hello_world.c
deleted file mode 100644
index 73dcd6dff..000000000
--- a/src/testing/testing_api_cmd_hello_world.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
-      This file is part of GNUnet
-      Copyright (C) 2021 GNUnet e.V.
-
-      GNUnet is free software: you can redistribute it and/or modify it
-      under the terms of the GNU Affero General Public License as published
-      by the Free Software Foundation, either version 3 of the License,
-      or (at your option) any later version.
-
-      GNUnet 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
-      Affero General Public License for more details.
-
-      You should have received a copy of the GNU Affero General Public License
-      along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-
-/**
- * @file testing/testing_api_cmd_hello_world.c
- * @brief implementation of a hello world command.
- * @author t3sserakt
- */
-#include "platform.h"
-#include "gnunet_testing_ng_lib.h"
-
-struct HelloWorldState
-{
-  char *message;
-  const char *birthLabel;
-};
-
-
-/**
- *
- *
- * @param cls closure
- */
-static void
-hello_world_cleanup (void *cls)
-{
-  struct HelloWorldState *hs = cls;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Cleaning up message %s\n",
-              hs->message);
-  GNUNET_free (hs);
-}
-
-
-/**
- *
- *
- * @param cls closure.
- * @param[out] ret result
- * @param trait name of the trait.
- * @param index index number of the object to offer.
- * @return #GNUNET_OK on success.
- */
-static enum GNUNET_GenericReturnValue
-hello_world_traits (void *cls,
-                    const void **ret,
-                    const char *trait,
-                    unsigned int index)
-{
-  return GNUNET_NO;
-}
-
-
-/**
-* Run the "hello world" CMD.
-*
-* @param cls closure.
-* @param is interpreter state.
-*/
-static void
-hello_world_run (void *cls,
-                 struct GNUNET_TESTING_Interpreter *is)
-{
-  struct HelloWorldState *hs = cls;
-  const struct GNUNET_TESTING_Command *birth_cmd;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "%s\n",
-              hs->message);
-  birth_cmd = GNUNET_TESTING_interpreter_lookup_command (is,
-                                                         hs->birthLabel);
-  GNUNET_TESTING_get_trait_what_am_i (birth_cmd,
-                                      &hs->message);
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Now I am a %s\n",
-              hs->message);
-}
-
-
-/**
- * Create command.
- *
- * @param label name for command.
- * @param message initial message.
- * @return command.
- */
-struct GNUNET_TESTING_Command
-GNUNET_TESTING_cmd_hello_world (const char *label,
-                                const char *birthLabel,
-                                char *message)
-{
-  struct HelloWorldState *hs;
-
-  hs = GNUNET_new (struct HelloWorldState);
-  hs->message = "Hello World, I was nobody!";
-  hs->birthLabel = birthLabel;
-  {
-    struct GNUNET_TESTING_Command cmd = {
-      .cls = hs,
-      .label = label,
-      .run = &hello_world_run,
-      .cleanup = &hello_world_cleanup,
-      .traits = &hello_world_traits
-    };
-
-    return cmd;
-  }
-}
diff --git a/src/testing/testing_api_cmd_hello_world_birth.c 
b/src/testing/testing_api_cmd_hello_world_birth.c
deleted file mode 100644
index 8415b99f0..000000000
--- a/src/testing/testing_api_cmd_hello_world_birth.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
-      This file is part of GNUnet
-      Copyright (C) 2021 GNUnet e.V.
-
-      GNUnet is free software: you can redistribute it and/or modify it
-      under the terms of the GNU Affero General Public License as published
-      by the Free Software Foundation, either version 3 of the License,
-      or (at your option) any later version.
-
-      GNUnet 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
-      Affero General Public License for more details.
-
-      You should have received a copy of the GNU Affero General Public License
-      along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-     SPDX-License-Identifier: AGPL3.0-or-later
- */
-
-/**
- * @file testing/testing_api_cmd_hello_world.c
- * @brief implementation of a hello world command.
- * @author t3sserakt
- */
-#include "platform.h"
-#include "gnunet_util_lib.h"
-#include "gnunet_testing_ng_lib.h"
-
-struct HelloWorldBirthState
-{
-  struct GNUNET_TIME_Absolute *date;
-  char *what_am_i;
-};
-
-/**
-*
-*
-* @param cls closure
-* @param cmd current CMD being cleaned up.
-*/
-static void
-hello_world_birth_cleanup (void *cls)
-{
-  struct HelloWorldBirthState *hbs = cls;
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Finished birth of %s\n",
-              hbs->what_am_i);
-}
-
-
-/**
-*
-*
-* @param cls closure.
-* @param[out] ret result
-* @param trait name of the trait.
-* @param index index number of the object to offer.
-* @return #GNUNET_OK on success.
-*/
-static int
-hello_world_birth_traits (void *cls,
-                          const void **ret,
-                          const char *trait,
-                          unsigned int index)
-{
-  struct HelloWorldBirthState *hbs = cls;
-  const char *what_am_i = hbs->what_am_i;
-
-  struct GNUNET_TESTING_Trait traits[] = {
-    {
-      .index = 0,
-      .trait_name = "what_am_i",
-      .ptr = (const void *) what_am_i,
-    },
-    GNUNET_TESTING_trait_end ()
-  };
-
-  return GNUNET_TESTING_get_trait (traits,
-                                   ret,
-                                   trait,
-                                   index);
-}
-
-
-/**
-* Run the "hello world" CMD.
-*
-* @param cls closure.
-* @param cmd CMD being run.
-* @param is interpreter state.
-*/
-static void
-hello_world_birth_run (void *cls,
-                       struct GNUNET_TESTING_Interpreter *is)
-{
-  struct HelloWorldBirthState *hbs = cls;
-  struct GNUNET_TIME_Relative relative;
-
-  relative = GNUNET_TIME_absolute_get_difference (*hbs->date,
-                                                  GNUNET_TIME_absolute_get ());
-
-  if (0 == relative.rel_value_us % 10)
-  {
-    hbs->what_am_i = "creature!";
-  }
-  else if (0 == relative.rel_value_us % 2)
-  {
-    hbs->what_am_i = "girl!";
-  }
-  else
-  {
-    hbs->what_am_i = "boy!";
-  }
-}
-
-
-/**
- * Offer data from trait
- *
- * @param cmd command to extract the message from.
- * @param pt pointer to message.
- * @return #GNUNET_OK on success.
- */
-int
-GNUNET_TESTING_get_trait_what_am_i (const struct GNUNET_TESTING_Command *cmd,
-                                    char **what_am_i)
-{
-  return cmd->traits (cmd->cls,
-                      (const void **) what_am_i,
-                      "what_am_i",
-                      (unsigned int) 0);
-}
-
-
-/**
- * Create command.
- *
- * @param label name for command.
- * @param now when the command was started.
- * @return command.
- */
-struct GNUNET_TESTING_Command
-GNUNET_TESTING_cmd_hello_world_birth (const char *label,
-                                      struct GNUNET_TIME_Absolute *now)
-{
-  struct HelloWorldBirthState *hbs;
-
-  hbs = GNUNET_new (struct HelloWorldBirthState);
-  hbs->date = now;
-
-  struct GNUNET_TESTING_Command cmd = {
-    .cls = hbs,
-    .label = label,
-    .run = &hello_world_birth_run,
-    .cleanup = &hello_world_birth_cleanup,
-    .traits = &hello_world_birth_traits
-  };
-
-  return cmd;
-}
diff --git a/src/testing/testing_api_cmd_local_test_finished.c 
b/src/testing/testing_api_cmd_local_test_finished.c
index 0e7e214dc..709c6b62f 100644
--- a/src/testing/testing_api_cmd_local_test_finished.c
+++ b/src/testing/testing_api_cmd_local_test_finished.c
@@ -26,6 +26,7 @@
 #include "platform.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "testing_cmds.h"
 
 /**
@@ -64,7 +65,6 @@ local_test_finished_cleanup (void *cls)
 {
   struct LocalFinishedState *lfs = cls;
 
-  GNUNET_free (lfs->reply);
   GNUNET_free (lfs);
 }
 
diff --git a/src/testing/testing_api_cmd_local_test_prepared.c 
b/src/testing/testing_api_cmd_local_test_prepared.c
new file mode 100644
index 000000000..9dc7dfa9a
--- /dev/null
+++ b/src/testing/testing_api_cmd_local_test_prepared.c
@@ -0,0 +1,146 @@
+/*
+      This file is part of GNUnet
+      Copyright (C) 2021 GNUnet e.V.
+
+      GNUnet is free software: you can redistribute it and/or modify it
+      under the terms of the GNU Affero General Public License as published
+      by the Free Software Foundation, either version 3 of the License,
+      or (at your option) any later version.
+
+      GNUnet 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
+      Affero General Public License for more details.
+
+      You should have received a copy of the GNU Affero General Public License
+      along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+     SPDX-License-Identifier: AGPL3.0-or-later
+ */
+
+/**
+ * @file testing_api_cmd_local_test_prepared.c
+ * @brief cmd to block the interpreter loop until all peers started.
+ * @author t3sserakt
+ */
+#include "platform.h"
+#include "gnunet_util_lib.h"
+#include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
+#include "testing_cmds.h"
+
+/**
+ * Generic logging shortcut
+ */
+#define LOG(kind, ...) GNUNET_log (kind, __VA_ARGS__)
+
+
+/**
+ * This function prepares an array with traits.
+ *
+ */
+enum GNUNET_GenericReturnValue
+local_test_prepared_traits (void *cls,
+                            const void **ret,
+                            const char *trait,
+                            unsigned int index)
+{
+  struct LocalPreparedState *lfs = cls;
+  struct GNUNET_TESTING_Trait traits[] = {
+    {
+      .index = 0,
+      .trait_name = "state",
+      .ptr = (const void *) lfs,
+    },
+    GNUNET_TESTING_trait_end ()
+  };
+  return GNUNET_TESTING_get_trait (traits,
+                                   ret,
+                                   trait,
+                                   index);
+}
+
+
+/**
+ * Function to get the trait with the struct LocalPreparedState.
+ *
+ * @param[out] lfs struct LocalPreparedState.
+ * @return #GNUNET_OK if no error occurred, #GNUNET_SYSERR otherwise.
+ *
+ */
+enum GNUNET_GenericReturnValue
+GNUNET_TESTING_get_trait_local_prepared_state (
+  const struct GNUNET_TESTING_Command *cmd,
+  struct LocalPreparedState **lfs)
+{
+  return cmd->traits (cmd->cls,
+                      (const void **) lfs,
+                      "state",
+                      (unsigned int) 0);
+}
+
+
+/**
+ * The cleanup function of this cmd frees resources the cmd allocated.
+ *
+ */
+static void
+local_test_prepared_cleanup (void *cls)
+{
+  struct LocalPreparedState *lfs = cls;
+
+  GNUNET_free (lfs);
+}
+
+
+/**
+ * This function sends a GNUNET_MESSAGE_TYPE_CMDS_HELPER_LOCAL_TESTS_PREPARED 
message to the master loop.
+ *
+ */
+static void
+local_test_prepared_run (void *cls,
+                         struct GNUNET_TESTING_Interpreter *is)
+{
+  struct LocalPreparedState *lfs = cls;
+
+  struct GNUNET_CMDS_LOCAL_TEST_PREPARED *reply;
+  size_t msg_length;
+
+  msg_length = sizeof(struct GNUNET_CMDS_LOCAL_TEST_PREPARED);
+  reply = GNUNET_new (struct GNUNET_CMDS_LOCAL_TEST_PREPARED);
+  reply->header.type = htons (
+    GNUNET_MESSAGE_TYPE_CMDS_HELPER_LOCAL_TEST_PREPARED);
+  reply->header.size = htons ((uint16_t) msg_length);
+  lfs->write_message ((struct GNUNET_MessageHeader *) reply, msg_length);
+}
+
+
+/**
+ * Create command.
+ *
+ * @param label name for command.
+ * @param write_message Callback to write messages to the master loop.
+ * @param all_local_tests_prepared Flag which will be set from outside.
+ * @return command.
+ */
+struct GNUNET_TESTING_Command
+GNUNET_TESTING_cmd_local_test_prepared (const char *label,
+                                        TESTING_CMD_HELPER_write_cb
+                                        write_message)
+{
+  struct LocalPreparedState *lfs;
+
+  lfs = GNUNET_new (struct LocalPreparedState);
+  lfs->write_message = write_message;
+
+  struct GNUNET_TESTING_Command cmd = {
+    .cls = lfs,
+    .label = label,
+    .run = &local_test_prepared_run,
+    .ac = &lfs->ac,
+    .cleanup = &local_test_prepared_cleanup,
+    .traits = &local_test_prepared_traits
+  };
+
+  return cmd;
+}
diff --git a/src/testing/testing_api_cmd_netjail_start.c 
b/src/testing/testing_api_cmd_netjail_start.c
index 35fb90f3c..2ff70c33e 100644
--- a/src/testing/testing_api_cmd_netjail_start.c
+++ b/src/testing/testing_api_cmd_netjail_start.c
@@ -26,8 +26,11 @@
 #include "platform.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 
-#define NETJAIL_START_SCRIPT "./../testing/netjail_start.sh"
+#define NETJAIL_START_SCRIPT "netjail_start.sh"
+
+#define LOG(kind, ...) GNUNET_log (kind, __VA_ARGS__)
 
 /**
  * Struct to hold information for callbacks.
@@ -53,6 +56,10 @@ struct NetJailState
    */
   char *topology_config;
 
+  /**
+   * Shall we read the topology from file, or from a string.
+   */
+  unsigned int *read_file;
 };
 
 
@@ -70,11 +77,15 @@ netjail_start_cleanup (void *cls)
 
   if (NULL != ns->cwh)
   {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Cancel child\n");
     GNUNET_wait_child_cancel (ns->cwh);
     ns->cwh = NULL;
   }
   if (NULL != ns->start_proc)
   {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Kill process\n");
     GNUNET_assert (0 ==
                    GNUNET_OS_process_kill (ns->start_proc,
                                            SIGKILL));
@@ -100,6 +111,7 @@ child_completed_callback (void *cls,
 
   GNUNET_OS_process_destroy (ns->start_proc);
   ns->start_proc = NULL;
+  ns->cwh = NULL;
   if (0 == exit_code)
   {
     GNUNET_TESTING_async_finish (&ns->ac);
@@ -127,20 +139,28 @@ netjail_start_run (void *cls,
   struct NetJailState *ns = cls;
   char pid[15];
   enum GNUNET_GenericReturnValue helper_check;
+  char *data_dir;
+  char *script_name;
+  char *read_file;
+
+  data_dir = GNUNET_OS_installation_get_path (GNUNET_OS_IPK_DATADIR);
+  GNUNET_asprintf (&script_name, "%s%s", data_dir, NETJAIL_START_SCRIPT);
+  GNUNET_asprintf (&read_file, "%u", *(ns->read_file));
 
-  // FIXME: NETJAIL_START_SCRIPT like this is bad,
-  // use location from share/gnunet/ of installed
-  // binary in case libgnunettesting is used as a lib!
   helper_check = GNUNET_OS_check_helper_binary (
-    NETJAIL_START_SCRIPT,
+    script_name,
     GNUNET_YES,
     NULL);
 
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "script_name %s\n",
+       script_name);
+
   if (GNUNET_NO == helper_check)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "No SUID for %s!\n",
-                NETJAIL_START_SCRIPT);
+                script_name);
     GNUNET_TESTING_interpreter_fail (is);
     return;
   }
@@ -148,7 +168,7 @@ netjail_start_run (void *cls,
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "%s not found!\n",
-                NETJAIL_START_SCRIPT);
+                script_name);
     GNUNET_TESTING_interpreter_fail (is);
     return;
   }
@@ -159,9 +179,10 @@ netjail_start_run (void *cls,
                    getpid ());
   {
     char *const script_argv[] = {
-      NETJAIL_START_SCRIPT,
+      script_name,
       ns->topology_config,
       pid,
+      read_file,
       NULL
     };
 
@@ -170,7 +191,7 @@ netjail_start_run (void *cls,
                                      NULL,
                                      NULL,
                                      NULL,
-                                     NETJAIL_START_SCRIPT,
+                                     script_name,
                                      script_argv);
   }
   ns->cwh = GNUNET_wait_child (ns->start_proc,
@@ -189,12 +210,14 @@ netjail_start_run (void *cls,
  */
 struct GNUNET_TESTING_Command
 GNUNET_TESTING_cmd_netjail_start (const char *label,
-                                  char *topology_config)
+                                  char *topology_config,
+                                  unsigned int *read_file)
 {
   struct NetJailState *ns;
 
   ns = GNUNET_new (struct NetJailState);
   ns->topology_config = topology_config;
+  ns->read_file = read_file;
   {
     struct GNUNET_TESTING_Command cmd = {
       .cls = ns,
diff --git a/src/testing/testing_api_cmd_netjail_start_testsystem.c 
b/src/testing/testing_api_cmd_netjail_start_testsystem.c
index a1d71c436..5a005fc25 100644
--- a/src/testing/testing_api_cmd_netjail_start_testsystem.c
+++ b/src/testing/testing_api_cmd_netjail_start_testsystem.c
@@ -25,9 +25,15 @@
  */
 #include "platform.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "testing_cmds.h"
 
-#define NETJAIL_EXEC_SCRIPT "./../testing/netjail_exec.sh"
+#define NETJAIL_EXEC_SCRIPT "netjail_exec.sh"
+
+/**
+ * Generic logging shortcut
+ */
+#define LOG(kind, ...) GNUNET_log (kind, __VA_ARGS__)
 
 /**
  * Struct to store messages send/received by the helper into a DLL
@@ -61,6 +67,12 @@ struct HelperMessage
  */
 struct NetJailState
 {
+  /**
+   * Global state of the interpreter, used by a command
+   * to access information about other commands.
+   */
+  struct GNUNET_TESTING_Interpreter *is;
+
   /**
    * Context for our asynchronous completion.
    */
@@ -71,24 +83,6 @@ struct NetJailState
    */
   struct GNUNET_TESTING_NetjailTopology *topology;
 
-  /**
-   * Pointer to the return value of the test.
-   *
-   */
-  unsigned int *rv;
-
-  /**
-   * Head of the DLL which stores messages received by the helper.
-   *
-   */
-  struct HelperMessage *hp_messages_head;
-
-  /**
-   * Tail of the DLL which stores messages received by the helper.
-   *
-   */
-  struct HelperMessage *hp_messages_tail;
-
   /**
    * Array with handles of helper processes.
    */
@@ -118,27 +112,6 @@ struct NetJailState
    */
   unsigned int known;
 
-  /**
-   * The send handle for the helper
-   */
-  struct GNUNET_HELPER_SendHandle **shandle;
-
-  /**
-   * Size of the array NetJailState#shandle.
-   *
-   */
-  unsigned int n_shandle;
-
-  /**
-   * The messages send to the helper.
-   */
-  struct GNUNET_MessageHeader **msg;
-
-  /**
-   * Size of the array NetJailState#msg.
-   *
-   */
-  unsigned int n_msg;
 
   /**
    * Number of test environments started.
@@ -156,7 +129,13 @@ struct NetJailState
    * Number of local tests finished.
    *
    */
-  unsigned int number_of_local_test_finished;
+  unsigned int number_of_local_tests_finished;
+
+  /**
+   * Number of local tests prepared to finish.
+   *
+   */
+  unsigned int number_of_local_tests_prepared;
 
   /**
    * Name of the test case plugin the helper will load.
@@ -165,16 +144,14 @@ struct NetJailState
   char *plugin_name;
 
   /**
-   * HEAD of the DLL containing TestingSystemCount.
-   *
+   * Shall we read the topology from file, or from a string.
    */
-  struct TestingSystemCount *tbcs_head;
+  unsigned int *read_file;
 
   /**
-   * TAIL of the DLL containing TestingSystemCount.
-   *
+   * String with topology data or name of topology file.
    */
-  struct TestingSystemCount *tbcs_tail;
+  char *topology_data;
 };
 
 /**
@@ -193,6 +170,11 @@ struct TestingSystemCount
    */
   struct TestingSystemCount *prev;
 
+  /**
+   * The send handle for the helper
+   */
+  struct GNUNET_HELPER_SendHandle *shandle;
+
   /**
    * The number of the test environment.
    *
@@ -204,6 +186,11 @@ struct TestingSystemCount
    *
    */
   struct NetJailState *ns;
+
+  /**
+   * The messages send to the helper.
+   */
+  struct GNUNET_MessageHeader *msg;
 };
 
 /**
@@ -215,23 +202,7 @@ static void
 netjail_exec_cleanup (void *cls)
 {
   struct NetJailState *ns = cls;
-  struct HelperMessage *message_pos;
-  struct  TestingSystemCount *tbc_pos;
 
-  while (NULL != (message_pos = ns->hp_messages_head))
-  {
-    GNUNET_CONTAINER_DLL_remove (ns->hp_messages_head,
-                                 ns->hp_messages_tail,
-                                 message_pos);
-    GNUNET_free (message_pos);
-  }
-  while (NULL != (tbc_pos = ns->tbcs_head))
-  {
-    GNUNET_CONTAINER_DLL_remove (ns->tbcs_head,
-                                 ns->tbcs_tail,
-                                 tbc_pos);
-    GNUNET_free (tbc_pos);
-  }
   GNUNET_free (ns);
 }
 
@@ -248,7 +219,6 @@ netjail_exec_traits (void *cls,
 {
   struct NetJailState *ns = cls;
   struct GNUNET_HELPER_Handle **helper = ns->helper;
-  struct HelperMessage *hp_messages_head = ns->hp_messages_head;
 
 
   struct GNUNET_TESTING_Trait traits[] = {
@@ -257,11 +227,6 @@ netjail_exec_traits (void *cls,
       .trait_name = "helper_handles",
       .ptr = (const void *) helper,
     },
-    {
-      .index = 1,
-      .trait_name = "hp_msgs_head",
-      .ptr = (const void *) hp_messages_head,
-    },
     GNUNET_TESTING_trait_end ()
   };
 
@@ -304,49 +269,87 @@ static void
 clear_msg (void *cls, int result)
 {
   struct TestingSystemCount *tbc = cls;
-  struct NetJailState *ns = tbc->ns;
 
-  GNUNET_assert (NULL != ns->shandle[tbc->count - 1]);
-  ns->shandle[tbc->count - 1] = NULL;
-  GNUNET_free (ns->msg[tbc->count - 1]);
-  ns->msg[tbc->count - 1] = NULL;
+  GNUNET_assert (NULL != tbc->shandle);
+  GNUNET_free (tbc->shandle);
+  tbc->shandle = NULL;
+  GNUNET_free (tbc->msg);
+  tbc->msg = NULL;
 }
 
 
 static void
-send_all_peers_started (unsigned int i, unsigned int j, struct NetJailState 
*ns)
+send_message_to_locals (
+  unsigned int i,
+  unsigned int j,
+  struct NetJailState *ns,
+  struct GNUNET_MessageHeader *header
+  )
 {
-  unsigned int total_number = ns->local_m * ns->global_n + ns->known;
-  struct GNUNET_CMDS_ALL_PEERS_STARTED *reply;
-  size_t msg_length;
+  // unsigned int total_number = ns->local_m * ns->global_n + ns->known;
   struct GNUNET_HELPER_Handle *helper;
   struct TestingSystemCount *tbc;
 
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "send message of type %u to locals\n",
+       header->type);
   tbc = GNUNET_new (struct TestingSystemCount);
   tbc->ns = ns;
   // TODO This needs to be more generic. As we send more messages back and 
forth, we can not grow the arrays again and again, because this is to error 
prone.
   if (0 == i)
-    tbc->count = j + total_number;
+    tbc->count = j; // + total_number;
   else
-    tbc->count = (i - 1) * ns->local_m + j + total_number + ns->known;
+    tbc->count = (i - 1) * ns->local_m + j + ns->known; // + total_number ;
+
+  helper = ns->helper[tbc->count - 1];// - total_number];
 
-  helper = ns->helper[tbc->count - 1 - total_number];
-  msg_length = sizeof(struct GNUNET_CMDS_ALL_PEERS_STARTED);
-  reply = GNUNET_new (struct GNUNET_CMDS_ALL_PEERS_STARTED);
-  reply->header.type = htons (
-    GNUNET_MESSAGE_TYPE_CMDS_HELPER_ALL_PEERS_STARTED);
-  reply->header.size = htons ((uint16_t) msg_length);
 
-  GNUNET_array_append (ns->msg, ns->n_msg, &reply->header);
 
   struct GNUNET_HELPER_SendHandle *sh = GNUNET_HELPER_send (
     helper,
-    &reply->header,
+    header,
     GNUNET_NO,
     &clear_msg,
     tbc);
 
-  GNUNET_array_append (ns->shandle, ns->n_shandle, sh);
+  tbc->shandle = sh;
+  // GNUNET_array_append (tbc->shandle, tbc->n_shandle, sh);
+}
+
+
+static void
+send_all_local_tests_prepared (unsigned int i, unsigned int j, struct
+                               NetJailState *ns)
+{
+  struct GNUNET_CMDS_ALL_LOCAL_TESTS_PREPARED *reply;
+  size_t msg_length;
+
+
+  msg_length = sizeof(struct GNUNET_CMDS_ALL_LOCAL_TESTS_PREPARED);
+  reply = GNUNET_new (struct GNUNET_CMDS_ALL_LOCAL_TESTS_PREPARED);
+  reply->header.type = htons (
+    GNUNET_MESSAGE_TYPE_CMDS_HELPER_ALL_LOCAL_TESTS_PREPARED);
+  reply->header.size = htons ((uint16_t) msg_length);
+
+  send_message_to_locals (i, j, ns, &reply->header);
+}
+
+
+static void
+send_all_peers_started (unsigned int i, unsigned int j, struct NetJailState 
*ns)
+{
+
+  struct GNUNET_CMDS_ALL_PEERS_STARTED *reply;
+  size_t msg_length;
+
+
+  msg_length = sizeof(struct GNUNET_CMDS_ALL_PEERS_STARTED);
+  reply = GNUNET_new (struct GNUNET_CMDS_ALL_PEERS_STARTED);
+  reply->header.type = htons (
+    GNUNET_MESSAGE_TYPE_CMDS_HELPER_ALL_PEERS_STARTED);
+  reply->header.size = htons ((uint16_t) msg_length);
+
+  send_message_to_locals (i, j, ns, &reply->header);
 }
 
 
@@ -365,12 +368,64 @@ send_all_peers_started (unsigned int i, unsigned int j, 
struct NetJailState *ns)
 static int
 helper_mst (void *cls, const struct GNUNET_MessageHeader *message)
 {
-  struct TestingSystemCount *tbc = cls;
-  struct NetJailState *ns = tbc->ns;
-  struct HelperMessage *hp_msg;
+  // struct TestingSystemCount *tbc = cls;
+  struct NetJailState *ns = cls;
   unsigned int total_number = ns->local_m * ns->global_n + ns->known;
+  uint16_t message_type = ntohs (message->type);
 
-  if (GNUNET_MESSAGE_TYPE_CMDS_HELPER_REPLY == ntohs (message->type))
+  switch (message_type)
+  {
+  case GNUNET_MESSAGE_TYPE_CMDS_HELPER_REPLY:
+    ns->number_of_testsystems_started++;
+    break;
+  case GNUNET_MESSAGE_TYPE_CMDS_HELPER_PEER_STARTED:
+    ns->number_of_peers_started++;
+    if (ns->number_of_peers_started == total_number)
+    {
+      for (int i = 1; i <= ns->known; i++)
+      {
+        send_all_peers_started (0,i, ns);
+      }
+      for (int i = 1; i <= ns->global_n; i++)
+      {
+        for (int j = 1; j <= ns->local_m; j++)
+        {
+          send_all_peers_started (i,j, ns);
+        }
+      }
+      ns->number_of_peers_started = 0;
+    }
+    break;
+  case GNUNET_MESSAGE_TYPE_CMDS_HELPER_LOCAL_TEST_PREPARED:
+    ns->number_of_local_tests_prepared++;
+    if (ns->number_of_local_tests_prepared == total_number)
+    {
+      for (int i = 1; i <= ns->known; i++)
+      {
+        send_all_local_tests_prepared (0,i, ns);
+      }
+
+      for (int i = 1; i <= ns->global_n; i++)
+      {
+        for (int j = 1; j <= ns->local_m; j++)
+        {
+          send_all_local_tests_prepared (i,j, ns);
+        }
+      }
+    }
+    break;
+  case GNUNET_MESSAGE_TYPE_CMDS_HELPER_LOCAL_FINISHED:
+    ns->number_of_local_tests_finished++;
+    if (ns->number_of_local_tests_finished == total_number)
+    {
+      GNUNET_TESTING_async_finish (&ns->ac);
+    }
+    break;
+  default:
+    // We received a message we can not handle.
+    GNUNET_assert (0);
+  }
+  /*if (GNUNET_MESSAGE_TYPE_CMDS_HELPER_REPLY == ntohs (message->type))
   {
     ns->number_of_testsystems_started++;
   }
@@ -395,26 +450,52 @@ helper_mst (void *cls, const struct GNUNET_MessageHeader 
*message)
       ns->number_of_peers_started = 0;
     }
   }
+  else if (GNUNET_MESSAGE_TYPE_CMDS_HELPER_LOCAL_TEST_PREPARED == ntohs (
+             message->type))
+  {
+    ns->number_of_local_tests_prepared++;
+    if (ns->number_of_local_tests_prepared == total_number)
+    {
+      for (int i = 1; i <= ns->known; i++)
+      {
+        send_all_local_tests_prepared (0,i, ns);
+      }
+
+      for (int i = 1; i <= ns->global_n; i++)
+      {
+        for (int j = 1; j <= ns->local_m; j++)
+        {
+          send_all_local_tests_prepared (i,j, ns);
+        }
+      }
+    }
+  }
   else if (GNUNET_MESSAGE_TYPE_CMDS_HELPER_LOCAL_FINISHED == ntohs (
              message->type))
   {
-    ns->number_of_local_test_finished++;
-    if (ns->number_of_local_test_finished == total_number)
+    ns->number_of_local_tests_finished++;
+    if (ns->number_of_local_tests_finished == total_number)
     {
       GNUNET_TESTING_async_finish (&ns->ac);
     }
   }
   else
   {
-    hp_msg = GNUNET_new (struct HelperMessage);
-    hp_msg->bytes_msg = message->size;
-    memcpy (&hp_msg[1], message, message->size);
-    GNUNET_CONTAINER_DLL_insert (ns->hp_messages_head, ns->hp_messages_tail,
-                                 hp_msg);
-  }
-
+    // We received a message we can not handle.
+    GNUNET_assert (0);
+    }*/
 
 
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "total %u sysstarted %u peersstarted %u prep %u finished %u %u %u %u\n",
+       total_number,
+       ns->number_of_testsystems_started,
+       ns->number_of_peers_started,
+       ns->number_of_local_tests_prepared,
+       ns->number_of_local_tests_finished,
+       ns->local_m,
+       ns->global_n,
+       ns->known);
 
 
 
@@ -433,7 +514,7 @@ exp_cb (void *cls)
   struct TestingSystemCount *tbc = cls;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Called exp_cb.\n");
-  GNUNET_TESTING_interpreter_fail (tbc->ns->ac.is);
+  GNUNET_TESTING_async_fail (&(tbc->ns->ac));
 }
 
 
@@ -469,16 +550,21 @@ create_helper_init_msg_ (const char *plugin_name)
  *
  */
 static void
-start_helper (struct NetJailState *ns, struct
-              GNUNET_CONFIGURATION_Handle *config,
+start_helper (struct NetJailState *ns,
               unsigned int m,
               unsigned int n)
 {
   struct GNUNET_HELPER_Handle *helper;
   struct GNUNET_CMDS_HelperInit *msg;
   struct TestingSystemCount *tbc;
-  char *m_char, *n_char, *global_n_char, *local_m_char, *known_char, *node_id,
-       *plugin;
+  char *m_char;
+  char *n_char;
+  char *global_n_char;
+  char *local_m_char;
+  char *known_char;
+  char *node_id;
+  char *plugin;
+  char *read_file;
   pid_t pid;
   unsigned int script_num;
   struct GNUNET_ShortHashCode *hkey;
@@ -486,6 +572,8 @@ start_helper (struct NetJailState *ns, struct
   struct GNUNET_TESTING_NetjailTopology *topology = ns->topology;
   struct GNUNET_TESTING_NetjailNode *node;
   struct GNUNET_TESTING_NetjailNamespace *namespace;
+  char *data_dir;
+  char *script_name;
 
 
   if (0 == n)
@@ -502,59 +590,66 @@ start_helper (struct NetJailState *ns, struct
   GNUNET_asprintf (&node_id, "%06x-%08x\n",
                    pid,
                    script_num);
+  // GNUNET_asprintf (&topology_data, "'%s'", ns->topology_data);
+  GNUNET_asprintf (&read_file, "%u", *(ns->read_file));
 
-
-  char *const script_argv[] = {NETJAIL_EXEC_SCRIPT,
-                               m_char,
-                               n_char,
-                               GNUNET_OS_get_libexec_binary_path (
-                                 HELPER_CMDS_BINARY),
-                               global_n_char,
-                               local_m_char,
-                               node_id,
-                               NULL};
-
+  data_dir = GNUNET_OS_installation_get_path (GNUNET_OS_IPK_DATADIR);
+  GNUNET_asprintf (&script_name, "%s%s", data_dir, NETJAIL_EXEC_SCRIPT);
   unsigned int helper_check = GNUNET_OS_check_helper_binary (
-    NETJAIL_EXEC_SCRIPT,
+    script_name,
     GNUNET_YES,
     NULL);
 
   tbc = GNUNET_new (struct TestingSystemCount);
   tbc->ns = ns;
-  if (0 == n)
-    tbc->count = m;
-  else
-    tbc->count = (n - 1) * ns->local_m + m + ns->known;
-
-  GNUNET_CONTAINER_DLL_insert (ns->tbcs_head, ns->tbcs_tail,
-                               tbc);
-
 
   if (GNUNET_NO == helper_check)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "No SUID for %s!\n",
-                NETJAIL_EXEC_SCRIPT);
-    GNUNET_TESTING_interpreter_fail (ns->ac.is);
+                script_name);
+    GNUNET_TESTING_interpreter_fail (ns->is);
   }
   else if (GNUNET_NO == helper_check)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "%s not found!\n",
-                NETJAIL_EXEC_SCRIPT);
-    GNUNET_TESTING_interpreter_fail (ns->ac.is);
+                script_name);
+    GNUNET_TESTING_interpreter_fail (ns->is);
   }
 
-  GNUNET_array_append (ns->helper, ns->n_helper, GNUNET_HELPER_start (
-                         GNUNET_YES,
-                         NETJAIL_EXEC_SCRIPT,
-                         script_argv,
-                         &helper_mst,
-                         &exp_cb,
-                         tbc));
-
-  helper = ns->helper[tbc->count - 1];
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "sysstarted %u peersstarted %u prep %u finished %u %u %u %u\n",
+       ns->number_of_testsystems_started,
+       ns->number_of_peers_started,
+       ns->number_of_local_tests_prepared,
+       ns->number_of_local_tests_finished,
+       ns->local_m,
+       ns->global_n,
+       ns->known);
+  {
+    char *const script_argv[] = {script_name,
+                                 m_char,
+                                 n_char,
+                                 GNUNET_OS_get_libexec_binary_path (
+                                   HELPER_CMDS_BINARY),
+                                 global_n_char,
+                                 local_m_char,
+                                 node_id,
+                                 read_file,
+                                 ns->topology_data,
+                                 NULL};
+    helper = GNUNET_HELPER_start (
+      GNUNET_YES,
+      script_name,
+      script_argv,
+      &helper_mst,
+      &exp_cb,
+      ns);
+    GNUNET_array_append (ns->helper, ns->n_helper, helper);
+  }
 
+  tbc->count = ns->n_helper;
   hkey = GNUNET_new (struct GNUNET_ShortHashCode);
 
   plugin = topology->plugin;
@@ -606,22 +701,22 @@ start_helper (struct NetJailState *ns, struct
 
   msg = create_helper_init_msg_ (plugin);
 
-  GNUNET_array_append (ns->msg, ns->n_msg, &msg->header);
-
-  GNUNET_array_append (ns->shandle, ns->n_shandle, GNUNET_HELPER_send (
-                         helper,
-                         &msg->header,
-                         GNUNET_NO,
-                         &clear_msg,
-                         tbc));
+  // GNUNET_array_append (tbc->shandle, tbc->n_shandle,
+  tbc->shandle = GNUNET_HELPER_send (
+    helper,
+    &msg->header,
+    GNUNET_NO,
+    &clear_msg,
+    tbc);                     // );
 
-  if (NULL == ns->shandle[tbc->count - 1])
+  if (NULL == tbc->shandle)// [tbc->count - 1])
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "Send handle is NULL!\n");
     GNUNET_free (msg);
-    GNUNET_TESTING_interpreter_fail (ns->ac.is);
+    GNUNET_TESTING_interpreter_fail (ns->is);
   }
+  GNUNET_free (hkey);
 }
 
 
@@ -637,12 +732,11 @@ netjail_exec_run (void *cls,
                   struct GNUNET_TESTING_Interpreter *is)
 {
   struct NetJailState *ns = cls;
-  struct GNUNET_CONFIGURATION_Handle *config =
-    GNUNET_CONFIGURATION_create ();
 
+  ns->is = is;
   for (int i = 1; i <= ns->known; i++)
   {
-    start_helper (ns, config,
+    start_helper (ns,
                   i,
                   0);
   }
@@ -651,7 +745,7 @@ netjail_exec_run (void *cls,
   {
     for (int j = 1; j <= ns->local_m; j++)
     {
-      start_helper (ns, config,
+      start_helper (ns,
                     j,
                     i);
     }
@@ -663,24 +757,28 @@ netjail_exec_run (void *cls,
  * Create command.
  *
  * @param label Name for the command.
- * @param topology_config Configuration file for the test topology.
+ * @param topology The complete topology information.
+ * @param read_file Flag indicating if the the name of the topology file is 
send to the helper, or a string with the topology data.
+ * @param topology_data If read_file is GNUNET_NO, topology_data holds the 
string with the topology.
  * @return command.
  */
 struct GNUNET_TESTING_Command
-GNUNET_TESTING_cmd_netjail_start_testing_system (const char *label,
-                                                 const char *topology_config)
+GNUNET_TESTING_cmd_netjail_start_testing_system (
+  const char *label,
+  struct GNUNET_TESTING_NetjailTopology *topology,
+  unsigned int *read_file,
+  char *topology_data)
 {
   struct NetJailState *ns;
 
-  struct GNUNET_TESTING_NetjailTopology *topology =
-    GNUNET_TESTING_get_topo_from_file (topology_config);
-
   ns = GNUNET_new (struct NetJailState);
   ns->local_m = topology->nodes_m;
   ns->global_n = topology->namespaces_n;
   ns->known = topology->nodes_x;
   ns->plugin_name = topology->plugin;
   ns->topology = topology;
+  ns->read_file = read_file;
+  ns->topology_data = topology_data;
 
   struct GNUNET_TESTING_Command cmd = {
     .cls = ns,
diff --git a/src/testing/testing_api_cmd_netjail_stop.c 
b/src/testing/testing_api_cmd_netjail_stop.c
index 5033272a3..e3bf7da62 100644
--- a/src/testing/testing_api_cmd_netjail_stop.c
+++ b/src/testing/testing_api_cmd_netjail_stop.c
@@ -26,12 +26,10 @@
 #include "platform.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 
 
-#define NETJAIL_STOP_SCRIPT "./../testing/netjail_stop.sh"
-
-// Child Wait handle
-static struct GNUNET_ChildWaitHandle *cwh;
+#define NETJAIL_STOP_SCRIPT "netjail_stop.sh"
 
 /**
  * Struct to hold information for callbacks.
@@ -44,6 +42,9 @@ struct NetJailState
    */
   struct GNUNET_TESTING_AsyncContext ac;
 
+  // Child Wait handle
+  struct GNUNET_ChildWaitHandle *cwh;
+
   /**
    * Configuration file for the test topology.
    */
@@ -54,6 +55,11 @@ struct NetJailState
    */
   struct GNUNET_OS_Process *stop_proc;
 
+  /**
+   * Shall we read the topology from file, or from a string.
+   */
+  unsigned int *read_file;
+
 };
 
 
@@ -66,10 +72,10 @@ netjail_stop_cleanup (void *cls)
 {
   struct NetJailState *ns = cls;
 
-  if (NULL != cwh)
+  if (NULL != ns->cwh)
   {
-    GNUNET_wait_child_cancel (cwh);
-    cwh = NULL;
+    GNUNET_wait_child_cancel (ns->cwh);
+    ns->cwh = NULL;
   }
   if (NULL != ns->stop_proc)
   {
@@ -95,7 +101,7 @@ child_completed_callback (void *cls,
 {
   struct NetJailState *ns = cls;
 
-  cwh = NULL; // WTF? globals!?!?!
+  ns->cwh = NULL;
   GNUNET_OS_process_destroy (ns->stop_proc);
   ns->stop_proc = NULL;
   if (0 == exit_code)
@@ -121,16 +127,16 @@ netjail_stop_run (void *cls,
 {
   struct NetJailState *ns = cls;
   char *pid;
+  char *data_dir;
+  char *script_name;
+  char *read_file;
 
-  GNUNET_asprintf (&pid,
-                   "%u",
-                   getpid ());
-  char *const script_argv[] = {NETJAIL_STOP_SCRIPT,
-                               ns->topology_config,
-                               pid,
-                               NULL};
+
+  data_dir = GNUNET_OS_installation_get_path (GNUNET_OS_IPK_DATADIR);
+  GNUNET_asprintf (&script_name, "%s%s", data_dir, NETJAIL_STOP_SCRIPT);
+  GNUNET_asprintf (&read_file, "%u", *(ns->read_file));
   unsigned int helper_check = GNUNET_OS_check_helper_binary (
-    NETJAIL_STOP_SCRIPT,
+    script_name,
     GNUNET_YES,
     NULL);
 
@@ -138,39 +144,50 @@ netjail_stop_run (void *cls,
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "No SUID for %s!\n",
-                NETJAIL_STOP_SCRIPT);
+                script_name);
     GNUNET_TESTING_interpreter_fail (is);
   }
   else if (GNUNET_NO == helper_check)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "%s not found!\n",
-                NETJAIL_STOP_SCRIPT);
+                script_name);
     GNUNET_TESTING_interpreter_fail (is);
   }
 
-  ns->stop_proc = GNUNET_OS_start_process_vap (GNUNET_OS_INHERIT_STD_ERR,
-                                               NULL,
-                                               NULL,
-                                               NULL,
-                                               NETJAIL_STOP_SCRIPT,
-                                               script_argv);
-
-  cwh = GNUNET_wait_child (ns->stop_proc,
-                           &child_completed_callback,
-                           ns);
-  GNUNET_break (NULL != cwh);
+  GNUNET_asprintf (&pid,
+                   "%u",
+                   getpid ());
+  {
+    char *const script_argv[] = {script_name,
+                                 ns->topology_config,
+                                 pid,
+                                 read_file,
+                                 NULL};
+    ns->stop_proc = GNUNET_OS_start_process_vap (GNUNET_OS_INHERIT_STD_ERR,
+                                                 NULL,
+                                                 NULL,
+                                                 NULL,
+                                                 script_name,
+                                                 script_argv);
+  }
+  ns->cwh = GNUNET_wait_child (ns->stop_proc,
+                               &child_completed_callback,
+                               ns);
+  GNUNET_break (NULL != ns->cwh);
 }
 
 
 struct GNUNET_TESTING_Command
 GNUNET_TESTING_cmd_netjail_stop (const char *label,
-                                 char *topology_config)
+                                 char *topology_config,
+                                 unsigned int *read_file)
 {
   struct NetJailState *ns;
 
   ns = GNUNET_new (struct NetJailState);
   ns->topology_config = topology_config;
+  ns->read_file = read_file;
   {
     struct GNUNET_TESTING_Command cmd = {
       .cls = ns,
diff --git a/src/testing/testing_api_cmd_netjail_stop_testsystem.c 
b/src/testing/testing_api_cmd_netjail_stop_testsystem.c
index d3754153d..4b52878c4 100644
--- a/src/testing/testing_api_cmd_netjail_stop_testsystem.c
+++ b/src/testing/testing_api_cmd_netjail_stop_testsystem.c
@@ -25,6 +25,7 @@
  */
 #include "platform.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "testing_cmds.h"
 
 
@@ -35,6 +36,11 @@
 struct StopHelperState
 {
 
+  /**
+   * The complete topology information.
+   */
+  struct GNUNET_TESTING_NetjailTopology *topology;
+
   const char *helper_start_label;
 
   /**
@@ -63,21 +69,9 @@ struct StopHelperState
 static void
 stop_testing_system_cleanup (void *cls)
 {
+  struct StopHelperState *shs = cls;
 
-}
-
-
-/**
- * Trait function of this cmd does nothing.
- *
- */
-static int
-stop_testing_system_traits (void *cls,
-                            const void **ret,
-                            const char *trait,
-                            unsigned int index)
-{
-  return GNUNET_OK;
+  GNUNET_free (shs);
 }
 
 
@@ -95,7 +89,7 @@ stop_testing_system_run (void *cls,
   struct GNUNET_HELPER_Handle **helper;
   const struct GNUNET_TESTING_Command *start_helper_cmd;
 
-  start_helper_cmd = GNUNET_TESTING_interpreter_lookup_command (NULL,
+  start_helper_cmd = GNUNET_TESTING_interpreter_lookup_command (is,
                                                                 shs->
                                                                 
helper_start_label);
   GNUNET_TESTING_get_trait_helper_handles (start_helper_cmd,
@@ -130,31 +124,29 @@ stop_testing_system_run (void *cls,
  *
  * @param label name for command.
  * @param helper_start_label label of the cmd to start the test system.
- * @param topology_config Configuration file for the test topology.
+ * @param topology The complete topology information.
  * @return command.
  */
 struct GNUNET_TESTING_Command
-GNUNET_TESTING_cmd_stop_testing_system (const char *label,
-                                        const char *helper_start_label,
-                                        const char *topology_config)
+GNUNET_TESTING_cmd_stop_testing_system (
+  const char *label,
+  const char *helper_start_label,
+  struct GNUNET_TESTING_NetjailTopology *topology)
 {
   struct StopHelperState *shs;
 
-  struct GNUNET_TESTING_NetjailTopology *topology =
-    GNUNET_TESTING_get_topo_from_file (topology_config);
-
   shs = GNUNET_new (struct StopHelperState);
   shs->helper_start_label = helper_start_label;
   shs->local_m = topology->nodes_m;
   shs->global_n = topology->namespaces_n;
   shs->known = topology->nodes_x;
+  shs->topology = topology;
 
   struct GNUNET_TESTING_Command cmd = {
     .cls = shs,
     .label = label,
     .run = &stop_testing_system_run,
     .cleanup = &stop_testing_system_cleanup,
-    .traits = &stop_testing_system_traits
   };
 
   return cmd;
diff --git a/src/testing/testing_api_cmd_send_peer_ready.c 
b/src/testing/testing_api_cmd_send_peer_ready.c
index 8b4c11deb..5bbabce51 100644
--- a/src/testing/testing_api_cmd_send_peer_ready.c
+++ b/src/testing/testing_api_cmd_send_peer_ready.c
@@ -26,6 +26,7 @@
 #include "platform.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "testing_cmds.h"
 
 
@@ -72,7 +73,6 @@ send_peer_ready_cleanup (void *cls)
 {
   struct SendPeerReadyState *sprs = cls;
 
-  GNUNET_free (sprs->reply);
   GNUNET_free (sprs);
 }
 
diff --git a/src/testing/testing_api_cmd_system_create.c 
b/src/testing/testing_api_cmd_system_create.c
index 820adf1bd..275132684 100644
--- a/src/testing/testing_api_cmd_system_create.c
+++ b/src/testing/testing_api_cmd_system_create.c
@@ -26,6 +26,7 @@
 #include "platform.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "gnunet_testing_lib.h"
 
 /**
diff --git a/src/testing/testing_api_cmd_system_destroy.c 
b/src/testing/testing_api_cmd_system_destroy.c
index 338123d91..cdfc65d53 100644
--- a/src/testing/testing_api_cmd_system_destroy.c
+++ b/src/testing/testing_api_cmd_system_destroy.c
@@ -26,6 +26,7 @@
 #include "platform.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "gnunet_testing_lib.h"
 
 
diff --git a/src/testing/testing_cmds.h b/src/testing/testing_cmds.h
index 09e4f2dcb..12db87d19 100644
--- a/src/testing/testing_cmds.h
+++ b/src/testing/testing_cmds.h
@@ -87,6 +87,23 @@ struct GNUNET_CMDS_LOCAL_FINISHED
   enum GNUNET_GenericReturnValue result;
 };
 
+struct GNUNET_CMDS_LOCAL_TEST_PREPARED
+{
+  /**
+   * Type is GNUNET_MESSAGE_TYPE_CMDS_HELPER_LOCAL_TEST_PREPARED
+   */
+  struct GNUNET_MessageHeader header;
+};
+
+struct GNUNET_CMDS_ALL_LOCAL_TESTS_PREPARED
+{
+  /**
+   * Type is GNUNET_MESSAGE_TYPE_CMDS_HELPER_ALL_LOCAL_TESTS_PREPARED
+   */
+  struct GNUNET_MessageHeader header;
+};
+
 GNUNET_NETWORK_STRUCT_END
+
 #endif
 /* end of testing_cmds.h */
diff --git a/src/testing/topo.sh b/src/testing/topo.sh
index 090c3053f..0046622b6 100755
--- a/src/testing/topo.sh
+++ b/src/testing/topo.sh
@@ -20,8 +20,7 @@ extract_attributes()
        number=$(echo $line|cut -d \| -f 1| cut -c 2-|cut -d : -f 2 )
        echo $number
     fi
-       
-    
+
     nf=$(echo $line|awk -F: '{print NF}')
     for ((i=2;i<=$nf;i++))
     do
@@ -67,6 +66,11 @@ while read line; do
     then
        GLOBAL_N=$(cut -d : -f 2 <<< $line)
        echo $GLOBAL_N
+    for ((i=1;i<=$GLOBAL_N;i++))
+    do
+        R_TCP[$i]=0
+        R_UDP[$i]=0
+    done    
     elif [ "$key" = "X" ]
     then
        KNOWN=$(cut -d : -f 2 <<< $line)
diff --git a/src/transport/Makefile.am b/src/transport/Makefile.am
index 0df422976..5fe8229e7 100644
--- a/src/transport/Makefile.am
+++ b/src/transport/Makefile.am
@@ -159,6 +159,7 @@ libgnunettransporttesting_la_LDFLAGS = \
 
 libgnunettransporttesting2_la_SOURCES = \
   transport_api_cmd_connecting_peers.c \
+  transport_api_cmd_backchannel_check.c \
   transport_api_cmd_start_peer.c \
   transport_api_cmd_stop_peer.c \
   transport_api_cmd_send_simple.c \
@@ -737,7 +738,9 @@ endif
 endif
 
 check_SCRIPTS= \
+  test_transport_simple_send_string.sh \
   test_transport_simple_send.sh \
+  test_transport_simple_send_broadcast.sh \
   test_transport_udp_backchannel.sh
 
 test_transport_start_with_config_SOURCES = \
diff --git a/src/transport/gnunet-communicator-tcp.c 
b/src/transport/gnunet-communicator-tcp.c
index d8bf7c1a8..0bf919787 100644
--- a/src/transport/gnunet-communicator-tcp.c
+++ b/src/transport/gnunet-communicator-tcp.c
@@ -1119,6 +1119,10 @@ pass_plaintext_to_core (struct Queue *queue,
   const struct GNUNET_MessageHeader *hdr = plaintext;
   int ret;
 
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "pass message from %s to core\n",
+              GNUNET_i2s (&queue->target));
+
   if (ntohs (hdr->size) != plaintext_len)
   {
     /* NOTE: If we ever allow multiple CORE messages in one
@@ -1132,6 +1136,8 @@ pass_plaintext_to_core (struct Queue *queue,
                                                ADDRESS_VALIDITY_PERIOD,
                                                &core_read_finished_cb,
                                                queue);
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "passed to core\n");
   if (GNUNET_OK == ret)
     queue->backpressure++;
   GNUNET_break (GNUNET_NO != ret);  /* backpressure not working!? */
@@ -1795,7 +1801,7 @@ try_handle_plaintext (struct Queue *queue)
     queue->qh = GNUNET_TRANSPORT_communicator_mq_add (ch,
                                                       &queue->target,
                                                       foreign_addr,
-                                                      UINT32_MAX, /* no MTU */
+                                                      UINT16_MAX, /* no MTU */
                                                       
GNUNET_TRANSPORT_QUEUE_LENGTH_UNLIMITED,
                                                       0, /* Priority */
                                                       queue->nt,
@@ -2113,10 +2119,9 @@ tcp_address_to_sockaddr_port_only (const char *bindto, 
unsigned int *port)
  * @param bindto String we extract the address part from.
  * @return The extracted address string.
  */
-static char *
-extract_address (const char *bindto)
+static void
+extract_address (const char *bindto, char **addr)
 {
-
   char *start;
   char *token;
   char *cp;
@@ -2141,6 +2146,7 @@ extract_address (const char *bindto)
   {
     start++;   /* skip over '['*/
     cp[strlen (cp) - 1] = '\0';  /* eat ']'*/
+    *addr = GNUNET_strdup (start);
   }
   else
   {
@@ -2148,23 +2154,20 @@ extract_address (const char *bindto)
     if (strlen (bindto) == strlen (token))
     {
       token = strtok_r (cp, ":", &rest);
+      *addr = strdup (token);
     }
     else
     {
       token++;
       res = GNUNET_strdup (token);
-      GNUNET_free (cp);
-      return res;
+      *addr = GNUNET_strdup (res);
     }
   }
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "extract address 3\n");
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "extract address with start %s\n",
-              start);
-
-  return GNUNET_strdup (start);
+              "tcp address: %s\n",
+              *addr);
+  GNUNET_free (cp);
 }
 
 
@@ -2235,6 +2238,7 @@ extract_port (const char *addr_and_port)
       GNUNET_free (cp);
       return 0;
     }
+    GNUNET_free (cp);
   }
   else
   {
@@ -2244,7 +2248,6 @@ extract_port (const char *addr_and_port)
     port = 0;
   }
 
-
   return port;
 }
 
@@ -2263,10 +2266,11 @@ tcp_address_to_sockaddr (const char *bindto, socklen_t 
*sock_len)
   unsigned int port;
   struct sockaddr_in v4;
   struct sockaddr_in6 v6;
-  char *start;
+  char *start = GNUNET_malloc (sizeof(bindto));
 
   // cp = GNUNET_strdup (bindto);
-  start = extract_address (bindto);
+  start = GNUNET_malloc (sizeof(bindto));
+  extract_address (bindto, &start);
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "start %s\n",
@@ -2444,7 +2448,7 @@ boot_queue (struct Queue *queue)
  * Generate and transmit our ephemeral key and the signature for
  * the initial KX with the other peer.  Must be called first, before
  * any other bytes are ever written to the output buffer.  Note that
- * our cipher must already be initialized when calling this function.
+ * our cipher must already be initialized when calling thi function.
  * Helper function for #start_initial_kx_out().
  *
  * @param queue queue to do KX for
@@ -2725,6 +2729,9 @@ proto_read_kx (void *cls)
   queue->listen_sock = pq->listen_sock;
   queue->sock = pq->sock;
 
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "created queue with target %s\n",
+              GNUNET_i2s (&queue->target));
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "start kx proto\n");
@@ -2984,6 +2991,9 @@ mq_init (void *cls, const struct GNUNET_PeerIdentity 
*peer, const char *address)
   queue->sock = sock;
   queue->cs = GNUNET_TRANSPORT_CS_OUTBOUND;
   boot_queue (queue);
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "booted queue with target %s\n",
+              GNUNET_i2s (&queue->target));
   // queue->mq_awaits_continue = GNUNET_YES;
   queue->read_task =
     GNUNET_SCHEDULER_add_read_net (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT,
@@ -3592,7 +3602,8 @@ run (void *cls,
     return;
   }
 
-  start = extract_address (bindto);
+  start = GNUNET_malloc (sizeof(bindto));
+  extract_address (bindto, &start);
 
   if (1 == inet_pton (AF_INET, start, &v4.sin_addr))
   {
@@ -3646,6 +3657,10 @@ main (int argc, char *const *argv)
   };
   int ret;
 
+  GNUNET_log_from_nocheck (GNUNET_ERROR_TYPE_DEBUG,
+                           "transport",
+                           "Starting tcp communicator\n");
+
   if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
     return 2;
 
diff --git a/src/transport/gnunet-communicator-udp.c 
b/src/transport/gnunet-communicator-udp.c
index ef7b1d6c0..b7a3b4082 100644
--- a/src/transport/gnunet-communicator-udp.c
+++ b/src/transport/gnunet-communicator-udp.c
@@ -1494,7 +1494,27 @@ add_acks (struct SharedSecret *ss, int acks_to_add)
 
   GNUNET_assert (NULL != ss);
   GNUNET_assert (NULL != receiver);
-  GNUNET_assert (NULL != receiver->d_qh);
+
+  if (NULL == receiver->d_qh)
+  {
+    receiver->d_qh =
+      GNUNET_TRANSPORT_communicator_mq_add (ch,
+                                            &receiver->target,
+                                            receiver->foreign_addr,
+                                            receiver->d_mtu,
+                                            acks_to_add,
+                                            1, /* Priority */
+                                            receiver->nt,
+                                            GNUNET_TRANSPORT_CS_OUTBOUND,
+                                            receiver->d_mq);
+  }
+  else
+  {
+    GNUNET_TRANSPORT_communicator_mq_update (ch,
+                                             receiver->d_qh,
+                                             acks_to_add,
+                                             1);
+  }
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Tell transport we have %u more acks!\n",
@@ -1502,10 +1522,7 @@ add_acks (struct SharedSecret *ss, int acks_to_add)
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "%u kce for rekeying.\n",
               receiver->number_rekeying_kce);
-  GNUNET_TRANSPORT_communicator_mq_update (ch,
-                                           receiver->d_qh,
-                                           acks_to_add,
-                                           1);
+
   // Until here for alternativ 1
 
   /* move ss to head to avoid discarding it anytime soon! */
@@ -1744,7 +1761,7 @@ kce_generate_cb (void *cls)
   if (((GNUNET_NO == ss->sender->rekeying) && (ss->sender->acks_available <
                                                KCN_TARGET) ) ||
       ((ss->sender->ss_rekey == ss) && (GNUNET_YES == ss->sender->rekeying) &&
-       (ss->sender->acks_available < 128)))
+       (ss->sender->acks_available < KCN_TARGET)))
   {
 
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -1754,20 +1771,24 @@ kce_generate_cb (void *cls)
     for (int i = 0; i < GENERATE_AT_ONCE; i++)
       kce_generate (ss, ++ss->sequence_allowed);
 
-    ss->sender->kce_task = GNUNET_SCHEDULER_add_delayed (
-      WORKING_QUEUE_INTERVALL,
-      kce_generate_cb,
-      ss);
-  }
-  else
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "We have enough keys.\n");
-    ss_finished = ss;
-    ss->sender->kce_task_finished = GNUNET_YES;
+    if (KCN_TARGET > ss->sender->acks_available)
+    {
+      ss->sender->kce_task = GNUNET_SCHEDULER_add_delayed (
+        WORKING_QUEUE_INTERVALL,
+        kce_generate_cb,
+        ss);
+    }
+    else
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "We have enough keys.\n");
+      ss_finished = ss;
+      ss->sender->kce_task_finished = GNUNET_YES;
+    }
   }
 
 
+
 }
 
 
@@ -1850,7 +1871,17 @@ consider_ss_ack (struct SharedSecret *ss, int initial)
       kce_generate (ss, ++ss->sequence_allowed);
       }*/
 
-  if (((NULL != kce_task) && kce_task_finished) || (GNUNET_NO == initial))
+  if (NULL != kce_task)
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "kce_task is not NULL\n");
+  if (kce_task_finished)
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "kce_task_finished: GNUNET_YES\n");
+  if (initial)
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "initial: GNUNET_YES\n");
+
+  if ( kce_task_finished || (GNUNET_NO == initial))
   {
     struct UDPAck ack;
     struct SharedSecret *ss_tell;
@@ -1877,8 +1908,7 @@ consider_ss_ack (struct SharedSecret *ss, int initial)
     if (GNUNET_NO != initial)
     {
       destroy_all_secrets (ss, GNUNET_YES);
-      kce_task = NULL;
-      kce_task_finished = GNUNET_NO;
+      ss->sender->kce_task_finished = GNUNET_NO;
     }
   }
   else if ((NULL == kce_task) && ((KCN_THRESHOLD >
@@ -2232,6 +2262,7 @@ static void
 sock_read (void *cls)
 {
   struct sockaddr_storage sa;
+  struct sockaddr_in *addr_verify;
   socklen_t salen = sizeof(sa);
   char buf[UINT16_MAX];
   ssize_t rcvd;
@@ -2311,12 +2342,22 @@ sock_read (void *cls)
   {
     const struct UDPBroadcast *ub;
     struct UdpBroadcastSignature uhs;
+    struct GNUNET_PeerIdentity sender;
 
+    addr_verify = GNUNET_memdup (&sa, salen);
+    addr_verify->sin_port = 0;
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "received UDPBroadcast from %s\n",
+                GNUNET_a2s ((const struct sockaddr *) addr_verify, salen));
     ub = (const struct UDPBroadcast *) buf;
     uhs.purpose.purpose = htonl (GNUNET_SIGNATURE_COMMUNICATOR_UDP_BROADCAST);
     uhs.purpose.size = htonl (sizeof(uhs));
     uhs.sender = ub->sender;
-    GNUNET_CRYPTO_hash (&sa, salen, &uhs.h_address);
+    sender = ub->sender;
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "checking UDPBroadcastSignature for %s\n",
+                GNUNET_i2s (&sender));
+    GNUNET_CRYPTO_hash ((struct sockaddr *) addr_verify, salen, 
&uhs.h_address);
     if (GNUNET_OK ==
         GNUNET_CRYPTO_eddsa_verify 
(GNUNET_SIGNATURE_COMMUNICATOR_UDP_BROADCAST,
                                     &uhs,
@@ -2332,10 +2373,23 @@ sock_read (void *cls)
       /* use our own mechanism to determine network type */
       nt =
         GNUNET_NT_scanner_get_type (is, (const struct sockaddr *) &sa, salen);
-      GNUNET_TRANSPORT_application_validate (ah, &ub->sender, nt, addr_s);
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "validating address %s received from UDPBroadcast\n",
+                  GNUNET_i2s (&sender));
+      GNUNET_TRANSPORT_application_validate (ah, &sender, nt, addr_s);
       GNUNET_free (addr_s);
       return;
     }
+    else
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                  "VerifyingPeer %s is verifying UDPBroadcast\n",
+                  GNUNET_i2s (&my_identity));
+      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                  "Verifying UDPBroadcast from %s failed\n",
+                  GNUNET_i2s (&ub->sender));
+    }
+    GNUNET_free (addr_verify);
     /* continue with KX, mostly for statistics... */
   }
 
@@ -2678,8 +2732,10 @@ mq_send_kx (struct GNUNET_MQ_Handle *mq,
                                           receiver->address_len))
     GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "send");
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Sending KX to %s\n", GNUNET_a2s (receiver->address,
-                                                receiver->address_len));
+              "Sending KX with payload size %u to %s\n",
+              msize,
+              GNUNET_a2s (receiver->address,
+                          receiver->address_len));
   GNUNET_MQ_impl_send_continue (mq);
 }
 
@@ -2940,7 +2996,8 @@ mq_send_d (struct GNUNET_MQ_Handle *mq,
                                             receiver->address_len))
       GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "send");
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "Sending UDPBox %u acks left\n",
+                "Sending UDPBox with payload size %u, %u acks left\n",
+                msize,
                 receiver->acks_available);
     GNUNET_MQ_impl_send_continue (mq);
     receiver->acks_available--;
@@ -3135,17 +3192,6 @@ setup_receiver_mq (struct ReceiverAddress *receiver)
                                           receiver->nt,
                                           GNUNET_TRANSPORT_CS_OUTBOUND,
                                           receiver->kx_mq);
-  receiver->d_qh =
-    GNUNET_TRANSPORT_communicator_mq_add (ch,
-                                          &receiver->target,
-                                          receiver->foreign_addr,
-                                          receiver->d_mtu,
-                                          0, /* Initialize with 0 acks */
-                                          1, /* Priority */
-                                          receiver->nt,
-                                          GNUNET_TRANSPORT_CS_OUTBOUND,
-                                          receiver->d_mq);
-
 }
 
 
@@ -3455,7 +3501,7 @@ ifc_broadcast (void *cls)
   delay.rel_value_us =
     GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK, delay.rel_value_us);
   bi->broadcast_task =
-    GNUNET_SCHEDULER_add_delayed (INTERFACE_SCAN_FREQUENCY, &ifc_broadcast, 
bi);
+    GNUNET_SCHEDULER_add_delayed (delay, &ifc_broadcast, bi);
 
   switch (bi->sa->sa_family)
   {
@@ -3472,6 +3518,12 @@ ifc_broadcast (void *cls)
                                             sizeof(int)))
         GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING,
                              "setsockopt");
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "creating UDPBroadcast from %s\n",
+                  GNUNET_i2s (&(bi->bcm.sender)));
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "sending UDPBroadcast to add %s\n",
+                  GNUNET_a2s (bi->ba, bi->salen));
       sent = GNUNET_NETWORK_socket_sendto (udp_sock,
                                            &bi->bcm,
                                            sizeof(bi->bcm),
@@ -3499,6 +3551,8 @@ ifc_broadcast (void *cls)
       dst.sin6_addr = bi->mcreq.ipv6mr_multiaddr;
       dst.sin6_scope_id = ((struct sockaddr_in6 *) bi->ba)->sin6_scope_id;
 
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "sending UDPBroadcast\n");
       sent = GNUNET_NETWORK_socket_sendto (udp_sock,
                                            &bi->bcm,
                                            sizeof(bi->bcm),
@@ -3586,6 +3640,9 @@ iface_proc (void *cls,
   ubs.purpose.purpose = htonl (GNUNET_SIGNATURE_COMMUNICATOR_UDP_BROADCAST);
   ubs.purpose.size = htonl (sizeof(ubs));
   ubs.sender = my_identity;
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "creating UDPBroadcastSignature for %s\n",
+              GNUNET_a2s (addr, addrlen));
   GNUNET_CRYPTO_hash (addr, addrlen, &ubs.h_address);
   GNUNET_CRYPTO_eddsa_sign (my_private_key,
                             &ubs,
@@ -3755,9 +3812,11 @@ run (void *cls,
   GNUNET_free (bindto);
   in = (struct sockaddr *) &in_sto;
   in_len = sto_len;
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Bound to `%s'\n",
-              GNUNET_a2s ((const struct sockaddr *) &in_sto, sto_len));
+  GNUNET_log_from_nocheck (GNUNET_ERROR_TYPE_DEBUG,
+                           "transport",
+                           "Bound to `%s'\n",
+                           GNUNET_a2s ((const struct sockaddr *) &in_sto,
+                                       sto_len));
   switch (in->sa_family)
   {
   case AF_INET:
@@ -3853,6 +3912,9 @@ main (int argc, char *const *argv)
   };
   int ret;
 
+  GNUNET_log_from_nocheck (GNUNET_ERROR_TYPE_DEBUG,
+                           "transport",
+                           "Starting udp communicator\n");
   if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
     return 2;
 
diff --git a/src/transport/gnunet-service-tng.c 
b/src/transport/gnunet-service-tng.c
index a7e2a8c04..84199a75f 100644
--- a/src/transport/gnunet-service-tng.c
+++ b/src/transport/gnunet-service-tng.c
@@ -1735,6 +1735,11 @@ struct Queue
    */
   const char *address;
 
+  /**
+   * Is this queue of unlimited length.
+   */
+  unsigned int unlimited_length;
+
   /**
    * Task scheduled for the time when this queue can (likely) transmit the
    * next message.
@@ -1786,6 +1791,11 @@ struct Queue
    */
   unsigned int queue_length;
 
+  /**
+   * Capacity of the queue.
+   */
+  uint64_t q_capacity;
+
   /**
    * Queue priority
    */
@@ -3445,6 +3455,35 @@ static void
 transmit_on_queue (void *cls);
 
 
+/**
+ * Check if the communicator has another queue with higher prio ready for 
sending.
+ */
+static unsigned int
+check_for_queue_with_higher_prio (struct Queue *queue, struct Queue 
*queue_head)
+{
+  for (struct Queue *s = queue_head; NULL != s;
+       s = s->next_client)
+  {
+    if (s->tc->details.communicator.address_prefix !=
+        queue->tc->details.communicator.address_prefix)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "queue address %s qid %u compare with queue: address %s qid 
%u\n",
+                  queue->address,
+                  queue->qid,
+                  s->address,
+                  s->qid);
+      if ((s->priority > queue->priority) && (0 < s->q_capacity) &&
+          (QUEUE_LENGTH_LIMIT > s->queue_length) )
+        return GNUNET_YES;
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "Lower prio\n");
+    }
+  }
+  return GNUNET_NO;
+}
+
+
 /**
  * Called whenever something changed that might effect when we
  * try to do the next transmission on @a queue using #transmit_on_queue().
@@ -3456,6 +3495,11 @@ static void
 schedule_transmit_on_queue (struct Queue *queue,
                             enum GNUNET_SCHEDULER_Priority p)
 {
+  if (check_for_queue_with_higher_prio (queue,
+                                        queue->tc->details.communicator.
+                                        queue_head))
+    return;
+
   if (queue->tc->details.communicator.total_queue_length >=
       COMMUNICATOR_TOTAL_QUEUE_LIMIT)
   {
@@ -3480,6 +3524,19 @@ schedule_transmit_on_queue (struct Queue *queue,
     queue->idle = GNUNET_NO;
     return;
   }
+  if (0 == queue->q_capacity)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Transmission throttled due to communicator message queue qid 
%u has capacity %lu.\n",
+                queue->qid,
+                queue->q_capacity);
+    GNUNET_STATISTICS_update (GST_stats,
+                              "# Transmission throttled due to message queue 
capacity",
+                              1,
+                              GNUNET_NO);
+    queue->idle = GNUNET_NO;
+    return;
+  }
   /* queue might indeed be ready, schedule it */
   if (NULL != queue->transmit_task)
     GNUNET_SCHEDULER_cancel (queue->transmit_task);
@@ -3582,8 +3639,9 @@ free_queue (struct Queue *queue)
                                 tc->details.communicator.queue_head,
                                 tc->details.communicator.queue_tail,
                                 queue);
-  maxxed = (COMMUNICATOR_TOTAL_QUEUE_LIMIT >=
-            tc->details.communicator.total_queue_length);
+  maxxed = (COMMUNICATOR_TOTAL_QUEUE_LIMIT <=
+            tc->details.communicator.
+            total_queue_length);
   while (NULL != (qe = queue->queue_head))
   {
     GNUNET_CONTAINER_DLL_remove (queue->queue_head, queue->queue_tail, qe);
@@ -3597,7 +3655,7 @@ free_queue (struct Queue *queue)
     GNUNET_free (qe);
   }
   GNUNET_assert (0 == queue->queue_length);
-  if ((maxxed) && (COMMUNICATOR_TOTAL_QUEUE_LIMIT <
+  if ((maxxed) && (COMMUNICATOR_TOTAL_QUEUE_LIMIT >
                    tc->details.communicator.total_queue_length))
   {
     /* Communicator dropped below threshold, resume all _other_ queues */
@@ -4223,18 +4281,36 @@ queue_send_msg (struct Queue *queue,
     if (NULL != pm)
     {
       qe->pm = pm;
-      GNUNET_assert (NULL == pm->qe);
+      // TODO Why do we have a retransmission. When we know, make decision if 
we still want this.
+      // GNUNET_assert (NULL == pm->qe);
+      /*if (NULL != pm->qe)
+      {
+        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                    "Retransmitting message <%llu> remove pm from qe with MID: 
%llu \n",
+                    pm->logging_uuid,
+                    (unsigned long long) pm->qe->mid);
+        pm->qe->pm = NULL;
+        }*/
       pm->qe = qe;
     }
     GNUNET_CONTAINER_DLL_insert (queue->queue_head, queue->queue_tail, qe);
     GNUNET_assert (CT_COMMUNICATOR == queue->tc->type);
     queue->queue_length++;
     queue->tc->details.communicator.total_queue_length++;
+    if (GNUNET_NO == queue->unlimited_length)
+      queue->q_capacity--;
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Queue %s with qid %u has capacity %lu\n",
+                queue->address,
+                queue->qid,
+                queue->q_capacity);
     if (COMMUNICATOR_TOTAL_QUEUE_LIMIT ==
         queue->tc->details.communicator.total_queue_length)
       queue->idle = GNUNET_NO;
     if (QUEUE_LENGTH_LIMIT == queue->queue_length)
       queue->idle = GNUNET_NO;
+    if (0 == queue->q_capacity)
+      queue->idle = GNUNET_NO;
     GNUNET_MQ_send (queue->tc->mq, env);
   }
 }
@@ -4662,18 +4738,28 @@ send_dv_to_neighbour (void *cls,
  * @return expected RTT for transmission, #GNUNET_TIME_UNIT_FOREVER_REL if 
sending failed
  */
 static struct GNUNET_TIME_Relative
-route_control_message_without_fc (const struct GNUNET_PeerIdentity *target,
+route_control_message_without_fc (struct VirtualLink *vl,
+// route_control_message_without_fc (const struct GNUNET_PeerIdentity *target,
                                   const struct GNUNET_MessageHeader *hdr,
                                   enum RouteMessageOptions options)
 {
-  struct VirtualLink *vl;
+  // struct VirtualLink *vl;
   struct Neighbour *n;
   struct DistanceVector *dv;
   struct GNUNET_TIME_Relative rtt1;
   struct GNUNET_TIME_Relative rtt2;
+  const struct GNUNET_PeerIdentity *target = &vl->target;
+
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Trying to route message of type %u to %s without fc\n",
+              ntohs (hdr->type),
+              GNUNET_i2s (target));
 
-  vl = lookup_virtual_link (target);
+  // TODO Do this elsewhere. vl should be given as parameter to method.
+  // vl = lookup_virtual_link (target);
   GNUNET_assert (NULL != vl);
+  if (NULL == vl)
+    return GNUNET_TIME_UNIT_FOREVER_REL;
   n = vl->n;
   dv = (0 != (options & RMO_DV_ALLOWED)) ? vl->dv : NULL;
   if (0 == (options & RMO_UNCONFIRMED_ALLOWED))
@@ -4718,6 +4804,10 @@ route_control_message_without_fc (const struct 
GNUNET_PeerIdentity *target,
   rtt2 = GNUNET_TIME_UNIT_FOREVER_REL;
   if (NULL != n)
   {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Try to route message of type %u to %s without fc via 
neighbour\n",
+                ntohs (hdr->type),
+                GNUNET_i2s (target));
     rtt1 = route_via_neighbour (n, hdr, options);
   }
   if (NULL != dv)
@@ -4804,7 +4894,7 @@ consider_sending_fc (void *cls)
   fc.outbound_sent = GNUNET_htonll (vl->outbound_fc_window_size_used);
   fc.outbound_window_size = GNUNET_htonll (vl->outbound_fc_window_size);
   fc.sender_time = GNUNET_TIME_absolute_hton (monotime);
-  rtt = route_control_message_without_fc (&vl->target, &fc.header, RMO_NONE);
+  rtt = route_control_message_without_fc (vl, &fc.header, RMO_NONE);
   if (GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us == rtt.rel_value_us)
   {
     rtt = GNUNET_TIME_UNIT_SECONDS;
@@ -4889,7 +4979,9 @@ check_vl_transmission (struct VirtualLink *vl)
         schedule_transmit_on_queue (queue, GNUNET_SCHEDULER_PRIORITY_DEFAULT);
       else
         GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                    "Queue busy or invalid\n");
+                    "Neighbour Queue QID: %u (%u) busy or invalid\n",
+                    queue->qid,
+                    queue->idle);
     }
   }
   /* Notify queues via DV that we are interested */
@@ -4910,6 +5002,11 @@ check_vl_transmission (struct VirtualLink *vl)
             (queue->validated_until.abs_value_us > now.abs_value_us))
           schedule_transmit_on_queue (queue,
                                       GNUNET_SCHEDULER_PRIORITY_BACKGROUND);
+        else
+          GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                      "DV Queue QID: %u (%u) busy or invalid\n",
+                      queue->qid,
+                      queue->idle);
     }
   }
 }
@@ -4991,13 +5088,16 @@ handle_communicator_backchannel (
   void *cls,
   const struct GNUNET_TRANSPORT_CommunicatorBackchannel *cb)
 {
+  struct Neighbour *n;
+  struct VirtualLink *vl;
   struct TransportClient *tc = cls;
   const struct GNUNET_MessageHeader *inbox =
     (const struct GNUNET_MessageHeader *) &cb[1];
   uint16_t isize = ntohs (inbox->size);
   const char *is = ((const char *) &cb[1]) + isize;
+  size_t slen = strlen (is) + 1;
   char
-    mbuf[isize
+    mbuf[slen + isize
          + sizeof(struct
                   TransportBackchannelEncapsulationMessage)] GNUNET_ALIGN;
   struct TransportBackchannelEncapsulationMessage *be =
@@ -5006,9 +5106,10 @@ handle_communicator_backchannel (
   /* 0-termination of 'is' was checked already in
    #check_communicator_backchannel() */
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Preparing backchannel transmission to %s:%s of type %u\n",
+              "Preparing backchannel transmission to %s:%s of type %u and size 
%u\n",
               GNUNET_i2s (&cb->pid),
               is,
+              ntohs (inbox->type),
               ntohs (inbox->size));
   /* encapsulate and encrypt message */
   be->header.type =
@@ -5019,7 +5120,22 @@ handle_communicator_backchannel (
                 + isize],
           is,
           strlen (is) + 1);
-  route_control_message_without_fc (&cb->pid, &be->header, RMO_DV_ALLOWED);
+  // route_control_message_without_fc (&cb->pid, &be->header, RMO_DV_ALLOWED);
+  vl = lookup_virtual_link (&cb->pid);
+  if (NULL != vl)
+  {
+    route_control_message_without_fc (vl, &be->header, RMO_DV_ALLOWED);
+  }
+  else
+  {
+    /* Use route via neighbour */
+    n = lookup_neighbour (&cb->pid);
+    if (NULL != n)
+      route_via_neighbour (
+        n,
+        &be->header,
+        RMO_NONE);
+  }
   GNUNET_SERVICE_client_continue (tc->client);
 }
 
@@ -5264,6 +5380,11 @@ handle_raw_message (void *cls, const struct 
GNUNET_MessageHeader *mh)
   uint16_t size = ntohs (mh->size);
   int have_core;
 
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Handling message of type %u with %u bytes\n",
+              (unsigned int) ntohs (mh->type),
+              (unsigned int) ntohs (mh->size));
+
   if ((size > UINT16_MAX - sizeof(struct InboundMessage)) ||
       (size < sizeof(struct GNUNET_MessageHeader)))
   {
@@ -5290,6 +5411,10 @@ handle_raw_message (void *cls, const struct 
GNUNET_MessageHeader *mh)
                               1,
                               GNUNET_NO);
 
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "CORE messages of type %u with %u bytes dropped (virtual link 
still down)\n",
+                (unsigned int) ntohs (mh->type),
+                (unsigned int) ntohs (mh->size));
     finish_cmc_handling (cmc);
     return;
   }
@@ -5299,7 +5424,10 @@ handle_raw_message (void *cls, const struct 
GNUNET_MessageHeader *mh)
                               "# CORE messages dropped (FC arithmetic 
overflow)",
                               1,
                               GNUNET_NO);
-
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "CORE messages of type %u with %u bytes dropped (FC arithmetic 
overflow)\n",
+                (unsigned int) ntohs (mh->type),
+                (unsigned int) ntohs (mh->size));
     finish_cmc_handling (cmc);
     return;
   }
@@ -5309,6 +5437,10 @@ handle_raw_message (void *cls, const struct 
GNUNET_MessageHeader *mh)
                               "# CORE messages dropped (FC window overflow)",
                               1,
                               GNUNET_NO);
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "CORE messages of type %u with %u bytes dropped (FC window 
overflow)\n",
+                (unsigned int) ntohs (mh->type),
+                (unsigned int) ntohs (mh->size));
     finish_cmc_handling (cmc);
     return;
   }
@@ -5345,6 +5477,10 @@ handle_raw_message (void *cls, const struct 
GNUNET_MessageHeader *mh)
        perspective of the other peer! */
     vl->incoming_fc_window_size_used += size;
     /* TODO-M1 */
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Dropped message of type %u with %u bytes to CORE: no CORE 
client connected!",
+                (unsigned int) ntohs (mh->type),
+                (unsigned int) ntohs (mh->size));
     finish_cmc_handling (cmc);
     return;
   }
@@ -5423,6 +5559,8 @@ destroy_ack_cummulator (void *cls)
 static void
 transmit_cummulative_ack_cb (void *cls)
 {
+  struct Neighbour *n;
+  struct VirtualLink *vl;
   struct AcknowledgementCummulator *ac = cls;
   char buf[sizeof(struct TransportReliabilityAckMessage)
            + ac->ack_counter
@@ -5449,7 +5587,28 @@ transmit_cummulative_ack_cb (void *cls)
     ap[i].ack_delay = GNUNET_TIME_relative_hton (
       GNUNET_TIME_absolute_get_duration (ac->ack_uuids[i].receive_time));
   }
-  route_control_message_without_fc (&ac->target, &ack->header, RMO_DV_ALLOWED);
+  /*route_control_message_without_fc (
+    &ac->target,
+    &ack->header,
+    RMO_DV_ALLOWED);*/
+  vl = lookup_virtual_link (&ac->target);
+  if (NULL != vl)
+  {
+    route_control_message_without_fc (
+      vl,
+      &ack->header,
+      RMO_DV_ALLOWED);
+  }
+  else
+  {
+    /* Use route via neighbour */
+    n = lookup_neighbour (&ac->target);
+    if (NULL != n)
+      route_via_neighbour (
+        n,
+        &ack->header,
+        RMO_NONE);
+  }
   ac->num_acks = 0;
   ac->task = GNUNET_SCHEDULER_add_delayed (ACK_CUMMULATOR_TIMEOUT,
                                            &destroy_ack_cummulator,
@@ -6074,6 +6233,15 @@ handle_backchannel_encapsulation (
     (const struct GNUNET_MessageHeader *) &be[1];
   uint16_t isize = ntohs (inbox->size);
   const char *target_communicator = ((const char *) inbox) + isize;
+  char *sender;
+  char *self;
+
+  GNUNET_asprintf (&sender,
+                   "%s",
+                   GNUNET_i2s (&cmc->im.sender));
+  GNUNET_asprintf (&self,
+                   "%s",
+                   GNUNET_i2s (&GST_my_identity));
 
   /* Find client providing this communicator */
   for (tc = clients_head; NULL != tc; tc = tc->next)
@@ -6095,8 +6263,9 @@ handle_backchannel_encapsulation (
   }
   /* Finally, deliver backchannel message to communicator */
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Delivering backchannel message from %s of type %u to %s\n",
-              GNUNET_i2s (&cmc->im.sender),
+              "Delivering backchannel message from %s to %s of type %u to 
%s\n",
+              sender,
+              self,
               ntohs (inbox->type),
               target_communicator);
   env = GNUNET_MQ_msg_extra (
@@ -6431,6 +6600,8 @@ forward_dv_learn (const struct GNUNET_PeerIdentity 
*next_hop,
                   const struct DVPathEntryP *hops,
                   struct GNUNET_TIME_Absolute in_time)
 {
+  struct Neighbour *n;
+  struct VirtualLink *vl;
   struct DVPathEntryP *dhops;
   char buf[sizeof(struct TransportDVLearnMessage)
            + (nhops + 1) * sizeof(struct DVPathEntryP)] GNUNET_ALIGN;
@@ -6471,9 +6642,26 @@ forward_dv_learn (const struct GNUNET_PeerIdentity 
*next_hop,
                               &dhp,
                               &dhops[nhops].hop_sig);
   }
-  route_control_message_without_fc (next_hop,
+  /*route_control_message_without_fc (next_hop,
                                     &fwd->header,
-                                    RMO_UNCONFIRMED_ALLOWED);
+                                    RMO_UNCONFIRMED_ALLOWED);*/
+  vl = lookup_virtual_link (next_hop);
+  if (NULL != vl)
+  {
+    route_control_message_without_fc (vl,
+                                      &fwd->header,
+                                      RMO_UNCONFIRMED_ALLOWED);
+  }
+  else
+  {
+    /* Use route via neighbour */
+    n = lookup_neighbour (next_hop);
+    if (NULL != n)
+      route_via_neighbour (
+        n,
+        &fwd->header,
+        RMO_UNCONFIRMED_ALLOWED);
+  }
 }
 
 
@@ -7810,7 +7998,8 @@ handle_validation_challenge (
   vl = lookup_virtual_link (&sender);
   if (NULL != vl)
   {
-    route_control_message_without_fc (&cmc->im.sender,
+    // route_control_message_without_fc (&cmc->im.sender,
+    route_control_message_without_fc (vl,
                                       &tvr.header,
                                       RMO_ANYTHING_GOES | RMO_REDUNDANT);
   }
@@ -8407,14 +8596,15 @@ fragment_message (struct Queue *queue,
   struct PendingMessage *ff;
   uint16_t mtu;
 
-  mtu = (0 == queue->mtu)
+  mtu = (UINT16_MAX == queue->mtu)
         ? UINT16_MAX - sizeof(struct GNUNET_TRANSPORT_SendMessageTo)
         : queue->mtu;
   set_pending_message_uuid (pm);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Fragmenting message %llu <%llu> to %s for MTU %u\n",
+              "Fragmenting message %llu <%llu> with size %u to %s for MTU 
%u\n",
               (unsigned long long) pm->msg_uuid.uuid,
               pm->logging_uuid,
+              pm->bytes_msg,
               GNUNET_i2s (&pm->vl->target),
               (unsigned int) mtu);
   pa = prepare_pending_acknowledgement (queue, dvh, pm);
@@ -8700,7 +8890,7 @@ select_best_pending_from_link (struct 
PendingMessageScoreContext *sc,
                                               GNUNET_TRANSPORT_SendMessageTo))
         ||
         (NULL != pos->head_frag /* fragments already exist, should
-                                     respect that even if MTU is 0 for
+                                     respect that even if MTU is UINT16_MAX for
                                      this queue */))
     {
       frag = GNUNET_YES;
@@ -9069,12 +9259,17 @@ handle_send_message_ack (void *cls,
          qep = qep->next)
     {
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                  "QueueEntry MID: %llu, Ack MID: %llu\n",
+                  "QueueEntry MID: %llu on queue QID: %llu, Ack MID: %llu\n",
                   (unsigned long long) qep->mid,
+                  (unsigned long long) queue->qid,
                   (unsigned long long) sma->mid);
       if (qep->mid != sma->mid)
         continue;
       qe = qep;
+      if ((NULL != qe->pm)&&(qe->pm->qe != qe))
+        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                    "For pending message %llu we had retransmissions.\n",
+                    qe->pm->logging_uuid);
       break;
     }
   }
@@ -9125,12 +9320,26 @@ handle_send_message_ack (void *cls,
                               GNUNET_NO);
     schedule_transmit_on_queue (qe->queue, GNUNET_SCHEDULER_PRIORITY_DEFAULT);
   }
+  else if (1 == qe->queue->q_capacity)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Transmission rescheduled due to communicator message queue 
with qid %u has capacity %lu.\n",
+                qe->queue->qid,
+                qe->queue->q_capacity);
+    /* message queue has capacity; only resume this one queue */
+    /* queue dropped below threshold; only resume this one queue */
+    GNUNET_STATISTICS_update (GST_stats,
+                              "# Transmission throttled due to message queue 
capacity",
+                              -1,
+                              GNUNET_NO);
+    schedule_transmit_on_queue (qe->queue, GNUNET_SCHEDULER_PRIORITY_DEFAULT);
+  }
 
   if (NULL != (pm = qe->pm))
   {
     struct VirtualLink *vl;
 
-    GNUNET_assert (qe == pm->qe);
+    // GNUNET_assert (qe == pm->qe);
     pm->qe = NULL;
     /* If waiting for this communicator may have blocked transmission
        of pm on other queues for this neighbour, force schedule
@@ -9671,16 +9880,20 @@ handle_add_queue_message (void *cls,
     addr_len = ntohs (aqm->header.size) - sizeof(*aqm);
     addr = (const char *) &aqm[1];
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "New queue %s to %s available with QID %llu\n",
+                "New queue %s to %s available with QID %llu and q_len %lu \n",
                 addr,
                 GNUNET_i2s (&aqm->receiver),
-                (unsigned long long) aqm->qid);
+                (unsigned long long) aqm->qid,
+                GNUNET_ntohll (aqm->q_len));
     queue = GNUNET_malloc (sizeof(struct Queue) + addr_len);
     queue->tc = tc;
     queue->address = (const char *) &queue[1];
     queue->pd.aged_rtt = GNUNET_TIME_UNIT_FOREVER_REL;
     queue->qid = aqm->qid;
     queue->neighbour = neighbour;
+    if (GNUNET_TRANSPORT_QUEUE_LENGTH_UNLIMITED == GNUNET_ntohll (aqm->q_len))
+      queue->unlimited_length = GNUNET_YES;
+    queue->q_capacity = GNUNET_ntohll (aqm->q_len);
     memcpy (&queue[1], addr, addr_len);
     /* notify monitors about new queue */
     {
@@ -9752,10 +9965,14 @@ handle_update_queue_message (void *cls,
   target_queue->mtu = ntohl (msg->mtu);
   target_queue->cs = msg->cs;
   target_queue->priority = ntohl (msg->priority);
-  /* The update message indicates how many _additional_
-   * messages the queue should be able to handle
+  /* The update message indicates how many messages
+   * the queue should be able to handle.
    */
-  target_queue->queue_length += GNUNET_ntohll (msg->q_len);
+  if (GNUNET_TRANSPORT_QUEUE_LENGTH_UNLIMITED == GNUNET_ntohll (msg->q_len))
+    target_queue->unlimited_length = GNUNET_YES;
+  else
+    target_queue->unlimited_length = GNUNET_NO;
+  target_queue->q_capacity = GNUNET_ntohll (msg->q_len);
   GNUNET_SERVICE_client_continue (tc->client);
 }
 
@@ -10179,8 +10396,18 @@ static void
 shutdown_task (void *cls)
 {
   in_shutdown = GNUNET_YES;
+
   if (NULL == clients_head)
-    do_shutdown (cls);
+  {
+    for (struct TransportClient *tc = clients_head; NULL != tc; tc = tc->next)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                  "client still connected: %u\n",
+                  tc->type);
+    }
+  }
+  do_shutdown (cls);
+
 }
 
 
diff --git a/src/transport/test_transport_plugin_cmd_simple_send.c 
b/src/transport/test_transport_plugin_cmd_simple_send.c
index 5384bf24d..2c987e601 100644
--- a/src/transport/test_transport_plugin_cmd_simple_send.c
+++ b/src/transport/test_transport_plugin_cmd_simple_send.c
@@ -25,6 +25,7 @@
  */
 #include "platform.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_transport_application_service.h"
 #include "transport-testing2.h"
@@ -58,6 +59,11 @@ struct TestState
    *
    */
   char *cfgname;
+
+  /**
+   * The complete topology information.
+   */
+  struct GNUNET_TESTING_NetjailTopology *topology;
 };
 
 static struct GNUNET_TESTING_Command block_send;
@@ -66,6 +72,8 @@ static struct GNUNET_TESTING_Command block_receive;
 
 static struct GNUNET_TESTING_Command connect_peers;
 
+static struct GNUNET_TESTING_Command local_prepared;
+
 
 /**
  * Function called to check a message of type 
GNUNET_TRANSPORT_TESTING_SIMPLE_MTYPE being
@@ -93,7 +101,8 @@ handle_test (void *cls,
 
   GNUNET_TESTING_get_trait_async_context (&block_receive,
                                           &ac);
-  if ((NULL == ac) || (NULL == ac->cont))
+  GNUNET_assert  (NULL != ac);
+  if (NULL == ac->cont)
     GNUNET_TESTING_async_fail (ac);
   else
     GNUNET_TESTING_async_finish (ac);
@@ -111,7 +120,8 @@ all_peers_started ()
 
   GNUNET_TESTING_get_trait_async_context (&block_send,
                                           &ac);
-  if ((NULL == ac) || (NULL == ac->cont))
+  GNUNET_assert  (NULL != ac);
+  if (NULL == ac->cont)
     GNUNET_TESTING_async_fail (ac);
   else
     GNUNET_TESTING_async_finish (ac);
@@ -136,10 +146,15 @@ handle_result (void *cls,
               rv);
   reply = GNUNET_TESTING_send_local_test_finished_msg (rv);
 
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "message prepared\n");
   ts->write_message (reply,
                      ntohs (reply->size));
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "message send\n");
   GNUNET_free (ts->testdir);
   GNUNET_free (ts->cfgname);
+  GNUNET_TESTING_free_topology (ts->topology);
   GNUNET_free (ts);
 }
 
@@ -155,8 +170,8 @@ notify_connect (void *cls,
 {
   struct ConnectPeersState *cps;
 
-  GNUNET_TESTING_get_trait_connect_peer_state (&connect_peers,
-                                               &cps);
+  GNUNET_TRANSPORT_get_trait_connect_peer_state (&connect_peers,
+                                                 &cps);
   void *ret = NULL;
 
   cps->notify_connect (cps,
@@ -166,6 +181,24 @@ notify_connect (void *cls,
 }
 
 
+/**
+ * Callback to set the flag indicating all peers are prepared to finish. Will 
be called via the plugin api.
+ */
+static void
+all_local_tests_prepared ()
+{
+  struct LocalPreparedState *lfs;
+
+  GNUNET_TESTING_get_trait_local_prepared_state (&local_prepared,
+                                                 &lfs);
+  GNUNET_assert (NULL != &lfs->ac);
+  if (NULL == lfs->ac.cont)
+    GNUNET_TESTING_async_fail (&lfs->ac);
+  else
+    GNUNET_TESTING_async_finish (&lfs->ac);
+}
+
+
 /**
  * Function to start a local test case.
  *
@@ -181,7 +214,9 @@ start_testcase (TESTING_CMD_HELPER_write_cb write_message, 
char *router_ip,
                 char *node_ip,
                 char *m,
                 char *n,
-                char *local_m)
+                char *local_m,
+                char *topology_data,
+                unsigned int *read_file)
 {
 
   unsigned int n_int;
@@ -189,11 +224,25 @@ start_testcase (TESTING_CMD_HELPER_write_cb 
write_message, char *router_ip,
   unsigned int local_m_int;
   unsigned int num;
   struct TestState *ts = GNUNET_new (struct TestState);
-  struct GNUNET_TESTING_NetjailTopology *topology =
-    GNUNET_TESTING_get_topo_from_file (TOPOLOGY_CONFIG);
+  struct GNUNET_TESTING_NetjailTopology *topology;
+
+  if (GNUNET_YES == *read_file)
+  {
+    LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "read from file\n");
+    topology = GNUNET_TESTING_get_topo_from_file (topology_data);
+  }
+  else
+    topology = GNUNET_TESTING_get_topo_from_string (topology_data);
+
+  ts->topology = topology;
+
+  sscanf (m, "%u", &m_int);
+  sscanf (n, "%u", &n_int);
+  sscanf (local_m, "%u", &local_m_int);
 
-  if (0 == m_int)
-    num = n_int;
+  if (0 == n_int)
+    num = m_int;
   else
     num = (n_int - 1) * local_m_int + m_int + topology->nodes_x;
 
@@ -204,14 +253,12 @@ start_testcase (TESTING_CMD_HELPER_write_cb 
write_message, char *router_ip,
                                                       "start-peer",
                                                       "system-create",
                                                       num,
-                                                      NULL);
+                                                      topology);
+  local_prepared = GNUNET_TESTING_cmd_local_test_prepared (
+    "local-test-prepared",
+    write_message);
 
 
-
-  sscanf (m, "%u", &m_int);
-  sscanf (n, "%u", &n_int);
-  sscanf (local_m, "%u", &local_m_int);
-
   GNUNET_asprintf (&ts->cfgname,
                    "test_transport_api2_tcp_node1.conf");
 
@@ -253,14 +300,20 @@ start_testcase (TESTING_CMD_HELPER_write_cb 
write_message, char *router_ip,
     connect_peers,
     GNUNET_TRANSPORT_cmd_send_simple ("send-simple",
                                       "start-peer",
-                                      num),
+                                      "system-create",
+                                      num,
+                                      topology),
     block_receive,
+    local_prepared,
     GNUNET_TRANSPORT_cmd_stop_peer ("stop-peer",
                                     "start-peer"),
     GNUNET_TESTING_cmd_system_destroy ("system-destroy",
-                                       "system-create")
+                                       "system-create"),
+    GNUNET_TESTING_cmd_end ()
   };
 
+  ts->write_message = write_message;
+
   GNUNET_TESTING_run (commands,
                       GNUNET_TIME_UNIT_FOREVER_REL,
                       &handle_result,
@@ -280,9 +333,14 @@ libgnunet_test_transport_plugin_cmd_simple_send_init (void 
*cls)
 {
   struct GNUNET_TESTING_PluginFunctions *api;
 
+  GNUNET_log_setup ("simple-send",
+                    "DEBUG",
+                    NULL);
+
   api = GNUNET_new (struct GNUNET_TESTING_PluginFunctions);
   api->start_testcase = &start_testcase;
   api->all_peers_started = &all_peers_started;
+  api->all_local_tests_prepared = all_local_tests_prepared;
   return api;
 }
 
diff --git a/src/transport/test_transport_plugin_cmd_udp_backchannel.c 
b/src/transport/test_transport_plugin_cmd_udp_backchannel.c
index 108e1ac09..db320844f 100644
--- a/src/transport/test_transport_plugin_cmd_udp_backchannel.c
+++ b/src/transport/test_transport_plugin_cmd_udp_backchannel.c
@@ -25,6 +25,7 @@
  */
 #include "platform.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_transport_application_service.h"
 #include "transport-testing2.h"
@@ -58,14 +59,19 @@ struct TestState
    *
    */
   char *cfgname;
+
+  /**
+   * The complete topology information.
+   */
+  struct GNUNET_TESTING_NetjailTopology *topology;
 };
 
 static struct GNUNET_TESTING_Command block_send;
 
-static struct GNUNET_TESTING_Command block_receive;
-
 static struct GNUNET_TESTING_Command connect_peers;
 
+static struct GNUNET_TESTING_Command local_prepared;
+
 
 /**
  * Function called to check a message of type 
GNUNET_TRANSPORT_TESTING_SIMPLE_MTYPE being
@@ -89,14 +95,14 @@ static void
 handle_test (void *cls,
              const struct GNUNET_TRANSPORT_TESTING_TestMessage *message)
 {
-  struct GNUNET_TESTING_AsyncContext *ac;
+  // struct GNUNET_TESTING_AsyncContext *ac;
 
-  GNUNET_TESTING_get_trait_async_context (&block_receive,
+  /*GNUNET_TESTING_get_trait_async_context (&block_receive,
                                           &ac);
   if ((NULL == ac) || (NULL == ac->cont))
     GNUNET_TESTING_async_fail (ac);
   else
-    GNUNET_TESTING_async_finish (ac);
+    GNUNET_TESTING_async_finish (ac);*/
 }
 
 
@@ -111,7 +117,8 @@ all_peers_started ()
 
   GNUNET_TESTING_get_trait_async_context (&block_send,
                                           &ac);
-  if ((NULL == ac) || (NULL == ac->cont))
+  GNUNET_assert  (NULL != ac);
+  if ((NULL == ac->cont))
     GNUNET_TESTING_async_fail (ac);
   else
     GNUNET_TESTING_async_finish (ac);
@@ -136,10 +143,14 @@ handle_result (void *cls,
               rv);
   reply = GNUNET_TESTING_send_local_test_finished_msg (rv);
 
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "message prepared\n");
   ts->write_message (reply,
                      ntohs (reply->size));
+
   GNUNET_free (ts->testdir);
   GNUNET_free (ts->cfgname);
+  GNUNET_TESTING_free_topology (ts->topology);
   GNUNET_free (ts);
 }
 
@@ -155,8 +166,8 @@ notify_connect (void *cls,
 {
   struct ConnectPeersState *cps;
 
-  GNUNET_TESTING_get_trait_connect_peer_state (&connect_peers,
-                                               &cps);
+  GNUNET_TRANSPORT_get_trait_connect_peer_state (&connect_peers,
+                                                 &cps);
   void *ret = NULL;
 
   cps->notify_connect (cps,
@@ -165,6 +176,22 @@ notify_connect (void *cls,
   return ret;
 }
 
+/**
+ * Callback to set the flag indicating all peers are prepared to finish. Will 
be called via the plugin api.
+ */
+static void
+all_local_tests_prepared ()
+{
+  struct LocalPreparedState *lfs;
+
+  GNUNET_TESTING_get_trait_local_prepared_state (&local_prepared,
+                                                 &lfs);
+  GNUNET_assert (NULL != &lfs->ac);
+  if (NULL == lfs->ac.cont)
+    GNUNET_TESTING_async_fail (&lfs->ac);
+  else
+    GNUNET_TESTING_async_finish (&lfs->ac);
+}
 
 /**
  * Function to start a local test case.
@@ -181,7 +208,9 @@ start_testcase (TESTING_CMD_HELPER_write_cb write_message, 
char *router_ip,
                 char *node_ip,
                 char *m,
                 char *n,
-                char *local_m)
+                char *local_m,
+                char *topology_data,
+                unsigned int *read_file)
 {
 
   unsigned int n_int;
@@ -190,8 +219,14 @@ start_testcase (TESTING_CMD_HELPER_write_cb write_message, 
char *router_ip,
   unsigned int num;
   struct TestState *ts = GNUNET_new (struct TestState);
 
-  struct GNUNET_TESTING_NetjailTopology *topology =
-    GNUNET_TESTING_get_topo_from_file (TOPOLOGY_CONFIG);
+  struct GNUNET_TESTING_NetjailTopology *topology;
+
+  if (GNUNET_YES == *read_file)
+    topology = GNUNET_TESTING_get_topo_from_file (topology_data);
+  else
+    topology = GNUNET_TESTING_get_topo_from_string (topology_data);
+
+  ts->topology = topology;
 
   sscanf (m, "%u", &m_int);
   sscanf (n, "%u", &n_int);
@@ -204,13 +239,14 @@ start_testcase (TESTING_CMD_HELPER_write_cb 
write_message, char *router_ip,
     num = (n_int - 1) * local_m_int + m_int + topology->nodes_x;
 
   block_send = GNUNET_TESTING_cmd_block_until_external_trigger ("block");
-  block_receive = GNUNET_TESTING_cmd_block_until_external_trigger (
-    "block-receive");
   connect_peers = GNUNET_TRANSPORT_cmd_connect_peers ("connect-peers",
                                                       "start-peer",
                                                       "system-create",
                                                       num,
-                                                      NULL);
+                                                      topology);
+  local_prepared = GNUNET_TESTING_cmd_local_test_prepared (
+    "local-test-prepared",
+    write_message);
 
   GNUNET_asprintf (&ts->cfgname,
                    "test_transport_api2_tcp_node1.conf");
@@ -251,16 +287,23 @@ start_testcase (TESTING_CMD_HELPER_write_cb 
write_message, char *router_ip,
                                         write_message),
     block_send,
     connect_peers,
-    GNUNET_TRANSPORT_cmd_send_simple ("send-simple",
-                                      "start-peer",
-                                      num),
-    block_receive,
+    GNUNET_TRANSPORT_cmd_backchannel_check ("backchannel-check",
+                                            "start-peer",
+                                            "system-create",
+                                            num,
+                                            m_int,
+                                            n_int,
+                                            topology),
+    local_prepared,
     GNUNET_TRANSPORT_cmd_stop_peer ("stop-peer",
                                     "start-peer"),
     GNUNET_TESTING_cmd_system_destroy ("system-destroy",
-                                       "system-create")
+                                       "system-create"),
+    GNUNET_TESTING_cmd_end ()
   };
 
+  ts->write_message = write_message;
+
   GNUNET_TESTING_run (commands,
                       GNUNET_TIME_UNIT_FOREVER_REL,
                       &handle_result,
@@ -287,6 +330,7 @@ libgnunet_test_transport_plugin_cmd_udp_backchannel_init 
(void *cls)
   api = GNUNET_new (struct GNUNET_TESTING_PluginFunctions);
   api->start_testcase = &start_testcase;
   api->all_peers_started = &all_peers_started;
+  api->all_local_tests_prepared = all_local_tests_prepared;
   return api;
 }
 
diff --git a/src/transport/test_transport_simple_send.sh 
b/src/transport/test_transport_simple_send.sh
index 2dd269fcc..7e3ee032f 100755
--- a/src/transport/test_transport_simple_send.sh
+++ b/src/transport/test_transport_simple_send.sh
@@ -1,2 +1,7 @@
 #!/bin/bash
-exec unshare -r -nmU bash -c "mount -t tmpfs --make-rshared tmpfs /run/netns; 
./test_transport_start_with_config test_transport_simple_send_topo.conf"
+if  [ "$(sysctl -n kernel.unprivileged_userns_clone)" == 1 ]; then
+    exec unshare -r -nmU bash -c "mount -t tmpfs --make-rshared tmpfs 
/run/netns; ./test_transport_start_with_config 
test_transport_simple_send_topo.conf"
+else
+    echo -e "Error during test setup: The kernel parameter 
kernel.unprivileged_userns_clone has to be set to 1! One has to execute\n\n 
sysctl kernel.unprivileged_userns_clone=1\n"
+    exit 78
+fi
diff --git a/src/transport/test_transport_simple_send_string.sh 
b/src/transport/test_transport_simple_send_string.sh
new file mode 100755
index 000000000..018ea55e8
--- /dev/null
+++ b/src/transport/test_transport_simple_send_string.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+string=$(cat << EOF
+M:2
+N:1
+X:0
+T:libgnunet_test_transport_plugin_cmd_simple_send
+P:1:1|{connect:{P:1:2:tcp}}
+P:1:2|{connect:{P:1:1:tcp}}
+EOF
+)
+if  [ "$(sysctl -n kernel.unprivileged_userns_clone)" == 1 ]; then
+    exec unshare -r -nmU bash -c "mount -t tmpfs --make-rshared tmpfs 
/run/netns; ./test_transport_start_with_config -s '$string'"
+else
+    echo -e "Error during test setup: The kernel parameter 
kernel.unprivileged_userns_clone has to be set to 1! One has to execute\n\n 
sysctl kernel.unprivileged_userns_clone=1\n"
+    exit 78
+fi
diff --git a/src/transport/test_transport_simple_send_topo.conf 
b/src/transport/test_transport_simple_send_topo.conf
new file mode 100644
index 000000000..2c16201f5
--- /dev/null
+++ b/src/transport/test_transport_simple_send_topo.conf
@@ -0,0 +1,6 @@
+M:2
+N:1
+X:0
+T:libgnunet_test_transport_plugin_cmd_simple_send
+P:1:1|{connect:{P:1:2:tcp}}
+P:1:2|{connect:{P:1:1:tcp}}
\ No newline at end of file
diff --git a/src/transport/test_transport_start_with_config.c 
b/src/transport/test_transport_start_with_config.c
index 932b0e583..7eb92d629 100644
--- a/src/transport/test_transport_start_with_config.c
+++ b/src/transport/test_transport_start_with_config.c
@@ -25,6 +25,7 @@
  */
 #include "platform.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "gnunet_util_lib.h"
 
 #define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 120)
@@ -34,27 +35,86 @@ int
 main (int argc,
       char *const *argv)
 {
-  char *topology_config;
+  char *topology_data;
+  char *topology_data_script;
+  struct GNUNET_TESTING_NetjailTopology *topology;
+  unsigned int read_file = GNUNET_YES;
+  int ret;
+  char *rest = NULL;
+  char *token;
+  size_t single_line_len;
+  size_t data_len;
 
   GNUNET_log_setup ("test-netjail",
                     "DEBUG",
                     NULL);
 
-  topology_config = argv[1];
+  if (0 == strcmp ("-s", argv[1]))
+  {
+    data_len = strlen (argv[2]);
+    topology_data = GNUNET_malloc (data_len);
+    topology_data_script = GNUNET_malloc (data_len);
+    token = strtok_r (argv[2], "\n", &rest);
+    while (NULL != token)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "token1 %s\n",
+                  token);
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "token2 %s\n",
+                  token);
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "topology_data %s\n",
+                  topology_data);
+      strcat (topology_data_script, token);
+      strcat (topology_data_script, " ");
+      strcat (topology_data, token);
+      strcat (topology_data, "\n");
+      token = strtok_r (NULL, "\n", &rest);
+    }
+    single_line_len = strlen (topology_data);
+    topology_data_script [single_line_len - 1] = '\0';
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "read from string\n");
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "topology_data %s\n",
+                topology_data);
+    read_file = GNUNET_NO;
+    topology = GNUNET_TESTING_get_topo_from_string (topology_data);
+  }
+  else
+  {
+    topology_data = argv[1];
+    topology_data_script = argv[1];
+    topology = GNUNET_TESTING_get_topo_from_file (topology_data);
+  }
 
   struct GNUNET_TESTING_Command commands[] = {
     GNUNET_TESTING_cmd_netjail_start ("netjail-start",
-                                      topology_config),
+                                      topology_data_script,
+                                      &read_file),
     GNUNET_TESTING_cmd_netjail_start_testing_system ("netjail-start-testbed",
-                                                     topology_config),
+                                                     topology,
+                                                     &read_file,
+                                                     topology_data_script),
     GNUNET_TESTING_cmd_stop_testing_system ("stop-testbed",
                                             "netjail-start-testbed",
-                                            topology_config),
+                                            topology),
     GNUNET_TESTING_cmd_netjail_stop ("netjail-stop",
-                                     topology_config),
+                                     topology_data_script,
+                                     &read_file),
     GNUNET_TESTING_cmd_end ()
   };
 
-  return GNUNET_TESTING_main (commands,
-                              TIMEOUT);
+  ret = GNUNET_TESTING_main (commands,
+                             TIMEOUT);
+
+  if (0 == strcmp ("-s", argv[1]))
+  {
+    GNUNET_free (topology_data_script);
+    GNUNET_free (topology_data);
+  }
+  GNUNET_TESTING_free_topology (topology);
+
+  return ret;
 }
diff --git a/src/transport/test_transport_udp_backchannel.sh 
b/src/transport/test_transport_udp_backchannel.sh
index 3322e5853..9c0b11fad 100755
--- a/src/transport/test_transport_udp_backchannel.sh
+++ b/src/transport/test_transport_udp_backchannel.sh
@@ -1,2 +1,9 @@
 #!/bin/bash
+if  [ "$(sysctl -n kernel.unprivileged_userns_clone)" == 1 ]; then
+#exec unshare -r -nmU bash -c "mount -t tmpfs --make-rshared tmpfs /run/netns; 
valgrind --leak-check=full --track-origins=yes --trace-children=yes 
--trace-children-skip=/usr/bin/awk,/usr/bin/cut,/usr/bin/seq,/sbin/ip 
./test_transport_start_with_config test_transport_udp_backchannel_topo.conf"
 exec unshare -r -nmU bash -c "mount -t tmpfs --make-rshared tmpfs /run/netns; 
./test_transport_start_with_config test_transport_udp_backchannel_topo.conf"
+# exec unshare -r -nmU bash -c "mount -t tmpfs --make-rshared tmpfs 
/run/netns; valgrind --leak-check=full --track-origins=yes 
./test_transport_start_with_config test_transport_udp_backchannel_topo.conf"
+else
+    echo -e "Error during test setup: The kernel parameter 
kernel.unprivileged_userns_clone has to be set to 1! One has to execute\n\n 
sysctl kernel.unprivileged_userns_clone=1\n"
+    exit 78
+fi
diff --git a/src/transport/transport-testing-cmds.h 
b/src/transport/transport-testing-cmds.h
index f6e34df62..10729990d 100644
--- a/src/transport/transport-testing-cmds.h
+++ b/src/transport/transport-testing-cmds.h
@@ -62,12 +62,6 @@ struct ConnectPeersState
    */
   const char *start_peer_label;
 
-  /**
-   * The peer identity of this peer.
-   *
-   */
-  struct GNUNET_PeerIdentity *id;
-
   /**
    * The topology of the test setup.
    */
@@ -182,7 +176,7 @@ struct StartPeerState
  *
  */
 int
-GNUNET_TESTING_get_trait_connect_peer_state (
+GNUNET_TRANSPORT_get_trait_connect_peer_state (
   const struct GNUNET_TESTING_Command *cmd,
   struct ConnectPeersState **cps);
 
@@ -222,16 +216,42 @@ GNUNET_TRANSPORT_cmd_connect_peers (const char *label,
  * Create command.
  *
  * @param label name for command.
- * @param m The number of the local node of the actual network namespace.
- * @param n The number of the actual namespace.
- * @param num Number globally identifying the node.
  * @param start_peer_label Label of the cmd to start a peer.
+ * @param start_peer_label Label of the cmd which started the test system.
+ * @param num Number globally identifying the node.
+ * @param The topology for the test setup.
  * @return command.
  */
 struct GNUNET_TESTING_Command
 GNUNET_TRANSPORT_cmd_send_simple (const char *label,
                                   const char *start_peer_label,
-                                  uint32_t num);
+                                  const char *create_label,
+                                  uint32_t num,
+                                  struct GNUNET_TESTING_NetjailTopology *
+                                  topology);
+
+
+/**
+ * Create command.
+ *
+ * @param label name for command.
+ * @param start_peer_label Label of the cmd to start a peer.
+ * @param create_label Label of the cmd to create the testing system.
+ * @param num Number globally identifying the node.
+ * @param node_n The number of the node in a network namespace.
+ * @param namespace_n The number of the network namespace.
+ * @param The topology for the test setup.
+ * @return command.
+ */
+struct GNUNET_TESTING_Command
+GNUNET_TRANSPORT_cmd_backchannel_check (const char *label,
+                                        const char *start_peer_label,
+                                        const char *create_label,
+                                        uint32_t num,
+                                        unsigned int node_n,
+                                        unsigned int namespace_n,
+                                        struct GNUNET_TESTING_NetjailTopology *
+                                        topology);
 
 
 
diff --git a/src/transport/transport_api2_communication.c 
b/src/transport/transport_api2_communication.c
index 446add6f6..2a80db87b 100644
--- a/src/transport/transport_api2_communication.c
+++ b/src/transport/transport_api2_communication.c
@@ -904,6 +904,10 @@ GNUNET_TRANSPORT_communicator_receive (
   struct GNUNET_TRANSPORT_IncomingMessage *im;
   uint16_t msize;
 
+
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "communicator receive\n");
+
   if (NULL == ch->mq)
     return GNUNET_SYSERR;
   if ((NULL == cb) && (GNUNET_MQ_get_length (ch->mq) >= ch->max_queue_length))
@@ -986,6 +990,9 @@ GNUNET_TRANSPORT_communicator_mq_add (
 {
   struct GNUNET_TRANSPORT_QueueHandle *qh;
 
+  // Do not notify the service if there is no intial capacity.
+  GNUNET_assert (0 < q_len);
+
   qh = GNUNET_new (struct GNUNET_TRANSPORT_QueueHandle);
   qh->ch = ch;
   qh->peer = *peer;
@@ -1106,7 +1113,7 @@ GNUNET_TRANSPORT_communicator_address_remove (
  */
 void
 GNUNET_TRANSPORT_communicator_address_remove_all (
-                                              struct 
GNUNET_TRANSPORT_CommunicatorHandle *ch)
+  struct GNUNET_TRANSPORT_CommunicatorHandle *ch)
 {
   for (struct GNUNET_TRANSPORT_AddressIdentifier *ai = ch->ai_head; NULL != ai;
        ai = ai->next)
diff --git a/src/transport/transport_api_cmd_backchannel_check.c 
b/src/transport/transport_api_cmd_backchannel_check.c
new file mode 100644
index 000000000..529b4690b
--- /dev/null
+++ b/src/transport/transport_api_cmd_backchannel_check.c
@@ -0,0 +1,602 @@
+/*
+      This file is part of GNUnet
+      Copyright (C) 2021 GNUnet e.V.
+
+      GNUnet is free software: you can redistribute it and/or modify it
+      under the terms of the GNU Affero General Public License as published
+      by the Free Software Foundation, either version 3 of the License,
+      or (at your option) any later version.
+
+      GNUnet 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
+      Affero General Public License for more details.
+
+      You should have received a copy of the GNU Affero General Public License
+      along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+     SPDX-License-Identifier: AGPL3.0-or-later
+ */
+
+/**
+ * @file testing_api_cmd_backchannel_check.c
+ * @brief cmd to start a peer.
+ * @author t3sserakt
+ */
+#include "platform.h"
+#include "gnunet_common.h"
+#include "gnunet_util_lib.h"
+#include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
+#include "gnunet_transport_application_service.h"
+#include "gnunet_hello_lib.h"
+#include "gnunet_transport_service.h"
+#include "transport-testing-cmds.h"
+
+/**
+ * Generic logging shortcut
+ */
+#define LOG(kind, ...) GNUNET_log (kind, __VA_ARGS__)
+
+#define UDP "udp"
+
+/**
+ * Maximum length allowed for line input.
+ */
+#define MAX_LINE_LENGTH 1024
+
+/**
+ * Struct to store information needed in callbacks.
+ *
+ */
+struct CheckState
+{
+  /**
+   * Context for our asynchronous completion.
+   */
+  struct GNUNET_TESTING_AsyncContext ac;
+
+  /**
+   * The number of the node in a network namespace.
+   */
+  unsigned int node_n;
+
+  /**
+   * The number of the network namespace.
+   */
+  unsigned int namespace_n;
+
+  /**
+   * The testing system of this node.
+   */
+  struct GNUNET_TESTING_System *tl_system;
+
+  // Label of the cmd which started the test system.
+  const char *create_label;
+
+  /**
+   * Number globally identifying the node.
+   *
+   */
+  uint32_t num;
+
+  /**
+   * Label of the cmd to start a peer.
+   *
+   */
+  const char *start_peer_label;
+
+  /**
+   * The topology of the test setup.
+   */
+  struct GNUNET_TESTING_NetjailTopology *topology;
+
+  /**
+   * Connections to other peers.
+   */
+  struct GNUNET_TESTING_NodeConnection *node_connections_head;
+
+  /**
+   * Number of connections.
+   */
+  unsigned int con_num;
+
+  /**
+   * Number of received backchannel messages.
+   */
+  unsigned int received_backchannel_msgs;
+
+  /**
+   * Array with search strings.
+   */
+  char **search_string;
+
+  /**
+   * File handle for log file.
+   */
+  struct GNUNET_DISK_FileHandle *fh;
+
+  /**
+   * Task which handles the reading
+   */
+  struct GNUNET_SCHEDULER_Task *task;
+
+  /**
+   * Stream to read log file lines.
+   */
+  FILE *stream;
+};
+
+/**
+ *
+ * @param cls The cmd state CheckState.
+ */
+static void
+read_from_log (void *cls)
+{
+  struct CheckState *cs = cls;
+  char line[MAX_LINE_LENGTH + 1];
+  char *search_string;
+
+
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "read_from_log\n");
+
+  cs->fh = GNUNET_DISK_file_open ("test.out",
+                                  GNUNET_DISK_OPEN_READ,
+                                  GNUNET_DISK_PERM_USER_READ);
+
+  cs->task = NULL;
+
+  /* read message from line and handle it */
+  cs->stream = fdopen (cs->fh->fd, "r");
+  memset (line, 0, MAX_LINE_LENGTH + 1);
+
+  // fgets (line, MAX_LINE_LENGTH, cs->stream);
+  // while (NULL != line &&  0 != strcmp (line, ""))// '\0' != line[0])
+  while  (NULL != fgets (line, MAX_LINE_LENGTH, cs->stream))
+  {
+    /*LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "cs->received_backchannel_msgs: %u\n",
+         cs->received_backchannel_msgs);*/
+    /*if (NULL == strstr (line, "line"))
+      LOG (GNUNET_ERROR_TYPE_DEBUG,
+           "line: %s",
+           line);*/
+
+
+    for (int i = 0; i < cs->con_num; i++)
+    {
+      search_string = cs->search_string[i];
+      /*LOG (GNUNET_ERROR_TYPE_DEBUG,
+           "search %u %u: %s %p\n",
+           i,
+           cs->con_num,
+           cs->search_string[i],
+           cs->search_string);
+      fprintf (stderr,
+      line);*/
+      if (NULL != strstr (line,
+                          search_string))
+      // "Delivering backchannel message from 4TTC to F7B5 of type 1460 to 
udp"))
+      // cs->search_string[i]))
+      {
+        cs->received_backchannel_msgs++;
+        LOG (GNUNET_ERROR_TYPE_DEBUG,
+             "received_backchannel_msgs %u con_num %u\n",
+             cs->received_backchannel_msgs,
+             cs->con_num);
+        if (cs->received_backchannel_msgs == cs->con_num)
+        {
+          LOG (GNUNET_ERROR_TYPE_DEBUG,
+               "search finished %lu %lu %u\n",
+               strlen (cs->search_string[i]),
+               strlen (
+                 "Delivering backchannel message from 4TTC to F7B5 of type 
1460 to udp"),
+               strcmp (
+                 "Delivering backchannel message from 4TTC to F7B5 of type 
1460 to udp",
+                 cs->search_string[i]));
+          GNUNET_TESTING_async_finish (&cs->ac);
+          fclose (cs->stream);
+          return;
+        }
+      }
+    }
+  }
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "read_from_log end\n");
+  fclose (cs->stream);
+  GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MILLISECONDS,
+                                &read_from_log,
+                                cs);
+  /*if (NULL == fgets (line, MAX_LINE_LENGTH, cs->stream))
+  {
+    LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "read null\n");
+    GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
+                                  &read_from_log,
+                                  cs);
+    return;
+    }*/
+  /*else {
+    cs->task =
+      GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL,
+                                      cs->fh,
+                                      &read_from_log,
+                                      cs);
+
+
+                                      }*/
+}
+
+
+static enum GNUNET_GenericReturnValue
+will_the_other_node_connect_via_udp (
+  struct CheckState *cs,
+  const struct GNUNET_TESTING_NetjailNode *node)
+// struct GNUNET_TESTING_NodeConnection *connection)
+{
+  // struct GNUNET_TESTING_NetjailTopology *topology = cs->topology;
+  // unsigned int node_n = connection->node_n;
+  // unsigned int namespace_n = connection->namespace_n;
+  // struct GNUNET_HashCode hc;
+  // struct GNUNET_ShortHashCode *key = GNUNET_new (struct 
GNUNET_ShortHashCode);
+  // struct GNUNET_HashCode hc_namespace;
+  /*struct GNUNET_ShortHashCode *key_namespace = GNUNET_new (struct
+    GNUNET_ShortHashCode);*/
+  // struct GNUNET_TESTING_NetjailNode *node;
+  struct GNUNET_TESTING_NodeConnection *pos_connection;
+  struct GNUNET_TESTING_AddressPrefix *pos_prefix;
+  // struct GNUNET_TESTING_NetjailNamespace *namespace;
+  // struct GNUNET_CONTAINER_MultiShortmap *map;
+
+  /* if (0 == connection->namespace_n) */
+  /* { */
+  /*   map = topology->map_globals; */
+  /* } */
+  /* else */
+  /* { */
+  /*   GNUNET_CRYPTO_hash (&namespace_n, sizeof(namespace_n), &hc_namespace); 
*/
+  /*   memcpy (key_namespace, */
+  /*           &hc_namespace, */
+  /*           sizeof (*key_namespace)); */
+  /*   if (GNUNET_YES == GNUNET_CONTAINER_multishortmap_contains ( */
+  /*         topology->map_namespaces, */
+  /*         key_namespace)) */
+  /*   { */
+  /*     namespace = GNUNET_CONTAINER_multishortmap_get 
(topology->map_namespaces, */
+  /*                                                     key_namespace); */
+  /*     map = namespace->nodes; */
+  /*   } */
+  /*   else */
+  /*     GNUNET_assert (0); */
+  /* } */
+
+  /* GNUNET_CRYPTO_hash (&node_n, sizeof(node_n), &hc); */
+  /* memcpy (key, */
+  /*         &hc, */
+  /*         sizeof (*key)); */
+  /* if (GNUNET_YES == GNUNET_CONTAINER_multishortmap_contains ( */
+  /*       map, */
+  /*       key)) */
+  /* { */
+  /*   node = GNUNET_CONTAINER_multishortmap_get (cs->topology->map_globals, */
+  /*                                              key); */
+  /*   for (pos_connection = node->node_connections_head; NULL != 
pos_connection; */
+  /*        pos_connection = pos_connection->next) */
+  /*   { */
+  /*     if ((node->namespace_n == pos_connection->namespace_n) && */
+  /*         (node->node_n == pos_connection->node_n) ) */
+  /*     { */
+  /*       for (pos_prefix = pos_connection->address_prefixes_head; NULL != */
+  /*            pos_prefix; */
+  /*            pos_prefix = */
+  /*              pos_prefix->next) */
+  /*       { */
+  /*         if (0 == strcmp (UDP, pos_prefix->address_prefix)) */
+  /*         { */
+  /*           return GNUNET_YES; */
+  /*         } */
+  /*       } */
+  /*     } */
+  /*   } */
+  /* } */
+
+  for (pos_connection = node->node_connections_head; NULL != pos_connection;
+       pos_connection = pos_connection->next)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "connect via udp %u %u %u %u\n",
+                node->namespace_n,
+                cs->namespace_n,
+                node->node_n,
+                cs->node_n);
+    if ((pos_connection->namespace_n == cs->namespace_n) &&
+        (pos_connection->node_n == cs->node_n) )
+    {
+      for (pos_prefix = pos_connection->address_prefixes_head; NULL !=
+           pos_prefix;
+           pos_prefix =
+             pos_prefix->next)
+      {
+        if (0 == strcmp (UDP, pos_prefix->address_prefix))
+        {
+          return GNUNET_YES;
+        }
+      }
+    }
+  }
+
+  return GNUNET_NO;
+}
+
+static void
+add_search_string (struct CheckState *cs, const struct
+                   GNUNET_TESTING_NetjailNode *node)
+{
+  unsigned int num;
+  struct GNUNET_PeerIdentity *peer;
+  struct GNUNET_PeerIdentity *us;
+  char *buf;
+  char *part_one = "Delivering backchannel message from ";
+  char *part_two = " to ";
+  char *part_three = " of type 1460 to udp";
+  char *peer_id;
+  char *us_id;
+
+  if (0 == node->namespace_n)
+    num = node->node_n;
+  else
+    num = (node->namespace_n - 1) * cs->topology->nodes_m + node->node_n
+          + cs->topology->nodes_x;
+
+  // num = GNUNET_TESTING_calculate_num (pos_connection, cs->topology);
+  peer = GNUNET_TESTING_get_pub_key (num, cs->tl_system);
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "peer: %s num %u\n",
+       GNUNET_i2s (peer),
+       num);
+  us = GNUNET_TESTING_get_pub_key (cs->num, cs->tl_system);
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "us: %s cs->num %d\n",
+       GNUNET_i2s (us),
+       cs->num);
+
+  GNUNET_asprintf (&peer_id,
+                   "%s",
+                   GNUNET_i2s (peer));
+  GNUNET_asprintf (&us_id,
+                   "%s",
+                   GNUNET_i2s (us));
+
+  if (0 < GNUNET_asprintf (&buf,
+                           "%s%s%s%s%s",
+                           part_one,
+                           us_id,
+                           part_two,
+                           peer_id,
+                           part_three))
+  {
+    GNUNET_array_append (cs->search_string,
+                         cs->con_num,
+                         buf);
+    /*LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "con_num: %u search: %s %p\n",
+         cs->con_num,
+         cs->search_string[cs->con_num - 1],
+         cs->search_string);*/
+  }
+  else
+    GNUNET_assert (0);
+}
+
+
+/**
+ * The run method of this cmd will connect to peers.
+ *
+ */
+static void
+backchannel_check_run (void *cls,
+                       struct GNUNET_TESTING_Interpreter *is)
+{
+  struct CheckState *cs = cls;
+  // char *buf;
+  // char *part_one = "Delivering backchannel message from ";
+  // char *part_two = " of type 1460 to udp";
+  const struct GNUNET_TESTING_Command *system_cmd;
+  struct GNUNET_TESTING_System *tl_system;
+  const struct GNUNET_TESTING_Command *peer1_cmd;
+  struct GNUNET_TRANSPORT_ApplicationHandle *ah;
+  // struct GNUNET_PeerIdentity *peer;
+  // uint32_t num;
+  // struct GNUNET_TESTING_NodeConnection *pos_connection;
+  // unsigned int con_num = 0;
+  struct GNUNET_CONTAINER_MultiShortmapIterator *node_it;
+  struct GNUNET_CONTAINER_MultiShortmapIterator *namespace_it;
+  struct GNUNET_ShortHashCode node_key;
+  struct GNUNET_ShortHashCode namespace_key;
+  const struct GNUNET_TESTING_NetjailNode *node;
+  const struct GNUNET_TESTING_NetjailNamespace *namespace;
+
+  peer1_cmd = GNUNET_TESTING_interpreter_lookup_command (is,
+                                                         cs->start_peer_label);
+  GNUNET_TRANSPORT_get_trait_application_handle (peer1_cmd,
+                                                 &ah);
+
+  system_cmd = GNUNET_TESTING_interpreter_lookup_command (is,
+                                                          cs->create_label);
+  GNUNET_TESTING_get_trait_test_system (system_cmd,
+                                        &tl_system);
+
+  cs->tl_system = tl_system;
+
+  cs->node_connections_head = GNUNET_TESTING_get_connections (cs->num,
+                                                              cs->topology);
+
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "check run\n");
+
+
+  node_it = GNUNET_CONTAINER_multishortmap_iterator_create (
+    cs->topology->map_globals);
+
+  while (GNUNET_YES == GNUNET_CONTAINER_multishortmap_iterator_next (node_it,
+                                                                     &node_key,
+                                                                     (const
+                                                                      void**) &
+                                                                     node))
+  {
+    LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "namespace_n %u node_n %u\n",
+         node->namespace_n,
+         node->node_n);
+    if (GNUNET_YES == will_the_other_node_connect_via_udp (cs, node))
+    {
+      add_search_string (cs, node);
+    }
+  }
+  namespace_it = GNUNET_CONTAINER_multishortmap_iterator_create (
+    cs->topology->map_namespaces);
+  while (GNUNET_YES == GNUNET_CONTAINER_multishortmap_iterator_next (
+           namespace_it,
+           &namespace_key,
+           (const
+            void**) &namespace))
+  {
+    LOG (GNUNET_ERROR_TYPE_DEBUG,
+         "namespace_n %u\n",
+         node->namespace_n);
+    node_it = GNUNET_CONTAINER_multishortmap_iterator_create (
+      namespace->nodes);
+    while (GNUNET_YES == GNUNET_CONTAINER_multishortmap_iterator_next (node_it,
+                                                                       
&node_key,
+                                                                       (const
+                                                                        void**)
+                                                                       &node))
+    {
+      LOG (GNUNET_ERROR_TYPE_DEBUG,
+           "namespace_n %u node_n %u\n",
+           node->namespace_n,
+           node->node_n);
+      if (GNUNET_YES == will_the_other_node_connect_via_udp (cs, node))
+      {
+        add_search_string (cs, node);
+      }
+    }
+  }
+  /* for (pos_connection = cs->node_connections_head; NULL != pos_connection; 
*/
+  /*      pos_connection = pos_connection->next) */
+  /* { */
+
+  /*   if (GNUNET_YES == will_the_other_node_connect_via_udp (cs, node)) */
+  /*   { */
+  /*     num = GNUNET_TESTING_calculate_num (pos_connection, cs->topology); */
+  /*     peer = GNUNET_TESTING_get_pub_key (num, tl_system); */
+  /*     LOG (GNUNET_ERROR_TYPE_DEBUG, */
+  /*          "peer: %s\n", */
+  /*          GNUNET_i2s (peer)); */
+
+  /*     if (0 < GNUNET_asprintf (&buf, */
+  /*                              "%s%s%s", */
+  /*                              part_one, */
+  /*                              GNUNET_i2s (peer), */
+  /*                              part_two)) */
+  /*     { */
+  /*       GNUNET_array_append (cs->search_string, */
+  /*                            con_num, */
+  /*                            buf); */
+  /*       /\*LOG (GNUNET_ERROR_TYPE_DEBUG, */
+  /*            "con_num: %u search: %s %p\n", */
+  /*            con_num, */
+  /*            cs->search_string[con_num - 1], */
+  /*            cs->search_string);*\/ */
+  /*     } */
+  /*     else */
+  /*       GNUNET_assert (0); */
+  /*   } */
+
+
+  /* } */
+  // cs->con_num = con_num;
+  if (0 != cs->con_num)
+  {
+    cs->task =
+      GNUNET_SCHEDULER_add_now (&read_from_log,
+                                cs);
+  }
+  else
+    GNUNET_TESTING_async_finish (&cs->ac);
+
+}
+
+
+/**
+ * Trait function of this cmd does nothing.
+ *
+ */
+static int
+backchannel_check_traits (void *cls,
+                          const void **ret,
+                          const char *trait,
+                          unsigned int index)
+{
+  return GNUNET_OK;
+}
+
+
+/**
+ * The cleanup function of this cmd frees resources the cmd allocated.
+ *
+ */
+static void
+backchannel_check_cleanup (void *cls)
+{
+  struct ConnectPeersState *cs = cls;
+
+  GNUNET_free (cs);
+}
+
+
+/**
+ * Create command.
+ *
+ * @param label name for command.
+ * @param start_peer_label Label of the cmd to start a peer.
+ * @param create_label Label of the cmd to create the testing system.
+ * @param num Number globally identifying the node.
+ * @param node_n The number of the node in a network namespace.
+ * @param namespace_n The number of the network namespace.
+ * @param The topology for the test setup.
+ * @return command.
+ */
+struct GNUNET_TESTING_Command
+GNUNET_TRANSPORT_cmd_backchannel_check (const char *label,
+                                        const char *start_peer_label,
+                                        const char *create_label,
+                                        uint32_t num,
+                                        unsigned int node_n,
+                                        unsigned int namespace_n,
+                                        struct GNUNET_TESTING_NetjailTopology *
+                                        topology)
+{
+  struct CheckState *cs;
+
+  cs = GNUNET_new (struct CheckState);
+  cs->start_peer_label = start_peer_label;
+  cs->num = num;
+  cs->create_label = create_label;
+  cs->topology = topology;
+  cs->node_n = node_n;
+  cs->namespace_n = namespace_n;
+
+  struct GNUNET_TESTING_Command cmd = {
+    .cls = cs,
+    .label = label,
+    .run = &backchannel_check_run,
+    .ac = &cs->ac,
+    .cleanup = &backchannel_check_cleanup,
+    .traits = &backchannel_check_traits
+  };
+
+  return cmd;
+}
diff --git a/src/transport/transport_api_cmd_connecting_peers.c 
b/src/transport/transport_api_cmd_connecting_peers.c
index 2e51363f6..b50b63c62 100644
--- a/src/transport/transport_api_cmd_connecting_peers.c
+++ b/src/transport/transport_api_cmd_connecting_peers.c
@@ -26,6 +26,7 @@
 #include "platform.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "gnunet_transport_application_service.h"
 #include "gnunet_hello_lib.h"
 #include "gnunet_transport_service.h"
@@ -36,242 +37,6 @@
  */
 #define LOG(kind, ...) GNUNET_log (kind, __VA_ARGS__)
 
-#define CONNECT_ADDRESS_TEMPLATE_TCP "tcp-192.168.15.%u:60002"
-
-#define CONNECT_ADDRESS_TEMPLATE_UDP "udp-192.168.15.%u:60002"
-
-#define ROUTER_CONNECT_ADDRESS_TEMPLATE_TCP "tcp-92.68.150.%u:60002"
-
-#define ROUTER_CONNECT_ADDRESS_TEMPLATE_UDP "udp-92.68.150.%u:60002"
-
-#define GLOBAL_CONNECT_ADDRESS_TEMPLATE_TCP "tcp-92.68.151.%u:60002"
-
-#define GLOBAL_CONNECT_ADDRESS_TEMPLATE_UDP "udp-92.68.151.%u:60002"
-
-#define PREFIX_TCP "tcp"
-
-#define PREFIX_UDP "udp"
-
-
-
-
-static struct GNUNET_PeerIdentity *
-get_pub_key (unsigned int num, struct GNUNET_TESTING_System *tl_system)
-{
-  struct GNUNET_PeerIdentity *peer = GNUNET_new (struct GNUNET_PeerIdentity);
-  struct GNUNET_CRYPTO_EddsaPublicKey *pub_key = GNUNET_new (struct
-                                                             
GNUNET_CRYPTO_EddsaPublicKey);
-  struct GNUNET_CRYPTO_EddsaPrivateKey *priv_key = GNUNET_new (struct
-                                                               
GNUNET_CRYPTO_EddsaPrivateKey);
-
-  priv_key = GNUNET_TESTING_hostkey_get (tl_system,
-                                         num,
-                                         peer);
-
-  GNUNET_CRYPTO_eddsa_key_get_public (priv_key,
-                                      pub_key);
-  peer->public_key = *pub_key;
-  return peer;
-}
-
-
-static int
-log_nodes (void *cls, const struct GNUNET_ShortHashCode *id, void *value)
-{
-  struct GNUNET_TESTING_NetjailNode *node = value;
-  struct GNUNET_TESTING_NodeConnection *pos_connection;
-  struct GNUNET_TESTING_ADDRESS_PREFIX *pos_prefix;
-
-  LOG (GNUNET_ERROR_TYPE_ERROR,
-       "plugin: %s space: %u node: %u global: %u\n",
-       node->plugin,
-       node->namespace_n,
-       node->node_n,
-       node->is_global);
-
-  for (pos_connection = node->node_connections_head; NULL != pos_connection;
-       pos_connection = pos_connection->next)
-  {
-
-    LOG (GNUNET_ERROR_TYPE_ERROR,
-         "namespace_n: %u node_n: %u node_type: %u\n",
-         pos_connection->namespace_n,
-         pos_connection->node_n,
-         pos_connection->node_type);
-
-    for (pos_prefix = pos_connection->address_prefixes_head; NULL != 
pos_prefix;
-         pos_prefix =
-           pos_prefix->next)
-    {
-      LOG (GNUNET_ERROR_TYPE_ERROR,
-           "prefix: %s\n",
-           pos_prefix->address_prefix);
-    }
-  }
-  return GNUNET_YES;
-}
-
-
-static int
-log_namespaces (void *cls, const struct GNUNET_ShortHashCode *id, void *value)
-{
-  struct GNUNET_TESTING_NetjailNamespace *namespace = value;
-  struct GNUNET_TESTING_NetjailRouter *router = namespace->router;
-
-  LOG (GNUNET_ERROR_TYPE_ERROR,
-       "router_tcp: %u router_udp: %u spaces: %u\n",
-       router->tcp_port,
-       router->udp_port,
-       namespace->namespace_n);
-  GNUNET_CONTAINER_multishortmap_iterate (namespace->nodes, &log_nodes, NULL);
-  return GNUNET_YES;
-}
-
-
-static int
-log_topo (struct GNUNET_TESTING_NetjailTopology *topology)
-{
-  LOG (GNUNET_ERROR_TYPE_ERROR,
-       "plugin: %s spaces: %u nodes: %u known: %u\n",
-       topology->plugin,
-       topology->namespaces_n,
-       topology->nodes_m,
-       topology->nodes_x);
-
-  GNUNET_CONTAINER_multishortmap_iterate (topology->map_namespaces,
-                                          log_namespaces, NULL);
-  GNUNET_CONTAINER_multishortmap_iterate (topology->map_globals, &log_nodes,
-                                          NULL);
-  return GNUNET_YES;
-}
-
-
-static struct GNUNET_TESTING_NodeConnection *
-get_connections (unsigned int num, struct
-                 GNUNET_TESTING_NetjailTopology *topology)
-{
-  struct GNUNET_TESTING_NetjailNode *node;
-  struct GNUNET_ShortHashCode *hkey;
-  struct GNUNET_HashCode hc;
-  struct GNUNET_TESTING_NetjailNamespace *namespace;
-  unsigned int namespace_n, node_m;
-
-  log_topo (topology);
-
-  hkey = GNUNET_new (struct GNUNET_ShortHashCode);
-  if (topology->nodes_x >= num)
-  {
-
-    GNUNET_CRYPTO_hash (&num, sizeof(num), &hc);
-    memcpy (hkey,
-            &hc,
-            sizeof (*hkey));
-    node = GNUNET_CONTAINER_multishortmap_get (topology->map_globals,
-                                               hkey);
-  }
-  else
-  {
-    namespace_n = (unsigned int) floor ((num - topology->nodes_x)
-                                        / topology->nodes_m);
-    LOG (GNUNET_ERROR_TYPE_ERROR,
-         "num: %u nodes_x: %u nodes_m: %u namespace_n: %u\n",
-         num,
-         topology->nodes_x,
-         topology->nodes_m,
-         namespace_n);
-    hkey = GNUNET_new (struct GNUNET_ShortHashCode);
-    GNUNET_CRYPTO_hash (&namespace_n, sizeof(namespace_n), &hc);
-    memcpy (hkey,
-            &hc,
-            sizeof (*hkey));
-    namespace = GNUNET_CONTAINER_multishortmap_get (topology->map_namespaces,
-                                                    hkey);
-    node_m = num - topology->nodes_x - topology->nodes_m * (namespace_n - 1);
-    hkey = GNUNET_new (struct GNUNET_ShortHashCode);
-    GNUNET_CRYPTO_hash (&node_m, sizeof(node_m), &hc);
-    memcpy (hkey,
-            &hc,
-            sizeof (*hkey));
-    node = GNUNET_CONTAINER_multishortmap_get (namespace->nodes,
-                                               hkey);
-  }
-
-
-  return node->node_connections_head;
-}
-
-
-static unsigned int
-calculate_num (struct GNUNET_TESTING_NodeConnection *node_connection,
-               struct GNUNET_TESTING_NetjailTopology *topology)
-{
-  unsigned int n, m, num;
-
-  n = node_connection->namespace_n;
-  m = node_connection->node_n;
-
-  if (0 == n)
-    num = m;
-  else
-    num = (n - 1) * topology->nodes_m + m + topology->nodes_x;
-
-  return num;
-}
-
-
-static char *
-get_address (struct GNUNET_TESTING_NodeConnection *connection,
-             char *prefix)
-{
-  struct GNUNET_TESTING_NetjailNode *node;
-  char *addr;
-
-  node = connection->node;
-  if (connection->namespace_n == node->namespace_n)
-  {
-    if (0 == strcmp (PREFIX_TCP, prefix))
-    {
-
-      GNUNET_asprintf (&addr,
-                       CONNECT_ADDRESS_TEMPLATE_TCP,
-                       connection->node_n);
-    }
-    else if (0 == strcmp (PREFIX_UDP, prefix))
-    {
-      GNUNET_asprintf (&addr,
-                       CONNECT_ADDRESS_TEMPLATE_UDP,
-                       connection->node_n);
-    }
-    else
-    {
-      GNUNET_break (0);
-    }
-  }
-  else
-  {
-    if (0 == strcmp (PREFIX_TCP, prefix))
-    {
-
-      GNUNET_asprintf (&addr,
-                       ROUTER_CONNECT_ADDRESS_TEMPLATE_TCP,
-                       connection->namespace_n);
-    }
-    else if (0 == strcmp (PREFIX_UDP, prefix))
-    {
-      GNUNET_asprintf (&addr,
-                       ROUTER_CONNECT_ADDRESS_TEMPLATE_UDP,
-                       connection->namespace_n);
-    }
-    else
-    {
-      GNUNET_break (0);
-    }
-  }
-
-  return addr;
-}
-
-
 /**
  * The run method of this cmd will connect to peers.
  *
@@ -292,7 +57,7 @@ connect_peers_run (void *cls,
   enum GNUNET_NetworkType nt = 0;
   uint32_t num;
   struct GNUNET_TESTING_NodeConnection *pos_connection;
-  struct GNUNET_TESTING_ADDRESS_PREFIX *pos_prefix;
+  struct GNUNET_TESTING_AddressPrefix *pos_prefix;
   unsigned int con_num = 0;
 
   cps->is = is;
@@ -308,38 +73,35 @@ connect_peers_run (void *cls,
 
   cps->tl_system = tl_system;
 
-  cps->node_connections_head = get_connections (cps->num, cps->topology);
+  LOG (GNUNET_ERROR_TYPE_DEBUG,
+       "cps->num: %u \n",
+       cps->num);
+
+  cps->node_connections_head = GNUNET_TESTING_get_connections (cps->num,
+                                                               cps->topology);
 
   for (pos_connection = cps->node_connections_head; NULL != pos_connection;
        pos_connection = pos_connection->next)
   {
     con_num++;
-    num = calculate_num (pos_connection, cps->topology);
+    num = GNUNET_TESTING_calculate_num (pos_connection, cps->topology);
     for (pos_prefix = pos_connection->address_prefixes_head; NULL != 
pos_prefix;
          pos_prefix =
            pos_prefix->next)
     {
-
-      LOG (GNUNET_ERROR_TYPE_ERROR,
-           "prefix: %s\n",
-           pos_prefix->address_prefix);
-
-      addr = get_address (pos_connection, pos_prefix->address_prefix);
-
-      peer = get_pub_key (num, tl_system);
-
-      LOG (GNUNET_ERROR_TYPE_ERROR,
-           "num: %u pub_key %s addr: %s\n",
-           num,
-           GNUNET_CRYPTO_eddsa_public_key_to_string (&(peer->public_key)),
-           addr);
-
-      cps->id = peer;
-
+      addr = GNUNET_TESTING_get_address (pos_connection,
+                                         pos_prefix->address_prefix);
+      peer = GNUNET_TESTING_get_pub_key (num, tl_system);
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "validating peer number %u with identity %s\n",
+                  num,
+                  GNUNET_i2s (peer));
       GNUNET_TRANSPORT_application_validate (ah,
                                              peer,
                                              nt,
                                              addr);
+      GNUNET_free (peer);
+      GNUNET_free (addr);
     }
   }
   cps->con_num = con_num;
@@ -365,11 +127,12 @@ notify_connect (void *cls,
   for (pos_connection = cps->node_connections_head; NULL != pos_connection;
        pos_connection = pos_connection->next)
   {
-    num = calculate_num (pos_connection, cps->topology);
-    peer_connection = get_pub_key (num, cps->tl_system);
+    num = GNUNET_TESTING_calculate_num (pos_connection, cps->topology);
+    peer_connection = GNUNET_TESTING_get_pub_key (num, cps->tl_system);
     if (0 == GNUNET_memcmp (peer,
                             peer_connection))
       con_num++;
+    GNUNET_free (peer_connection);
   }
 
 
@@ -390,7 +153,6 @@ connect_peers_cleanup (void *cls)
 {
   struct ConnectPeersState *cps = cls;
 
-  GNUNET_free (cps->id);
   GNUNET_free (cps);
 }
 
@@ -399,7 +161,7 @@ connect_peers_cleanup (void *cls)
  * This function prepares an array with traits.
  *
  */
-static int
+enum GNUNET_GenericReturnValue
 connect_peers_traits (void *cls,
                       const void **ret,
                       const char *trait,
@@ -428,8 +190,8 @@ connect_peers_traits (void *cls,
  * @return #GNUNET_OK if no error occurred, #GNUNET_SYSERR otherwise.
  *
  */
-int
-GNUNET_TESTING_get_trait_connect_peer_state (
+enum GNUNET_GenericReturnValue
+GNUNET_TRANSPORT_get_trait_connect_peer_state (
   const struct GNUNET_TESTING_Command *cmd,
   struct ConnectPeersState **cps)
 {
diff --git a/src/transport/transport_api_cmd_send_simple.c 
b/src/transport/transport_api_cmd_send_simple.c
index 0631f7051..790139cce 100644
--- a/src/transport/transport_api_cmd_send_simple.c
+++ b/src/transport/transport_api_cmd_send_simple.c
@@ -26,6 +26,7 @@
 #include "platform.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "transport-testing2.h"
 #include "transport-testing-cmds.h"
 
@@ -46,21 +47,18 @@ struct SendSimpleState
    *
    */
   const char *start_peer_label;
-};
 
+  /**
+   * Label of the cmd which started the test system.
+   *
+   */
+  const char *create_label;
 
-/**
- * Trait function of this cmd does nothing.
- *
- */
-static int
-send_simple_traits (void *cls,
-                    const void **ret,
-                    const char *trait,
-                    unsigned int index)
-{
-  return GNUNET_OK;
-}
+  /**
+   * The topology we get the connected nodes from.
+   */
+  struct GNUNET_TESTING_NetjailTopology *topology;
+};
 
 
 /**
@@ -77,7 +75,7 @@ send_simple_cleanup (void *cls)
 
 
 /**
- * The run method of this cmd will send a simple message to the connected peer.
+ * The run method of this cmd will send a simple message to the connected 
peers.
  *
  */
 static void
@@ -92,31 +90,54 @@ send_simple_run (void *cls,
   const struct GNUNET_TESTING_Command *peer1_cmd;
   struct GNUNET_ShortHashCode *key = GNUNET_new (struct GNUNET_ShortHashCode);
   struct GNUNET_HashCode hc;
-  int node_number;
+  struct GNUNET_TESTING_NodeConnection *node_connections_head;
+  struct GNUNET_PeerIdentity *peer;
+  struct GNUNET_CRYPTO_EddsaPublicKey public_key;
+  uint32_t num;
+  struct GNUNET_TESTING_NodeConnection *pos_connection;
+  const struct GNUNET_TESTING_Command *system_cmd;
+  struct GNUNET_TESTING_System *tl_system;
 
   peer1_cmd = GNUNET_TESTING_interpreter_lookup_command (is,
                                                          
sss->start_peer_label);
   GNUNET_TRANSPORT_get_trait_connected_peers_map (peer1_cmd,
                                                   &connected_peers_map);
 
-  node_number = 1;
-  GNUNET_CRYPTO_hash (&node_number, sizeof(node_number), &hc);
-  memcpy (key,
-          &hc,
-          sizeof (*key));
-
-  mq = GNUNET_CONTAINER_multishortmap_get (connected_peers_map,
-                                           key);
-
-  env = GNUNET_MQ_msg_extra (test,
-                             2600 - sizeof(*test),
-                             GNUNET_TRANSPORT_TESTING_SIMPLE_MTYPE);
-  test->num = htonl (sss->num);
-  memset (&test[1],
-          sss->num,
-          2600 - sizeof(*test));
-  GNUNET_MQ_send (mq,
-                  env);
+  system_cmd = GNUNET_TESTING_interpreter_lookup_command (is,
+                                                          sss->create_label);
+  GNUNET_TESTING_get_trait_test_system (system_cmd,
+                                        &tl_system);
+
+  node_connections_head = GNUNET_TESTING_get_connections (sss->num,
+                                                          sss->topology);
+
+  for (int i = 0; i < 1; i++)
+  {
+    for (pos_connection = node_connections_head; NULL != pos_connection;
+         pos_connection = pos_connection->next)
+    {
+      num = GNUNET_TESTING_calculate_num (pos_connection, sss->topology);
+      peer = GNUNET_TESTING_get_pub_key (num, tl_system);
+      public_key = peer->public_key;
+      GNUNET_CRYPTO_hash (&public_key, sizeof(public_key), &hc);
+
+      memcpy (key,
+              &hc,
+              sizeof (*key));
+      mq = GNUNET_CONTAINER_multishortmap_get (connected_peers_map,
+                                               key);
+      env = GNUNET_MQ_msg_extra (test,
+                                 1000 - sizeof(*test),
+                                 GNUNET_TRANSPORT_TESTING_SIMPLE_MTYPE);
+      test->num = htonl (sss->num);
+      memset (&test[1],
+              sss->num,
+              1000 - sizeof(*test));
+      GNUNET_MQ_send (mq,
+                      env);
+    }
+  }
+
   GNUNET_free (key);
 
 }
@@ -126,31 +147,34 @@ send_simple_run (void *cls,
  * Create command.
  *
  * @param label name for command.
- * @param m The number of the local node of the actual network namespace.
- * @param n The number of the actual namespace.
- * @param num Number globally identifying the node.
  * @param start_peer_label Label of the cmd to start a peer.
+ * @param start_peer_label Label of the cmd which started the test system.
+ * @param num Number globally identifying the node.
+ * @param The topology for the test setup.
  * @return command.
  */
 struct GNUNET_TESTING_Command
 GNUNET_TRANSPORT_cmd_send_simple (const char *label,
                                   const char *start_peer_label,
-                                  uint32_t num)
+                                  const char *create_label,
+                                  uint32_t num,
+                                  struct GNUNET_TESTING_NetjailTopology *
+                                  topology)
 {
   struct SendSimpleState *sss;
 
   sss = GNUNET_new (struct SendSimpleState);
   sss->num = num;
   sss->start_peer_label = start_peer_label;
-  {
-    struct GNUNET_TESTING_Command cmd = {
-      .cls = sss,
-      .label = label,
-      .run = &send_simple_run,
-      .cleanup = &send_simple_cleanup,
-      .traits = &send_simple_traits
-    };
-
-    return cmd;
-  }
+  sss->create_label = create_label;
+  sss->topology = topology;
+
+  struct GNUNET_TESTING_Command cmd = {
+    .cls = sss,
+    .label = label,
+    .run = &send_simple_run,
+    .cleanup = &send_simple_cleanup
+  };
+
+  return cmd;
 }
diff --git a/src/transport/transport_api_cmd_start_peer.c 
b/src/transport/transport_api_cmd_start_peer.c
index dc19f10eb..60f416f85 100644
--- a/src/transport/transport_api_cmd_start_peer.c
+++ b/src/transport/transport_api_cmd_start_peer.c
@@ -26,6 +26,7 @@
 #include "platform.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "gnunet_peerstore_service.h"
 #include "gnunet_transport_core_service.h"
 #include "gnunet_transport_application_service.h"
@@ -172,6 +173,7 @@ start_peer_run (void *cls,
   char *tcp_communicator_unix_path;
   char *udp_communicator_unix_path;
   char *bindto;
+  char *bindto_udp;
 
   if (GNUNET_NO == GNUNET_DISK_file_test (sps->cfgname))
   {
@@ -207,6 +209,9 @@ start_peer_run (void *cls,
                    "%s:60002",
                    sps->node_ip);
 
+  GNUNET_asprintf (&bindto_udp,
+                   "2086");
+
   LOG (GNUNET_ERROR_TYPE_ERROR,
        "node_ip %s\n",
        bindto);
@@ -235,6 +240,10 @@ start_peer_run (void *cls,
 
   sps->tl_system = tl_system;
 
+  LOG (GNUNET_ERROR_TYPE_ERROR,
+       "Creating testing library with key number %u\n",
+       sps->no);
+
   if (GNUNET_SYSERR ==
       GNUNET_TESTING_configuration_create (tl_system,
                                            sps->cfg))
@@ -255,9 +264,10 @@ start_peer_run (void *cls,
   if (NULL == sps->peer)
   {
     LOG (GNUNET_ERROR_TYPE_ERROR,
-         "Testing library failed to create unique configuration based on `%s': 
`%s'\n",
+         "Testing library failed to create unique configuration based on `%s': 
`%s' with key number %u\n",
          sps->cfgname,
-         emsg);
+         emsg,
+         sps->no);
     GNUNET_free (emsg);
     GNUNET_TESTING_interpreter_fail (is);
     return;
@@ -337,6 +347,11 @@ start_peer_run (void *cls,
     return;
   }
   sps->rh_task = GNUNET_SCHEDULER_add_now (retrieve_hello, sps);
+  GNUNET_free (home);
+  GNUNET_free (transport_unix_path);
+  GNUNET_free (tcp_communicator_unix_path);
+  GNUNET_free (udp_communicator_unix_path);
+  GNUNET_free (bindto);
 }
 
 
diff --git a/src/transport/transport_api_cmd_stop_peer.c 
b/src/transport/transport_api_cmd_stop_peer.c
index dcb982a65..97408b083 100644
--- a/src/transport/transport_api_cmd_stop_peer.c
+++ b/src/transport/transport_api_cmd_stop_peer.c
@@ -26,6 +26,7 @@
 #include "platform.h"
 #include "gnunet_util_lib.h"
 #include "gnunet_testing_ng_lib.h"
+#include "gnunet_testing_netjail_lib.h"
 #include "gnunet_peerstore_service.h"
 #include "gnunet_transport_core_service.h"
 #include "gnunet_transport_application_service.h"
diff --git a/src/util/helper.c b/src/util/helper.c
index dcb55d8c7..0809c1f17 100644
--- a/src/util/helper.c
+++ b/src/util/helper.c
@@ -407,6 +407,8 @@ start_helper (struct GNUNET_HELPER_Handle *h)
   if ((h->helper_in == NULL) || (h->helper_out == NULL))
   {
     /* out of file descriptors? try again later... */
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                "out of file descriptors? try again later\n");
     stop_helper (h, GNUNET_NO);
     h->restart_task = GNUNET_SCHEDULER_add_delayed (
       GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,
@@ -434,6 +436,8 @@ start_helper (struct GNUNET_HELPER_Handle *h)
   if (NULL == h->helper_proc)
   {
     /* failed to start process? try again later... */
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                "failed to start process? try again later\n");
     stop_helper (h, GNUNET_NO);
     h->restart_task = GNUNET_SCHEDULER_add_delayed (
       GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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