diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2012-10-14 13:23:17 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2012-10-14 13:23:17 +0000 |
commit | e1bdd0f567da500d8ae723837b2c1e99bf992d4f (patch) | |
tree | 5cf22c5e1b48c20b1c951fe5da71e72ec2b8a925 /src/testbed/testbed_api_topology.c | |
parent | 4f541bbf6b5767cbba4e6702c6a79bc8a3f1132e (diff) | |
download | gnunet-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.c | 27 |
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: |