aboutsummaryrefslogtreecommitdiff
path: root/src/testbed/testbed_api_topology.c
diff options
context:
space:
mode:
authorCarlo von lynX <lynX@time.to.get.psyced.org>2016-08-06 13:59:03 +0000
committerCarlo von lynX <lynX@time.to.get.psyced.org>2016-08-06 13:59:03 +0000
commitaa317bd7953190ac0b0ceef02ba3f36047982a6c (patch)
tree0be172cac20979e4927a4d181e055ffcc970a207 /src/testbed/testbed_api_topology.c
parent2506c0b954088dc5f9bf267678de89fe0d4ac53e (diff)
downloadgnunet-aa317bd7953190ac0b0ceef02ba3f36047982a6c.tar.gz
gnunet-aa317bd7953190ac0b0ceef02ba3f36047982a6c.zip
testbed: STAR topology (SCNR)
Diffstat (limited to 'src/testbed/testbed_api_topology.c')
-rw-r--r--src/testbed/testbed_api_topology.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/testbed/testbed_api_topology.c b/src/testbed/testbed_api_topology.c
index 1f7d11b27..b7722b9c7 100644
--- a/src/testbed/testbed_api_topology.c
+++ b/src/testbed/testbed_api_topology.c
@@ -286,6 +286,11 @@ const char *topology_strings[] = {
286 "RING", 286 "RING",
287 287
288 /** 288 /**
289 * Star topology. No options.
290 */
291 "STAR",
292
293 /**
289 * 2-d torus. No options. 294 * 2-d torus. No options.
290 */ 295 */
291 "2D_TORUS", 296 "2D_TORUS",
@@ -316,6 +321,11 @@ const char *topology_strings[] = {
316 "LINE", 321 "LINE",
317 322
318 /** 323 /**
324 * Star topology. No options.
325 */
326 "STAR",
327
328 /**
319 * Read a topology from a given file. Followed by the name of the file (const char *). 329 * Read a topology from a given file. Followed by the name of the file (const char *).
320 */ 330 */
321 "FROM_FILE", 331 "FROM_FILE",
@@ -540,6 +550,43 @@ gen_topo_line (struct TopologyContext *tc)
540 550
541 551
542/** 552/**
553 * Generates star topology
554 *
555 * @param tc the topology context
556 */
557static void
558gen_topo_star (struct TopologyContext *tc)
559{
560 unsigned int cnt;
561
562 tc->link_array_size = tc->num_peers - 1;
563 switch (tc->type)
564 {
565 case TOPOLOGYCONTEXT_TYPE_OVERLAY:
566 {
567 struct TopologyContextOverlay *overlay;
568
569 overlay = &tc->u.overlay;
570 overlay->link_array =
571 GNUNET_malloc (sizeof (struct OverlayLink) * tc->link_array_size);
572 }
573 break;
574 case TOPOLOGYCONTEXT_TYPE_UNDERLAY:
575 {
576 struct TopologyContextUnderlay *underlay;
577
578 underlay = &tc->u.underlay;
579 underlay->link_array =
580 GNUNET_malloc (sizeof (struct UnderlayLink) * tc->link_array_size);
581 }
582 break;
583 }
584 for (cnt = tc->link_array_size; cnt; cnt--)
585 make_link (0, 0, cnt, tc);
586}
587
588
589/**
543 * Generates ring topology 590 * Generates ring topology
544 * 591 *
545 * @param tc the topology context 592 * @param tc the topology context
@@ -1278,6 +1325,9 @@ GNUNET_TESTBED_overlay_configure_topology_va (void *op_cls,
1278 case GNUNET_TESTBED_TOPOLOGY_LINE: 1325 case GNUNET_TESTBED_TOPOLOGY_LINE:
1279 gen_topo_line (tc); 1326 gen_topo_line (tc);
1280 break; 1327 break;
1328 case GNUNET_TESTBED_TOPOLOGY_STAR:
1329 gen_topo_star (tc);
1330 break;
1281 case GNUNET_TESTBED_TOPOLOGY_RING: 1331 case GNUNET_TESTBED_TOPOLOGY_RING:
1282 gen_topo_ring (tc); 1332 gen_topo_ring (tc);
1283 break; 1333 break;
@@ -1492,6 +1542,9 @@ GNUNET_TESTBED_underlay_construct_ (int num_peers,
1492 case GNUNET_TESTBED_TOPOLOGY_LINE: 1542 case GNUNET_TESTBED_TOPOLOGY_LINE:
1493 gen_topo_line (&tc); 1543 gen_topo_line (&tc);
1494 break; 1544 break;
1545 case GNUNET_TESTBED_TOPOLOGY_STAR:
1546 gen_topo_star (&tc);
1547 break;
1495 case GNUNET_TESTBED_TOPOLOGY_RING: 1548 case GNUNET_TESTBED_TOPOLOGY_RING:
1496 gen_topo_ring (&tc); 1549 gen_topo_ring (&tc);
1497 break; 1550 break;