GNUnet 0.24.1-15-gab6ed22f1
testing_api_topology.h File Reference
Include dependency graph for testing_api_topology.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  GNUNET_TESTING_NetjailRouter
 API for writing an interpreter to test GNUnet components. More...
 
struct  GNUNET_TESTING_AddressPrefix
 Protocol address prefix für a connection between nodes. More...
 
struct  GNUNET_TESTING_NodeConnection
 Connection to another node. More...
 
struct  GNUNET_TESTING_NetjailNode
 Node in the netjail topology. More...
 
struct  GNUNET_TESTING_NetjailNamespace
 Subnet in a topology. More...
 
struct  GNUNET_TESTING_NetjailBackbonePeer
 Backbone peer. More...
 
struct  GNUNET_TESTING_NetjailCarrierPeer
 Backbone peer. More...
 
struct  GNUNET_TESTING_NetjailCarrier
 Carrier. More...
 
struct  GNUNET_TESTING_NetjailSubnet
 Carrier subnet. More...
 
struct  GNUNET_TESTING_NetjailSubnetPeer
 Subnet peer. More...
 
struct  GNUNET_TESTING_NetjailTopology
 Topology of our netjail setup. More...
 

Macros

#define GNUNET_TESTING_SIMPLE_NETJAIL_TRAITS(op, prefix)
 Call op on all simple traits. More...
 

Enumerations

enum  GNUNET_TESTING_NodeType { GNUNET_TESTING_SUBNET_NODE , GNUNET_TESTING_GLOBAL_NODE }
 Enum for the different types of nodes. More...
 

Functions

struct GNUNET_TESTING_NetjailTopologyGNUNET_TESTING_get_topo_from_string_ (const char *data)
 Parse the topology data. More...
 
unsigned int GNUNET_TESTING_get_additional_connects (unsigned int num, struct GNUNET_TESTING_NetjailTopology *topology)
 Get the number of unintentional additional connections the node waits for. More...
 
struct GNUNET_TESTING_NetjailNodeGNUNET_TESTING_get_node (unsigned int num, struct GNUNET_TESTING_NetjailTopology *topology)
 Get a node from the topology. More...
 
struct GNUNET_TESTING_NodeConnectionGNUNET_TESTING_get_connections (unsigned int num, const struct GNUNET_TESTING_NetjailTopology *topology)
 Get the connections to other nodes for a specific node. More...
 
char * GNUNET_TESTING_get_address (struct GNUNET_TESTING_NodeConnection *connection, const char *prefix)
 Get the address for a specific communicator from a connection. More...
 
const char * GNUNET_TESTING_get_plugin_from_topo (struct GNUNET_TESTING_NetjailTopology *njt, const char *my_node_id)
 Get the global plugin name form the topology file. More...
 
void GNUNET_TESTING_free_topology (struct GNUNET_TESTING_NetjailTopology *topology)
 Deallocate memory of the struct GNUNET_TESTING_NetjailTopology. More...
 
unsigned int GNUNET_TESTING_calculate_num (struct GNUNET_TESTING_NodeConnection *node_connection, struct GNUNET_TESTING_NetjailTopology *topology)
 Calculate the unique id identifying a node from a given connection. More...
 
 GNUNET_TESTING_MAKE_DECL_SIMPLE_TRAIT (GNUNET_TESTING, topology, const struct GNUNET_TESTING_NetjailTopology) GNUNET_TESTING_MAKE_DECL_SIMPLE_TRAIT(GNUNET_TESTING
 
const char GNUNET_TESTING_MAKE_DECL_SIMPLE_TRAIT (GNUNET_TESTING, async_context, struct GNUNET_TESTING_AsyncContext) GNUNET_TESTING_MAKE_DECL_SIMPLE_TRAIT(GNUNET_TESTING
 

Variables

 topology_string
 
const char helper_handles
 

Macro Definition Documentation

◆ GNUNET_TESTING_SIMPLE_NETJAIL_TRAITS

#define GNUNET_TESTING_SIMPLE_NETJAIL_TRAITS (   op,
  prefix 
)
Value:
op (prefix, topology, const struct GNUNET_TESTING_NetjailTopology) \
op (prefix, topology_string, const char) \
op (prefix, async_context, struct GNUNET_TESTING_AsyncContext) \
static struct GNUNET_ARM_Operation * op
Current operation.
Definition: gnunet-arm.c:143
static int prefix
If printing the value of PREFIX has been requested.
Definition: gnunet-config.c:65
The handle to a helper process.
Definition: helper.c:77
State each asynchronous command must have in its closure.
Topology of our netjail setup.
const char helper_handles

Call op on all simple traits.

Definition at line 488 of file testing_api_topology.h.

Enumeration Type Documentation

◆ GNUNET_TESTING_NodeType

Enum for the different types of nodes.

Enumerator
GNUNET_TESTING_SUBNET_NODE 

Node in a subnet.

GNUNET_TESTING_GLOBAL_NODE 

Global known node.

Definition at line 54 of file testing_api_topology.h.

55{
60
65};
@ GNUNET_TESTING_SUBNET_NODE
Node in a subnet.
@ GNUNET_TESTING_GLOBAL_NODE
Global known node.

Function Documentation

◆ GNUNET_TESTING_get_topo_from_string_()

struct GNUNET_TESTING_NetjailTopology * GNUNET_TESTING_get_topo_from_string_ ( const char *  data)

Parse the topology data.

Parameters
dataThe topology data.
Returns
The GNUNET_TESTING_NetjailTopology

Definition at line 586 of file testing_api_topology.c.

587{
589 struct GNUNET_HashCode hc = {0};
590 struct GNUNET_TESTING_NetjailTopology *topology = GNUNET_new (struct
592
593 topology->backbone_peers
595 GNUNET_NO);
596 topology->carriers
598 GNUNET_NO);
600 GNUNET_assert (NULL != topology->carriers);
601
602 if (GNUNET_OK !=
604 input,
605 strlen (input),
606 NULL))
607 {
609 _ ("Failed to parse configuration.\n"));
611 return NULL;
612 }
613 if (GNUNET_OK !=
615 "DEFAULTS",
616 "SUBNETS",
617 &topology->default_subnets))
618 {
620 "Missing default SUBNETS!\n");
621 return NULL;
622 }
624 "DEFAULTS",
625 "TESTBED_PLUGIN",
626 &topology->plugin))
627 {
629 "Missing default TESTBED_PLUGIN!\n");
630 return NULL;
631 }
633 "DEFAULTS",
634 "CARRIER_PEERS",
635 &(topology->
637 {
639 "Missing default CARRIER_PEERS!\n");
640 return NULL;
641 }
643 "DEFAULTS",
644 "SUBNET_PEERS",
645 &(topology->
647 {
649 "Missing default SUBNET_PEERS!\n");
650 return NULL;
651 }
653 "BACKBONE",
654 "CARRIERS",
655 &(topology->
656 num_carriers)))
657 {
659 "No carrier configured!\n");
660 return NULL;
661 }
663 "BACKBONE",
664 "BACKBONE_PEERS",
665 &(topology->
667 )
668 {
670 "No backbone peers configured!\n");
671 return NULL;
672 }
673 for (int i = 0; i < topology->num_backbone_peers; i++)
674 {
677 struct GNUNET_ShortHashCode hkey;
678
679 topology->total++;
681 "Backbone peers -> Number of nodes: %u\n",
682 topology->total);
683 peer->number = topology->total;
684 GNUNET_CRYPTO_hash (&topology->total, sizeof(topology->total), &hc);
685 memcpy (&hkey,
686 &hc,
687 sizeof (hkey));
689 &hkey,
690 peer,
692 }
693 GNUNET_assert (NULL != topology->carriers);
694 for (int i = 0; i < topology->num_carriers; i++)
695 {
696 struct GNUNET_TESTING_NetjailCarrier *carrier = GNUNET_new (struct
698 struct GNUNET_ShortHashCode hkey;
699 char *section;
700
701 topology->total++;
703 "Carrier -> Number of nodes: %u\n",
704 topology->total);
705 carrier->number = topology->total;
706 GNUNET_CRYPTO_hash (&topology->total, sizeof(topology->total), &hc);
707 memcpy (&hkey,
708 &hc,
709 sizeof (hkey));
710 GNUNET_assert (NULL != topology->carriers);
712 &hkey,
713 carrier,
715 GNUNET_asprintf (&section, "CARRIER-%u", i);
717 section,
718 "SUBNETS",
719 (unsigned long
720 long *) &carrier->
721 number_subnets))
722 {
723 carrier->number_subnets = topology->default_subnets;
725 "Carrier -> Default number of subnets: %u\n",
726 carrier->number_subnets);
727 }
729 "Carrier -> number of subnets: %u\n",
730 carrier->number_subnets);
732 section,
733 "CARRIER_PEERS",
734 (unsigned long
735 long *) &carrier->
736 number_peers))
737 {
738 carrier->number_peers = topology->default_carrier_peers;
740 "Carrier -> Default number of peers: %u\n",
741 carrier->number_peers);
742 }
744 "Carrier -> Default number of peers: %u\n",
745 carrier->number_peers);
746 create_peers (cfg, topology, carrier);
747 create_subnets (cfg, topology, carrier);
748
749 GNUNET_free (section);
750 }
751
753
754 return topology;
755}
static struct GNUNET_CONFIGURATION_Handle * cfg
Our configuration.
Definition: gnunet-arm.c:108
struct GNUNET_CONFIGURATION_Handle * GNUNET_CONFIGURATION_create(const struct GNUNET_OS_ProjectData *pd)
Create a new configuration object.
enum GNUNET_GenericReturnValue GNUNET_CONFIGURATION_get_value_number(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *section, const char *option, unsigned long long *number)
Get a configuration value that should be a number.
void GNUNET_CONFIGURATION_destroy(struct GNUNET_CONFIGURATION_Handle *cfg)
Destroy configuration object.
enum GNUNET_GenericReturnValue GNUNET_CONFIGURATION_deserialize(struct GNUNET_CONFIGURATION_Handle *cfg, const char *mem, size_t size, const char *source_filename)
De-serializes configuration.
enum GNUNET_GenericReturnValue GNUNET_CONFIGURATION_get_value_string(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *section, const char *option, char **value)
Get a configuration value that should be a string.
void GNUNET_CRYPTO_hash(const void *block, size_t size, struct GNUNET_HashCode *ret)
Compute hash of a given block.
Definition: crypto_hash.c:41
struct GNUNET_CONTAINER_MultiShortmap * GNUNET_CONTAINER_multishortmap_create(unsigned int len, int do_not_copy_keys)
Create a multi peer map (hash map for public keys of peers).
enum GNUNET_GenericReturnValue GNUNET_CONTAINER_multishortmap_put(struct GNUNET_CONTAINER_MultiShortmap *map, const struct GNUNET_ShortHashCode *key, void *value, enum GNUNET_CONTAINER_MultiHashMapOption opt)
Store a key-value pair in the map.
@ GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE
Allow multiple values with the same key.
#define GNUNET_log(kind,...)
@ GNUNET_OK
@ GNUNET_NO
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
@ GNUNET_ERROR_TYPE_ERROR
@ GNUNET_ERROR_TYPE_DEBUG
@ GNUNET_ERROR_TYPE_INFO
int int GNUNET_asprintf(char **buf, const char *format,...) __attribute__((format(printf
Like asprintf, just portable.
#define GNUNET_new(type)
Allocate a struct or union of the given type.
#define GNUNET_free(ptr)
Wrapper around free.
const struct GNUNET_OS_ProjectData * GNUNET_OS_project_data_gnunet(void)
Return default project data used by 'libgnunetutil' for GNUnet.
#define _(String)
GNU gettext support macro.
Definition: platform.h:179
A 512-bit hashcode.
A 256-bit hashcode.
unsigned int number
Unique identifier this part of the topology can be identified.
unsigned int number_peers
Number of carrier peers.
unsigned int number_subnets
Number of carrier subnets.
unsigned int number
Unique identifier this part of the topology can be identified.
unsigned long long default_subnets
Default number of subnets per carrier.
struct GNUNET_CONTAINER_MultiShortmap * carriers
Hash map containing the carriers.
unsigned long long default_subnet_peers
Default number of peers per subnet.
char * plugin
Default plugin for the test case to be run on nodes.
unsigned long long num_carriers
Number of carriers.
unsigned long long default_carrier_peers
Default number of peers per carrier.
unsigned int total
Total number of namespaces in the topology.
struct GNUNET_CONTAINER_MultiShortmap * backbone_peers
Hash map containing the carriers.
unsigned long long num_backbone_peers
Default number of backbone peers.
static void create_peers(struct GNUNET_CONFIGURATION_Handle *cfg, struct GNUNET_TESTING_NetjailTopology *topology, struct GNUNET_TESTING_NetjailCarrier *carrier)
static void create_subnets(struct GNUNET_CONFIGURATION_Handle *cfg, struct GNUNET_TESTING_NetjailTopology *topology, struct GNUNET_TESTING_NetjailCarrier *carrier)
#define LOG(kind,...)

References _, GNUNET_TESTING_NetjailTopology::backbone_peers, GNUNET_TESTING_NetjailTopology::carriers, cfg, create_peers(), create_subnets(), GNUNET_TESTING_NetjailTopology::default_carrier_peers, GNUNET_TESTING_NetjailTopology::default_subnets, GNUNET_asprintf(), GNUNET_assert, GNUNET_CONFIGURATION_create(), GNUNET_CONFIGURATION_deserialize(), GNUNET_CONFIGURATION_destroy(), GNUNET_CONFIGURATION_get_value_number(), GNUNET_CONFIGURATION_get_value_string(), GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE, GNUNET_CONTAINER_multishortmap_create(), GNUNET_CONTAINER_multishortmap_put(), GNUNET_CRYPTO_hash(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_ERROR, GNUNET_ERROR_TYPE_INFO, GNUNET_free, GNUNET_log, GNUNET_new, GNUNET_NO, GNUNET_OK, GNUNET_OS_project_data_gnunet(), LOG, GNUNET_TESTING_NetjailTopology::num_backbone_peers, GNUNET_TESTING_NetjailTopology::num_carriers, GNUNET_TESTING_NetjailBackbonePeer::number, GNUNET_TESTING_NetjailCarrier::number, GNUNET_TESTING_NetjailCarrier::number_peers, GNUNET_TESTING_NetjailCarrier::number_subnets, GNUNET_TESTING_NetjailTopology::plugin, and GNUNET_TESTING_NetjailTopology::total.

Referenced by handle_helper_init(), netjail_exec_run(), and run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_TESTING_get_additional_connects()

unsigned int GNUNET_TESTING_get_additional_connects ( unsigned int  num,
struct GNUNET_TESTING_NetjailTopology topology 
)

Get the number of unintentional additional connections the node waits for.

Parameters
numThe specific node we want the additional connects for.
Returns
The number of additional connects

Definition at line 438 of file testing_api_topology.c.

441{
442 struct GNUNET_TESTING_NetjailNode *node;
443 struct GNUNET_TESTING_NetjailNamespace *namespace;
444 struct GNUNET_TESTING_NodeConnection *node_connections;
445
447 "get_additional_connects\n");
448
449 get_node_info (num, topology, &node, &namespace, &node_connections);
450
451 if (NULL == node)
452 {
454 "No info found for node %d\n", num);
455 return 0;
456 }
458 "node additional_connects for node %p\n",
459 node);
461 "node additional_connects: %u\n",
463
465}
@ GNUNET_ERROR_TYPE_WARNING
Node in the netjail topology.
unsigned int additional_connects
The number of unintentional additional connections this node waits for.
Connection to another node.
struct GNUNET_TESTING_NetjailNode * node
The node which establish the connection.
static void get_node_info(unsigned int num, const struct GNUNET_TESTING_NetjailTopology *topology, struct GNUNET_TESTING_NetjailNode **node_ex, struct GNUNET_TESTING_NetjailNamespace **namespace_ex, struct GNUNET_TESTING_NodeConnection **node_connections_ex)
This function extracts information about a specific node from the topology.

References GNUNET_TESTING_NetjailNode::additional_connects, get_node_info(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_WARNING, and LOG.

Referenced by GNUNET_CORE_cmd_connect_peers(), and GNUNET_TRANSPORT_cmd_connect_peers().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_TESTING_get_node()

struct GNUNET_TESTING_NetjailNode * GNUNET_TESTING_get_node ( unsigned int  num,
struct GNUNET_TESTING_NetjailTopology topology 
)

Get a node from the topology.

Parameters
numThe specific node we want the connections for.
topologyThe topology we get the connections from.
Returns
The connections of the node.

Definition at line 241 of file testing_api_topology.c.

243{
244 struct GNUNET_TESTING_NetjailNode *node;
245 struct GNUNET_TESTING_NetjailNamespace *namespace;
246 struct GNUNET_TESTING_NodeConnection *node_connections;
247
248 get_node_info (num, topology, &node, &namespace, &node_connections);
249
250 return node;
251
252}

References get_node_info(), and GNUNET_TESTING_NodeConnection::node.

Here is the call graph for this function:

◆ GNUNET_TESTING_get_connections()

struct GNUNET_TESTING_NodeConnection * GNUNET_TESTING_get_connections ( unsigned int  num,
const struct GNUNET_TESTING_NetjailTopology topology 
)

Get the connections to other nodes for a specific node.

Parameters
numThe specific node we want the connections for.
topologyThe topology we get the connections from.
Returns
The connections of the node.

Definition at line 263 of file testing_api_topology.c.

266{
267 struct GNUNET_TESTING_NetjailNode *node;
268 struct GNUNET_TESTING_NetjailNamespace *namespace;
269 struct GNUNET_TESTING_NodeConnection *node_connections;
270
272 "get_connections\n");
273
274 get_node_info (num, topology, &node, &namespace, &node_connections);
275
276 return node_connections;
277}

References get_node_info(), GNUNET_ERROR_TYPE_DEBUG, LOG, and GNUNET_TESTING_NodeConnection::node.

Referenced by backchannel_check_run(), and connect_peers_run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_TESTING_get_address()

char * GNUNET_TESTING_get_address ( struct GNUNET_TESTING_NodeConnection connection,
const char *  prefix 
)

Get the address for a specific communicator from a connection.

Parameters
connectionThe connection we like to have the address from.
prefixThe communicator protocol prefix.
Returns
The address of the communicator.

Definition at line 378 of file testing_api_topology.c.

380{
381 struct GNUNET_TESTING_NetjailNode *node;
382 char *addr;
383 const char *template;
384 unsigned int node_n;
385
387 "get address prefix: %s node_n: %u\n",
388 prefix,
389 connection->node_n);
390
391 node = connection->node;
392 if (connection->namespace_n == node->namespace_n)
393 {
394 template = CONNECT_ADDRESS_TEMPLATE;
395 node_n = connection->node_n;
396 }
397 else if (0 == connection->namespace_n)
398 {
400 node_n = connection->node_n;
401 }
402 else if (1 == connection->node_n)
403 {
405 node_n = connection->namespace_n;
406 }
407 else
408 {
409 return NULL;
410 }
411
412 if (0 == strcmp (PREFIX_TCP, prefix) ||
413 0 == strcmp (PREFIX_UDP, prefix) ||
414 0 == strcmp (PREFIX_UDP_NATTED, prefix) ||
415 0 == strcmp (PREFIX_TCP_NATTED, prefix))
416 {
417 GNUNET_asprintf (&addr,
418 template,
419 prefix,
420 node_n);
421 }
422 else
423 {
424 GNUNET_assert (0);
425 }
426
427 return addr;
428}
unsigned int namespace_n
The number of the subnet this node is running in.
unsigned int node_n
The number of this node in the subnet.
unsigned int node_n
The number of the node this connection points to.
unsigned int namespace_n
The number of the subnet of the node this connection points to.
#define PREFIX_UDP_NATTED
#define PREFIX_TCP
#define PREFIX_TCP_NATTED
#define CONNECT_ADDRESS_TEMPLATE
#define PREFIX_UDP
#define KNOWN_CONNECT_ADDRESS_TEMPLATE
#define ROUTER_CONNECT_ADDRESS_TEMPLATE

References CONNECT_ADDRESS_TEMPLATE, GNUNET_asprintf(), GNUNET_assert, GNUNET_ERROR_TYPE_DEBUG, KNOWN_CONNECT_ADDRESS_TEMPLATE, LOG, GNUNET_TESTING_NodeConnection::namespace_n, GNUNET_TESTING_NetjailNode::namespace_n, GNUNET_TESTING_NodeConnection::node, GNUNET_TESTING_NodeConnection::node_n, GNUNET_TESTING_NetjailNode::node_n, prefix, PREFIX_TCP, PREFIX_TCP_NATTED, PREFIX_UDP, PREFIX_UDP_NATTED, and ROUTER_CONNECT_ADDRESS_TEMPLATE.

Referenced by connect_peers_run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_TESTING_get_plugin_from_topo()

const char * GNUNET_TESTING_get_plugin_from_topo ( struct GNUNET_TESTING_NetjailTopology njt,
const char *  my_node_id 
)

Get the global plugin name form the topology file.

Parameters
njtthe netjail topology.
my_node_idthe node ID.
Returns
the name of the plugin to use.

Definition at line 469 of file testing_api_topology.c.

472{
473 return njt->plugin;
474}
struct GNUNET_TESTING_NetjailTopology * njt
The loaded topology.

References njt, and GNUNET_TESTING_NetjailTopology::plugin.

Referenced by handle_helper_init().

Here is the caller graph for this function:

◆ GNUNET_TESTING_free_topology()

void GNUNET_TESTING_free_topology ( struct GNUNET_TESTING_NetjailTopology topology)

Deallocate memory of the struct GNUNET_TESTING_NetjailTopology.

Parameters
[in]topologyThe GNUNET_TESTING_NetjailTopology to be deallocated.
topologyThe GNUNET_TESTING_NetjailTopology to be deallocated.

Definition at line 338 of file testing_api_topology.c.

339{
342 NULL);
345 NULL);
346 GNUNET_free (topology->plugin);
347 GNUNET_free (topology);
348}
int GNUNET_CONTAINER_multishortmap_iterate(struct GNUNET_CONTAINER_MultiShortmap *map, GNUNET_CONTAINER_ShortmapIterator it, void *it_cls)
Iterate over all entries in the map.
static int free_value_cb(void *cls, const struct GNUNET_ShortHashCode *key, void *value)
static int free_carriers_cb(void *cls, const struct GNUNET_ShortHashCode *key, void *value)

References GNUNET_TESTING_NetjailTopology::backbone_peers, GNUNET_TESTING_NetjailTopology::carriers, free_carriers_cb(), free_value_cb(), GNUNET_CONTAINER_multishortmap_iterate(), GNUNET_free, and GNUNET_TESTING_NetjailTopology::plugin.

Referenced by cleanup(), do_shutdown_later(), handle_result(), and netjail_exec_run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_TESTING_calculate_num()

unsigned int GNUNET_TESTING_calculate_num ( struct GNUNET_TESTING_NodeConnection node_connection,
struct GNUNET_TESTING_NetjailTopology topology 
)

Calculate the unique id identifying a node from a given connection.

Parameters
node_connectionThe connection we calculate the id from.
topologyThe topology we get all needed information from.
Returns
The unique id of the node from the connection.

Definition at line 352 of file testing_api_topology.c.

355{
356 unsigned int n, m, num;
357
358 n = node_connection->namespace_n;
359 m = node_connection->node_n;
360
361 if (0 == n)
362 num = m;
363 else
364 num = (n - 1) * topology->nodes_m + m + topology->nodes_x;
365
366 return num;
367}
static struct GNUNET_ARM_MonitorHandle * m
Monitor connection with ARM.
Definition: gnunet-arm.c:103
unsigned int nodes_m
Number of nodes per subnet.
unsigned int nodes_x
Number of global known nodes.

References m, GNUNET_TESTING_NodeConnection::namespace_n, GNUNET_TESTING_NodeConnection::node_n, GNUNET_TESTING_NetjailTopology::nodes_m, and GNUNET_TESTING_NetjailTopology::nodes_x.

Referenced by connect_peers_run(), and notify_connect().

Here is the caller graph for this function:

◆ GNUNET_TESTING_MAKE_DECL_SIMPLE_TRAIT() [1/2]

GNUNET_TESTING_MAKE_DECL_SIMPLE_TRAIT ( GNUNET_TESTING  ,
topology  ,
const struct GNUNET_TESTING_NetjailTopology   
)

◆ GNUNET_TESTING_MAKE_DECL_SIMPLE_TRAIT() [2/2]

const char GNUNET_TESTING_MAKE_DECL_SIMPLE_TRAIT ( GNUNET_TESTING  ,
async_context  ,
struct GNUNET_TESTING_AsyncContext   
)

Variable Documentation

◆ topology_string

topology_string

◆ helper_handles

const char helper_handles

Definition at line 495 of file testing_api_topology.h.