aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/testbed/gnunet-service-testbed.c225
-rw-r--r--src/testbed/test_testbed_api.conf1
-rw-r--r--src/testbed/test_testbed_api_testbed_run_topology2dtorus.conf3
-rw-r--r--src/testbed/test_testbed_api_testbed_run_topologyclique.conf3
-rw-r--r--src/testbed/test_testbed_api_testbed_run_topologyfromfile.conf1
-rw-r--r--src/testbed/test_testbed_api_testbed_run_topologyline.conf1
-rw-r--r--src/testbed/test_testbed_api_testbed_run_topologyrandom.conf3
-rw-r--r--src/testbed/test_testbed_api_testbed_run_topologyring.conf3
-rw-r--r--src/testbed/test_testbed_api_testbed_run_topologyscalefree.conf3
-rw-r--r--src/testbed/test_testbed_api_testbed_run_topologysmallworld.conf1
-rw-r--r--src/testbed/test_testbed_api_testbed_run_topologysmallworldring.conf1
-rw-r--r--src/testbed/testbed.conf.in4
12 files changed, 209 insertions, 40 deletions
diff --git a/src/testbed/gnunet-service-testbed.c b/src/testbed/gnunet-service-testbed.c
index dd7bed699..d01cb3559 100644
--- a/src/testbed/gnunet-service-testbed.c
+++ b/src/testbed/gnunet-service-testbed.c
@@ -816,6 +816,32 @@ struct ForwardedOverlayConnectContext
816}; 816};
817 817
818 818
819/**
820 * Hello cache entry
821 */
822struct HelloCacheEntry
823{
824 /**
825 * DLL next ptr for least recently used hello cache entries
826 */
827 struct HelloCacheEntry *next;
828
829 /**
830 * DLL prev ptr for least recently used hello cache entries
831 */
832 struct HelloCacheEntry *prev;
833
834 /**
835 * The key for this entry
836 */
837 struct GNUNET_HashCode key;
838
839 /**
840 * The HELLO message
841 */
842 struct GNUNET_MessageHeader *hello;
843};
844
819 845
820/** 846/**
821 * The master context; generated with the first INIT message 847 * The master context; generated with the first INIT message
@@ -898,6 +924,18 @@ static struct ForwardedOperationContext *fopcq_head;
898static struct ForwardedOperationContext *fopcq_tail; 924static struct ForwardedOperationContext *fopcq_tail;
899 925
900/** 926/**
927 * DLL head for least recently used hello cache entries; least recently used
928 * cache items are at the head
929 */
930static struct HelloCacheEntry *lru_hcache_head;
931
932/**
933 * DLL tail for least recently used hello cache entries; recently used cache
934 * items are at the tail
935 */
936static struct HelloCacheEntry *lru_hcache_tail;
937
938/**
901 * Array of hosts 939 * Array of hosts
902 */ 940 */
903static struct GNUNET_TESTBED_Host **host_list; 941static struct GNUNET_TESTBED_Host **host_list;
@@ -923,6 +961,11 @@ static struct Peer **peer_list;
923static struct GNUNET_CONTAINER_MultiHashMap *ss_map; 961static struct GNUNET_CONTAINER_MultiHashMap *ss_map;
924 962
925/** 963/**
964 * Hashmap to maintain HELLO cache
965 */
966static struct GNUNET_CONTAINER_MultiHashMap *hello_cache;
967
968/**
926 * The event mask for the events we listen from sub-controllers 969 * The event mask for the events we listen from sub-controllers
927 */ 970 */
928static uint64_t event_mask; 971static uint64_t event_mask;
@@ -947,6 +990,11 @@ static unsigned int slave_list_size;
947 */ 990 */
948static unsigned int peer_list_size; 991static unsigned int peer_list_size;
949 992
993/**
994 * The size of hello cache
995 */
996static unsigned int hello_cache_size;
997
950/*********/ 998/*********/
951/* Tasks */ 999/* Tasks */
952/*********/ 1000/*********/
@@ -963,6 +1011,87 @@ static GNUNET_SCHEDULER_TaskIdentifier shutdown_task_id;
963 1011
964 1012
965/** 1013/**
1014 * Looks up in the hello cache and returns the HELLO of the given peer
1015 *
1016 * @param id the peer identity of the peer whose HELLO has to be looked up
1017 * @return the HELLO message; NULL if not found
1018 */
1019static const struct GNUNET_MessageHeader *
1020hello_cache_lookup (const struct GNUNET_PeerIdentity *id)
1021{
1022 struct HelloCacheEntry *entry;
1023
1024 if (NULL == hello_cache)
1025 return NULL;
1026 entry = GNUNET_CONTAINER_multihashmap_get (hello_cache, &id->hashPubKey);
1027 if (NULL == entry)
1028 return NULL;
1029 GNUNET_CONTAINER_DLL_remove (lru_hcache_head, lru_hcache_tail, entry);
1030 GNUNET_CONTAINER_DLL_insert_tail (lru_hcache_head, lru_hcache_tail, entry);
1031 return entry->hello;
1032}
1033
1034
1035/**
1036 * Removes the given hello cache centry from hello cache and frees its resources
1037 *
1038 * @param entry the entry to remove
1039 */
1040static void
1041hello_cache_remove (struct HelloCacheEntry *entry)
1042{
1043 GNUNET_CONTAINER_DLL_remove (lru_hcache_head, lru_hcache_tail, entry);
1044 GNUNET_assert (GNUNET_YES ==
1045 GNUNET_CONTAINER_multihashmap_remove (hello_cache,
1046 &entry->key,
1047 entry));
1048 GNUNET_free (entry->hello);
1049 GNUNET_free (entry);
1050}
1051
1052
1053/**
1054 * Caches the HELLO of the given peer. Updates the HELLO if it was already
1055 * cached before
1056 *
1057 * @param id the peer identity of the peer whose HELLO has to be cached
1058 * @param hello the HELLO message
1059 */
1060static void
1061hello_cache_add (const struct GNUNET_PeerIdentity *id,
1062 const struct GNUNET_MessageHeader *hello)
1063{
1064 struct HelloCacheEntry *entry;
1065
1066 if (NULL == hello_cache)
1067 return;
1068 entry = GNUNET_CONTAINER_multihashmap_get (hello_cache, &id->hashPubKey);
1069 if (NULL == entry)
1070 {
1071 entry = GNUNET_malloc (sizeof (struct HelloCacheEntry));
1072 memcpy (&entry->key, &id->hashPubKey, sizeof (struct GNUNET_HashCode));
1073 if (GNUNET_CONTAINER_multihashmap_size (hello_cache) == hello_cache_size)
1074 {
1075 GNUNET_assert (NULL != lru_hcache_head);
1076 hello_cache_remove (lru_hcache_head);
1077 }
1078 GNUNET_assert (GNUNET_OK == GNUNET_CONTAINER_multihashmap_put
1079 (hello_cache,
1080 &entry->key,
1081 entry,
1082 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST));
1083 }
1084 else
1085 {
1086 GNUNET_CONTAINER_DLL_remove (lru_hcache_head, lru_hcache_tail, entry);
1087 GNUNET_free (entry->hello);
1088 }
1089 entry->hello = GNUNET_copy_message (hello);
1090 GNUNET_CONTAINER_DLL_insert_tail (lru_hcache_head, lru_hcache_tail, entry);
1091}
1092
1093
1094/**
966 * Function called to notify a client about the connection begin ready to queue 1095 * Function called to notify a client about the connection begin ready to queue
967 * more data. "buf" will be NULL and "size" zero if the connection was closed 1096 * more data. "buf" will be NULL and "size" zero if the connection was closed
968 * for writing in the meantime. 1097 * for writing in the meantime.
@@ -3069,6 +3198,42 @@ send_hello (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
3069 GNUNET_free (other_peer_str); 3198 GNUNET_free (other_peer_str);
3070} 3199}
3071 3200
3201
3202/**
3203 * Connects to the transport of the other peer if it is a local peer and
3204 * schedules the send hello task
3205 *
3206 * @param occ the overlay connect context
3207 */
3208static void
3209p2_transport_connect (struct OverlayConnectContext *occ)
3210{
3211 GNUNET_assert (NULL == occ->emsg);
3212 GNUNET_assert (NULL != occ->hello);
3213 GNUNET_assert (NULL == occ->ghh);
3214 GNUNET_assert (NULL == occ->p1th);
3215 if (NULL == occ->peer2_controller)
3216 {
3217 peer_list[occ->other_peer_id]->reference_cnt++;
3218 occ->tcc.th =
3219 GNUNET_TRANSPORT_connect (peer_list[occ->other_peer_id]->details.local.cfg,
3220 &occ->other_peer_identity, NULL, NULL, NULL,
3221 NULL);
3222 if (NULL == occ->tcc.th)
3223 {
3224 GNUNET_asprintf (&occ->emsg, "0x%llx: Cannot connect to TRANSPORT of %s",
3225 occ->op_id, GNUNET_i2s (&occ->other_peer_identity));
3226 GNUNET_SCHEDULER_cancel (occ->timeout_task);
3227 occ->timeout_task = GNUNET_SCHEDULER_add_now (&timeout_overlay_connect, occ);
3228 return;
3229 }
3230 }
3231 GNUNET_asprintf (&occ->emsg, "0x%llx: Timeout while offering HELLO to %s",
3232 occ->op_id, GNUNET_i2s (&occ->other_peer_identity));
3233 occ->send_hello_task = GNUNET_SCHEDULER_add_now (&send_hello, occ);
3234}
3235
3236
3072/** 3237/**
3073 * Test for checking whether HELLO message is empty 3238 * Test for checking whether HELLO message is empty
3074 * 3239 *
@@ -3117,6 +3282,7 @@ hello_update_cb (void *cls, const struct GNUNET_MessageHeader *hello)
3117 LOG_DEBUG ("0x%llx: Received HELLO of %s\n", 3282 LOG_DEBUG ("0x%llx: Received HELLO of %s\n",
3118 occ->op_id, GNUNET_i2s (&occ->peer_identity)); 3283 occ->op_id, GNUNET_i2s (&occ->peer_identity));
3119 occ->hello = GNUNET_malloc (msize); 3284 occ->hello = GNUNET_malloc (msize);
3285 hello_cache_add (&occ->peer_identity, hello);
3120 memcpy (occ->hello, hello, msize); 3286 memcpy (occ->hello, hello, msize);
3121 GNUNET_TRANSPORT_get_hello_cancel (occ->ghh); 3287 GNUNET_TRANSPORT_get_hello_cancel (occ->ghh);
3122 occ->ghh = NULL; 3288 occ->ghh = NULL;
@@ -3124,25 +3290,8 @@ hello_update_cb (void *cls, const struct GNUNET_MessageHeader *hello)
3124 occ->p1th = NULL; 3290 occ->p1th = NULL;
3125 occ->peer->reference_cnt--; 3291 occ->peer->reference_cnt--;
3126 GNUNET_free_non_null (occ->emsg); 3292 GNUNET_free_non_null (occ->emsg);
3127 if (NULL == occ->peer2_controller) 3293 occ->emsg = NULL;
3128 { 3294 p2_transport_connect (occ);
3129 peer_list[occ->other_peer_id]->reference_cnt++;
3130 occ->tcc.th =
3131 GNUNET_TRANSPORT_connect (peer_list[occ->other_peer_id]->details.local.cfg,
3132 &occ->other_peer_identity, NULL, NULL, NULL,
3133 NULL);
3134 if (NULL == occ->tcc.th)
3135 {
3136 GNUNET_asprintf (&occ->emsg, "0x%llx: Cannot connect to TRANSPORT of %s",
3137 occ->op_id, GNUNET_i2s (&occ->other_peer_identity));
3138 GNUNET_SCHEDULER_cancel (occ->timeout_task);
3139 occ->timeout_task = GNUNET_SCHEDULER_add_now (&timeout_overlay_connect, occ);
3140 return;
3141 }
3142 }
3143 GNUNET_asprintf (&occ->emsg, "0x%llx: Timeout while offering HELLO to %s",
3144 occ->op_id, GNUNET_i2s (&occ->other_peer_identity));
3145 occ->send_hello_task = GNUNET_SCHEDULER_add_now (&send_hello, occ);
3146} 3295}
3147 3296
3148 3297
@@ -3162,6 +3311,7 @@ core_startup_cb (void *cls, struct GNUNET_CORE_Handle *server,
3162 const struct GNUNET_PeerIdentity *my_identity) 3311 const struct GNUNET_PeerIdentity *my_identity)
3163{ 3312{
3164 struct OverlayConnectContext *occ = cls; 3313 struct OverlayConnectContext *occ = cls;
3314 const struct GNUNET_MessageHeader *hello;
3165 3315
3166 GNUNET_free_non_null (occ->emsg); 3316 GNUNET_free_non_null (occ->emsg);
3167 (void) GNUNET_asprintf (&occ->emsg, 3317 (void) GNUNET_asprintf (&occ->emsg,
@@ -3174,6 +3324,17 @@ core_startup_cb (void *cls, struct GNUNET_CORE_Handle *server,
3174 occ->emsg = NULL; 3324 occ->emsg = NULL;
3175 memcpy (&occ->peer_identity, my_identity, 3325 memcpy (&occ->peer_identity, my_identity,
3176 sizeof (struct GNUNET_PeerIdentity)); 3326 sizeof (struct GNUNET_PeerIdentity));
3327 LOG_DEBUG ("0x%llx: Acquiring HELLO of peer %s\n",
3328 occ->op_id, GNUNET_i2s (&occ->peer_identity));
3329 /* Lookup for HELLO in hello cache */
3330 if (NULL != (hello = hello_cache_lookup (&occ->peer_identity)))
3331 {
3332 LOG_DEBUG ("0x%llx: HELLO of peer %s found in cache\n",
3333 occ->op_id, GNUNET_i2s (&occ->peer_identity));
3334 occ->hello = GNUNET_copy_message (hello);
3335 p2_transport_connect (occ);
3336 return;
3337 }
3177 occ->peer->reference_cnt++; 3338 occ->peer->reference_cnt++;
3178 occ->p1th = 3339 occ->p1th =
3179 GNUNET_TRANSPORT_connect (occ->peer->details.local.cfg, 3340 GNUNET_TRANSPORT_connect (occ->peer->details.local.cfg,
@@ -3184,9 +3345,7 @@ core_startup_cb (void *cls, struct GNUNET_CORE_Handle *server,
3184 "0x%llx: Cannot connect to TRANSPORT of peer %4s", 3345 "0x%llx: Cannot connect to TRANSPORT of peer %4s",
3185 occ->op_id, GNUNET_i2s (&occ->peer_identity)); 3346 occ->op_id, GNUNET_i2s (&occ->peer_identity));
3186 goto error_return; 3347 goto error_return;
3187 } 3348 }
3188 LOG_DEBUG ("0x%llx: Acquiring HELLO of peer %s\n",
3189 occ->op_id, GNUNET_i2s (&occ->peer_identity));
3190 GNUNET_asprintf (&occ->emsg, 3349 GNUNET_asprintf (&occ->emsg,
3191 "0x%llx: Timeout while acquiring HELLO of peer %4s", 3350 "0x%llx: Timeout while acquiring HELLO of peer %4s",
3192 occ->op_id, GNUNET_i2s (&occ->peer_identity)); 3351 occ->op_id, GNUNET_i2s (&occ->peer_identity));
@@ -4052,9 +4211,20 @@ shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
4052 GNUNET_SERVER_client_drop (mq_entry->client); 4211 GNUNET_SERVER_client_drop (mq_entry->client);
4053 GNUNET_CONTAINER_DLL_remove (mq_head, mq_tail, mq_entry); 4212 GNUNET_CONTAINER_DLL_remove (mq_head, mq_tail, mq_entry);
4054 GNUNET_free (mq_entry); 4213 GNUNET_free (mq_entry);
4055 } 4214 }
4056 GNUNET_free_non_null (hostname); 4215 GNUNET_free_non_null (hostname);
4057 GNUNET_CONFIGURATION_destroy (our_config); 4216 GNUNET_CONFIGURATION_destroy (our_config);
4217 /* Free hello cache */
4218 if (NULL != hello_cache)
4219 GNUNET_assert
4220 (GNUNET_CONTAINER_multihashmap_size (hello_cache) <= hello_cache_size);
4221 while (NULL != lru_hcache_head)
4222 hello_cache_remove (lru_hcache_head);
4223 if (NULL != hello_cache)
4224 {
4225 GNUNET_assert (0 == GNUNET_CONTAINER_multihashmap_size (hello_cache));
4226 GNUNET_CONTAINER_multihashmap_destroy (hello_cache);
4227 }
4058} 4228}
4059 4229
4060 4230
@@ -4118,6 +4288,7 @@ testbed_run (void *cls, struct GNUNET_SERVER_Handle *server,
4118 {NULL} 4288 {NULL}
4119 }; 4289 };
4120 char *logfile; 4290 char *logfile;
4291 unsigned long long num;
4121 4292
4122 if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_filename (cfg, 4293 if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_filename (cfg,
4123 "TESTBED", 4294 "TESTBED",
@@ -4127,12 +4298,20 @@ testbed_run (void *cls, struct GNUNET_SERVER_Handle *server,
4127 GNUNET_break (GNUNET_OK == GNUNET_log_setup ("testbed", "DEBUG", logfile)); 4298 GNUNET_break (GNUNET_OK == GNUNET_log_setup ("testbed", "DEBUG", logfile));
4128 GNUNET_free (logfile); 4299 GNUNET_free (logfile);
4129 } 4300 }
4301 GNUNET_assert (GNUNET_OK ==
4302 GNUNET_CONFIGURATION_get_value_number (cfg, "TESTBED",
4303 "HELLO_CACHE_SIZE",
4304 &num));
4305 hello_cache_size = (unsigned int) num;
4130 GNUNET_assert (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string 4306 GNUNET_assert (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string
4131 (cfg, "testbed", "HOSTNAME", &hostname)); 4307 (cfg, "testbed", "HOSTNAME", &hostname));
4132 our_config = GNUNET_CONFIGURATION_dup (cfg); 4308 our_config = GNUNET_CONFIGURATION_dup (cfg);
4133 GNUNET_SERVER_add_handlers (server, message_handlers); 4309 GNUNET_SERVER_add_handlers (server, message_handlers);
4134 GNUNET_SERVER_disconnect_notify (server, &client_disconnect_cb, NULL); 4310 GNUNET_SERVER_disconnect_notify (server, &client_disconnect_cb, NULL);
4135 ss_map = GNUNET_CONTAINER_multihashmap_create (5, GNUNET_NO); 4311 ss_map = GNUNET_CONTAINER_multihashmap_create (5, GNUNET_NO);
4312 if (1 < hello_cache_size)
4313 hello_cache = GNUNET_CONTAINER_multihashmap_create (hello_cache_size / 2,
4314 GNUNET_YES);
4136 shutdown_task_id = 4315 shutdown_task_id =
4137 GNUNET_SCHEDULER_add_delayed_with_priority (GNUNET_TIME_UNIT_FOREVER_REL, 4316 GNUNET_SCHEDULER_add_delayed_with_priority (GNUNET_TIME_UNIT_FOREVER_REL,
4138 GNUNET_SCHEDULER_PRIORITY_IDLE, 4317 GNUNET_SCHEDULER_PRIORITY_IDLE,
diff --git a/src/testbed/test_testbed_api.conf b/src/testbed/test_testbed_api.conf
index 9da3bba6b..dc06d05b9 100644
--- a/src/testbed/test_testbed_api.conf
+++ b/src/testbed/test_testbed_api.conf
@@ -4,7 +4,6 @@ PORT = 12113
4ACCEPT_FROM = 127.0.0.1; 4ACCEPT_FROM = 127.0.0.1;
5HOSTNAME = localhost 5HOSTNAME = localhost
6NEIGHBOUR_LIMIT = 100 6NEIGHBOUR_LIMIT = 100
7PARALLEL_OVERLAY_CONNECT_THRESHOLD = 2
8TOPOLOGY = RANDOM 7TOPOLOGY = RANDOM
9#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args 8#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args
10 9
diff --git a/src/testbed/test_testbed_api_testbed_run_topology2dtorus.conf b/src/testbed/test_testbed_api_testbed_run_topology2dtorus.conf
index f3f966cfb..ee0480ed9 100644
--- a/src/testbed/test_testbed_api_testbed_run_topology2dtorus.conf
+++ b/src/testbed/test_testbed_api_testbed_run_topology2dtorus.conf
@@ -4,7 +4,6 @@ PORT = 12113
4ACCEPT_FROM = 127.0.0.1; 4ACCEPT_FROM = 127.0.0.1;
5HOSTNAME = localhost 5HOSTNAME = localhost
6NEIGHBOUR_LIMIT = 100 6NEIGHBOUR_LIMIT = 100
7PARALLEL_OVERLAY_CONNECT_THRESHOLD = 2
8OVERLAY_TOPOLOGY = 2D_TORUS 7OVERLAY_TOPOLOGY = 2D_TORUS
9#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args 8#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args
10 9
@@ -77,4 +76,4 @@ AUTOSTART = NO
77RETURN_LOCAL_ADDRESSES = YES 76RETURN_LOCAL_ADDRESSES = YES
78 77
79[gns-helper-service-w32] 78[gns-helper-service-w32]
80AUTOSTART = NO \ No newline at end of file 79AUTOSTART = NO
diff --git a/src/testbed/test_testbed_api_testbed_run_topologyclique.conf b/src/testbed/test_testbed_api_testbed_run_topologyclique.conf
index 514cd42c1..4ac926648 100644
--- a/src/testbed/test_testbed_api_testbed_run_topologyclique.conf
+++ b/src/testbed/test_testbed_api_testbed_run_topologyclique.conf
@@ -4,7 +4,6 @@ PORT = 12113
4ACCEPT_FROM = 127.0.0.1; 4ACCEPT_FROM = 127.0.0.1;
5HOSTNAME = localhost 5HOSTNAME = localhost
6NEIGHBOUR_LIMIT = 100 6NEIGHBOUR_LIMIT = 100
7PARALLEL_OVERLAY_CONNECT_THRESHOLD = 2
8OVERLAY_TOPOLOGY = CLIQUE 7OVERLAY_TOPOLOGY = CLIQUE
9#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args 8#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args
10 9
@@ -77,4 +76,4 @@ AUTOSTART = NO
77RETURN_LOCAL_ADDRESSES = YES 76RETURN_LOCAL_ADDRESSES = YES
78 77
79[gns-helper-service-w32] 78[gns-helper-service-w32]
80AUTOSTART = NO \ No newline at end of file 79AUTOSTART = NO
diff --git a/src/testbed/test_testbed_api_testbed_run_topologyfromfile.conf b/src/testbed/test_testbed_api_testbed_run_topologyfromfile.conf
index b96df09b9..b66724fb2 100644
--- a/src/testbed/test_testbed_api_testbed_run_topologyfromfile.conf
+++ b/src/testbed/test_testbed_api_testbed_run_topologyfromfile.conf
@@ -6,7 +6,6 @@ HOSTNAME = localhost
6NEIGHBOUR_LIMIT = 100 6NEIGHBOUR_LIMIT = 100
7OVERLAY_TOPOLOGY = FROM_FILE 7OVERLAY_TOPOLOGY = FROM_FILE
8OVERLAY_TOPOLOGY_FILE = overlay_topology.txt 8OVERLAY_TOPOLOGY_FILE = overlay_topology.txt
9PARALLEL_OVERLAY_CONNECT_THRESHOLD = 2
10#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args 9#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args
11 10
12[fs] 11[fs]
diff --git a/src/testbed/test_testbed_api_testbed_run_topologyline.conf b/src/testbed/test_testbed_api_testbed_run_topologyline.conf
index c07f023e0..289ccba92 100644
--- a/src/testbed/test_testbed_api_testbed_run_topologyline.conf
+++ b/src/testbed/test_testbed_api_testbed_run_topologyline.conf
@@ -5,7 +5,6 @@ ACCEPT_FROM = 127.0.0.1;
5HOSTNAME = localhost 5HOSTNAME = localhost
6NEIGHBOUR_LIMIT = 100 6NEIGHBOUR_LIMIT = 100
7OVERLAY_TOPOLOGY = LINE 7OVERLAY_TOPOLOGY = LINE
8PARALLEL_OVERLAY_CONNECT_THRESHOLD = 2
9#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args 8#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args
10 9
11[fs] 10[fs]
diff --git a/src/testbed/test_testbed_api_testbed_run_topologyrandom.conf b/src/testbed/test_testbed_api_testbed_run_topologyrandom.conf
index 7156df3b2..027602ea0 100644
--- a/src/testbed/test_testbed_api_testbed_run_topologyrandom.conf
+++ b/src/testbed/test_testbed_api_testbed_run_topologyrandom.conf
@@ -3,7 +3,6 @@ AUTOSTART = NO
3PORT = 12113 3PORT = 12113
4ACCEPT_FROM = 127.0.0.1; 4ACCEPT_FROM = 127.0.0.1;
5HOSTNAME = localhost 5HOSTNAME = localhost
6PARALLEL_OVERLAY_CONNECT_THRESHOLD = 2
7OVERLAY_TOPOLOGY = RANDOM 6OVERLAY_TOPOLOGY = RANDOM
8OVERLAY_RANDOM_LINKS = 5 7OVERLAY_RANDOM_LINKS = 5
9#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args 8#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args
@@ -77,4 +76,4 @@ AUTOSTART = NO
77RETURN_LOCAL_ADDRESSES = YES 76RETURN_LOCAL_ADDRESSES = YES
78 77
79[gns-helper-service-w32] 78[gns-helper-service-w32]
80AUTOSTART = NO \ No newline at end of file 79AUTOSTART = NO
diff --git a/src/testbed/test_testbed_api_testbed_run_topologyring.conf b/src/testbed/test_testbed_api_testbed_run_topologyring.conf
index de83ab201..22d934db8 100644
--- a/src/testbed/test_testbed_api_testbed_run_topologyring.conf
+++ b/src/testbed/test_testbed_api_testbed_run_topologyring.conf
@@ -4,7 +4,6 @@ PORT = 12113
4ACCEPT_FROM = 127.0.0.1; 4ACCEPT_FROM = 127.0.0.1;
5HOSTNAME = localhost 5HOSTNAME = localhost
6NEIGHBOUR_LIMIT = 100 6NEIGHBOUR_LIMIT = 100
7PARALLEL_OVERLAY_CONNECT_THRESHOLD = 2
8OVERLAY_TOPOLOGY = RING 7OVERLAY_TOPOLOGY = RING
9#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args 8#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args
10 9
@@ -77,4 +76,4 @@ AUTOSTART = NO
77RETURN_LOCAL_ADDRESSES = YES 76RETURN_LOCAL_ADDRESSES = YES
78 77
79[gns-helper-service-w32] 78[gns-helper-service-w32]
80AUTOSTART = NO \ No newline at end of file 79AUTOSTART = NO
diff --git a/src/testbed/test_testbed_api_testbed_run_topologyscalefree.conf b/src/testbed/test_testbed_api_testbed_run_topologyscalefree.conf
index de83ab201..22d934db8 100644
--- a/src/testbed/test_testbed_api_testbed_run_topologyscalefree.conf
+++ b/src/testbed/test_testbed_api_testbed_run_topologyscalefree.conf
@@ -4,7 +4,6 @@ PORT = 12113
4ACCEPT_FROM = 127.0.0.1; 4ACCEPT_FROM = 127.0.0.1;
5HOSTNAME = localhost 5HOSTNAME = localhost
6NEIGHBOUR_LIMIT = 100 6NEIGHBOUR_LIMIT = 100
7PARALLEL_OVERLAY_CONNECT_THRESHOLD = 2
8OVERLAY_TOPOLOGY = RING 7OVERLAY_TOPOLOGY = RING
9#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args 8#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args
10 9
@@ -77,4 +76,4 @@ AUTOSTART = NO
77RETURN_LOCAL_ADDRESSES = YES 76RETURN_LOCAL_ADDRESSES = YES
78 77
79[gns-helper-service-w32] 78[gns-helper-service-w32]
80AUTOSTART = NO \ No newline at end of file 79AUTOSTART = NO
diff --git a/src/testbed/test_testbed_api_testbed_run_topologysmallworld.conf b/src/testbed/test_testbed_api_testbed_run_topologysmallworld.conf
index c54f0bfaa..fabc74f37 100644
--- a/src/testbed/test_testbed_api_testbed_run_topologysmallworld.conf
+++ b/src/testbed/test_testbed_api_testbed_run_topologysmallworld.conf
@@ -3,7 +3,6 @@ AUTOSTART = NO
3PORT = 12113 3PORT = 12113
4ACCEPT_FROM = 127.0.0.1; 4ACCEPT_FROM = 127.0.0.1;
5HOSTNAME = localhost 5HOSTNAME = localhost
6PARALLEL_OVERLAY_CONNECT_THRESHOLD = 2
7OVERLAY_TOPOLOGY = SMALL_WORLD 6OVERLAY_TOPOLOGY = SMALL_WORLD
8OVERLAY_RANDOM_LINKS = 3 7OVERLAY_RANDOM_LINKS = 3
9#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args 8#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args
diff --git a/src/testbed/test_testbed_api_testbed_run_topologysmallworldring.conf b/src/testbed/test_testbed_api_testbed_run_topologysmallworldring.conf
index cb7e5e3a8..7b26f4f27 100644
--- a/src/testbed/test_testbed_api_testbed_run_topologysmallworldring.conf
+++ b/src/testbed/test_testbed_api_testbed_run_topologysmallworldring.conf
@@ -3,7 +3,6 @@ AUTOSTART = NO
3PORT = 12113 3PORT = 12113
4ACCEPT_FROM = 127.0.0.1; 4ACCEPT_FROM = 127.0.0.1;
5HOSTNAME = localhost 5HOSTNAME = localhost
6PARALLEL_OVERLAY_CONNECT_THRESHOLD = 2
7OVERLAY_TOPOLOGY = SMALL_WORLD_RING 6OVERLAY_TOPOLOGY = SMALL_WORLD_RING
8OVERLAY_RANDOM_LINKS = 3 7OVERLAY_RANDOM_LINKS = 3
9#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args 8#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args
diff --git a/src/testbed/testbed.conf.in b/src/testbed/testbed.conf.in
index 47b798830..1634cf95d 100644
--- a/src/testbed/testbed.conf.in
+++ b/src/testbed/testbed.conf.in
@@ -13,5 +13,5 @@ UNIX_MATCH_UID = YES
13UNIX_MATCH_GID = YES 13UNIX_MATCH_GID = YES
14MAX_PARALLEL_OPERATIONS = 1000 14MAX_PARALLEL_OPERATIONS = 1000
15MAX_PARALLEL_SERVICE_CONNECTIONS = 1000 15MAX_PARALLEL_SERVICE_CONNECTIONS = 1000
16MAX_PARALLEL_TOPOLOGY_CONFIG_OPERATIONS = 5 16MAX_PARALLEL_TOPOLOGY_CONFIG_OPERATIONS = 1
17PARALLEL_OVERLAY_CONNECT_THRESHOLD = 16 17HELLO_CACHE_SIZE = 30