aboutsummaryrefslogtreecommitdiff
path: root/src/testbed/testbed_api_topology.c
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2012-10-14 13:23:17 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2012-10-14 13:23:17 +0000
commite1bdd0f567da500d8ae723837b2c1e99bf992d4f (patch)
tree5cf22c5e1b48c20b1c951fe5da71e72ec2b8a925 /src/testbed/testbed_api_topology.c
parent4f541bbf6b5767cbba4e6702c6a79bc8a3f1132e (diff)
downloadgnunet-e1bdd0f567da500d8ae723837b2c1e99bf992d4f.tar.gz
gnunet-e1bdd0f567da500d8ae723837b2c1e99bf992d4f.zip
Random graph topology
Diffstat (limited to 'src/testbed/testbed_api_topology.c')
-rw-r--r--src/testbed/testbed_api_topology.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/testbed/testbed_api_topology.c b/src/testbed/testbed_api_topology.c
index f7aa2ed5b..05537e2e1 100644
--- a/src/testbed/testbed_api_topology.c
+++ b/src/testbed/testbed_api_topology.c
@@ -225,7 +225,7 @@ GNUNET_TESTBED_overlay_configure_topology_va (void *op_cls,
225 struct TopologyContext *tc; 225 struct TopologyContext *tc;
226 struct GNUNET_TESTBED_Operation *op; 226 struct GNUNET_TESTBED_Operation *op;
227 struct GNUNET_TESTBED_Controller *c; 227 struct GNUNET_TESTBED_Controller *c;
228 unsigned int p; 228 unsigned int cnt;
229 229
230 if (num_peers < 2) 230 if (num_peers < 2)
231 return NULL; 231 return NULL;
@@ -238,10 +238,29 @@ GNUNET_TESTBED_overlay_configure_topology_va (void *op_cls,
238 tc->link_array_size = num_peers - 1; 238 tc->link_array_size = num_peers - 1;
239 tc->link_array = GNUNET_malloc (sizeof (struct OverlayLink) * 239 tc->link_array = GNUNET_malloc (sizeof (struct OverlayLink) *
240 tc->link_array_size); 240 tc->link_array_size);
241 for (p=1; p < num_peers; p++) 241 for (cnt=1; cnt < num_peers; cnt++)
242 {
243 tc->link_array[cnt-1].A = cnt-1;
244 tc->link_array[cnt-1].B = cnt;
245 }
246 break;
247 case GNUNET_TESTBED_TOPOLOGY_ERDOS_RENYI:
248 tc->link_array_size = va_arg (va, unsigned int);
249 tc->link_array = GNUNET_malloc (sizeof (struct OverlayLink) *
250 tc->link_array_size);
251 for (cnt = 0; cnt < tc->link_array_size; cnt++)
242 { 252 {
243 tc->link_array[p-1].A = p-1; 253 uint32_t A_rand;
244 tc->link_array[p-1].B = p; 254 uint32_t B_rand;
255
256 do {
257 A_rand = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
258 num_peers);
259 B_rand = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
260 num_peers);
261 } while (A_rand == B_rand);
262 tc->link_array[cnt].A = A_rand;
263 tc->link_array[cnt].B = B_rand;
245 } 264 }
246 break; 265 break;
247 default: 266 default: