/*
- This file is part of GNUnet
- (C) 2008, 2009 Christian Grothoff (and other contributing authors)
-
- GNUnet is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3, or (at your
- option) any later version.
-
- GNUnet is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ This file is part of GNUnet
+ (C) 2008, 2009 Christian Grothoff (and other contributing authors)
+
+ GNUnet is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation; either version 3, or (at your
+ option) any later version.
+
+ GNUnet is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GNUnet; see the file COPYING. If not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
*/
/**
* Prototype of a function called whenever two peers would be connected
* in a certain topology.
*/
-typedef unsigned int (*GNUNET_TESTING_ConnectionProcessor) (struct
- GNUNET_TESTING_PeerGroup
- * pg,
- unsigned int
- first,
- unsigned int
- second,
- enum PeerLists list,
- unsigned int check);
-
+typedef unsigned int
+(*GNUNET_TESTING_ConnectionProcessor)(struct GNUNET_TESTING_PeerGroup * pg,
+ unsigned int first, unsigned int second, enum PeerLists list,
+ unsigned int check);
/**
* Context for handling churning a peer group
};
-
struct SendHelloContext
{
/**
GNUNET_SCHEDULER_TaskIdentifier core_connect_task;
};
-
struct ShutdownContext
{
struct GNUNET_TESTING_PeerGroup *pg;
struct GNUNET_TESTING_Daemon *daemon;
};
-
struct CreateTopologyContext
{
OTHER_PEER_INDEX
};
-
#if OLD
struct PeerConnection
{
*/
struct PeerConnection *next;
-
/*
* Index of daemon in pg->peers
*/
struct InternalStartContext internal_context;
};
-
/**
* Linked list of per-host data.
*/
struct GNUNET_STATISTICS_GetHandle *stats_get_handle;
};
-
struct ConnectTopologyContext
{
/**
void *notify_cls;
};
-
/**
* Handle to a group of GNUnet peers.
*/
unsigned int fdnum;
};
-
struct ConnectContext
{
/**
*/
static void
hash_from_uid (uint32_t uid, GNUNET_HashCode * hash)
-{
- memset (hash, 0, sizeof (GNUNET_HashCode));
- *((uint32_t *) hash) = uid;
-}
+ {
+ memset (hash, 0, sizeof (GNUNET_HashCode));
+ *((uint32_t *) hash) = uid;
+ }
/**
* Convert hash code to unique ID.
*/
static void
uid_from_hash (const GNUNET_HashCode * hash, uint32_t * uid)
-{
- memcpy (uid, hash, sizeof (uint32_t));
-}
+ {
+ memcpy (uid, hash, sizeof (uint32_t));
+ }
#endif
#if USE_SEND_HELLOS
-static struct GNUNET_CORE_MessageHandler no_handlers[] = { {NULL, 0, 0} };
+static struct GNUNET_CORE_MessageHandler no_handlers[] =
+ {
+ { NULL, 0, 0}};
#endif
/**
{
if (meter->completed == 0)
{
- fprintf(stdout, "%sProgress: [0%%", meter->startup_string);
+ fprintf (stdout, "%sProgress: [0%%", meter->startup_string);
}
else
- fprintf(stdout, "%d%%", (int) (((float) meter->completed
+ fprintf (stdout, "%d%%", (int) (((float) meter->completed
/ meter->total) * 100));
}
else if (meter->completed % meter->dotnum == 0)
- fprintf(stdout, ".");
+ fprintf (stdout, ".");
if (meter->completed + 1 == meter->total)
- fprintf(stdout, "%d%%]\n", 100);
- fflush(stdout);
+ fprintf (stdout, "%d%%]\n", 100);
+ fflush (stdout);
}
meter->completed++;
if (meter->completed == meter->total)
return GNUNET_YES;
if (meter->completed > meter->total)
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Progress meter overflow!!\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Progress meter overflow!!\n");
return GNUNET_NO;
}
* known topology, GNUNET_NO if not
*/
int
-GNUNET_TESTING_topology_get (enum GNUNET_TESTING_Topology *topology,
- const char *topology_string)
+GNUNET_TESTING_topology_get(enum GNUNET_TESTING_Topology *topology,
+ const char *topology_string)
{
/**
* Strings representing topologies in enum
*/
- static const char *topology_strings[] = {
- /**
- * A clique (everyone connected to everyone else).
- */
+ static const char *topology_strings[] =
+ {
+ /**
+ * A clique (everyone connected to everyone else).
+ */
"CLIQUE",
- /**
- * Small-world network (2d torus plus random links).
- */
+ /**
+ * Small-world network (2d torus plus random links).
+ */
"SMALL_WORLD",
- /**
- * Small-world network (ring plus random links).
- */
+ /**
+ * Small-world network (ring plus random links).
+ */
"SMALL_WORLD_RING",
- /**
- * Ring topology.
- */
+ /**
+ * Ring topology.
+ */
"RING",
- /**
- * 2-d torus.
- */
+ /**
+ * 2-d torus.
+ */
"2D_TORUS",
- /**
- * Random graph.
- */
+ /**
+ * Random graph.
+ */
"ERDOS_RENYI",
- /**
- * Certain percentage of peers are unable to communicate directly
- * replicating NAT conditions
- */
+ /**
+ * Certain percentage of peers are unable to communicate directly
+ * replicating NAT conditions
+ */
"INTERNAT",
- /**
- * Scale free topology.
- */
+ /**
+ * Scale free topology.
+ */
"SCALE_FREE",
- /**
- * Straight line topology.
- */
+ /**
+ * Straight line topology.
+ */
"LINE",
- /**
- * All peers are disconnected.
- */
+ /**
+ * All peers are disconnected.
+ */
"NONE",
- /**
- * Read the topology from a file.
- */
+ /**
+ * Read the topology from a file.
+ */
"FROM_FILE",
- NULL
- };
+ NULL };
int curr = 0;
if (topology_string == NULL)
return GNUNET_NO;
}
-
/**
* Get connect topology option from string input.
*
* topology option, GNUNET_NO if not
*/
int
-GNUNET_TESTING_topology_option_get (enum GNUNET_TESTING_TopologyOption
- *topology_option,
- const char *topology_string)
+GNUNET_TESTING_topology_option_get(
+ enum GNUNET_TESTING_TopologyOption *topology_option,
+ const char *topology_string)
{
/**
* Options for connecting a topology as strings.
*/
- static const char *topology_option_strings[] = {
- /**
- * Try to connect all peers specified in the topology.
- */
+ static const char *topology_option_strings[] =
+ {
+ /**
+ * Try to connect all peers specified in the topology.
+ */
"CONNECT_ALL",
- /**
- * Choose a random subset of connections to create.
- */
+ /**
+ * Choose a random subset of connections to create.
+ */
"CONNECT_RANDOM_SUBSET",
- /**
- * Create at least X connections for each peer.
- */
+ /**
+ * Create at least X connections for each peer.
+ */
"CONNECT_MINIMUM",
- /**
- * Using a depth first search, create one connection
- * per peer. If any are missed (graph disconnected)
- * start over at those peers until all have at least one
- * connection.
- */
+ /**
+ * Using a depth first search, create one connection
+ * per peer. If any are missed (graph disconnected)
+ * start over at those peers until all have at least one
+ * connection.
+ */
"CONNECT_DFS",
- /**
- * Find the N closest peers to each allowed peer in the
- * topology and make sure a connection to those peers
- * exists in the connect topology.
- */
+ /**
+ * Find the N closest peers to each allowed peer in the
+ * topology and make sure a connection to those peers
+ * exists in the connect topology.
+ */
"CONNECT_CLOSEST",
- /**
- * No options specified.
- */
+ /**
+ * No options specified.
+ */
"CONNECT_NONE",
- NULL
- };
+ NULL };
int curr = 0;
if (topology_string == NULL)
* @param value value of the option
*/
static void
-update_config (void *cls,
- const char *section, const char *option, const char *value)
+update_config(void *cls, const char *section, const char *option,
+ const char *value)
{
struct UpdateContext *ctx = cls;
unsigned int ival;
if ((0 == strcmp (option, "PORT")) && (1 == sscanf (value, "%u", &ival)))
{
- if ((ival != 0) &&
- (GNUNET_YES !=
- GNUNET_CONFIGURATION_get_value_yesno (ctx->orig, "testing",
- single_variable)))
+ if ((ival != 0) && (GNUNET_YES
+ != GNUNET_CONFIGURATION_get_value_yesno (ctx->orig, "testing",
+ single_variable)))
{
- GNUNET_snprintf (cval, sizeof (cval), "%u", ctx->nport++);
+ GNUNET_snprintf (cval, sizeof(cval), "%u", ctx->nport++);
value = cval;
}
- else if ((ival != 0) &&
- (GNUNET_YES ==
- GNUNET_CONFIGURATION_get_value_yesno (ctx->orig, "testing",
- single_variable)) &&
- GNUNET_CONFIGURATION_get_value_number (ctx->orig, "testing",
- per_host_variable,
- &num_per_host))
+ else if ((ival != 0) && (GNUNET_YES
+ == GNUNET_CONFIGURATION_get_value_yesno (ctx->orig, "testing",
+ single_variable))
+ && GNUNET_CONFIGURATION_get_value_number (ctx->orig, "testing",
+ per_host_variable,
+ &num_per_host))
{
- GNUNET_snprintf (cval, sizeof (cval), "%u", ival + ctx->fdnum % num_per_host);
+ GNUNET_snprintf (cval, sizeof(cval), "%u", ival + ctx->fdnum
+ % num_per_host);
value = cval;
}
}
if (0 == strcmp (option, "UNIXPATH"))
{
- if (GNUNET_YES !=
- GNUNET_CONFIGURATION_get_value_yesno (ctx->orig, "testing",
- single_variable))
+ if (GNUNET_YES != GNUNET_CONFIGURATION_get_value_yesno (ctx->orig,
+ "testing",
+ single_variable))
{
- GNUNET_snprintf (uval,
- sizeof (uval),
- "/tmp/test-service-%s-%u", section, ctx->upnum++);
+ GNUNET_snprintf (uval, sizeof(uval), "/tmp/test-service-%s-%u",
+ section, ctx->upnum++);
value = uval;
}
- else if ((GNUNET_YES ==
- GNUNET_CONFIGURATION_get_value_number (ctx->orig, "testing",
- per_host_variable,
- &num_per_host)) && (num_per_host > 0))
+ else if ((GNUNET_YES
+ == GNUNET_CONFIGURATION_get_value_number (ctx->orig, "testing",
+ per_host_variable,
+ &num_per_host))
+ && (num_per_host > 0))
{
- GNUNET_snprintf (uval,
- sizeof (uval),
- "/tmp/test-service-%s-%u",
+ GNUNET_snprintf (uval, sizeof(uval), "/tmp/test-service-%s-%u",
section, ctx->fdnum % num_per_host);
value = uval;
}
GNUNET_CONFIGURATION_set_value_string (ctx->ret, section, option, value);
}
-
/**
* Create a new configuration using the given configuration
* as a template; however, each PORT in the existing cfg
* @return new configuration, NULL on error
*/
static struct GNUNET_CONFIGURATION_Handle *
-make_config (const struct GNUNET_CONFIGURATION_Handle *cfg,
- uint32_t off,
- uint16_t * port,
- uint32_t * upnum, const char *hostname,
- uint32_t * fdnum)
+make_config(const struct GNUNET_CONFIGURATION_Handle *cfg, uint32_t off,
+ uint16_t * port, uint32_t * upnum, const char *hostname, uint32_t * fdnum)
{
struct UpdateContext uc;
uint16_t orig;
return NULL;
}
- if (GNUNET_CONFIGURATION_get_value_string
- (cfg, "testing", "control_host", &control_host) == GNUNET_OK)
+ if (GNUNET_CONFIGURATION_get_value_string (cfg, "testing", "control_host",
+ &control_host) == GNUNET_OK)
{
if (hostname != NULL)
GNUNET_asprintf (&allowed_hosts, "%s; 127.0.0.1; %s;", control_host,
"ACCEPT_FROM", allowed_hosts);
GNUNET_CONFIGURATION_set_value_string (uc.ret, "core", "UNIXPATH", "");
- GNUNET_CONFIGURATION_set_value_string (uc.ret, "transport", "UNIXPATH", "");
+ GNUNET_CONFIGURATION_set_value_string (uc.ret, "transport", "UNIXPATH",
+ "");
GNUNET_CONFIGURATION_set_value_string (uc.ret, "dht", "UNIXPATH", "");
- GNUNET_CONFIGURATION_set_value_string (uc.ret, "statistics", "UNIXPATH", "");
+ GNUNET_CONFIGURATION_set_value_string (uc.ret, "statistics", "UNIXPATH",
+ "");
GNUNET_free_non_null (control_host);
GNUNET_free (allowed_hosts);
}
-
/* arm needs to know to allow connections from the host on which it is running,
* otherwise gnunet-arm is unable to connect to it in some instances */
if (hostname != NULL)
{
GNUNET_asprintf (&allowed_hosts, "%s; 127.0.0.1;", hostname);
- GNUNET_CONFIGURATION_set_value_string (uc.ret, "transport-udp",
- "BINDTO", hostname);
- GNUNET_CONFIGURATION_set_value_string (uc.ret, "transport-tcp",
- "BINDTO", hostname);
+ GNUNET_CONFIGURATION_set_value_string (uc.ret, "transport-udp", "BINDTO",
+ hostname);
+ GNUNET_CONFIGURATION_set_value_string (uc.ret, "transport-tcp", "BINDTO",
+ hostname);
GNUNET_CONFIGURATION_set_value_string (uc.ret, "arm", "ACCEPT_FROM",
allowed_hosts);
GNUNET_free (allowed_hosts);
}
else
{
- GNUNET_CONFIGURATION_set_value_string (uc.ret, "transport-tcp",
- "BINDTO", "127.0.0.1");
- GNUNET_CONFIGURATION_set_value_string (uc.ret, "transport-udp",
- "BINDTO", "127.0.0.1");
+ GNUNET_CONFIGURATION_set_value_string (uc.ret, "transport-tcp", "BINDTO",
+ "127.0.0.1");
+ GNUNET_CONFIGURATION_set_value_string (uc.ret, "transport-udp", "BINDTO",
+ "127.0.0.1");
}
*port = (uint16_t) uc.nport;
*
*/
static unsigned int
-remove_connections (struct GNUNET_TESTING_PeerGroup *pg,
- unsigned int first, unsigned int second,
- enum PeerLists list, unsigned int check)
+remove_connections(struct GNUNET_TESTING_PeerGroup *pg, unsigned int first,
+ unsigned int second, enum PeerLists list, unsigned int check)
{
int removed;
#if OLD
removed = 0;
#if OLD
switch (list)
- {
+ {
case ALLOWED:
first_list = &pg->peers[first].allowed_peers_head;
second_list = &pg->peers[second].allowed_peers_head;
default:
GNUNET_break(0);
return 0;
- }
+ }
first_iter = *first_list;
while (first_iter != NULL)
#else
if (GNUNET_YES ==
GNUNET_CONTAINER_multihashmap_contains (pg->peers[first].blacklisted_peers,
- &hash_second))
+ &hash_second))
{
GNUNET_CONTAINER_multihashmap_remove_all (pg->peers[first].blacklisted_peers,
- &hash_second);
+ &hash_second);
}
if (GNUNET_YES ==
GNUNET_CONTAINER_multihashmap_contains (pg->peers[second].blacklisted_peers,
- &hash_first))
+ &hash_first))
{
GNUNET_CONTAINER_multihashmap_remove_all (pg->peers[second].blacklisted_peers,
- &hash_first);
+ &hash_first);
}
#endif
*
*/
static unsigned int
-add_connections (struct GNUNET_TESTING_PeerGroup *pg,
- unsigned int first, unsigned int second,
- enum PeerLists list,
- unsigned int check)
+add_connections(struct GNUNET_TESTING_PeerGroup *pg, unsigned int first,
+ unsigned int second, enum PeerLists list, unsigned int check)
{
int added;
int add_first;
#if OLD
switch (list)
- {
+ {
case ALLOWED:
first_list = &pg->peers[first].allowed_peers_head;
second_list = &pg->peers[second].allowed_peers_head;
default:
GNUNET_break(0);
return 0;
- }
+ }
add_first = GNUNET_YES;
add_second = GNUNET_YES;
#else
if (GNUNET_NO ==
GNUNET_CONTAINER_multihashmap_contains (pg->peers[first].blacklisted_peers,
- &hash_second))
+ &hash_second))
{
add_first = GNUNET_YES;
}
if (GNUNET_NO ==
GNUNET_CONTAINER_multihashmap_contains (pg->peers[second].blacklisted_peers,
- &hash_first))
+ &hash_first))
{
add_second = GNUNET_YES;
}
GNUNET_CONTAINER_DLL_insert(*first_list, *first_tail, new_first);
#else
GNUNET_assert (GNUNET_OK ==
- GNUNET_CONTAINER_multihashmap_put (pg->
- peers
- [first].blacklisted_peers,
- &hash_second,
- pg->
- peers[second].daemon,
- GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+ GNUNET_CONTAINER_multihashmap_put (pg->
+ peers
+ [first].blacklisted_peers,
+ &hash_second,
+ pg->
+ peers[second].daemon,
+ GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
#endif
pg->peers[first].num_connections++;
added++;
GNUNET_CONTAINER_DLL_insert(*second_list, *second_tail, new_second);
#else
GNUNET_assert (GNUNET_OK ==
- GNUNET_CONTAINER_multihashmap_put (pg->
- peers
- [second].blacklisted_peers,
- &hash_first,
- pg->
- peers[first].daemon,
- GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+ GNUNET_CONTAINER_multihashmap_put (pg->
+ peers
+ [second].blacklisted_peers,
+ &hash_first,
+ pg->
+ peers[first].daemon,
+ GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
#endif
pg->peers[second].num_connections++;
added++;
return added;
}
-
/**
* Scale free network construction as described in:
*
* @return the number of connections created
*/
static unsigned int
-create_scale_free (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
+create_scale_free(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
{
unsigned int total_connections;
previous_total_connections = total_connections;
for (i = 0; i < outer_count; i++)
{
- probability =
- pg->peers[i].num_connections /
- (double) previous_total_connections;
- random =
- ((double)
- GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
- UINT64_MAX)) / ((double) UINT64_MAX);
+ probability = pg->peers[i].num_connections
+ / (double) previous_total_connections;
+ random
+ = ((double) GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
+ UINT64_MAX))
+ / ((double) UINT64_MAX);
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Considering connecting peer %d to peer %d\n",
- outer_count, i);
+ "Considering connecting peer %d to peer %d\n",
+ outer_count, i);
#endif
if (random < probability)
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Connecting peer %d to peer %d\n", outer_count, i);
+ "Connecting peer %d to peer %d\n", outer_count, i);
#endif
total_connections += proc (pg, outer_count, i, list, GNUNET_YES);
}
*
*/
static unsigned int
-create_small_world_ring (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
+create_small_world_ring(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
{
unsigned int i, j;
int nodeToConnect;
unsigned int useAnd;
int connect_attempts;
- logNModifier = 0.5; /* FIXME: default value? */
- if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg,
- "TESTING",
+ logNModifier = 0.5; /* FIXME: default value? */
+ if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg, "TESTING",
"PERCENTAGE",
&p_string))
{
if (sscanf (p_string, "%lf", &logNModifier) != 1)
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ GNUNET_log (
+ GNUNET_ERROR_TYPE_WARNING,
_
("Invalid value `%s' for option `%s' in section `%s': expected float\n"),
p_string, "LOGNMODIFIER", "TESTING");
GNUNET_free (p_string);
}
- probability = 0.5; /* FIXME: default percentage? */
- if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg,
- "TESTING",
+ probability = 0.5; /* FIXME: default percentage? */
+ if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg, "TESTING",
"PROBABILITY",
&p_string))
{
if (sscanf (p_string, "%lf", &probability) != 1)
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ GNUNET_log (
+ GNUNET_ERROR_TYPE_WARNING,
_
("Invalid value `%s' for option `%s' in section `%s': expected float\n"),
p_string, "PERCENTAGE", "TESTING");
if (connsPerPeer % 2 == 1)
connsPerPeer += 1;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Target is %d connections per peer."), connsPerPeer);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Target is %d connections per peer."),
+ connsPerPeer);
smallWorldConnections = 0;
connect_attempts = 0;
for (j = 0; j < connsPerPeer / 2; j++)
{
- random =
- ((double)
- GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
- UINT64_MAX) / ((double) UINT64_MAX));
+ random
+ = ((double) GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
+ UINT64_MAX)
+ / ((double) UINT64_MAX));
if (random < probability)
{
/* Connect to uniformly selected random peer */
- randomPeer =
- GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
- pg->total);
- while ((((randomPeer < max) && (randomPeer > min))
- && (useAnd == 0)) || (((randomPeer > min)
- || (randomPeer < max))
- && (useAnd == 1)))
- {
- randomPeer =
- GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
+ randomPeer
+ = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
pg->total);
+ while ((((randomPeer < max) && (randomPeer > min)) && (useAnd
+ == 0)) || (((randomPeer > min) || (randomPeer < max))
+ && (useAnd == 1)))
+ {
+ randomPeer
+ = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
+ pg->total);
}
- smallWorldConnections += proc (pg, i, randomPeer, list, GNUNET_YES);
+ smallWorldConnections += proc (pg, i, randomPeer, list,
+ GNUNET_YES);
}
else
{
*
*/
static unsigned int
-create_nated_internet (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
+create_nated_internet(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
{
unsigned int outer_count, inner_count;
unsigned int cutoff;
double nat_percentage;
char *p_string;
- nat_percentage = 0.6; /* FIXME: default percentage? */
- if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg,
- "TESTING",
+ nat_percentage = 0.6; /* FIXME: default percentage? */
+ if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg, "TESTING",
"PERCENTAGE",
&p_string))
{
if (sscanf (p_string, "%lf", &nat_percentage) != 1)
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ GNUNET_log (
+ GNUNET_ERROR_TYPE_WARNING,
_
("Invalid value `%s' for option `%s' in section `%s': expected float\n"),
p_string, "PERCENTAGE", "TESTING");
connect_attempts = 0;
for (outer_count = 0; outer_count < pg->total - 1; outer_count++)
{
- for (inner_count = outer_count + 1; inner_count < pg->total;
- inner_count++)
+ for (inner_count = outer_count + 1; inner_count < pg->total; inner_count++)
{
if ((outer_count > cutoff) || (inner_count > cutoff))
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Connecting peer %d to peer %d\n",
- outer_count, inner_count);
+ "Connecting peer %d to peer %d\n",
+ outer_count, inner_count);
#endif
- connect_attempts += proc (pg, outer_count, inner_count, list, GNUNET_YES);
+ connect_attempts += proc (pg, outer_count, inner_count, list,
+ GNUNET_YES);
}
}
}
*
*/
static unsigned int
-create_nated_internet_copy (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_TESTING_ConnectionProcessor proc,
- enum PeerLists list)
+create_nated_internet_copy(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
{
unsigned int outer_count, inner_count;
unsigned int cutoff;
unsigned int count;
struct ProgressMeter *conn_meter;
- nat_percentage = 0.6; /* FIXME: default percentage? */
- if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg,
- "TESTING",
+ nat_percentage = 0.6; /* FIXME: default percentage? */
+ if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg, "TESTING",
"PERCENTAGE",
&p_string))
{
if (sscanf (p_string, "%lf", &nat_percentage) != 1)
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ GNUNET_log (
+ GNUNET_ERROR_TYPE_WARNING,
_
("Invalid value `%s' for option `%s' in section `%s': expected float\n"),
p_string, "PERCENTAGE", "TESTING");
count = 0;
for (outer_count = 0; outer_count < pg->total - 1; outer_count++)
{
- for (inner_count = outer_count + 1; inner_count < pg->total;
- inner_count++)
+ for (inner_count = outer_count + 1; inner_count < pg->total; inner_count++)
{
if ((outer_count > cutoff) || (inner_count > cutoff))
{
}
}
}
- conn_meter = create_meter(count, "NAT COPY", GNUNET_YES);
+ conn_meter = create_meter (count, "NAT COPY", GNUNET_YES);
connect_attempts = 0;
for (outer_count = 0; outer_count < pg->total - 1; outer_count++)
{
- for (inner_count = outer_count + 1; inner_count < pg->total;
- inner_count++)
+ for (inner_count = outer_count + 1; inner_count < pg->total; inner_count++)
{
if ((outer_count > cutoff) || (inner_count > cutoff))
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Connecting peer %d to peer %d\n",
- outer_count, inner_count);
+ "Connecting peer %d to peer %d\n",
+ outer_count, inner_count);
#endif
- connect_attempts += proc (pg, outer_count, inner_count, list, GNUNET_YES);
- add_connections(pg, outer_count, inner_count, ALLOWED, GNUNET_NO);
- update_meter(conn_meter);
+ connect_attempts += proc (pg, outer_count, inner_count, list,
+ GNUNET_YES);
+ add_connections (pg, outer_count, inner_count, ALLOWED, GNUNET_NO);
+ update_meter (conn_meter);
}
}
}
- free_meter(conn_meter);
+ free_meter (conn_meter);
return connect_attempts;
}
*
*/
static unsigned int
-create_small_world (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
+create_small_world(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
{
unsigned int i, j, k;
unsigned int square;
rows = square;
cols = square;
- percentage = 0.5; /* FIXME: default percentage? */
- if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg,
- "TESTING",
+ percentage = 0.5; /* FIXME: default percentage? */
+ if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg, "TESTING",
"PERCENTAGE",
&p_string))
{
if (sscanf (p_string, "%lf", &percentage) != 1)
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ GNUNET_log (
+ GNUNET_ERROR_TYPE_WARNING,
_
("Invalid value `%s' for option `%s' in section `%s': expected float\n"),
p_string, "PERCENTAGE", "TESTING");
}
if (percentage < 0.0)
{
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ GNUNET_log (
+ GNUNET_ERROR_TYPE_WARNING,
_
("Invalid value `%s' for option `%s' in section `%s': got %f, needed value greater than 0\n"),
"PERCENTAGE", "TESTING", percentage);
percentage = 0.5;
}
- probability = 0.5; /* FIXME: default percentage? */
- if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg,
- "TESTING",
+ probability = 0.5; /* FIXME: default percentage? */
+ if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg, "TESTING",
"PROBABILITY",
&p_string))
{
if (sscanf (p_string, "%lf", &probability) != 1)
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ GNUNET_log (
+ GNUNET_ERROR_TYPE_WARNING,
_
("Invalid value `%s' for option `%s' in section `%s': expected float\n"),
p_string, "PROBABILITY", "TESTING");
}
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _
- ("Connecting nodes in 2d torus topology: %u rows %u columns\n"),
- rows, cols);
+ _
+ ("Connecting nodes in 2d torus topology: %u rows %u columns\n"),
+ rows, cols);
#endif
connect_attempts = 0;
natLog = log (pg->total);
#if VERBOSE_TESTING > 2
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("natural log of %d is %d, will run %d iterations\n"),
- pg->total, natLog, (int) (natLog * percentage));
+ _("natural log of %d is %d, will run %d iterations\n"),
+ pg->total, natLog, (int) (natLog * percentage));
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Total connections added thus far: %u!\n"), connect_attempts);
+ _("Total connections added thus far: %u!\n"), connect_attempts);
#endif
smallWorldConnections = 0;
small_world_it = (unsigned int) (natLog * percentage);
node2Row = k / cols;
node2Col = k - (node2Row * cols);
/* Simple Cartesian distance */
- distance =
- abs (node1Row - node2Row) + abs (node1Col - node2Col);
+ distance = abs (node1Row - node2Row) + abs (node1Col - node2Col);
if (distance > 1)
{
/* Calculate probability as 1 over the square of the distance */
probability = 1.0 / (distance * distance);
/* Choose a random value between 0 and 1 */
- random =
- ((double)
- GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
- UINT64_MAX)) /
- ((double) UINT64_MAX);
+ random
+ = ((double) GNUNET_CRYPTO_random_u64 (
+ GNUNET_CRYPTO_QUALITY_WEAK,
+ UINT64_MAX))
+ / ((double) UINT64_MAX);
/* If random < probability, then connect the two nodes */
if (random < probability)
smallWorldConnections += proc (pg, j, k, list, GNUNET_YES);
connect_attempts += smallWorldConnections;
#if VERBOSE_TESTING > 2
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Total connections added for small world: %d!\n"),
- smallWorldConnections);
+ _("Total connections added for small world: %d!\n"),
+ smallWorldConnections);
#endif
return connect_attempts;
}
*
*/
static unsigned int
-create_erdos_renyi (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
+create_erdos_renyi(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
{
double temp_rand;
unsigned int outer_count;
double probability;
char *p_string;
- probability = 0.5; /* FIXME: default percentage? */
- if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg,
- "TESTING",
+ probability = 0.5; /* FIXME: default percentage? */
+ if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg, "TESTING",
"PROBABILITY",
&p_string))
{
if (sscanf (p_string, "%lf", &probability) != 1)
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ GNUNET_log (
+ GNUNET_ERROR_TYPE_WARNING,
_
("Invalid value `%s' for option `%s' in section `%s': expected float\n"),
p_string, "PROBABILITY", "TESTING");
connect_attempts = 0;
for (outer_count = 0; outer_count < pg->total - 1; outer_count++)
{
- for (inner_count = outer_count + 1; inner_count < pg->total;
- inner_count++)
+ for (inner_count = outer_count + 1; inner_count < pg->total; inner_count++)
{
- temp_rand =
- ((double)
- GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
- UINT64_MAX)) / ((double) UINT64_MAX);
+ temp_rand
+ = ((double) GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
+ UINT64_MAX))
+ / ((double) UINT64_MAX);
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("rand is %f probability is %f\n"), temp_rand,
- probability);
+ _("rand is %f probability is %f\n"), temp_rand,
+ probability);
#endif
if (temp_rand < probability)
{
- connect_attempts += proc (pg, outer_count, inner_count, list, GNUNET_YES);
+ connect_attempts += proc (pg, outer_count, inner_count, list,
+ GNUNET_YES);
}
}
}
*
*/
static unsigned int
-create_2d_torus (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
+create_2d_torus(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
{
unsigned int i;
unsigned int square;
}
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _
- ("Connecting nodes in 2d torus topology: %u rows %u columns\n"),
- rows, cols);
+ _
+ ("Connecting nodes in 2d torus topology: %u rows %u columns\n"),
+ rows, cols);
#endif
/* Rows and columns are all sorted out, now iterate over all nodes and connect each
* to the node to its right and above. Once this is over, we'll have our torus!
nodeToConnect = i - cols + 1;
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Connecting peer %d to peer %d\n", i, nodeToConnect);
+ "Connecting peer %d to peer %d\n", i, nodeToConnect);
#endif
connect_attempts += proc (pg, i, nodeToConnect, list, GNUNET_YES);
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Connecting peer %d to peer %d\n", i, nodeToConnect);
+ "Connecting peer %d to peer %d\n", i, nodeToConnect);
#endif
connect_attempts += proc (pg, i, nodeToConnect, list, GNUNET_YES);
}
return connect_attempts;
}
-
/**
* Create a topology given a peer group (set of running peers)
* and a connection processor.
*
*/
static unsigned int
-create_clique (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_TESTING_ConnectionProcessor proc,
- enum PeerLists list,
- unsigned int check)
+create_clique(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list,
+ unsigned int check)
{
unsigned int outer_count;
unsigned int inner_count;
struct ProgressMeter *conn_meter;
connect_attempts = 0;
- conn_meter = create_meter((((pg->total * pg->total) + pg->total) / 2) - pg->total, "Create Clique ", GNUNET_YES);
+ conn_meter = create_meter ((((pg->total * pg->total) + pg->total) / 2)
+ - pg->total, "Create Clique ", GNUNET_YES);
for (outer_count = 0; outer_count < pg->total - 1; outer_count++)
{
- for (inner_count = outer_count + 1; inner_count < pg->total;
- inner_count++)
+ for (inner_count = outer_count + 1; inner_count < pg->total; inner_count++)
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Connecting peer %d to peer %d\n",
- outer_count, inner_count);
+ "Connecting peer %d to peer %d\n",
+ outer_count, inner_count);
#endif
connect_attempts += proc (pg, outer_count, inner_count, list, check);
- update_meter(conn_meter);
+ update_meter (conn_meter);
}
}
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Meter has %d left\n", conn_meter->total - conn_meter->completed);
- reset_meter(conn_meter);
- free_meter(conn_meter);
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Meter has %d left\n",
+ conn_meter->total - conn_meter->completed);
+ reset_meter (conn_meter);
+ free_meter (conn_meter);
return connect_attempts;
}
*/
static int
unblacklist_iterator (void *cls,
- const GNUNET_HashCode * key,
- void *value)
-{
- struct UnblacklistContext *un_ctx = cls;
- uint32_t second_pos;
+ const GNUNET_HashCode * key,
+ void *value)
+ {
+ struct UnblacklistContext *un_ctx = cls;
+ uint32_t second_pos;
- uid_from_hash (key, &second_pos);
+ uid_from_hash (key, &second_pos);
- unblacklist_connections(un_ctx->pg, un_ctx->first_uid, second_pos);
+ unblacklist_connections(un_ctx->pg, un_ctx->first_uid, second_pos);
- return GNUNET_YES;
-}
+ return GNUNET_YES;
+ }
#endif
/**
*
*/
static unsigned int
-copy_allowed (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_TESTING_ConnectionProcessor proc)
+copy_allowed(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_TESTING_ConnectionProcessor proc)
{
struct UnblacklistContext un_ctx;
unsigned int count;
iter = pg->peers[count].allowed_peers_head;
while (iter != NULL)
{
- remove_connections(pg, count, iter->index, BLACKLIST, GNUNET_YES);
+ remove_connections (pg, count, iter->index, BLACKLIST, GNUNET_YES);
//unblacklist_connections(pg, count, iter->index);
iter = iter->next;
}
total += GNUNET_CONTAINER_multihashmap_iterate(pg->peers[count].allowed_peers, &unblacklist_iterator, &un_ctx);
#endif
}
- GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Unblacklisted %u peers\n", total);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Unblacklisted %u peers\n", total);
return total;
}
-
/**
* Create a topology given a peer group (set of running peers)
* and a connection processor.
*
*/
static unsigned int
-create_line (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
+create_line(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
{
unsigned int count;
int connect_attempts;
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Connecting peer %d to peer %d\n", count, count + 1);
+ "Connecting peer %d to peer %d\n", count, count + 1);
#endif
connect_attempts += proc (pg, count, count + 1, list, GNUNET_YES);
}
*
*/
static unsigned int
-create_from_file (struct GNUNET_TESTING_PeerGroup *pg,
- char *filename,
- GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
+create_from_file(struct GNUNET_TESTING_PeerGroup *pg, char *filename,
+ GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
{
int connect_attempts;
unsigned int first_peer_index;
data = GNUNET_malloc_large (frstat.st_size);
GNUNET_assert(data != NULL);
- if (frstat.st_size !=
- GNUNET_DISK_fn_read (filename, data, frstat.st_size))
+ if (frstat.st_size != GNUNET_DISK_fn_read (filename, data, frstat.st_size))
{
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Could not read file %s specified for host list, ending test!", filename);
+ GNUNET_log (
+ GNUNET_ERROR_TYPE_ERROR,
+ "Could not read file %s specified for host list, ending test!",
+ filename);
GNUNET_free (data);
return connect_attempts;
}
while (count < frstat.st_size - 1)
{
if ((buf[count] == '\n') || (buf[count] == ' '))
- {
- count++;
- continue;
- }
+ {
+ count++;
+ continue;
+ }
switch (curr_state)
- {
- case NUM_PEERS:
- if (1 != sscanf(&buf[count], "%u", &total_peers))
- {
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Failed to read number of peers from topology file!\n");
- GNUNET_free_non_null(data);
- return connect_attempts;
- }
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Read %u total peers in topology\n", total_peers);
- GNUNET_assert(total_peers == pg->total);
- curr_state = PEER_INDEX;
- while((buf[count] != '\n') && (count < frstat.st_size - 1))
- count++;
+ {
+ case NUM_PEERS:
+ if (1 != sscanf (&buf[count], "%u", &total_peers))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Failed to read number of peers from topology file!\n");
+ GNUNET_free_non_null(data);
+ return connect_attempts;
+ }
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Read %u total peers in topology\n", total_peers);
+ GNUNET_assert(total_peers == pg->total);
+ curr_state = PEER_INDEX;
+ while ((buf[count] != '\n') && (count < frstat.st_size - 1))
count++;
- break;
- case PEER_INDEX:
- if (1 != sscanf(&buf[count], "%u", &first_peer_index))
- {
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Failed to read peer index from topology file!\n");
- GNUNET_free_non_null(data);
- return connect_attempts;
- }
- while((buf[count] != ':') && (count < frstat.st_size - 1))
- count++;
+ count++;
+ break;
+ case PEER_INDEX:
+ if (1 != sscanf (&buf[count], "%u", &first_peer_index))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Failed to read peer index from topology file!\n");
+ GNUNET_free_non_null(data);
+ return connect_attempts;
+ }
+ while ((buf[count] != ':') && (count < frstat.st_size - 1))
count++;
+ count++;
+ curr_state = OTHER_PEER_INDEX;
+ break;
+ case COLON:
+ if (1 == sscanf (&buf[count], ":"))
curr_state = OTHER_PEER_INDEX;
- break;
- case COLON:
- if (1 == sscanf(&buf[count], ":"))
- curr_state = OTHER_PEER_INDEX;
+ count++;
+ break;
+ case OTHER_PEER_INDEX:
+ if (1 != sscanf (&buf[count], "%u", &second_peer_index))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Failed to peer index from topology file!\n");
+ GNUNET_free_non_null(data);
+ return connect_attempts;
+ }
+ /* Assume file is written with first peer 1, but array index is 0 */
+ connect_attempts += proc (pg, first_peer_index - 1, second_peer_index
+ - 1, list, GNUNET_YES);
+ while ((buf[count] != '\n') && (buf[count] != ',') && (count
+ < frstat.st_size - 1))
count++;
- break;
- case OTHER_PEER_INDEX:
- if (1 != sscanf(&buf[count], "%u", &second_peer_index))
- {
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Failed to peer index from topology file!\n");
- GNUNET_free_non_null(data);
- return connect_attempts;
- }
- /* Assume file is written with first peer 1, but array index is 0 */
- connect_attempts += proc (pg, first_peer_index - 1, second_peer_index - 1, list, GNUNET_YES);
- while((buf[count] != '\n') && (buf[count] != ',') && (count < frstat.st_size - 1))
- count++;
- if (buf[count] == '\n')
+ if (buf[count] == '\n')
{
curr_state = PEER_INDEX;
}
- else if (buf[count] != ',')
+ else if (buf[count] != ',')
{
curr_state = OTHER_PEER_INDEX;
}
- count++;
- break;
- default:
- GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Found bad data in topology file while in state %d!\n", curr_state);
- GNUNET_break(0);
- return connect_attempts;
- }
+ count++;
+ break;
+ default:
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Found bad data in topology file while in state %d!\n",
+ curr_state);
+ GNUNET_break(0);
+ return connect_attempts;
+ }
}
#if 0
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Connecting peer %d to peer %d\n", first_peer_index, second_peer_index);
+ "Connecting peer %d to peer %d\n", first_peer_index, second_peer_index);
#endif
connect_attempts += proc (pg, first_peer_index, second_peer_index);
}
*
*/
static unsigned int
-create_ring (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
+create_ring(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
{
unsigned int count;
int connect_attempts;
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Connecting peer %d to peer %d\n", count, count + 1);
+ "Connecting peer %d to peer %d\n", count, count + 1);
#endif
connect_attempts += proc (pg, count, count + 1, list, GNUNET_YES);
}
*/
static int
friend_file_iterator (void *cls, const GNUNET_HashCode * key, void *value)
-{
- FILE *temp_friend_handle = cls;
- struct GNUNET_TESTING_Daemon *peer = value;
- struct GNUNET_PeerIdentity *temppeer;
- struct GNUNET_CRYPTO_HashAsciiEncoded peer_enc;
+ {
+ FILE *temp_friend_handle = cls;
+ struct GNUNET_TESTING_Daemon *peer = value;
+ struct GNUNET_PeerIdentity *temppeer;
+ struct GNUNET_CRYPTO_HashAsciiEncoded peer_enc;
- temppeer = &peer->id;
- GNUNET_CRYPTO_hash_to_enc (&temppeer->hashPubKey, &peer_enc);
- fprintf (temp_friend_handle, "%s\n", (char *) &peer_enc);
+ temppeer = &peer->id;
+ GNUNET_CRYPTO_hash_to_enc (&temppeer->hashPubKey, &peer_enc);
+ fprintf (temp_friend_handle, "%s\n", (char *) &peer_enc);
- return GNUNET_YES;
-}
+ return GNUNET_YES;
+ }
struct BlacklistContext
-{
- /*
- * The (open) file handle to write to
- */
- FILE *temp_file_handle;
-
- /*
- * The transport that this peer will be blacklisted on.
- */
- char *transport;
-};
+ {
+ /*
+ * The (open) file handle to write to
+ */
+ FILE *temp_file_handle;
+
+ /*
+ * The transport that this peer will be blacklisted on.
+ */
+ char *transport;
+ };
/**
* Iterator for writing blacklist data to appropriate files.
*/
static int
blacklist_file_iterator (void *cls, const GNUNET_HashCode * key, void *value)
-{
- struct BlacklistContext *blacklist_ctx = cls;
- struct GNUNET_TESTING_Daemon *peer = value;
- struct GNUNET_PeerIdentity *temppeer;
- struct GNUNET_CRYPTO_HashAsciiEncoded peer_enc;
+ {
+ struct BlacklistContext *blacklist_ctx = cls;
+ struct GNUNET_TESTING_Daemon *peer = value;
+ struct GNUNET_PeerIdentity *temppeer;
+ struct GNUNET_CRYPTO_HashAsciiEncoded peer_enc;
- temppeer = &peer->id;
- GNUNET_CRYPTO_hash_to_enc (&temppeer->hashPubKey, &peer_enc);
- GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Writing entry %s:%s to file\n", blacklist_ctx->transport, (char *) &peer_enc);
- fprintf (blacklist_ctx->temp_file_handle, "%s:%s\n",
- blacklist_ctx->transport, (char *) &peer_enc);
+ temppeer = &peer->id;
+ GNUNET_CRYPTO_hash_to_enc (&temppeer->hashPubKey, &peer_enc);
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Writing entry %s:%s to file\n", blacklist_ctx->transport, (char *) &peer_enc);
+ fprintf (blacklist_ctx->temp_file_handle, "%s:%s\n",
+ blacklist_ctx->transport, (char *) &peer_enc);
- return GNUNET_YES;
-}
+ return GNUNET_YES;
+ }
#endif
-
/*
* Create the friend files based on the PeerConnection's
* of each peer in the peer group, and copy the files
* @param pg the peer group we are dealing with
*/
static int
-create_and_copy_friend_files (struct GNUNET_TESTING_PeerGroup *pg)
+create_and_copy_friend_files(struct GNUNET_TESTING_PeerGroup *pg)
{
FILE *temp_friend_handle;
unsigned int pg_iter;
conn_iter = pg->peers[pg_iter].allowed_peers_head;
while (conn_iter != NULL)
{
- GNUNET_CRYPTO_hash_to_enc (&pg->peers[conn_iter->index].daemon->id.hashPubKey, &peer_enc);
+ GNUNET_CRYPTO_hash_to_enc (
+ &pg->peers[conn_iter->index].daemon->id.hashPubKey,
+ &peer_enc);
fprintf (temp_friend_handle, "%s\n", (char *) &peer_enc);
conn_iter = conn_iter->next;
}
#else
GNUNET_CONTAINER_multihashmap_iterate (pg->peers[pg_iter].allowed_peers,
- &friend_file_iterator,
- temp_friend_handle);
+ &friend_file_iterator,
+ temp_friend_handle);
#endif
fclose (temp_friend_handle);
- if (GNUNET_OK !=
- GNUNET_CONFIGURATION_get_value_string (pg->peers[pg_iter].
- daemon->cfg, "PATHS",
- "SERVICEHOME",
- &temp_service_path))
+ if (GNUNET_OK
+ != GNUNET_CONFIGURATION_get_value_string (
+ pg->peers[pg_iter]. daemon->cfg,
+ "PATHS", "SERVICEHOME",
+ &temp_service_path))
{
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ GNUNET_log (
+ GNUNET_ERROR_TYPE_WARNING,
_
("No `%s' specified in peer configuration in section `%s', cannot copy friends file!\n"),
"SERVICEHOME", "PATHS");
if (UNLINK (mytemp) != 0)
GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING, "unlink",
- mytemp);
+ mytemp);
GNUNET_free (mytemp);
break;
}
- if (pg->peers[pg_iter].daemon->hostname == NULL) /* Local, just copy the file */
+ if (pg->peers[pg_iter].daemon->hostname == NULL) /* Local, just copy the file */
{
GNUNET_asprintf (&arg, "%s/friends", temp_service_path);
- procarr[pg_iter] = GNUNET_OS_start_process (NULL, NULL, "mv",
- "mv", mytemp, arg,
- NULL);
+ procarr[pg_iter] = GNUNET_OS_start_process (NULL, NULL, "mv", "mv",
+ mytemp, arg, NULL);
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Copying file with command cp %s %s\n"), mytemp, arg);
+ _("Copying file with command cp %s %s\n"), mytemp, arg);
#endif
- ret = GNUNET_OS_process_wait(procarr[pg_iter]); /* FIXME: schedule this, throttle! */
+ ret = GNUNET_OS_process_wait (procarr[pg_iter]); /* FIXME: schedule this, throttle! */
GNUNET_OS_process_close (procarr[pg_iter]);
GNUNET_free (arg);
}
- else /* Remote, scp the file to the correct place */
+ else /* Remote, scp the file to the correct place */
{
if (NULL != pg->peers[pg_iter].daemon->username)
GNUNET_asprintf (&arg, "%s@%s:%s/friends",
GNUNET_asprintf (&arg, "%s:%s/friends",
pg->peers[pg_iter].daemon->hostname,
temp_service_path);
- procarr[pg_iter] =
- GNUNET_OS_start_process (NULL, NULL, "scp", "scp", mytemp, arg,
- NULL);
+ procarr[pg_iter] = GNUNET_OS_start_process (NULL, NULL, "scp", "scp",
+ mytemp, arg, NULL);
- ret = GNUNET_OS_process_wait(procarr[pg_iter]); /* FIXME: schedule this, throttle! */
+ ret = GNUNET_OS_process_wait (procarr[pg_iter]); /* FIXME: schedule this, throttle! */
GNUNET_OS_process_close (procarr[pg_iter]);
if (ret != GNUNET_OK)
return ret;
procarr[pg_iter] = NULL;
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Copying file with command scp %s %s\n"), mytemp,
- arg);
+ _("Copying file with command scp %s %s\n"), mytemp,
+ arg);
#endif
GNUNET_free (arg);
}
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Checking copy status of file %d\n"), pg_iter);
+ _("Checking copy status of file %d\n"), pg_iter);
#endif
if (procarr[pg_iter] != NULL) /* Check for already completed! */
{
ret = GNUNET_SYSERR;
}
else if ((type != GNUNET_OS_PROCESS_EXITED)
- || (return_code != 0))
+ || (return_code != 0))
{
ret = GNUNET_SYSERR;
}
procarr[pg_iter] = NULL;
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("File %d copied\n"), pg_iter);
+ _("File %d copied\n"), pg_iter);
#endif
}
}
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Finished copying all friend files!\n"));
+ _("Finished copying all friend files!\n"));
#endif
#endif
GNUNET_free (procarr);
return ret;
}
-
/*
* Create the blacklist files based on the PeerConnection's
* of each peer in the peer group, and copy the files
* @param transports space delimited list of transports to blacklist
*/
static int
-create_and_copy_blacklist_files (struct GNUNET_TESTING_PeerGroup *pg,
- const char *transports)
+create_and_copy_blacklist_files(struct GNUNET_TESTING_PeerGroup *pg,
+ const char *transports)
{
FILE *temp_file_handle;
unsigned int pg_iter;
for (i = 0; i < transport_len; i++)
{
if ((temp_transports[i] == ' ') && (pos == NULL))
- continue; /* At start of string (whitespace) */
+ continue; /* At start of string (whitespace) */
else if ((temp_transports[i] == ' ') || (temp_transports[i] == '\0')) /* At end of string */
{
temp_transports[i] = '\0';
conn_iter = pg->peers[pg_iter].blacklisted_peers_head;
while (conn_iter != NULL)
{
- GNUNET_CRYPTO_hash_to_enc (&pg->peers[conn_iter->index].daemon->id.hashPubKey, &peer_enc);
+ GNUNET_CRYPTO_hash_to_enc (
+ &pg->peers[conn_iter->index].daemon->id.hashPubKey,
+ &peer_enc);
fprintf (temp_file_handle, "%s:%s\n", pos, (char *) &peer_enc);
conn_iter = conn_iter->next;
entry_count++;
#else
blacklist_ctx.transport = pos;
entry_count = GNUNET_CONTAINER_multihashmap_iterate (pg->
- peers
- [pg_iter].blacklisted_peers,
- &blacklist_file_iterator,
- &blacklist_ctx);
+ peers
+ [pg_iter].blacklisted_peers,
+ &blacklist_file_iterator,
+ &blacklist_ctx);
#endif
pos = NULL;
- } /* At beginning of actual string */
+ } /* At beginning of actual string */
else if (pos == NULL)
{
pos = &temp_transports[i];
GNUNET_free (temp_transports);
fclose (temp_file_handle);
- if (GNUNET_OK !=
- GNUNET_CONFIGURATION_get_value_string (pg->peers[pg_iter].
- daemon->cfg, "PATHS",
- "SERVICEHOME",
- &temp_service_path))
+ if (GNUNET_OK
+ != GNUNET_CONFIGURATION_get_value_string (
+ pg->peers[pg_iter]. daemon->cfg,
+ "PATHS", "SERVICEHOME",
+ &temp_service_path))
{
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ GNUNET_log (
+ GNUNET_ERROR_TYPE_WARNING,
_
("No `%s' specified in peer configuration in section `%s', cannot copy friends file!\n"),
"SERVICEHOME", "PATHS");
if (UNLINK (mytemp) != 0)
GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING, "unlink",
- mytemp);
+ mytemp);
GNUNET_free (mytemp);
break;
}
- if (pg->peers[pg_iter].daemon->hostname == NULL) /* Local, just copy the file */
+ if (pg->peers[pg_iter].daemon->hostname == NULL) /* Local, just copy the file */
{
GNUNET_asprintf (&arg, "%s/blacklist", temp_service_path);
- procarr[pg_iter] = GNUNET_OS_start_process (NULL, NULL, "mv",
- "mv", mytemp, arg,
- NULL);
+ procarr[pg_iter] = GNUNET_OS_start_process (NULL, NULL, "mv", "mv",
+ mytemp, arg, NULL);
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Copying file with command cp %s %s\n"), mytemp, arg);
+ _("Copying file with command cp %s %s\n"), mytemp, arg);
#endif
GNUNET_free (arg);
}
- else /* Remote, scp the file to the correct place */
+ else /* Remote, scp the file to the correct place */
{
if (NULL != pg->peers[pg_iter].daemon->username)
GNUNET_asprintf (&arg, "%s@%s:%s/blacklist",
GNUNET_asprintf (&arg, "%s:%s/blacklist",
pg->peers[pg_iter].daemon->hostname,
temp_service_path);
- procarr[pg_iter] =
- GNUNET_OS_start_process (NULL, NULL, "scp", "scp", mytemp, arg,
- NULL);
+ procarr[pg_iter] = GNUNET_OS_start_process (NULL, NULL, "scp", "scp",
+ mytemp, arg, NULL);
- GNUNET_OS_process_wait(procarr[pg_iter]); /* FIXME: add scheduled blacklist file copy that parallelizes file copying! */
+ GNUNET_OS_process_wait (procarr[pg_iter]); /* FIXME: add scheduled blacklist file copy that parallelizes file copying! */
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Copying file with command scp %s %s\n"), mytemp,
- arg);
+ _("Copying file with command scp %s %s\n"), mytemp,
+ arg);
#endif
GNUNET_free (arg);
}
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Checking copy status of file %d\n"), pg_iter);
+ _("Checking copy status of file %d\n"), pg_iter);
#endif
if (procarr[pg_iter] != NULL) /* Check for already completed! */
{
- if (GNUNET_OS_process_status
- (procarr[pg_iter], &type, &return_code) != GNUNET_OK)
+ if (GNUNET_OS_process_status (procarr[pg_iter], &type,
+ &return_code) != GNUNET_OK)
{
ret = GNUNET_SYSERR;
}
- else if ((type != GNUNET_OS_PROCESS_EXITED)
- || (return_code != 0))
+ else if ((type != GNUNET_OS_PROCESS_EXITED) || (return_code != 0))
{
ret = GNUNET_SYSERR;
}
procarr[pg_iter] = NULL;
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("File %d copied\n"), pg_iter);
+ _("File %d copied\n"), pg_iter);
#endif
}
}
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Finished copying all blacklist files!\n"));
+ _("Finished copying all blacklist files!\n"));
#endif
GNUNET_free (procarr);
return ret;
/* Forward Declaration */
static void
-schedule_connect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
+schedule_connect(void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
/**
* Choose a random peer's next connection to create, and
*
* @param ct_ctx the overall connection context
*/
-static void preschedule_connect(struct GNUNET_TESTING_PeerGroup *pg)
+static void
+preschedule_connect(struct GNUNET_TESTING_PeerGroup *pg)
{
struct ConnectTopologyContext *ct_ctx = &pg->ct_ctx;
struct PeerConnection *connection_iter;
if (ct_ctx->remaining_connections == 0)
return;
- random_peer = GNUNET_CRYPTO_random_u32(GNUNET_CRYPTO_QUALITY_WEAK, pg->total);
+ random_peer
+ = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, pg->total);
while (pg->peers[random_peer].connect_peers_head == NULL)
- random_peer = GNUNET_CRYPTO_random_u32(GNUNET_CRYPTO_QUALITY_WEAK, pg->total);
+ random_peer = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
+ pg->total);
connection_iter = pg->peers[random_peer].connect_peers_head;
connect_context = GNUNET_malloc (sizeof (struct ConnectContext));
/* Forward declaration */
static void schedule_send_hellos (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
-
/**
* Close connections and free the hello context.
*
*/
static void
free_hello_context (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
- struct SendHelloContext *send_hello_context = cls;
- if (send_hello_context->peer->daemon->server != NULL)
- {
- GNUNET_CORE_disconnect(send_hello_context->peer->daemon->server);
- send_hello_context->peer->daemon->server = NULL;
- }
- if (send_hello_context->peer->daemon->th != NULL)
- {
- GNUNET_TRANSPORT_disconnect(send_hello_context->peer->daemon->th);
- send_hello_context->peer->daemon->th = NULL;
- }
- if (send_hello_context->core_connect_task != GNUNET_SCHEDULER_NO_TASK)
- {
- GNUNET_SCHEDULER_cancel(send_hello_context->core_connect_task);
- send_hello_context->core_connect_task = GNUNET_SCHEDULER_NO_TASK;
- }
- send_hello_context->pg->outstanding_connects--;
- GNUNET_free(send_hello_context);
-}
+ {
+ struct SendHelloContext *send_hello_context = cls;
+ if (send_hello_context->peer->daemon->server != NULL)
+ {
+ GNUNET_CORE_disconnect(send_hello_context->peer->daemon->server);
+ send_hello_context->peer->daemon->server = NULL;
+ }
+ if (send_hello_context->peer->daemon->th != NULL)
+ {
+ GNUNET_TRANSPORT_disconnect(send_hello_context->peer->daemon->th);
+ send_hello_context->peer->daemon->th = NULL;
+ }
+ if (send_hello_context->core_connect_task != GNUNET_SCHEDULER_NO_TASK)
+ {
+ GNUNET_SCHEDULER_cancel(send_hello_context->core_connect_task);
+ send_hello_context->core_connect_task = GNUNET_SCHEDULER_NO_TASK;
+ }
+ send_hello_context->pg->outstanding_connects--;
+ GNUNET_free(send_hello_context);
+ }
/**
* For peers that haven't yet connected, notify
*/
static void
notify_remaining_connections_failed (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
- struct SendHelloContext *send_hello_context = cls;
- struct GNUNET_TESTING_PeerGroup *pg = send_hello_context->pg;
- struct PeerConnection *connection;
+ {
+ struct SendHelloContext *send_hello_context = cls;
+ struct GNUNET_TESTING_PeerGroup *pg = send_hello_context->pg;
+ struct PeerConnection *connection;
- GNUNET_CORE_disconnect(send_hello_context->peer->daemon->server);
- send_hello_context->peer->daemon->server = NULL;
+ GNUNET_CORE_disconnect(send_hello_context->peer->daemon->server);
+ send_hello_context->peer->daemon->server = NULL;
- connection = send_hello_context->peer->connect_peers_head;
+ connection = send_hello_context->peer->connect_peers_head;
- while (connection != NULL)
- {
- if (pg->notify_connection != NULL)
- {
- pg->notify_connection(pg->notify_connection_cls,
- &send_hello_context->peer->daemon->id,
- &pg->peers[connection->index].daemon->id,
- 0, /* FIXME */
- send_hello_context->peer->daemon->cfg,
- pg->peers[connection->index].daemon->cfg,
- send_hello_context->peer->daemon,
- pg->peers[connection->index].daemon,
- "Peers failed to connect (timeout)");
- }
- GNUNET_CONTAINER_DLL_remove(send_hello_context->peer->connect_peers_head, send_hello_context->peer->connect_peers_tail, connection);
- GNUNET_free(connection);
- connection = connection->next;
- }
- GNUNET_SCHEDULER_add_now(&free_hello_context, send_hello_context);
+ while (connection != NULL)
+ {
+ if (pg->notify_connection != NULL)
+ {
+ pg->notify_connection(pg->notify_connection_cls,
+ &send_hello_context->peer->daemon->id,
+ &pg->peers[connection->index].daemon->id,
+ 0, /* FIXME */
+ send_hello_context->peer->daemon->cfg,
+ pg->peers[connection->index].daemon->cfg,
+ send_hello_context->peer->daemon,
+ pg->peers[connection->index].daemon,
+ "Peers failed to connect (timeout)");
+ }
+ GNUNET_CONTAINER_DLL_remove(send_hello_context->peer->connect_peers_head, send_hello_context->peer->connect_peers_tail, connection);
+ GNUNET_free(connection);
+ connection = connection->next;
+ }
+ GNUNET_SCHEDULER_add_now(&free_hello_context, send_hello_context);
#if BAD
- other_peer = &pg->peers[connection->index];
+ other_peer = &pg->peers[connection->index];
#endif
-}
-
+ }
/**
* For peers that haven't yet connected, send
*/
static void
send_core_connect_requests (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
- struct SendHelloContext *send_hello_context = cls;
- struct PeerConnection *conn;
- GNUNET_assert(send_hello_context->peer->daemon->server != NULL);
-
- send_hello_context->core_connect_task = GNUNET_SCHEDULER_NO_TASK;
+ {
+ struct SendHelloContext *send_hello_context = cls;
+ struct PeerConnection *conn;
+ GNUNET_assert(send_hello_context->peer->daemon->server != NULL);
- send_hello_context->connect_attempts++;
- if (send_hello_context->connect_attempts < send_hello_context->pg->ct_ctx.connect_attempts)
- {
- conn = send_hello_context->peer->connect_peers_head;
- while (conn != NULL)
- {
- GNUNET_CORE_peer_request_connect(send_hello_context->peer->daemon->server,
- GNUNET_TIME_relative_get_forever(),
- &send_hello_context->pg->peers[conn->index].daemon->id,
- NULL,
- NULL);
- conn = conn->next;
- }
- send_hello_context->core_connect_task = GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_relative_divide(send_hello_context->pg->ct_ctx.connect_timeout, send_hello_context->pg->ct_ctx.connect_attempts) ,
- &send_core_connect_requests,
- send_hello_context);
- }
- else
- {
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Timeout before all connections created, marking rest as failed!\n");
- GNUNET_SCHEDULER_add_now(¬ify_remaining_connections_failed, send_hello_context);
- }
+ send_hello_context->core_connect_task = GNUNET_SCHEDULER_NO_TASK;
-}
+ send_hello_context->connect_attempts++;
+ if (send_hello_context->connect_attempts < send_hello_context->pg->ct_ctx.connect_attempts)
+ {
+ conn = send_hello_context->peer->connect_peers_head;
+ while (conn != NULL)
+ {
+ GNUNET_CORE_peer_request_connect(send_hello_context->peer->daemon->server,
+ GNUNET_TIME_relative_get_forever(),
+ &send_hello_context->pg->peers[conn->index].daemon->id,
+ NULL,
+ NULL);
+ conn = conn->next;
+ }
+ send_hello_context->core_connect_task = GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_relative_divide(send_hello_context->pg->ct_ctx.connect_timeout, send_hello_context->pg->ct_ctx.connect_attempts) ,
+ &send_core_connect_requests,
+ send_hello_context);
+ }
+ else
+ {
+ GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Timeout before all connections created, marking rest as failed!\n");
+ GNUNET_SCHEDULER_add_now(¬ify_remaining_connections_failed, send_hello_context);
+ }
+ }
/**
* Success, connection is up. Signal client our success.
*/
static void
core_connect_notify (void *cls,
- const struct GNUNET_PeerIdentity *peer,
- const struct GNUNET_TRANSPORT_ATS_Information *atsi)
-{
- struct SendHelloContext *send_hello_context = cls;
- struct PeerConnection *connection;
- struct GNUNET_TESTING_PeerGroup *pg = send_hello_context->pg;
+ const struct GNUNET_PeerIdentity *peer,
+ const struct GNUNET_TRANSPORT_ATS_Information *atsi)
+ {
+ struct SendHelloContext *send_hello_context = cls;
+ struct PeerConnection *connection;
+ struct GNUNET_TESTING_PeerGroup *pg = send_hello_context->pg;
#if BAD
- struct PeerData *other_peer;
+ struct PeerData *other_peer;
#endif
#if DEBUG_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- "Connected peer %s to peer %s\n",
- ctx->d1->shortname, GNUNET_i2s(peer));
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Connected peer %s to peer %s\n",
+ ctx->d1->shortname, GNUNET_i2s(peer));
#endif
- if (0 == memcmp(&send_hello_context->peer->daemon->id, peer, sizeof(struct GNUNET_PeerIdentity)))
+ if (0 == memcmp(&send_hello_context->peer->daemon->id, peer, sizeof(struct GNUNET_PeerIdentity)))
return;
- connection = send_hello_context->peer->connect_peers_head;
+ connection = send_hello_context->peer->connect_peers_head;
#if BAD
- other_peer = NULL;
+ other_peer = NULL;
#endif
- while ((connection != NULL) &&
- (0 != memcmp(&pg->peers[connection->index].daemon->id, peer, sizeof(struct GNUNET_PeerIdentity))))
- {
- connection = connection->next;
- }
+ while ((connection != NULL) &&
+ (0 != memcmp(&pg->peers[connection->index].daemon->id, peer, sizeof(struct GNUNET_PeerIdentity))))
+ {
+ connection = connection->next;
+ }
- if (connection == NULL)
- {
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Connected peer %s to %s, not in list (no problem(?))\n", GNUNET_i2s(peer), send_hello_context->peer->daemon->shortname);
- }
- else
- {
+ if (connection == NULL)
+ {
+ GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Connected peer %s to %s, not in list (no problem(?))\n", GNUNET_i2s(peer), send_hello_context->peer->daemon->shortname);
+ }
+ else
+ {
#if BAD
- other_peer = &pg->peers[connection->index];
+ other_peer = &pg->peers[connection->index];
#endif
- if (pg->notify_connection != NULL)
- {
- pg->notify_connection(pg->notify_connection_cls,
- &send_hello_context->peer->daemon->id,
- peer,
- 0, /* FIXME */
- send_hello_context->peer->daemon->cfg,
- pg->peers[connection->index].daemon->cfg,
- send_hello_context->peer->daemon,
- pg->peers[connection->index].daemon,
- NULL);
- }
- GNUNET_CONTAINER_DLL_remove(send_hello_context->peer->connect_peers_head, send_hello_context->peer->connect_peers_tail, connection);
- GNUNET_free(connection);
- }
+ if (pg->notify_connection != NULL)
+ {
+ pg->notify_connection(pg->notify_connection_cls,
+ &send_hello_context->peer->daemon->id,
+ peer,
+ 0, /* FIXME */
+ send_hello_context->peer->daemon->cfg,
+ pg->peers[connection->index].daemon->cfg,
+ send_hello_context->peer->daemon,
+ pg->peers[connection->index].daemon,
+ NULL);
+ }
+ GNUNET_CONTAINER_DLL_remove(send_hello_context->peer->connect_peers_head, send_hello_context->peer->connect_peers_tail, connection);
+ GNUNET_free(connection);
+ }
#if BAD
- /* Notify of reverse connection and remove from other peers list of outstanding */
- if (other_peer != NULL)
- {
- connection = other_peer->connect_peers_head;
- while ((connection != NULL) &&
- (0 != memcmp(&send_hello_context->peer->daemon->id, &pg->peers[connection->index].daemon->id, sizeof(struct GNUNET_PeerIdentity))))
- {
- connection = connection->next;
- }
- if (connection != NULL)
- {
- if (pg->notify_connection != NULL)
- {
- pg->notify_connection(pg->notify_connection_cls,
- peer,
- &send_hello_context->peer->daemon->id,
- 0, /* FIXME */
- pg->peers[connection->index].daemon->cfg,
- send_hello_context->peer->daemon->cfg,
- pg->peers[connection->index].daemon,
- send_hello_context->peer->daemon,
- NULL);
- }
-
- GNUNET_CONTAINER_DLL_remove(other_peer->connect_peers_head, other_peer->connect_peers_tail, connection);
- GNUNET_free(connection);
- }
- }
+ /* Notify of reverse connection and remove from other peers list of outstanding */
+ if (other_peer != NULL)
+ {
+ connection = other_peer->connect_peers_head;
+ while ((connection != NULL) &&
+ (0 != memcmp(&send_hello_context->peer->daemon->id, &pg->peers[connection->index].daemon->id, sizeof(struct GNUNET_PeerIdentity))))
+ {
+ connection = connection->next;
+ }
+ if (connection != NULL)
+ {
+ if (pg->notify_connection != NULL)
+ {
+ pg->notify_connection(pg->notify_connection_cls,
+ peer,
+ &send_hello_context->peer->daemon->id,
+ 0, /* FIXME */
+ pg->peers[connection->index].daemon->cfg,
+ send_hello_context->peer->daemon->cfg,
+ pg->peers[connection->index].daemon,
+ send_hello_context->peer->daemon,
+ NULL);
+ }
+
+ GNUNET_CONTAINER_DLL_remove(other_peer->connect_peers_head, other_peer->connect_peers_tail, connection);
+ GNUNET_free(connection);
+ }
+ }
#endif
- if (send_hello_context->peer->connect_peers_head == NULL)
- {
- GNUNET_SCHEDULER_add_now(&free_hello_context, send_hello_context);
- }
-}
+ if (send_hello_context->peer->connect_peers_head == NULL)
+ {
+ GNUNET_SCHEDULER_add_now(&free_hello_context, send_hello_context);
+ }
+ }
/**
* Notify of a successful connection to the core service.
*/
void
core_init (void *cls,
- struct GNUNET_CORE_Handle * server,
- const struct GNUNET_PeerIdentity *
- my_identity,
- const struct
- GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *
- publicKey)
-{
- struct SendHelloContext *send_hello_context = cls;
- send_hello_context->core_ready = GNUNET_YES;
-}
-
+ struct GNUNET_CORE_Handle * server,
+ const struct GNUNET_PeerIdentity *
+ my_identity,
+ const struct
+ GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *
+ publicKey)
+ {
+ struct SendHelloContext *send_hello_context = cls;
+ send_hello_context->core_ready = GNUNET_YES;
+ }
/**
* Function called once a hello has been sent
*/
static void
hello_sent_callback (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
- struct SendHelloContext *send_hello_context = cls;
- //unsigned int pg_iter;
- if (tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN)
- {
- GNUNET_free(send_hello_context);
- return;
- }
+ {
+ struct SendHelloContext *send_hello_context = cls;
+ //unsigned int pg_iter;
+ if (tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN)
+ {
+ GNUNET_free(send_hello_context);
+ return;
+ }
- send_hello_context->pg->remaining_hellos--;
+ send_hello_context->pg->remaining_hellos--;
#if DEBUG_TESTING
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Sent HELLO, have %d remaining!\n", send_hello_context->pg->remaining_hellos);
+ GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Sent HELLO, have %d remaining!\n", send_hello_context->pg->remaining_hellos);
#endif
- if (send_hello_context->peer_pos == NULL) /* All HELLOs (for this peer!) have been transmitted! */
- {
+ if (send_hello_context->peer_pos == NULL) /* All HELLOs (for this peer!) have been transmitted! */
+ {
#if DEBUG_TESTING
- GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "All hellos for this peer sent, disconnecting transport!\n");
-#endif
- GNUNET_assert(send_hello_context->peer->daemon->th != NULL);
- GNUNET_TRANSPORT_disconnect(send_hello_context->peer->daemon->th);
- send_hello_context->peer->daemon->th = NULL;
-
- /*if (send_hello_context->pg->remaining_hellos == 0)
- {
- for (pg_iter = 0; pg_iter < send_hello_context->pg->max_outstanding_connections; pg_iter++)
- {
- preschedule_connect(&send_hello_context->pg->ct_ctx);
- }
- }
- */
- GNUNET_assert (send_hello_context->peer->daemon->server == NULL);
- send_hello_context->peer->daemon->server = GNUNET_CORE_connect(send_hello_context->peer->cfg,
- 1,
- send_hello_context,
- &core_init,
- &core_connect_notify,
- NULL,
- NULL,
- NULL, GNUNET_NO,
- NULL, GNUNET_NO,
- no_handlers);
-
- send_hello_context->core_connect_task = GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_relative_divide(send_hello_context->pg->ct_ctx.connect_timeout, send_hello_context->pg->ct_ctx.connect_attempts),
- &send_core_connect_requests,
- send_hello_context);
- }
- else
+ GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "All hellos for this peer sent, disconnecting transport!\n");
+#endif
+ GNUNET_assert(send_hello_context->peer->daemon->th != NULL);
+ GNUNET_TRANSPORT_disconnect(send_hello_context->peer->daemon->th);
+ send_hello_context->peer->daemon->th = NULL;
+
+ /*if (send_hello_context->pg->remaining_hellos == 0)
+ {
+ for (pg_iter = 0; pg_iter < send_hello_context->pg->max_outstanding_connections; pg_iter++)
+ {
+ preschedule_connect(&send_hello_context->pg->ct_ctx);
+ }
+ }
+ */
+ GNUNET_assert (send_hello_context->peer->daemon->server == NULL);
+ send_hello_context->peer->daemon->server = GNUNET_CORE_connect(send_hello_context->peer->cfg,
+ 1,
+ send_hello_context,
+ &core_init,
+ &core_connect_notify,
+ NULL,
+ NULL,
+ NULL, GNUNET_NO,
+ NULL, GNUNET_NO,
+ no_handlers);
+
+ send_hello_context->core_connect_task = GNUNET_SCHEDULER_add_delayed(GNUNET_TIME_relative_divide(send_hello_context->pg->ct_ctx.connect_timeout, send_hello_context->pg->ct_ctx.connect_attempts),
+ &send_core_connect_requests,
+ send_hello_context);
+ }
+ else
GNUNET_SCHEDULER_add_now(&schedule_send_hellos, send_hello_context);
-}
-
+ }
/**
* Connect to a peer, give it all the HELLO's of those peers
* @param ct_ctx the overall connection context
*/
static void schedule_send_hellos (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
- struct SendHelloContext *send_hello_context = cls;
- struct GNUNET_TESTING_PeerGroup *pg = send_hello_context->pg;
+ {
+ struct SendHelloContext *send_hello_context = cls;
+ struct GNUNET_TESTING_PeerGroup *pg = send_hello_context->pg;
- if (tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN)
- {
- GNUNET_free(send_hello_context);
- return;
- }
+ if (tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN)
+ {
+ GNUNET_free(send_hello_context);
+ return;
+ }
- GNUNET_assert(send_hello_context->peer_pos != NULL); /* All of the HELLO sends to be scheduled have been scheduled! */
+ GNUNET_assert(send_hello_context->peer_pos != NULL); /* All of the HELLO sends to be scheduled have been scheduled! */
- if (((send_hello_context->peer->daemon->th == NULL) &&
- (pg->outstanding_connects > pg->max_outstanding_connections)) ||
- (pg->stop_connects == GNUNET_YES))
- {
+ if (((send_hello_context->peer->daemon->th == NULL) &&
+ (pg->outstanding_connects > pg->max_outstanding_connections)) ||
+ (pg->stop_connects == GNUNET_YES))
+ {
#if VERBOSE_TESTING > 2
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _
- ("Delaying connect, we have too many outstanding connections!\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _
+ ("Delaying connect, we have too many outstanding connections!\n"));
#endif
- GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_MILLISECONDS, 100),
- &schedule_send_hellos, send_hello_context);
- }
- else
- {
+ GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
+ (GNUNET_TIME_UNIT_MILLISECONDS, 100),
+ &schedule_send_hellos, send_hello_context);
+ }
+ else
+ {
#if VERBOSE_TESTING > 2
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating connection, outstanding_connections is %d\n"),
- outstanding_connects);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating connection, outstanding_connections is %d\n"),
+ outstanding_connects);
#endif
- if (send_hello_context->peer->daemon->th == NULL)
- {
- pg->outstanding_connects++; /* Actual TRANSPORT, CORE connections! */
- send_hello_context->peer->daemon->th = GNUNET_TRANSPORT_connect(send_hello_context->peer->cfg,
- NULL,
- send_hello_context,
- NULL,
- NULL,
- NULL);
- }
+ if (send_hello_context->peer->daemon->th == NULL)
+ {
+ pg->outstanding_connects++; /* Actual TRANSPORT, CORE connections! */
+ send_hello_context->peer->daemon->th = GNUNET_TRANSPORT_connect(send_hello_context->peer->cfg,
+ NULL,
+ send_hello_context,
+ NULL,
+ NULL,
+ NULL);
+ }
#if DEBUG_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- _("Offering Hello of peer %s to peer %s\n"),
- send_hello_context->peer->daemon->shortname, pg->peers[send_hello_context->peer_pos->index].daemon->shortname);
-#endif
- GNUNET_TRANSPORT_offer_hello(send_hello_context->peer->daemon->th,
- (const struct GNUNET_MessageHeader *)pg->peers[send_hello_context->peer_pos->index].daemon->hello,
- &hello_sent_callback,
- send_hello_context);
- send_hello_context->peer_pos = send_hello_context->peer_pos->next;
- GNUNET_assert(send_hello_context->peer->daemon->th != NULL);
- }
-}
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ _("Offering Hello of peer %s to peer %s\n"),
+ send_hello_context->peer->daemon->shortname, pg->peers[send_hello_context->peer_pos->index].daemon->shortname);
+#endif
+ GNUNET_TRANSPORT_offer_hello(send_hello_context->peer->daemon->th,
+ (const struct GNUNET_MessageHeader *)pg->peers[send_hello_context->peer_pos->index].daemon->hello,
+ &hello_sent_callback,
+ send_hello_context);
+ send_hello_context->peer_pos = send_hello_context->peer_pos->next;
+ GNUNET_assert(send_hello_context->peer->daemon->th != NULL);
+ }
+ }
#endif
-
/**
* Internal notification of a connection, kept so that we can ensure some connections
* happen instead of flooding all testing daemons with requests to connect.
*/
static void
-internal_connect_notify (void *cls,
- const struct GNUNET_PeerIdentity *first,
- const struct GNUNET_PeerIdentity *second,
- uint32_t distance,
- const struct GNUNET_CONFIGURATION_Handle *first_cfg,
- const struct GNUNET_CONFIGURATION_Handle *second_cfg,
- struct GNUNET_TESTING_Daemon *first_daemon,
- struct GNUNET_TESTING_Daemon *second_daemon,
- const char *emsg)
+internal_connect_notify(void *cls, const struct GNUNET_PeerIdentity *first,
+ const struct GNUNET_PeerIdentity *second, uint32_t distance,
+ const struct GNUNET_CONFIGURATION_Handle *first_cfg,
+ const struct GNUNET_CONFIGURATION_Handle *second_cfg,
+ struct GNUNET_TESTING_Daemon *first_daemon,
+ struct GNUNET_TESTING_Daemon *second_daemon, const char *emsg)
{
struct ConnectContext *connect_ctx = cls;
struct ConnectTopologyContext *ct_ctx = connect_ctx->ct_ctx;
other_peer = NULL;
#endif
- while ((connection != NULL) &&
- (0 != memcmp(first, &pg->peers[connection->index].daemon->id, sizeof(struct GNUNET_PeerIdentity))))
+ while ((connection != NULL) && (0
+ != memcmp (first, &pg->peers[connection->index].daemon->id,
+ sizeof(struct GNUNET_PeerIdentity))))
{
connection = connection->next;
}
{
ct_ctx->remaining_connections--;
if (pg->notify_connection != NULL) /* Notify of reverse connection */
- pg->notify_connection (pg->notify_connection_cls, second, first, distance,
- second_cfg, first_cfg, second_daemon, first_daemon,
- emsg);
+ pg->notify_connection (pg->notify_connection_cls, second, first,
+ distance, second_cfg, first_cfg, second_daemon,
+ first_daemon, emsg);
GNUNET_CONTAINER_DLL_remove(pg->peers[connect_ctx->second_index].connect_peers_head, pg->peers[connect_ctx->second_index].connect_peers_tail, connection);
GNUNET_free(connection);
ct_ctx->notify_connections_done (ct_ctx->notify_cls, NULL);
}
else
- preschedule_connect(pg);
+ preschedule_connect (pg);
if (pg->notify_connection != NULL)
pg->notify_connection (pg->notify_connection_cls, first, second, distance,
GNUNET_free(connect_ctx);
}
-
/**
* Either delay a connection (because there are too many outstanding)
* or schedule it for right now.
* @param tc the task runtime context
*/
static void
-schedule_connect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+schedule_connect(void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct ConnectContext *connect_context = cls;
struct GNUNET_TESTING_PeerGroup *pg = connect_context->ct_ctx->pg;
if (tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN)
return;
- if ((pg->outstanding_connects > pg->max_outstanding_connections) || (pg->stop_connects == GNUNET_YES))
+ if ((pg->outstanding_connects > pg->max_outstanding_connections)
+ || (pg->stop_connects == GNUNET_YES))
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- _
- ("Delaying connect, we have too many outstanding connections!\n"));
+ _
+ ("Delaying connect, we have too many outstanding connections!\n"));
#endif
- GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_MILLISECONDS, 100),
+ GNUNET_SCHEDULER_add_delayed (
+ GNUNET_TIME_relative_multiply (
+ GNUNET_TIME_UNIT_MILLISECONDS,
+ 100),
&schedule_connect, connect_context);
}
else
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- _("Creating connection, outstanding_connections is %d (max %d)\n"),
- pg->outstanding_connects, pg->max_outstanding_connections);
+ _("Creating connection, outstanding_connections is %d (max %d)\n"),
+ pg->outstanding_connects, pg->max_outstanding_connections);
#endif
pg->outstanding_connects++;
pg->total_connects_scheduled++;
- GNUNET_TESTING_daemons_connect (pg->peers[connect_context->first_index].daemon,
+ GNUNET_TESTING_daemons_connect (
+ pg->peers[connect_context->first_index].daemon,
pg->peers[connect_context->second_index].daemon,
connect_context->ct_ctx->connect_timeout,
connect_context->ct_ctx->connect_attempts,
#if USE_SEND_HELLOS
- GNUNET_NO,
+ GNUNET_NO,
#else
GNUNET_YES,
#endif
- &internal_connect_notify,
- connect_context); /* FIXME: free connect context! */
+ &internal_connect_notify, connect_context); /* FIXME: free connect context! */
}
}
*/
static int
connect_iterator (void *cls, const GNUNET_HashCode * key, void *value)
-{
- struct ConnectTopologyContext *ct_ctx = cls;
- struct PeerData *first = ct_ctx->first;
- struct GNUNET_TESTING_Daemon *second = value;
- struct ConnectContext *connect_context;
+ {
+ struct ConnectTopologyContext *ct_ctx = cls;
+ struct PeerData *first = ct_ctx->first;
+ struct GNUNET_TESTING_Daemon *second = value;
+ struct ConnectContext *connect_context;
- connect_context = GNUNET_malloc (sizeof (struct ConnectContext));
- connect_context->first = first->daemon;
- connect_context->second = second;
- connect_context->ct_ctx = ct_ctx;
- GNUNET_SCHEDULER_add_now (&schedule_connect, connect_context);
+ connect_context = GNUNET_malloc (sizeof (struct ConnectContext));
+ connect_context->first = first->daemon;
+ connect_context->second = second;
+ connect_context->ct_ctx = ct_ctx;
+ GNUNET_SCHEDULER_add_now (&schedule_connect, connect_context);
- return GNUNET_YES;
-}
+ return GNUNET_YES;
+ }
#endif
#if !OLD
*/
static int
copy_topology_iterator (void *cls, const GNUNET_HashCode * key, void *value)
-{
- struct PeerData *first = cls;
+ {
+ struct PeerData *first = cls;
- GNUNET_assert (GNUNET_OK ==
- GNUNET_CONTAINER_multihashmap_put (first->connect_peers, key,
- value,
- GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_CONTAINER_multihashmap_put (first->connect_peers, key,
+ value,
+ GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
- return GNUNET_YES;
-}
+ return GNUNET_YES;
+ }
#endif
/**
* @param pg the peer group
*/
static int
-copy_allowed_topology (struct GNUNET_TESTING_PeerGroup *pg)
+copy_allowed_topology(struct GNUNET_TESTING_PeerGroup *pg)
{
unsigned int pg_iter;
int ret;
iter = pg->peers[pg_iter].allowed_peers_head;
while (iter != NULL)
{
- GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Creating connection between %d and %d\n", pg_iter, iter->index);
- total += add_connections(pg, pg_iter, iter->index, CONNECT, GNUNET_NO);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Creating connection between %d and %d\n", pg_iter,
+ iter->index);
+ total += add_connections (pg, pg_iter, iter->index, CONNECT,
+ GNUNET_NO);
//total += add_actual_connections(pg, pg_iter, iter->index);
iter = iter->next;
}
#else
ret =
- GNUNET_CONTAINER_multihashmap_iterate (pg->
- peers[pg_iter].allowed_peers,
- ©_topology_iterator,
- &pg->peers[pg_iter]);
+ GNUNET_CONTAINER_multihashmap_iterate (pg->
+ peers[pg_iter].allowed_peers,
+ ©_topology_iterator,
+ &pg->peers[pg_iter]);
#endif
if (GNUNET_SYSERR == ret)
return GNUNET_SYSERR;
return total;
}
-
/**
* Connect the topology as specified by the PeerConnection's
* of each peer in the peer group
* @return the number of connections that will be attempted
*/
static int
-connect_topology (struct GNUNET_TESTING_PeerGroup *pg,
- struct GNUNET_TIME_Relative connect_timeout,
- unsigned int connect_attempts,
- GNUNET_TESTING_NotifyCompletion notify_callback,
- void *notify_cls)
+connect_topology(struct GNUNET_TESTING_PeerGroup *pg,
+ struct GNUNET_TIME_Relative connect_timeout, unsigned int connect_attempts,
+ GNUNET_TESTING_NotifyCompletion notify_callback, void *notify_cls)
{
unsigned int pg_iter;
unsigned int total;
}
#else
total +=
- GNUNET_CONTAINER_multihashmap_size (pg->peers[pg_iter].connect_peers);
+ GNUNET_CONTAINER_multihashmap_size (pg->peers[pg_iter].connect_peers);
#endif
}
#else
for (pg_iter = 0; pg_iter < pg->max_outstanding_connections; pg_iter++)
{
- preschedule_connect(pg);
+ preschedule_connect (pg);
}
#endif
return total;
}
-
/**
* Takes a peer group and creates a topology based on the
* one specified. Creates a topology means generates friend
* connected to each other
*/
unsigned int
-GNUNET_TESTING_create_topology (struct GNUNET_TESTING_PeerGroup *pg,
- enum GNUNET_TESTING_Topology topology,
- enum GNUNET_TESTING_Topology
- restrict_topology,
- const char *restrict_transports)
+GNUNET_TESTING_create_topology(struct GNUNET_TESTING_PeerGroup *pg,
+ enum GNUNET_TESTING_Topology topology,
+ enum GNUNET_TESTING_Topology restrict_topology,
+ const char *restrict_transports)
{
int ret;
for (i = 0; i < pg->total; i++)
{
pg->peers[i].allowed_peers =
- GNUNET_CONTAINER_multihashmap_create (100);
+ GNUNET_CONTAINER_multihashmap_create (100);
pg->peers[i].connect_peers =
- GNUNET_CONTAINER_multihashmap_create (100);
+ GNUNET_CONTAINER_multihashmap_create (100);
pg->peers[i].blacklisted_peers =
- GNUNET_CONTAINER_multihashmap_create (100);
+ GNUNET_CONTAINER_multihashmap_create (100);
pg->peers[i].pg = pg;
}
#endif
switch (topology)
{
- case GNUNET_TESTING_TOPOLOGY_CLIQUE:
+ case GNUNET_TESTING_TOPOLOGY_CLIQUE:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Creating clique topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Creating clique topology\n"));
#endif
- num_connections = create_clique (pg, &add_connections, ALLOWED, GNUNET_NO);
- break;
- case GNUNET_TESTING_TOPOLOGY_SMALL_WORLD_RING:
+ num_connections = create_clique (pg, &add_connections, ALLOWED, GNUNET_NO);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_SMALL_WORLD_RING:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating small world (ring) topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating small world (ring) topology\n"));
#endif
- num_connections =
- create_small_world_ring (pg, &add_connections, ALLOWED);
- break;
- case GNUNET_TESTING_TOPOLOGY_SMALL_WORLD:
+ num_connections = create_small_world_ring (pg, &add_connections, ALLOWED);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_SMALL_WORLD:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating small world (2d-torus) topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating small world (2d-torus) topology\n"));
#endif
- num_connections = create_small_world (pg, &add_connections, ALLOWED);
- break;
- case GNUNET_TESTING_TOPOLOGY_RING:
+ num_connections = create_small_world (pg, &add_connections, ALLOWED);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_RING:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Creating ring topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Creating ring topology\n"));
#endif
- num_connections = create_ring (pg, &add_connections, ALLOWED);
- break;
- case GNUNET_TESTING_TOPOLOGY_2D_TORUS:
+ num_connections = create_ring (pg, &add_connections, ALLOWED);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_2D_TORUS:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Creating 2d torus topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Creating 2d torus topology\n"));
#endif
- num_connections = create_2d_torus (pg, &add_connections, ALLOWED);
- break;
- case GNUNET_TESTING_TOPOLOGY_ERDOS_RENYI:
+ num_connections = create_2d_torus (pg, &add_connections, ALLOWED);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_ERDOS_RENYI:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating Erdos-Renyi topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating Erdos-Renyi topology\n"));
#endif
- num_connections = create_erdos_renyi (pg, &add_connections, ALLOWED);
- break;
- case GNUNET_TESTING_TOPOLOGY_INTERNAT:
+ num_connections = create_erdos_renyi (pg, &add_connections, ALLOWED);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_INTERNAT:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Creating InterNAT topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Creating InterNAT topology\n"));
#endif
- num_connections = create_nated_internet (pg, &add_connections, ALLOWED);
- break;
- case GNUNET_TESTING_TOPOLOGY_SCALE_FREE:
+ num_connections = create_nated_internet (pg, &add_connections, ALLOWED);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_SCALE_FREE:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating Scale Free topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating Scale Free topology\n"));
#endif
- num_connections = create_scale_free (pg, &add_connections, ALLOWED);
- break;
- case GNUNET_TESTING_TOPOLOGY_LINE:
+ num_connections = create_scale_free (pg, &add_connections, ALLOWED);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_LINE:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating straight line topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating straight line topology\n"));
#endif
- num_connections = create_line (pg, &add_connections, ALLOWED);
- break;
- case GNUNET_TESTING_TOPOLOGY_FROM_FILE:
+ num_connections = create_line (pg, &add_connections, ALLOWED);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_FROM_FILE:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating topology from file!\n"));
-#endif
- if (GNUNET_OK ==
- GNUNET_CONFIGURATION_get_value_string (pg->cfg, "testing", "topology_file",
- &filename))
- num_connections = create_from_file (pg, filename, &add_connections, ALLOWED);
- else
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating topology from file!\n"));
+#endif
+ if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (pg->cfg, "testing",
+ "topology_file",
+ &filename))
+ num_connections = create_from_file (pg, filename, &add_connections,
+ ALLOWED);
+ else
{
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Missing configuration option TESTING:TOPOLOGY_FILE for creating topology from file!\n");
+ GNUNET_log (
+ GNUNET_ERROR_TYPE_WARNING,
+ "Missing configuration option TESTING:TOPOLOGY_FILE for creating topology from file!\n");
num_connections = 0;
}
- break;
- case GNUNET_TESTING_TOPOLOGY_NONE:
+ break;
+ case GNUNET_TESTING_TOPOLOGY_NONE:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _
- ("Creating no allowed topology (all peers can connect at core level)\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _
+ ("Creating no allowed topology (all peers can connect at core level)\n"));
#endif
- num_connections = pg->total * pg->total; /* Clique is allowed! */
- break;
- default:
- num_connections = 0;
- break;
+ num_connections = pg->total * pg->total; /* Clique is allowed! */
+ break;
+ default:
+ num_connections = 0;
+ break;
}
- if (GNUNET_YES ==
- GNUNET_CONFIGURATION_get_value_yesno (pg->cfg, "TESTING", "F2F"))
+ if (GNUNET_YES == GNUNET_CONFIGURATION_get_value_yesno (pg->cfg, "TESTING",
+ "F2F"))
{
ret = create_and_copy_friend_files (pg);
if (ret != GNUNET_OK)
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Failed during friend file copying!\n"));
+ _("Failed during friend file copying!\n"));
#endif
return GNUNET_SYSERR;
}
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Friend files created/copied successfully!\n"));
+ _("Friend files created/copied successfully!\n"));
#endif
}
}
/* Use the create clique method to initially set all connections as blacklisted. */
- if ((restrict_topology != GNUNET_TESTING_TOPOLOGY_NONE) && (restrict_topology != GNUNET_TESTING_TOPOLOGY_FROM_FILE))
+ if ((restrict_topology != GNUNET_TESTING_TOPOLOGY_NONE) && (restrict_topology
+ != GNUNET_TESTING_TOPOLOGY_FROM_FILE))
create_clique (pg, &add_connections, BLACKLIST, GNUNET_NO);
unblacklisted_connections = 0;
/* Un-blacklist connections as per the topology specified */
switch (restrict_topology)
{
- case GNUNET_TESTING_TOPOLOGY_CLIQUE:
+ case GNUNET_TESTING_TOPOLOGY_CLIQUE:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Blacklisting all but clique topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Blacklisting all but clique topology\n"));
#endif
- unblacklisted_connections =
- create_clique (pg, &remove_connections, BLACKLIST, GNUNET_NO);
- break;
- case GNUNET_TESTING_TOPOLOGY_SMALL_WORLD_RING:
+ unblacklisted_connections = create_clique (pg, &remove_connections,
+ BLACKLIST, GNUNET_NO);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_SMALL_WORLD_RING:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Blacklisting all but small world (ring) topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Blacklisting all but small world (ring) topology\n"));
#endif
- unblacklisted_connections =
- create_small_world_ring (pg, &remove_connections, BLACKLIST);
- break;
- case GNUNET_TESTING_TOPOLOGY_SMALL_WORLD:
+ unblacklisted_connections = create_small_world_ring (pg,
+ &remove_connections,
+ BLACKLIST);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_SMALL_WORLD:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _
- ("Blacklisting all but small world (2d-torus) topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _
+ ("Blacklisting all but small world (2d-torus) topology\n"));
#endif
- unblacklisted_connections =
- create_small_world (pg, &remove_connections, BLACKLIST);
- break;
- case GNUNET_TESTING_TOPOLOGY_RING:
+ unblacklisted_connections = create_small_world (pg, &remove_connections,
+ BLACKLIST);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_RING:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Blacklisting all but ring topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Blacklisting all but ring topology\n"));
#endif
- unblacklisted_connections = create_ring (pg, &remove_connections, BLACKLIST);
- break;
- case GNUNET_TESTING_TOPOLOGY_2D_TORUS:
+ unblacklisted_connections
+ = create_ring (pg, &remove_connections, BLACKLIST);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_2D_TORUS:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Blacklisting all but 2d torus topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Blacklisting all but 2d torus topology\n"));
#endif
- unblacklisted_connections =
- create_2d_torus (pg, &remove_connections, BLACKLIST);
- break;
- case GNUNET_TESTING_TOPOLOGY_ERDOS_RENYI:
+ unblacklisted_connections = create_2d_torus (pg, &remove_connections,
+ BLACKLIST);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_ERDOS_RENYI:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Blacklisting all but Erdos-Renyi topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Blacklisting all but Erdos-Renyi topology\n"));
#endif
- unblacklisted_connections =
- create_erdos_renyi (pg, &remove_connections, BLACKLIST);
- break;
- case GNUNET_TESTING_TOPOLOGY_INTERNAT:
+ unblacklisted_connections = create_erdos_renyi (pg, &remove_connections,
+ BLACKLIST);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_INTERNAT:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Blacklisting all but InterNAT topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Blacklisting all but InterNAT topology\n"));
#endif
#if TOPOLOGY_HACK
pg->peers[off].connect_peers_head = NULL;
pg->peers[off].connect_peers_tail = NULL;
}
- unblacklisted_connections = create_nated_internet_copy(pg, &remove_connections, BLACKLIST);
+ unblacklisted_connections
+ = create_nated_internet_copy (pg, &remove_connections, BLACKLIST);
#else
unblacklisted_connections =
- create_nated_internet (pg, &remove_connections, BLACKLIST);
+ create_nated_internet (pg, &remove_connections, BLACKLIST);
#endif
- break;
- case GNUNET_TESTING_TOPOLOGY_SCALE_FREE:
+ break;
+ case GNUNET_TESTING_TOPOLOGY_SCALE_FREE:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Blacklisting all but Scale Free topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Blacklisting all but Scale Free topology\n"));
#endif
- unblacklisted_connections =
- create_scale_free (pg, &remove_connections, BLACKLIST);
- break;
- case GNUNET_TESTING_TOPOLOGY_LINE:
+ unblacklisted_connections = create_scale_free (pg, &remove_connections,
+ BLACKLIST);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_LINE:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Blacklisting all but straight line topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Blacklisting all but straight line topology\n"));
#endif
- unblacklisted_connections = create_line (pg, &remove_connections, BLACKLIST);
- break;
- case GNUNET_TESTING_TOPOLOGY_NONE: /* Fall through */
- case GNUNET_TESTING_TOPOLOGY_FROM_FILE:
+ unblacklisted_connections
+ = create_line (pg, &remove_connections, BLACKLIST);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_NONE: /* Fall through */
+ case GNUNET_TESTING_TOPOLOGY_FROM_FILE:
#if VERBOSE_TESTING
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _
- ("Creating no blacklist topology (all peers can connect at transport level)\n"));
-#endif
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _
- ("Creating blacklist topology from allowed\n"));
+ _
+ ("Creating no blacklist topology (all peers can connect at transport level)\n"));
+#endif
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _
+ ("Creating blacklist topology from allowed\n"));
unblacklisted_connections = copy_allowed (pg, &remove_connections);
- default:
- break;
+ default:
+ break;
}
if ((unblacklisted_connections > 0) && (restrict_transports != NULL))
{
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Creating blacklist with `%s'\n", restrict_transports);
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Creating blacklist with `%s'\n",
+ restrict_transports);
ret = create_and_copy_blacklist_files (pg, restrict_transports);
if (ret != GNUNET_OK)
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Failed during blacklist file copying!\n"));
+ _("Failed during blacklist file copying!\n"));
#endif
return 0;
}
{
#if VERBOSE_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Blacklist files created/copied successfully!\n"));
+ _("Blacklist files created/copied successfully!\n"));
#endif
}
}
return num_connections;
}
-
#if !OLD
/**
* Iterator for choosing random peers to connect.
*/
static int
random_connect_iterator (void *cls, const GNUNET_HashCode * key, void *value)
-{
- struct RandomContext *random_ctx = cls;
- double random_number;
- uint32_t second_pos;
- GNUNET_HashCode first_hash;
- random_number =
+ {
+ struct RandomContext *random_ctx = cls;
+ double random_number;
+ uint32_t second_pos;
+ GNUNET_HashCode first_hash;
+ random_number =
((double)
- GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
- UINT64_MAX)) / ((double) UINT64_MAX);
- if (random_number < random_ctx->percentage)
- {
- GNUNET_assert (GNUNET_OK ==
- GNUNET_CONTAINER_multihashmap_put (random_ctx->
- first->connect_peers_working_set,
- key, value,
- GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
- }
-
- /* Now we have considered this particular connection, remove it from the second peer so it's not double counted */
- uid_from_hash (key, &second_pos);
- hash_from_uid (random_ctx->first_uid, &first_hash);
- GNUNET_assert (random_ctx->pg->total > second_pos);
- GNUNET_assert (GNUNET_YES ==
- GNUNET_CONTAINER_multihashmap_remove (random_ctx->
- pg->peers
- [second_pos].connect_peers,
- &first_hash,
- random_ctx->
- first->daemon));
+ GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
+ UINT64_MAX)) / ((double) UINT64_MAX);
+ if (random_number < random_ctx->percentage)
+ {
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_CONTAINER_multihashmap_put (random_ctx->
+ first->connect_peers_working_set,
+ key, value,
+ GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+ }
- return GNUNET_YES;
-}
+ /* Now we have considered this particular connection, remove it from the second peer so it's not double counted */
+ uid_from_hash (key, &second_pos);
+ hash_from_uid (random_ctx->first_uid, &first_hash);
+ GNUNET_assert (random_ctx->pg->total > second_pos);
+ GNUNET_assert (GNUNET_YES ==
+ GNUNET_CONTAINER_multihashmap_remove (random_ctx->
+ pg->peers
+ [second_pos].connect_peers,
+ &first_hash,
+ random_ctx->
+ first->daemon));
+ return GNUNET_YES;
+ }
/**
* Iterator for adding at least X peers to a peers connection set.
*/
static int
minimum_connect_iterator (void *cls, const GNUNET_HashCode * key, void *value)
-{
- struct MinimumContext *min_ctx = cls;
- uint32_t second_pos;
- GNUNET_HashCode first_hash;
- unsigned int i;
-
- if (GNUNET_CONTAINER_multihashmap_size
- (min_ctx->first->connect_peers_working_set) < min_ctx->num_to_add)
- {
- for (i = 0; i < min_ctx->num_to_add; i++)
- {
- if (min_ctx->pg_array[i] == min_ctx->current)
- {
- GNUNET_assert (GNUNET_OK ==
- GNUNET_CONTAINER_multihashmap_put
- (min_ctx->first->connect_peers_working_set, key,
- value,
- GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
- uid_from_hash (key, &second_pos);
- hash_from_uid (min_ctx->first_uid, &first_hash);
- GNUNET_assert (min_ctx->pg->total > second_pos);
- GNUNET_assert (GNUNET_OK ==
- GNUNET_CONTAINER_multihashmap_put (min_ctx->
- pg->peers
- [second_pos].connect_peers_working_set,
- &first_hash,
- min_ctx->first->
- daemon,
- GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
- /* Now we have added this particular connection, remove it from the second peer's map so it's not double counted */
- GNUNET_assert (GNUNET_YES ==
- GNUNET_CONTAINER_multihashmap_remove
- (min_ctx->pg->peers[second_pos].connect_peers,
- &first_hash, min_ctx->first->daemon));
- }
- }
- min_ctx->current++;
- return GNUNET_YES;
- }
- else
- return GNUNET_NO; /* We can stop iterating, we have enough peers! */
+ {
+ struct MinimumContext *min_ctx = cls;
+ uint32_t second_pos;
+ GNUNET_HashCode first_hash;
+ unsigned int i;
-}
+ if (GNUNET_CONTAINER_multihashmap_size
+ (min_ctx->first->connect_peers_working_set) < min_ctx->num_to_add)
+ {
+ for (i = 0; i < min_ctx->num_to_add; i++)
+ {
+ if (min_ctx->pg_array[i] == min_ctx->current)
+ {
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_CONTAINER_multihashmap_put
+ (min_ctx->first->connect_peers_working_set, key,
+ value,
+ GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+ uid_from_hash (key, &second_pos);
+ hash_from_uid (min_ctx->first_uid, &first_hash);
+ GNUNET_assert (min_ctx->pg->total > second_pos);
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_CONTAINER_multihashmap_put (min_ctx->
+ pg->peers
+ [second_pos].connect_peers_working_set,
+ &first_hash,
+ min_ctx->first->
+ daemon,
+ GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+ /* Now we have added this particular connection, remove it from the second peer's map so it's not double counted */
+ GNUNET_assert (GNUNET_YES ==
+ GNUNET_CONTAINER_multihashmap_remove
+ (min_ctx->pg->peers[second_pos].connect_peers,
+ &first_hash, min_ctx->first->daemon));
+ }
+ }
+ min_ctx->current++;
+ return GNUNET_YES;
+ }
+ else
+ return GNUNET_NO; /* We can stop iterating, we have enough peers! */
+ }
/**
* Iterator for adding peers to a connection set based on a depth first search.
*/
static int
dfs_connect_iterator (void *cls, const GNUNET_HashCode * key, void *value)
-{
- struct DFSContext *dfs_ctx = cls;
- GNUNET_HashCode first_hash;
+ {
+ struct DFSContext *dfs_ctx = cls;
+ GNUNET_HashCode first_hash;
- if (dfs_ctx->current == dfs_ctx->chosen)
- {
- GNUNET_assert (GNUNET_OK ==
- GNUNET_CONTAINER_multihashmap_put (dfs_ctx->
- first->connect_peers_working_set,
- key, value,
- GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
- uid_from_hash (key, &dfs_ctx->second_uid);
- hash_from_uid (dfs_ctx->first_uid, &first_hash);
- GNUNET_assert (GNUNET_OK ==
- GNUNET_CONTAINER_multihashmap_put (dfs_ctx->
- pg->peers
- [dfs_ctx->second_uid].connect_peers_working_set,
- &first_hash,
- dfs_ctx->
- first->daemon,
- GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
- GNUNET_assert (GNUNET_YES ==
- GNUNET_CONTAINER_multihashmap_remove (dfs_ctx->
- pg->peers
- [dfs_ctx->second_uid].connect_peers,
- &first_hash,
- dfs_ctx->
- first->daemon));
- /* Can't remove second from first yet because we are currently iterating, hence the return value in the DFSContext! */
- return GNUNET_NO; /* We have found our peer, don't iterate more */
- }
+ if (dfs_ctx->current == dfs_ctx->chosen)
+ {
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_CONTAINER_multihashmap_put (dfs_ctx->
+ first->connect_peers_working_set,
+ key, value,
+ GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+ uid_from_hash (key, &dfs_ctx->second_uid);
+ hash_from_uid (dfs_ctx->first_uid, &first_hash);
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_CONTAINER_multihashmap_put (dfs_ctx->
+ pg->peers
+ [dfs_ctx->second_uid].connect_peers_working_set,
+ &first_hash,
+ dfs_ctx->
+ first->daemon,
+ GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+ GNUNET_assert (GNUNET_YES ==
+ GNUNET_CONTAINER_multihashmap_remove (dfs_ctx->
+ pg->peers
+ [dfs_ctx->second_uid].connect_peers,
+ &first_hash,
+ dfs_ctx->
+ first->daemon));
+ /* Can't remove second from first yet because we are currently iterating, hence the return value in the DFSContext! */
+ return GNUNET_NO; /* We have found our peer, don't iterate more */
+ }
- dfs_ctx->current++;
- return GNUNET_YES;
-}
+ dfs_ctx->current++;
+ return GNUNET_YES;
+ }
#endif
/**
* @param percentage what percent of total connections to make
*/
void
-choose_random_connections (struct GNUNET_TESTING_PeerGroup *pg,
- double percentage)
+choose_random_connections(struct GNUNET_TESTING_PeerGroup *pg,
+ double percentage)
{
struct RandomContext random_ctx;
uint32_t pg_iter;
conn_iter = pg->peers[pg_iter].connect_peers_head;
while (conn_iter != NULL)
{
- random_number =
- ((double)
- GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
- UINT64_MAX)) / ((double) UINT64_MAX);
+ random_number
+ = ((double) GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_WEAK,
+ UINT64_MAX))
+ / ((double) UINT64_MAX);
if (random_number < percentage)
{
- add_connections(pg, pg_iter, conn_iter->index, WORKING_SET, GNUNET_YES);
+ add_connections (pg, pg_iter, conn_iter->index, WORKING_SET,
+ GNUNET_YES);
}
conn_iter = conn_iter->next;
}
#else
pg->peers[pg_iter].connect_peers_working_set =
- GNUNET_CONTAINER_multihashmap_create (pg->total);
+ GNUNET_CONTAINER_multihashmap_create (pg->total);
GNUNET_CONTAINER_multihashmap_iterate (pg->peers[pg_iter].connect_peers,
- &random_connect_iterator,
- &random_ctx);
+ &random_connect_iterator,
+ &random_ctx);
/* Now remove the old connections */
GNUNET_CONTAINER_multihashmap_destroy (pg->
- peers[pg_iter].connect_peers);
+ peers[pg_iter].connect_peers);
/* And replace with the random set */
pg->peers[pg_iter].connect_peers =
- pg->peers[pg_iter].connect_peers_working_set;
+ pg->peers[pg_iter].connect_peers_working_set;
#endif
}
{
conn_iter = pg->peers[pg_iter].connect_peers_head;
while (pg->peers[pg_iter].connect_peers_head != NULL)
- remove_connections(pg, pg_iter, pg->peers[pg_iter].connect_peers_head->index, CONNECT, GNUNET_YES);
-
- pg->peers[pg_iter].connect_peers_head = pg->peers[pg_iter].connect_peers_working_set_head;
- pg->peers[pg_iter].connect_peers_tail = pg->peers[pg_iter].connect_peers_working_set_tail;
+ remove_connections (pg, pg_iter,
+ pg->peers[pg_iter].connect_peers_head->index,
+ CONNECT, GNUNET_YES);
+
+ pg->peers[pg_iter].connect_peers_head
+ = pg->peers[pg_iter].connect_peers_working_set_head;
+ pg->peers[pg_iter].connect_peers_tail
+ = pg->peers[pg_iter].connect_peers_working_set_tail;
pg->peers[pg_iter].connect_peers_working_set_head = NULL;
pg->peers[pg_iter].connect_peers_working_set_tail = NULL;
}
}
-
/**
* Count the number of connections in a linked list of connections.
*
* @return the number of elements in the list
*/
static unsigned int
-count_connections (struct PeerConnection *conn_list)
+count_connections(struct PeerConnection *conn_list)
{
struct PeerConnection *iter;
unsigned int count;
return count;
}
-
static unsigned int
-count_workingset_connections (struct GNUNET_TESTING_PeerGroup *pg)
+count_workingset_connections(struct GNUNET_TESTING_PeerGroup *pg)
{
unsigned int count;
unsigned int pg_iter;
}
#else
count +=
- GNUNET_CONTAINER_multihashmap_size (pg->
- peers
- [pg_iter].connect_peers_working_set);
+ GNUNET_CONTAINER_multihashmap_size (pg->
+ peers
+ [pg_iter].connect_peers_working_set);
#endif
}
return count;
}
-
static unsigned int
-count_allowed_connections (struct GNUNET_TESTING_PeerGroup *pg)
+count_allowed_connections(struct GNUNET_TESTING_PeerGroup *pg)
{
unsigned int count;
unsigned int pg_iter;
}
#else
count +=
- GNUNET_CONTAINER_multihashmap_size (pg->
- peers
- [pg_iter].allowed_peers);
+ GNUNET_CONTAINER_multihashmap_size (pg->
+ peers
+ [pg_iter].allowed_peers);
#endif
}
return count;
}
-
/**
* From the set of connections possible, choose at least num connections per
* peer.
* @param num how many connections at least should each peer have (if possible)?
*/
static void
-choose_minimum (struct GNUNET_TESTING_PeerGroup *pg, unsigned int num)
+choose_minimum(struct GNUNET_TESTING_PeerGroup *pg, unsigned int num)
{
#if !OLD
struct MinimumContext minimum_ctx;
#if OLD
for (pg_iter = 0; pg_iter < pg->total; pg_iter++)
{
- temp_list_size = count_connections(pg->peers[pg_iter].connect_peers_head);
+ temp_list_size
+ = count_connections (pg->peers[pg_iter].connect_peers_head);
if (temp_list_size == 0)
{
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Peer %d has 0 connections!?!?\n", pg_iter);
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Peer %d has 0 connections!?!?\n", pg_iter);
break;
}
for (i = 0; i < num; i++)
{
- random = GNUNET_CRYPTO_random_u32(GNUNET_CRYPTO_QUALITY_WEAK, temp_list_size);
+ random = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
+ temp_list_size);
conn_iter = pg->peers[pg_iter].connect_peers_head;
for (count = 0; count < random; count++)
conn_iter = conn_iter->next;
/* We now have a random connection, connect it! */
GNUNET_assert(conn_iter != NULL);
- add_connections(pg, pg_iter, conn_iter->index, WORKING_SET, GNUNET_YES);
+ add_connections (pg, pg_iter, conn_iter->index, WORKING_SET,
+ GNUNET_YES);
}
}
#else
for (pg_iter = 0; pg_iter < pg->total; pg_iter++)
{
pg->peers[pg_iter].connect_peers_working_set =
- GNUNET_CONTAINER_multihashmap_create (num);
+ GNUNET_CONTAINER_multihashmap_create (num);
}
for (pg_iter = 0; pg_iter < pg->total; pg_iter++)
{
minimum_ctx.first_uid = pg_iter;
minimum_ctx.pg_array =
- GNUNET_CRYPTO_random_permute (GNUNET_CRYPTO_QUALITY_WEAK,
- GNUNET_CONTAINER_multihashmap_size
- (pg->peers[pg_iter].connect_peers));
+ GNUNET_CRYPTO_random_permute (GNUNET_CRYPTO_QUALITY_WEAK,
+ GNUNET_CONTAINER_multihashmap_size
+ (pg->peers[pg_iter].connect_peers));
minimum_ctx.first = &pg->peers[pg_iter];
minimum_ctx.pg = pg;
minimum_ctx.num_to_add = num;
minimum_ctx.current = 0;
GNUNET_CONTAINER_multihashmap_iterate (pg->peers[pg_iter].connect_peers,
- &minimum_connect_iterator,
- &minimum_ctx);
+ &minimum_connect_iterator,
+ &minimum_ctx);
}
for (pg_iter = 0; pg_iter < pg->total; pg_iter++)
{
/* Remove the "old" connections */
GNUNET_CONTAINER_multihashmap_destroy (pg->
- peers[pg_iter].connect_peers);
+ peers[pg_iter].connect_peers);
/* And replace with the working set */
pg->peers[pg_iter].connect_peers =
- pg->peers[pg_iter].connect_peers_working_set;
+ pg->peers[pg_iter].connect_peers_working_set;
}
#endif
for (pg_iter = 0; pg_iter < pg->total; pg_iter++)
{
conn_iter = pg->peers[pg_iter].connect_peers_head;
GNUNET_CONTAINER_DLL_remove(pg->peers[pg_iter].connect_peers_head,
- pg->peers[pg_iter].connect_peers_tail, pg->peers[pg_iter].connect_peers_head);
+ pg->peers[pg_iter].connect_peers_tail,
+ conn_iter);
GNUNET_free(conn_iter);
/*remove_connections(pg, pg_iter, pg->peers[pg_iter].connect_peers_head->index, CONNECT, GNUNET_YES);*/
}
- pg->peers[pg_iter].connect_peers_head = pg->peers[pg_iter].connect_peers_working_set_head;
- pg->peers[pg_iter].connect_peers_tail = pg->peers[pg_iter].connect_peers_working_set_tail;
+ pg->peers[pg_iter].connect_peers_head
+ = pg->peers[pg_iter].connect_peers_working_set_head;
+ pg->peers[pg_iter].connect_peers_tail
+ = pg->peers[pg_iter].connect_peers_working_set_tail;
pg->peers[pg_iter].connect_peers_working_set_head = NULL;
pg->peers[pg_iter].connect_peers_working_set_tail = NULL;
}
#if !OLD
struct FindClosestContext
-{
- /**
- * The currently known closest peer.
- */
- struct GNUNET_TESTING_Daemon *closest;
-
- /**
- * The info for the peer we are adding connections for.
- */
- struct PeerData *curr_peer;
-
- /**
- * The distance (bits) between the current
- * peer and the currently known closest.
- */
- unsigned int closest_dist;
-
- /**
- * The offset of the closest known peer in
- * the peer group.
- */
- unsigned int closest_num;
-};
+ {
+ /**
+ * The currently known closest peer.
+ */
+ struct GNUNET_TESTING_Daemon *closest;
+
+ /**
+ * The info for the peer we are adding connections for.
+ */
+ struct PeerData *curr_peer;
+
+ /**
+ * The distance (bits) between the current
+ * peer and the currently known closest.
+ */
+ unsigned int closest_dist;
+
+ /**
+ * The offset of the closest known peer in
+ * the peer group.
+ */
+ unsigned int closest_num;
+ };
/**
* Iterator over hash map entries of the allowed
*/
static int
find_closest_peers (void *cls, const GNUNET_HashCode * key, void *value)
-{
- struct FindClosestContext *closest_ctx = cls;
- struct GNUNET_TESTING_Daemon *daemon = value;
-
- if (((closest_ctx->closest == NULL) ||
- (GNUNET_CRYPTO_hash_matching_bits
- (&daemon->id.hashPubKey,
- &closest_ctx->curr_peer->daemon->id.hashPubKey) >
- closest_ctx->closest_dist))
- && (GNUNET_YES !=
- GNUNET_CONTAINER_multihashmap_contains (closest_ctx->
- curr_peer->connect_peers,
- key)))
- {
- closest_ctx->closest_dist =
+ {
+ struct FindClosestContext *closest_ctx = cls;
+ struct GNUNET_TESTING_Daemon *daemon = value;
+
+ if (((closest_ctx->closest == NULL) ||
+ (GNUNET_CRYPTO_hash_matching_bits
+ (&daemon->id.hashPubKey,
+ &closest_ctx->curr_peer->daemon->id.hashPubKey) >
+ closest_ctx->closest_dist))
+ && (GNUNET_YES !=
+ GNUNET_CONTAINER_multihashmap_contains (closest_ctx->
+ curr_peer->connect_peers,
+ key)))
+ {
+ closest_ctx->closest_dist =
GNUNET_CRYPTO_hash_matching_bits (&daemon->id.hashPubKey,
- &closest_ctx->curr_peer->daemon->
- id.hashPubKey);
- closest_ctx->closest = daemon;
- uid_from_hash (key, &closest_ctx->closest_num);
- }
- return GNUNET_YES;
-}
-
+ &closest_ctx->curr_peer->daemon->
+ id.hashPubKey);
+ closest_ctx->closest = daemon;
+ uid_from_hash (key, &closest_ctx->closest_num);
+ }
+ return GNUNET_YES;
+ }
/**
* From the set of connections possible, choose at num connections per
*/
void
add_closest (struct GNUNET_TESTING_PeerGroup *pg, unsigned int num,
- GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
-{
+ GNUNET_TESTING_ConnectionProcessor proc, enum PeerLists list)
+ {
#if OLD
#else
- struct FindClosestContext closest_ctx;
+ struct FindClosestContext closest_ctx;
#endif
- uint32_t pg_iter;
- uint32_t i;
+ uint32_t pg_iter;
+ uint32_t i;
- for (i = 0; i < num; i++) /* Each time find a closest peer (from those available) */
- {
- for (pg_iter = 0; pg_iter < pg->total; pg_iter++)
- {
- closest_ctx.curr_peer = &pg->peers[pg_iter];
- closest_ctx.closest = NULL;
- closest_ctx.closest_dist = 0;
- closest_ctx.closest_num = 0;
- GNUNET_CONTAINER_multihashmap_iterate (pg->
- peers[pg_iter].allowed_peers,
- &find_closest_peers,
- &closest_ctx);
- if (closest_ctx.closest != NULL)
- {
- GNUNET_assert (closest_ctx.closest_num < pg->total);
- proc (pg, pg_iter, closest_ctx.closest_num, list);
- }
- }
- }
-}
+ for (i = 0; i < num; i++) /* Each time find a closest peer (from those available) */
+ {
+ for (pg_iter = 0; pg_iter < pg->total; pg_iter++)
+ {
+ closest_ctx.curr_peer = &pg->peers[pg_iter];
+ closest_ctx.closest = NULL;
+ closest_ctx.closest_dist = 0;
+ closest_ctx.closest_num = 0;
+ GNUNET_CONTAINER_multihashmap_iterate (pg->
+ peers[pg_iter].allowed_peers,
+ &find_closest_peers,
+ &closest_ctx);
+ if (closest_ctx.closest != NULL)
+ {
+ GNUNET_assert (closest_ctx.closest_num < pg->total);
+ proc (pg, pg_iter, closest_ctx.closest_num, list);
+ }
+ }
+ }
+ }
#endif
/**
* @param num how many connections at least should each peer have (if possible)?
*/
void
-perform_dfs (struct GNUNET_TESTING_PeerGroup *pg, unsigned int num)
+perform_dfs(struct GNUNET_TESTING_PeerGroup *pg, unsigned int num)
{
uint32_t pg_iter;
uint32_t dfs_count;
starting_peer = 0;
dfs_count = 0;
while ((count_workingset_connections (pg) < num * pg->total)
- && (count_allowed_connections (pg) > 0))
+ && (count_allowed_connections (pg) > 0))
{
- if (dfs_count % pg->total == 0) /* Restart the DFS at some weakly connected peer */
+ if (dfs_count % pg->total == 0) /* Restart the DFS at some weakly connected peer */
{
- least_connections = -1; /* Set to very high number */
+ least_connections = -1; /* Set to very high number */
for (pg_iter = 0; pg_iter < pg->total; pg_iter++)
{
- temp_count = count_connections(pg->peers[pg_iter].connect_peers_working_set_head);
+ temp_count
+ = count_connections (
+ pg->peers[pg_iter].connect_peers_working_set_head);
if (temp_count < least_connections)
{
starting_peer = pg_iter;
}
}
- temp_count = count_connections(pg->peers[starting_peer].connect_peers_head);
+ temp_count
+ = count_connections (pg->peers[starting_peer].connect_peers_head);
if (temp_count == 0)
continue; /* FIXME: infinite loop? */
- random_connection = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, temp_count);
+ random_connection = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
+ temp_count);
temp_count = 0;
peer_iter = pg->peers[starting_peer].connect_peers_head;
while (temp_count < random_connection)
temp_count++;
}
GNUNET_assert(peer_iter != NULL);
- add_connections(pg, starting_peer, peer_iter->index, WORKING_SET, GNUNET_NO);
- remove_connections(pg, starting_peer, peer_iter->index, CONNECT, GNUNET_YES);
+ add_connections (pg, starting_peer, peer_iter->index, WORKING_SET,
+ GNUNET_NO);
+ remove_connections (pg, starting_peer, peer_iter->index, CONNECT,
+ GNUNET_YES);
starting_peer = peer_iter->index;
dfs_count++;
}
for (pg_iter = 0; pg_iter < pg->total; pg_iter++)
{
pg->peers[pg_iter].connect_peers_working_set =
- GNUNET_CONTAINER_multihashmap_create (num);
+ GNUNET_CONTAINER_multihashmap_create (num);
}
starting_peer = 0;
dfs_count = 0;
while ((count_workingset_connections (pg) < num * pg->total)
- && (count_allowed_connections (pg) > 0))
+ && (count_allowed_connections (pg) > 0))
{
- if (dfs_count % pg->total == 0) /* Restart the DFS at some weakly connected peer */
+ if (dfs_count % pg->total == 0) /* Restart the DFS at some weakly connected peer */
{
- least_connections = -1; /* Set to very high number */
+ least_connections = -1; /* Set to very high number */
for (pg_iter = 0; pg_iter < pg->total; pg_iter++)
{
if (GNUNET_CONTAINER_multihashmap_size
{
starting_peer = pg_iter;
least_connections =
- GNUNET_CONTAINER_multihashmap_size (pg->
- peers
- [pg_iter].connect_peers_working_set);
+ GNUNET_CONTAINER_multihashmap_size (pg->
+ peers
+ [pg_iter].connect_peers_working_set);
}
}
}
- if (GNUNET_CONTAINER_multihashmap_size (pg->peers[starting_peer].connect_peers) == 0) /* Ensure there is at least one peer left to connect! */
+ if (GNUNET_CONTAINER_multihashmap_size (pg->peers[starting_peer].connect_peers) == 0) /* Ensure there is at least one peer left to connect! */
{
dfs_count = 0;
continue;
/* Choose a random peer from the chosen peers set of connections to add */
dfs_ctx.chosen =
- GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
- GNUNET_CONTAINER_multihashmap_size
- (pg->peers[starting_peer].connect_peers));
+ GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK,
+ GNUNET_CONTAINER_multihashmap_size
+ (pg->peers[starting_peer].connect_peers));
dfs_ctx.first_uid = starting_peer;
dfs_ctx.first = &pg->peers[starting_peer];
dfs_ctx.pg = pg;
dfs_ctx.current = 0;
GNUNET_CONTAINER_multihashmap_iterate (pg->
- peers
- [starting_peer].connect_peers,
- &dfs_connect_iterator, &dfs_ctx);
+ peers
+ [starting_peer].connect_peers,
+ &dfs_connect_iterator, &dfs_ctx);
/* Remove the second from the first, since we will be continuing the search and may encounter the first peer again! */
hash_from_uid (dfs_ctx.second_uid, &second_hash);
GNUNET_assert (GNUNET_YES ==
- GNUNET_CONTAINER_multihashmap_remove (pg->peers
- [starting_peer].connect_peers,
- &second_hash,
- pg->
- peers
- [dfs_ctx.second_uid].daemon));
+ GNUNET_CONTAINER_multihashmap_remove (pg->peers
+ [starting_peer].connect_peers,
+ &second_hash,
+ pg->
+ peers
+ [dfs_ctx.second_uid].daemon));
starting_peer = dfs_ctx.second_uid;
}
{
/* Remove the "old" connections */
GNUNET_CONTAINER_multihashmap_destroy (pg->
- peers[pg_iter].connect_peers);
+ peers[pg_iter].connect_peers);
/* And replace with the working set */
pg->peers[pg_iter].connect_peers =
- pg->peers[pg_iter].connect_peers_working_set;
+ pg->peers[pg_iter].connect_peers_working_set;
}
#endif
}
-
/**
* Internal callback for topology information for a particular peer.
*/
static void
-internal_topology_callback (void *cls,
- const struct GNUNET_PeerIdentity *peer,
- const struct GNUNET_TRANSPORT_ATS_Information
- *atsi)
+internal_topology_callback(void *cls, const struct GNUNET_PeerIdentity *peer,
+ const struct GNUNET_TRANSPORT_ATS_Information *atsi)
{
struct CoreContext *core_ctx = cls;
struct TopologyIterateContext *iter_ctx = core_ctx->iter_context;
- if (peer == NULL) /* Either finished, or something went wrong */
+ if (peer == NULL) /* Either finished, or something went wrong */
{
iter_ctx->completed++;
iter_ctx->connected--;
}
else
{
- iter_ctx->topology_cb (iter_ctx->cls, &core_ctx->daemon->id,
- peer, NULL);
+ iter_ctx->topology_cb (iter_ctx->cls, &core_ctx->daemon->id, peer, NULL);
}
if (iter_ctx->completed == iter_ctx->total)
}
}
-
/**
* Check running topology iteration tasks, if below max start a new one, otherwise
* schedule for some time in the future.
*/
static void
-schedule_get_topology (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc)
+schedule_get_topology(void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct CoreContext *core_context = cls;
struct TopologyIterateContext *topology_context =
- (struct TopologyIterateContext *) core_context->iter_context;
+ (struct TopologyIterateContext *) core_context->iter_context;
if (tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN)
return;
- if (topology_context->connected > topology_context->pg->max_outstanding_connections)
+ if (topology_context->connected
+ > topology_context->pg->max_outstanding_connections)
{
#if VERBOSE_TESTING > 2
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _
- ("Delaying connect, we have too many outstanding connections!\n"));
+ _
+ ("Delaying connect, we have too many outstanding connections!\n"));
#endif
- GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_MILLISECONDS, 100),
+ GNUNET_SCHEDULER_add_delayed (
+ GNUNET_TIME_relative_multiply (
+ GNUNET_TIME_UNIT_MILLISECONDS,
+ 100),
&schedule_get_topology, core_context);
}
else
{
#if VERBOSE_TESTING > 2
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating connection, outstanding_connections is %d\n"),
- outstanding_connects);
+ _("Creating connection, outstanding_connections is %d\n"),
+ outstanding_connects);
#endif
topology_context->connected++;
- if (GNUNET_OK !=
- GNUNET_CORE_iterate_peers (core_context->daemon->cfg,
- &internal_topology_callback,
- core_context))
+ if (GNUNET_OK != GNUNET_CORE_iterate_peers (core_context->daemon->cfg,
+ &internal_topology_callback,
+ core_context))
{
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Topology iteration failed.\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Topology iteration failed.\n");
internal_topology_callback (core_context, NULL, NULL);
}
}
* all connections that each currently has.
*/
void
-GNUNET_TESTING_get_topology (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_TESTING_NotifyTopology cb, void *cls)
+GNUNET_TESTING_get_topology(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_TESTING_NotifyTopology cb, void *cls)
{
struct TopologyIterateContext *topology_context;
struct CoreContext *core_ctx;
* @return GNUNET_OK to continue, GNUNET_SYSERR to abort iteration
*/
static int
-internal_stats_callback (void *cls,
- const char *subsystem,
- const char *name, uint64_t value, int is_persistent)
+internal_stats_callback(void *cls, const char *subsystem, const char *name,
+ uint64_t value, int is_persistent)
{
struct StatsCoreContext *core_context = cls;
struct StatsIterateContext *stats_context =
- (struct StatsIterateContext *) core_context->iter_context;
+ (struct StatsIterateContext *) core_context->iter_context;
return stats_context->proc (stats_context->cls, &core_context->daemon->id,
subsystem, name, value, is_persistent);
* was canceled or not (we don't care)
*/
static void
-internal_stats_cont (void *cls, int success)
+internal_stats_cont(void *cls, int success)
{
struct StatsCoreContext *core_context = cls;
struct StatsIterateContext *stats_context =
- (struct StatsIterateContext *) core_context->iter_context;
+ (struct StatsIterateContext *) core_context->iter_context;
stats_context->connected--;
stats_context->completed++;
* schedule for some time in the future.
*/
static void
-schedule_get_statistics (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc)
+schedule_get_statistics(void *cls,
+ const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct StatsCoreContext *core_context = cls;
struct StatsIterateContext *stats_context =
- (struct StatsIterateContext *) core_context->iter_context;
+ (struct StatsIterateContext *) core_context->iter_context;
if (tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN)
return;
{
#if VERBOSE_TESTING > 2
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _
- ("Delaying connect, we have too many outstanding connections!\n"));
+ _
+ ("Delaying connect, we have too many outstanding connections!\n"));
#endif
- GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_MILLISECONDS, 100),
+ GNUNET_SCHEDULER_add_delayed (
+ GNUNET_TIME_relative_multiply (
+ GNUNET_TIME_UNIT_MILLISECONDS,
+ 100),
&schedule_get_statistics, core_context);
}
else
{
#if VERBOSE_TESTING > 2
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating connection, outstanding_connections is %d\n"),
- outstanding_connects);
+ _("Creating connection, outstanding_connections is %d\n"),
+ outstanding_connects);
#endif
stats_context->connected++;
- core_context->stats_handle =
- GNUNET_STATISTICS_create ("testing", core_context->daemon->cfg);
+ core_context->stats_handle
+ = GNUNET_STATISTICS_create ("testing", core_context->daemon->cfg);
if (core_context->stats_handle == NULL)
{
internal_stats_cont (core_context, GNUNET_NO);
return;
}
- core_context->stats_get_handle =
- GNUNET_STATISTICS_get (core_context->stats_handle, NULL, NULL,
- GNUNET_TIME_relative_get_forever (),
- &internal_stats_cont, &internal_stats_callback,
- core_context);
+ core_context->stats_get_handle
+ = GNUNET_STATISTICS_get (core_context->stats_handle, NULL, NULL,
+ GNUNET_TIME_relative_get_forever (),
+ &internal_stats_cont,
+ &internal_stats_callback, core_context);
if (core_context->stats_get_handle == NULL)
internal_stats_cont (core_context, GNUNET_NO);
* GNUNET_NO if not (and we may have added it to the list)
*/
static int
-stats_check_existing (struct GNUNET_TESTING_PeerGroup *pg,
- struct PeerData *specific_peer,
- struct DuplicateStats **stats_list)
+stats_check_existing(struct GNUNET_TESTING_PeerGroup *pg,
+ struct PeerData *specific_peer, struct DuplicateStats **stats_list)
{
struct DuplicateStats *pos;
char *unix_domain_socket;
unsigned long long port;
char *to_match;
- if (GNUNET_YES !=
- GNUNET_CONFIGURATION_get_value_yesno (pg->cfg, "testing",
- "single_statistics_per_host"))
- return GNUNET_NO; /* Each peer has its own statistics instance, do nothing! */
+ if (GNUNET_YES
+ != GNUNET_CONFIGURATION_get_value_yesno (pg->cfg, "testing",
+ "single_statistics_per_host"))
+ return GNUNET_NO; /* Each peer has its own statistics instance, do nothing! */
pos = *stats_list;
- if (GNUNET_OK !=
- GNUNET_CONFIGURATION_get_value_string (specific_peer->cfg, "statistics",
- "unixpath", &unix_domain_socket))
+ if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_string (specific_peer->cfg,
+ "statistics",
+ "unixpath",
+ &unix_domain_socket))
return GNUNET_NO;
- if (GNUNET_OK !=
- GNUNET_CONFIGURATION_get_value_number (specific_peer->cfg, "statistics",
- "port", &port))
+ if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_number (specific_peer->cfg,
+ "statistics", "port",
+ &port))
{
GNUNET_free(unix_domain_socket);
return GNUNET_NO;
* all statistics from each.
*/
void
-GNUNET_TESTING_get_statistics (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_STATISTICS_Callback cont,
- GNUNET_TESTING_STATISTICS_Iterator proc,
- void *cls)
+GNUNET_TESTING_get_statistics(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_STATISTICS_Callback cont, GNUNET_TESTING_STATISTICS_Iterator proc,
+ void *cls)
{
struct StatsIterateContext *stats_context;
struct StatsCoreContext *core_ctx;
for (i = 0; i < pg->total; i++)
{
- if ((pg->peers[i].daemon->running == GNUNET_YES)
- && (GNUNET_NO ==
- stats_check_existing (pg, &pg->peers[i], &stats_list)))
+ if ((pg->peers[i].daemon->running == GNUNET_YES) && (GNUNET_NO
+ == stats_check_existing (pg, &pg->peers[i], &stats_list)))
{
/* Allocate one core context per core we need to connect to */
core_ctx = GNUNET_malloc (sizeof (struct StatsCoreContext));
*
* @param pg the peer group to stop connecting
*/
-void GNUNET_TESTING_stop_connections(struct GNUNET_TESTING_PeerGroup *pg)
+void
+GNUNET_TESTING_stop_connections(struct GNUNET_TESTING_PeerGroup *pg)
{
pg->stop_connects = GNUNET_YES;
}
*
* @param pg the peer group to resume connecting
*/
-void GNUNET_TESTING_resume_connections(struct GNUNET_TESTING_PeerGroup *pg)
+void
+GNUNET_TESTING_resume_connections(struct GNUNET_TESTING_PeerGroup *pg)
{
pg->stop_connects = GNUNET_NO;
}
* @return the number of connections that will be attempted, GNUNET_SYSERR on error
*/
int
-GNUNET_TESTING_connect_topology (struct GNUNET_TESTING_PeerGroup *pg,
- enum GNUNET_TESTING_Topology topology,
- enum GNUNET_TESTING_TopologyOption options,
- double option_modifier,
- struct GNUNET_TIME_Relative connect_timeout,
- unsigned int connect_attempts,
- GNUNET_TESTING_NotifyCompletion
- notify_callback, void *notify_cls)
+GNUNET_TESTING_connect_topology(struct GNUNET_TESTING_PeerGroup *pg,
+ enum GNUNET_TESTING_Topology topology,
+ enum GNUNET_TESTING_TopologyOption options, double option_modifier,
+ struct GNUNET_TIME_Relative connect_timeout, unsigned int connect_attempts,
+ GNUNET_TESTING_NotifyCompletion notify_callback, void *notify_cls)
{
switch (topology)
{
- case GNUNET_TESTING_TOPOLOGY_CLIQUE:
+ case GNUNET_TESTING_TOPOLOGY_CLIQUE:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating clique CONNECT topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating clique CONNECT topology\n"));
#endif
- create_clique (pg, &add_connections, CONNECT, GNUNET_NO);
- break;
- case GNUNET_TESTING_TOPOLOGY_SMALL_WORLD_RING:
+ create_clique (pg, &add_connections, CONNECT, GNUNET_NO);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_SMALL_WORLD_RING:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating small world (ring) CONNECT topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating small world (ring) CONNECT topology\n"));
#endif
- create_small_world_ring (pg, &add_connections, CONNECT);
- break;
- case GNUNET_TESTING_TOPOLOGY_SMALL_WORLD:
+ create_small_world_ring (pg, &add_connections, CONNECT);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_SMALL_WORLD:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating small world (2d-torus) CONNECT topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating small world (2d-torus) CONNECT topology\n"));
#endif
- create_small_world (pg, &add_connections, CONNECT);
- break;
- case GNUNET_TESTING_TOPOLOGY_RING:
+ create_small_world (pg, &add_connections, CONNECT);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_RING:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating ring CONNECT topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Creating ring CONNECT topology\n"));
#endif
- create_ring (pg, &add_connections, CONNECT);
- break;
- case GNUNET_TESTING_TOPOLOGY_2D_TORUS:
+ create_ring (pg, &add_connections, CONNECT);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_2D_TORUS:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating 2d torus CONNECT topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating 2d torus CONNECT topology\n"));
#endif
- create_2d_torus (pg, &add_connections, CONNECT);
- break;
- case GNUNET_TESTING_TOPOLOGY_ERDOS_RENYI:
+ create_2d_torus (pg, &add_connections, CONNECT);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_ERDOS_RENYI:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating Erdos-Renyi CONNECT topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating Erdos-Renyi CONNECT topology\n"));
#endif
- create_erdos_renyi (pg, &add_connections, CONNECT);
- break;
- case GNUNET_TESTING_TOPOLOGY_INTERNAT:
+ create_erdos_renyi (pg, &add_connections, CONNECT);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_INTERNAT:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating InterNAT CONNECT topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating InterNAT CONNECT topology\n"));
#endif
- create_nated_internet (pg, &add_connections, CONNECT);
- break;
- case GNUNET_TESTING_TOPOLOGY_SCALE_FREE:
+ create_nated_internet (pg, &add_connections, CONNECT);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_SCALE_FREE:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating Scale Free CONNECT topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating Scale Free CONNECT topology\n"));
#endif
- create_scale_free (pg, &add_connections, CONNECT);
- break;
- case GNUNET_TESTING_TOPOLOGY_LINE:
+ create_scale_free (pg, &add_connections, CONNECT);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_LINE:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating straight line CONNECT topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Creating straight line CONNECT topology\n"));
#endif
- create_line (pg, &add_connections, CONNECT);
- break;
- case GNUNET_TESTING_TOPOLOGY_NONE:
+ create_line (pg, &add_connections, CONNECT);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_NONE:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Creating no CONNECT topology\n"));
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Creating no CONNECT topology\n"));
#endif
- copy_allowed_topology (pg);
- break;
- default:
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- _
- ("Unknown topology specification, can't connect peers!\n"));
- return GNUNET_SYSERR;
+ copy_allowed_topology (pg);
+ break;
+ default:
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING, _
+ ("Unknown topology specification, can't connect peers!\n"));
+ return GNUNET_SYSERR;
}
switch (options)
{
- case GNUNET_TESTING_TOPOLOGY_OPTION_RANDOM:
+ case GNUNET_TESTING_TOPOLOGY_OPTION_RANDOM:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _
- ("Connecting random subset (%'.2f percent) of possible peers\n"),
- 100 * option_modifier);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _
+ ("Connecting random subset (%'.2f percent) of possible peers\n"), 100
+ * option_modifier);
#endif
- choose_random_connections (pg, option_modifier);
- break;
- case GNUNET_TESTING_TOPOLOGY_OPTION_MINIMUM:
+ choose_random_connections (pg, option_modifier);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_OPTION_MINIMUM:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _("Connecting a minimum of %u peers each (if possible)\n"),
- (unsigned int) option_modifier);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ _("Connecting a minimum of %u peers each (if possible)\n"),
+ (unsigned int) option_modifier);
#endif
- choose_minimum (pg, (unsigned int) option_modifier);
- break;
- case GNUNET_TESTING_TOPOLOGY_OPTION_DFS:
+ choose_minimum (pg, (unsigned int) option_modifier);
+ break;
+ case GNUNET_TESTING_TOPOLOGY_OPTION_DFS:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- _
- ("Using DFS to connect a minimum of %u peers each (if possible)\n"),
- (unsigned int) option_modifier);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _
+ ("Using DFS to connect a minimum of %u peers each (if possible)\n"),
+ (unsigned int) option_modifier);
#endif
#if FIXME
- perform_dfs (pg, (int) option_modifier);
+ perform_dfs (pg, (int) option_modifier);
#endif
- break;
- case GNUNET_TESTING_TOPOLOGY_OPTION_ADD_CLOSEST:
+ break;
+ case GNUNET_TESTING_TOPOLOGY_OPTION_ADD_CLOSEST:
#if VERBOSE_TOPOLOGY
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- _
- ("Finding additional %u closest peers each (if possible)\n"),
- (unsigned int) option_modifier);
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING, _
+ ("Finding additional %u closest peers each (if possible)\n"),
+ (unsigned int) option_modifier);
#endif
#if FIXME
- add_closest (pg, (unsigned int) option_modifier,
- &add_connections, CONNECT);
+ add_closest (pg, (unsigned int) option_modifier,
+ &add_connections, CONNECT);
#endif
- break;
- case GNUNET_TESTING_TOPOLOGY_OPTION_NONE:
- break;
- case GNUNET_TESTING_TOPOLOGY_OPTION_ALL:
- break;
- default:
- break;
+ break;
+ case GNUNET_TESTING_TOPOLOGY_OPTION_NONE:
+ break;
+ case GNUNET_TESTING_TOPOLOGY_OPTION_ALL:
+ break;
+ default:
+ break;
}
- return connect_topology (pg, connect_timeout, connect_attempts, notify_callback, notify_cls);
+ return connect_topology (pg, connect_timeout, connect_attempts,
+ notify_callback, notify_cls);
}
/**
* @return the number of current ssh connections to the host
*/
static unsigned int
-count_outstanding_at_host(const char *hostname, struct GNUNET_TESTING_PeerGroup *pg)
+count_outstanding_at_host(const char *hostname,
+ struct GNUNET_TESTING_PeerGroup *pg)
{
struct OutstandingSSH *pos;
pos = pg->ssh_head;
- while ((pos != NULL) && (strcmp(pos->hostname, hostname) != 0))
+ while ((pos != NULL) && (strcmp (pos->hostname, hostname) != 0))
pos = pos->next;
GNUNET_assert(pos != NULL);
return pos->outstanding;
}
-
/**
* Increment the number of SSH connections to a host by one.
*
*
*/
static void
-increment_outstanding_at_host(const char *hostname, struct GNUNET_TESTING_PeerGroup *pg)
+increment_outstanding_at_host(const char *hostname,
+ struct GNUNET_TESTING_PeerGroup *pg)
{
struct OutstandingSSH *pos;
pos = pg->ssh_head;
- while ((pos != NULL) && (strcmp(pos->hostname, hostname) != 0))
+ while ((pos != NULL) && (strcmp (pos->hostname, hostname) != 0))
pos = pos->next;
GNUNET_assert(pos != NULL);
pos->outstanding++;
*
*/
static void
-decrement_outstanding_at_host(const char *hostname, struct GNUNET_TESTING_PeerGroup *pg)
+decrement_outstanding_at_host(const char *hostname,
+ struct GNUNET_TESTING_PeerGroup *pg)
{
struct OutstandingSSH *pos;
pos = pg->ssh_head;
- while ((pos != NULL) && (strcmp(pos->hostname, hostname) != 0))
+ while ((pos != NULL) && (strcmp (pos->hostname, hostname) != 0))
pos = pos->next;
GNUNET_assert(pos != NULL);
pos->outstanding--;
}
-
/**
* Callback that is called whenever a hostkey is generated
* for a peer. Call the real callback and decrement the
* @param emsg error message (NULL on success)
*/
static void
-internal_hostkey_callback (void *cls,
- const struct GNUNET_PeerIdentity *id,
- struct GNUNET_TESTING_Daemon *d, const char *emsg)
+internal_hostkey_callback(void *cls, const struct GNUNET_PeerIdentity *id,
+ struct GNUNET_TESTING_Daemon *d, const char *emsg)
{
struct InternalStartContext *internal_context = cls;
internal_context->peer->pg->starting--;
internal_context->peer->pg->started++;
if (internal_context->hostname != NULL)
- decrement_outstanding_at_host(internal_context->hostname, internal_context->peer->pg);
+ decrement_outstanding_at_host (internal_context->hostname,
+ internal_context->peer->pg);
if (internal_context->hostkey_callback != NULL)
internal_context->hostkey_callback (internal_context->hostkey_cls, id, d,
emsg);
- else if (internal_context->peer->pg->started ==
- internal_context->peer->pg->total)
+ else if (internal_context->peer->pg->started
+ == internal_context->peer->pg->total)
{
- internal_context->peer->pg->started = 0; /* Internal startup may use this counter! */
+ internal_context->peer->pg->started = 0; /* Internal startup may use this counter! */
GNUNET_TESTING_daemons_continue_startup (internal_context->peer->pg);
}
}
* @param emsg error message (NULL on success)
*/
static void
-internal_startup_callback (void *cls,
- const struct GNUNET_PeerIdentity *id,
- const struct GNUNET_CONFIGURATION_Handle *cfg,
- struct GNUNET_TESTING_Daemon *d, const char *emsg)
+internal_startup_callback(void *cls, const struct GNUNET_PeerIdentity *id,
+ const struct GNUNET_CONFIGURATION_Handle *cfg,
+ struct GNUNET_TESTING_Daemon *d, const char *emsg)
{
struct InternalStartContext *internal_context = cls;
internal_context->peer->pg->starting--;
if (internal_context->hostname != NULL)
- decrement_outstanding_at_host(internal_context->hostname, internal_context->peer->pg);
+ decrement_outstanding_at_host (internal_context->hostname,
+ internal_context->peer->pg);
if (internal_context->start_cb != NULL)
internal_context->start_cb (internal_context->start_cb_cls, id, cfg, d,
emsg);
}
static void
-internal_continue_startup (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc)
+internal_continue_startup(void *cls,
+ const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct InternalStartContext *internal_context = cls;
return;
}
- if ((internal_context->peer->pg->starting < internal_context->peer->pg->max_concurrent_ssh) ||
- ((internal_context->hostname != NULL) &&
- (count_outstanding_at_host(internal_context->hostname, internal_context->peer->pg) < internal_context->peer->pg->max_concurrent_ssh)))
+ if ((internal_context->peer->pg->starting
+ < internal_context->peer->pg->max_concurrent_ssh)
+ || ((internal_context->hostname != NULL)
+ && (count_outstanding_at_host (internal_context->hostname,
+ internal_context->peer->pg)
+ < internal_context->peer->pg->max_concurrent_ssh)))
{
if (internal_context->hostname != NULL)
- increment_outstanding_at_host(internal_context->hostname, internal_context->peer->pg);
+ increment_outstanding_at_host (internal_context->hostname,
+ internal_context->peer->pg);
internal_context->peer->pg->starting++;
GNUNET_TESTING_daemon_continue_startup (internal_context->peer->daemon);
}
else
{
- GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_MILLISECONDS, 100),
+ GNUNET_SCHEDULER_add_delayed (
+ GNUNET_TIME_relative_multiply (
+ GNUNET_TIME_UNIT_MILLISECONDS,
+ 100),
&internal_continue_startup,
internal_context);
}
}
-
/**
* Callback for informing us about a successful
* or unsuccessful churn start call.
*
*/
void
-churn_start_callback (void *cls,
- const struct GNUNET_PeerIdentity *id,
- const struct GNUNET_CONFIGURATION_Handle *cfg,
- struct GNUNET_TESTING_Daemon *d, const char *emsg)
+churn_start_callback(void *cls, const struct GNUNET_PeerIdentity *id,
+ const struct GNUNET_CONFIGURATION_Handle *cfg,
+ struct GNUNET_TESTING_Daemon *d, const char *emsg)
{
struct ChurnRestartContext *startup_ctx = cls;
struct ChurnContext *churn_ctx = startup_ctx->churn_ctx;
#if DEBUG_CHURN
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- "Started peer, %d left.\n", churn_ctx->num_to_start);
+ "Started peer, %d left.\n", churn_ctx->num_to_start);
#endif
- total_left =
- (churn_ctx->num_to_stop - churn_ctx->num_failed_stop) +
- (churn_ctx->num_to_start - churn_ctx->num_failed_start);
+ total_left = (churn_ctx->num_to_stop - churn_ctx->num_failed_stop)
+ + (churn_ctx->num_to_start - churn_ctx->num_failed_start);
if (total_left == 0)
{
- if ((churn_ctx->num_failed_stop > 0)
- || (churn_ctx->num_failed_start > 0))
- GNUNET_asprintf (&error_message,
+ if ((churn_ctx->num_failed_stop > 0) || (churn_ctx->num_failed_start > 0))
+ GNUNET_asprintf (
+ &error_message,
"Churn didn't complete successfully, %u peers failed to start %u peers failed to be stopped!",
churn_ctx->num_failed_start,
churn_ctx->num_failed_stop);
}
}
-
static void
-schedule_churn_restart (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc)
+schedule_churn_restart(void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct PeerRestartContext *peer_restart_ctx = cls;
- struct ChurnRestartContext *startup_ctx =
- peer_restart_ctx->churn_restart_ctx;
+ struct ChurnRestartContext *startup_ctx = peer_restart_ctx->churn_restart_ctx;
if (startup_ctx->outstanding > startup_ctx->pg->max_concurrent_ssh)
- GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_MILLISECONDS, 100),
+ GNUNET_SCHEDULER_add_delayed (
+ GNUNET_TIME_relative_multiply (
+ GNUNET_TIME_UNIT_MILLISECONDS,
+ 100),
&schedule_churn_restart, peer_restart_ctx);
else
{
GNUNET_TESTING_daemon_start_stopped (peer_restart_ctx->daemon,
startup_ctx->timeout,
- &churn_start_callback,
- startup_ctx);
+ &churn_start_callback, startup_ctx);
GNUNET_free (peer_restart_ctx);
}
}
-
-
static void
-internal_start (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+internal_start(void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct InternalStartContext *internal_context = cls;
return;
}
- if ((internal_context->peer->pg->starting < internal_context->peer->pg->max_concurrent_ssh) ||
- ((internal_context->hostname != NULL) &&
- (count_outstanding_at_host(internal_context->hostname, internal_context->peer->pg) < internal_context->peer->pg->max_concurrent_ssh)))
+ if ((internal_context->peer->pg->starting
+ < internal_context->peer->pg->max_concurrent_ssh)
+ || ((internal_context->hostname != NULL)
+ && (count_outstanding_at_host (internal_context->hostname,
+ internal_context->peer->pg)
+ < internal_context->peer->pg->max_concurrent_ssh)))
{
if (internal_context->hostname != NULL)
- increment_outstanding_at_host(internal_context->hostname, internal_context->peer->pg);
+ increment_outstanding_at_host (internal_context->hostname,
+ internal_context->peer->pg);
internal_context->peer->pg->starting++;
- internal_context->peer->daemon =
- GNUNET_TESTING_daemon_start (internal_context->peer->cfg,
- internal_context->timeout,
- internal_context->hostname,
- internal_context->username,
- internal_context->sshport,
- internal_context->hostkey,
- &internal_hostkey_callback,
- internal_context,
- &internal_startup_callback,
- internal_context);
+ internal_context->peer->daemon
+ = GNUNET_TESTING_daemon_start (internal_context->peer->cfg,
+ internal_context->timeout,
+ internal_context->hostname,
+ internal_context->username,
+ internal_context->sshport,
+ internal_context->hostkey,
+ &internal_hostkey_callback,
+ internal_context,
+ &internal_startup_callback,
+ internal_context);
}
else
{
- GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_MILLISECONDS, 100),
+ GNUNET_SCHEDULER_add_delayed (
+ GNUNET_TIME_relative_multiply (
+ GNUNET_TIME_UNIT_MILLISECONDS,
+ 100),
&internal_start, internal_context);
}
}
*
*/
void
-GNUNET_TESTING_daemons_continue_startup (struct GNUNET_TESTING_PeerGroup *pg)
+GNUNET_TESTING_daemons_continue_startup(struct GNUNET_TESTING_PeerGroup *pg)
{
unsigned int i;
* @param cfg configuration template to use
* @param total number of daemons to start
* @param max_concurrent_connections for testing, how many peers can
-* we connect to simultaneously
+ * we connect to simultaneously
* @param max_concurrent_ssh when starting with ssh, how many ssh
* connections will we allow at once (based on remote hosts allowed!)
* @param timeout total time allowed for peers to start
* @return NULL on error, otherwise handle to control peer group
*/
struct GNUNET_TESTING_PeerGroup *
-GNUNET_TESTING_daemons_start (const struct GNUNET_CONFIGURATION_Handle *cfg,
- unsigned int total,
- unsigned int max_concurrent_connections,
- unsigned int max_concurrent_ssh,
- struct GNUNET_TIME_Relative timeout,
- GNUNET_TESTING_NotifyHostkeyCreated
- hostkey_callback, void *hostkey_cls,
- GNUNET_TESTING_NotifyDaemonRunning cb,
- void *cb_cls,
- GNUNET_TESTING_NotifyConnection
- connect_callback, void *connect_callback_cls,
- const struct GNUNET_TESTING_Host *hostnames)
+GNUNET_TESTING_daemons_start(const struct GNUNET_CONFIGURATION_Handle *cfg,
+ unsigned int total, unsigned int max_concurrent_connections,
+ unsigned int max_concurrent_ssh, struct GNUNET_TIME_Relative timeout,
+ GNUNET_TESTING_NotifyHostkeyCreated hostkey_callback, void *hostkey_cls,
+ GNUNET_TESTING_NotifyDaemonRunning cb, void *cb_cls,
+ GNUNET_TESTING_NotifyConnection connect_callback,
+ void *connect_callback_cls, const struct GNUNET_TESTING_Host *hostnames)
{
struct GNUNET_TESTING_PeerGroup *pg;
const struct GNUNET_TESTING_Host *hostpos;
off = 2;
/* skip leading spaces */
while ((0 != *hostnames) && (isspace ((unsigned char) *hostnames)))
- hostnames++;
+ hostnames++;
rpos = hostnames;
while ('\0' != *rpos)
{
if (isspace ((unsigned char) *rpos))
- off++;
+ off++;
rpos++;
}
pg->hosts = GNUNET_malloc (off * sizeof (struct HostData));
pg->hosts = NULL;
}
hostcnt = off;
- minport = 0; /* make gcc happy */
+ minport = 0; /* make gcc happy */
#endif
}
else
/* Create the servicehome directory for each remote peer */
GNUNET_assert(GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (cfg, "PATHS", "SERVICEHOME",
- &baseservicehome));
+ &baseservicehome));
for (i = 0; i < pg->num_hosts; i++)
{
struct OutstandingSSH *ssh_entry;
ssh_entry->hostname = pg->hosts[i].hostname; /* Don't free! */
GNUNET_CONTAINER_DLL_insert(pg->ssh_head, pg->ssh_tail, ssh_entry);
if (NULL != pg->hosts[i].username)
- GNUNET_asprintf (&arg, "%s@%s", pg->hosts[i].username, pg->hosts[i].hostname);
+ GNUNET_asprintf (&arg, "%s@%s", pg->hosts[i].username,
+ pg->hosts[i].hostname);
else
GNUNET_asprintf (&arg, "%s", pg->hosts[i].hostname);
if (pg->hosts[i].sshport != 0)
{
GNUNET_asprintf (&ssh_port_str, "%d", pg->hosts[i].sshport);
- proc = GNUNET_OS_start_process (NULL, NULL, "ssh",
- "ssh", "-P", ssh_port_str,
+ proc = GNUNET_OS_start_process (NULL, NULL, "ssh", "ssh", "-P",
+ ssh_port_str,
#if !DEBUG_TESTING
"-q",
#endif
- arg, "mkdir -p", baseservicehome, NULL);
+ arg, "mkdir -p", baseservicehome,
+ NULL);
}
else
- proc = GNUNET_OS_start_process (NULL, NULL, "ssh",
- "ssh", arg, "mkdir -p", baseservicehome, NULL);
- GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Creating remote dir with command ssh %s %s %s\n", arg, " mkdir -p ", baseservicehome);
- GNUNET_OS_process_wait(proc);
+ proc = GNUNET_OS_start_process (NULL, NULL, "ssh", "ssh", arg,
+ "mkdir -p", baseservicehome, NULL);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Creating remote dir with command ssh %s %s %s\n", arg,
+ " mkdir -p ", baseservicehome);
+ GNUNET_OS_process_wait (proc);
}
GNUNET_free(baseservicehome);
- if (GNUNET_YES == GNUNET_CONFIGURATION_get_value_string (cfg, "TESTING", "HOSTKEYSFILE",
- &hostkeys_file))
+ if (GNUNET_YES == GNUNET_CONFIGURATION_get_value_string (cfg, "TESTING",
+ "HOSTKEYSFILE",
+ &hostkeys_file))
{
if (GNUNET_YES != GNUNET_DISK_file_test (hostkeys_file))
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Couldn't read hostkeys file!\n");
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Couldn't read hostkeys file!\n");
else
{
/* Check hostkey file size, read entire thing into memory */
return NULL;
}
- if (GNUNET_YES != GNUNET_DISK_file_size (hostkeys_file, &fs, GNUNET_YES))
+ if (GNUNET_YES != GNUNET_DISK_file_size (hostkeys_file, &fs,
+ GNUNET_YES))
fs = 0;
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Found file size %llu for hostkeys, expect hostkeys to be size %d\n", fs, HOSTKEYFILESIZE);
+ GNUNET_log (
+ GNUNET_ERROR_TYPE_WARNING,
+ "Found file size %llu for hostkeys, expect hostkeys to be size %d\n",
+ fs, HOSTKEYFILESIZE);
if (fs % HOSTKEYFILESIZE != 0)
{
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "File size %llu seems incorrect for hostkeys...\n", fs);
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "File size %llu seems incorrect for hostkeys...\n",
+ fs);
}
else
{
total_hostkeys = fs / HOSTKEYFILESIZE;
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "Will read %llu hostkeys from file\n", total_hostkeys);
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Will read %llu hostkeys from file\n", total_hostkeys);
pg->hostkey_data = GNUNET_malloc_large (fs);
GNUNET_assert (fs == GNUNET_DISK_file_read (fd, pg->hostkey_data, fs));
GNUNET_assert(GNUNET_OK == GNUNET_DISK_file_close(fd));
hostname = pg->hosts[off % hostcnt].hostname;
username = pg->hosts[off % hostcnt].username;
sshport = pg->hosts[off % hostcnt].sshport;
- pcfg = make_config (cfg,
- off,
- &pg->hosts[off % hostcnt].minport,
+ pcfg = make_config (cfg, off, &pg->hosts[off % hostcnt].minport,
&upnum, hostname, &fdnum);
}
else
if (NULL == pcfg)
{
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- _
- ("Could not create configuration for peer number %u on `%s'!\n"),
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING, _
+ ("Could not create configuration for peer number %u on `%s'!\n"),
off, hostname == NULL ? "localhost" : hostname);
continue;
}
- if (GNUNET_YES ==
- GNUNET_CONFIGURATION_get_value_string (pcfg, "PATHS", "SERVICEHOME",
- &baseservicehome))
+ if (GNUNET_YES
+ == GNUNET_CONFIGURATION_get_value_string (pcfg, "PATHS",
+ "SERVICEHOME",
+ &baseservicehome))
{
GNUNET_asprintf (&newservicehome, "%s/%d/", baseservicehome, off);
GNUNET_free (baseservicehome);
{
tmpdir = getenv ("TMPDIR");
tmpdir = tmpdir ? tmpdir : "/tmp";
- GNUNET_asprintf (&newservicehome,
- "%s/%s/%d/",
- tmpdir, "gnunet-testing-test-test", off);
+ GNUNET_asprintf (&newservicehome, "%s/%s/%d/", tmpdir,
+ "gnunet-testing-test-test", off);
}
- GNUNET_CONFIGURATION_set_value_string (pcfg,
- "PATHS",
- "SERVICEHOME", newservicehome);
+ GNUNET_CONFIGURATION_set_value_string (pcfg, "PATHS", "SERVICEHOME",
+ newservicehome);
GNUNET_free (newservicehome);
pg->peers[off].cfg = pcfg;
#if DEFER
/* Can we do this later? */
pg->peers[off].allowed_peers =
- GNUNET_CONTAINER_multihashmap_create (total);
+ GNUNET_CONTAINER_multihashmap_create (total);
pg->peers[off].connect_peers =
- GNUNET_CONTAINER_multihashmap_create (total);
+ GNUNET_CONTAINER_multihashmap_create (total);
pg->peers[off].blacklisted_peers =
- GNUNET_CONTAINER_multihashmap_create (total);
+ GNUNET_CONTAINER_multihashmap_create (total);
#endif
pg->peers[off].pg = pg;
pg->peers[off].internal_context.username = username;
pg->peers[off].internal_context.sshport = sshport;
if (pg->hostkey_data != NULL)
- pg->peers[off].internal_context.hostkey = &pg->hostkey_data[off * HOSTKEYFILESIZE];
+ pg->peers[off].internal_context.hostkey = &pg->hostkey_data[off
+ * HOSTKEYFILESIZE];
pg->peers[off].internal_context.hostkey_callback = hostkey_callback;
pg->peers[off].internal_context.hostkey_cls = hostkey_cls;
pg->peers[off].internal_context.start_cb = cb;
* offsetting operation.
*/
struct GNUNET_TESTING_Daemon *
-GNUNET_TESTING_daemon_get (struct GNUNET_TESTING_PeerGroup *pg,
- unsigned int position)
+GNUNET_TESTING_daemon_get(struct GNUNET_TESTING_PeerGroup *pg,
+ unsigned int position)
{
if (position < pg->total)
return pg->peers[position].daemon;
* @return the daemon on success, or NULL if no such peer identity is found
*/
struct GNUNET_TESTING_Daemon *
-GNUNET_TESTING_daemon_get_by_id (struct GNUNET_TESTING_PeerGroup *pg,
- struct GNUNET_PeerIdentity *peer_id)
+GNUNET_TESTING_daemon_get_by_id(struct GNUNET_TESTING_PeerGroup *pg,
+ struct GNUNET_PeerIdentity *peer_id)
{
unsigned int i;
for (i = 0; i < pg->total; i++)
{
- if (0 ==
- memcmp (&pg->peers[i].daemon->id, peer_id,
- sizeof (struct GNUNET_PeerIdentity)))
+ if (0 == memcmp (&pg->peers[i].daemon->id, peer_id,
+ sizeof(struct GNUNET_PeerIdentity)))
return pg->peers[i].daemon;
}
* @param emsg NULL on success
*/
void
-restart_callback (void *cls,
- const struct GNUNET_PeerIdentity *id,
- const struct GNUNET_CONFIGURATION_Handle *cfg,
- struct GNUNET_TESTING_Daemon *d, const char *emsg)
+restart_callback(void *cls, const struct GNUNET_PeerIdentity *id,
+ const struct GNUNET_CONFIGURATION_Handle *cfg,
+ struct GNUNET_TESTING_Daemon *d, const char *emsg)
{
struct RestartContext *restart_context = cls;
restart_context->callback (restart_context->callback_cls, NULL);
GNUNET_free (restart_context);
}
- else if (restart_context->peers_restart_failed +
- restart_context->peers_restarted ==
- restart_context->peer_group->total)
+ else if (restart_context->peers_restart_failed
+ + restart_context->peers_restarted == restart_context->peer_group->total)
{
restart_context->callback (restart_context->callback_cls,
"Failed to restart peers!");
*
*/
void
-churn_stop_callback (void *cls, const char *emsg)
+churn_stop_callback(void *cls, const char *emsg)
{
struct ShutdownContext *shutdown_ctx = cls;
struct ChurnContext *churn_ctx = shutdown_ctx->cb_cls;
#if DEBUG_CHURN
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- "Stopped peer, %d left.\n", churn_ctx->num_to_stop);
+ "Stopped peer, %d left.\n", churn_ctx->num_to_stop);
#endif
- total_left =
- (churn_ctx->num_to_stop - churn_ctx->num_failed_stop) +
- (churn_ctx->num_to_start - churn_ctx->num_failed_start);
+ total_left = (churn_ctx->num_to_stop - churn_ctx->num_failed_stop)
+ + (churn_ctx->num_to_start - churn_ctx->num_failed_start);
if (total_left == 0)
{
- if ((churn_ctx->num_failed_stop > 0)
- || (churn_ctx->num_failed_start > 0))
+ if ((churn_ctx->num_failed_stop > 0) || (churn_ctx->num_failed_start > 0))
{
- GNUNET_asprintf (&error_message,
+ GNUNET_asprintf (
+ &error_message,
"Churn didn't complete successfully, %u peers failed to start %u peers failed to be stopped!",
churn_ctx->num_failed_start,
churn_ctx->num_failed_stop);
* @return the number of currently running peers in the peer group
*/
unsigned int
-GNUNET_TESTING_daemons_running (struct GNUNET_TESTING_PeerGroup *pg)
+GNUNET_TESTING_daemons_running(struct GNUNET_TESTING_PeerGroup *pg)
{
unsigned int i;
unsigned int running = 0;
* to calling gnunet-arm N times all at once).
*/
static void
-schedule_churn_shutdown_task (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc)
+schedule_churn_shutdown_task(void *cls,
+ const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct PeerShutdownContext *peer_shutdown_ctx = cls;
struct ShutdownContext *shutdown_ctx;
GNUNET_assert (peer_shutdown_ctx != NULL);
shutdown_ctx = peer_shutdown_ctx->shutdown_ctx;
GNUNET_assert (shutdown_ctx != NULL);
- churn_ctx = (struct ChurnContext *)shutdown_ctx->cb_cls;
+ churn_ctx = (struct ChurnContext *) shutdown_ctx->cb_cls;
if (shutdown_ctx->outstanding > churn_ctx->pg->max_concurrent_ssh)
- GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_MILLISECONDS, 100),
+ GNUNET_SCHEDULER_add_delayed (
+ GNUNET_TIME_relative_multiply (
+ GNUNET_TIME_UNIT_MILLISECONDS,
+ 100),
&schedule_churn_shutdown_task,
peer_shutdown_ctx);
else
* @param cb_cls closure for cb
*/
void
-GNUNET_TESTING_daemons_churn (struct GNUNET_TESTING_PeerGroup *pg,
- unsigned int voff,
- unsigned int von,
- struct GNUNET_TIME_Relative timeout,
- GNUNET_TESTING_NotifyCompletion cb,
- void *cb_cls)
+GNUNET_TESTING_daemons_churn(struct GNUNET_TESTING_PeerGroup *pg,
+ unsigned int voff, unsigned int von, struct GNUNET_TIME_Relative timeout,
+ GNUNET_TESTING_NotifyCompletion cb, void *cb_cls)
{
struct ChurnContext *churn_ctx;
struct ShutdownContext *shutdown_ctx;
running = 0;
stopped = 0;
- if ((von == 0) && (voff == 0)) /* No peers at all? */
+ if ((von == 0) && (voff == 0)) /* No peers at all? */
{
cb (cb_cls, NULL);
return;
stopped_permute = NULL;
if (running > 0)
- running_permute =
- GNUNET_CRYPTO_random_permute (GNUNET_CRYPTO_QUALITY_WEAK, running);
+ running_permute = GNUNET_CRYPTO_random_permute (GNUNET_CRYPTO_QUALITY_WEAK,
+ running);
if (stopped > 0)
- stopped_permute =
- GNUNET_CRYPTO_random_permute (GNUNET_CRYPTO_QUALITY_WEAK, stopped);
+ stopped_permute = GNUNET_CRYPTO_random_permute (GNUNET_CRYPTO_QUALITY_WEAK,
+ stopped);
total_running = running;
total_stopped = stopped;
{
#if DEBUG_CHURN
GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Stopping peer %d!\n",
- running_permute[i]);
+ running_permute[i]);
#endif
GNUNET_assert (running_arr != NULL);
peer_shutdown_ctx = GNUNET_malloc (sizeof (struct PeerShutdownContext));
- peer_shutdown_ctx->daemon =
- pg->peers[running_arr[running_permute[i]]].daemon;
+ peer_shutdown_ctx->daemon
+ = pg->peers[running_arr[running_permute[i]]].daemon;
peer_shutdown_ctx->shutdown_ctx = shutdown_ctx;
GNUNET_SCHEDULER_add_now (&schedule_churn_shutdown_task,
peer_shutdown_ctx);
/*
- GNUNET_TESTING_daemon_stop (pg->peers[running_arr[running_permute[i]]].daemon,
- timeout,
- &churn_stop_callback, churn_ctx,
- GNUNET_NO, GNUNET_YES); */
+ GNUNET_TESTING_daemon_stop (pg->peers[running_arr[running_permute[i]]].daemon,
+ timeout,
+ &churn_stop_callback, churn_ctx,
+ GNUNET_NO, GNUNET_YES); */
}
GNUNET_assert (stopped >= von);
{
#if DEBUG_CHURN
GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Starting up peer %d!\n",
- stopped_permute[i]);
+ stopped_permute[i]);
#endif
GNUNET_assert (stopped_arr != NULL);
peer_restart_ctx = GNUNET_malloc (sizeof (struct PeerRestartContext));
peer_restart_ctx->churn_restart_ctx = churn_startup_ctx;
- peer_restart_ctx->daemon =
- pg->peers[stopped_arr[stopped_permute[i]]].daemon;
+ peer_restart_ctx->daemon
+ = pg->peers[stopped_arr[stopped_permute[i]]].daemon;
GNUNET_SCHEDULER_add_now (&schedule_churn_restart, peer_restart_ctx);
/*
- GNUNET_TESTING_daemon_start_stopped(pg->peers[stopped_arr[stopped_permute[i]]].daemon,
- timeout, &churn_start_callback, churn_ctx); */
+ GNUNET_TESTING_daemon_start_stopped(pg->peers[stopped_arr[stopped_permute[i]]].daemon,
+ timeout, &churn_start_callback, churn_ctx); */
}
GNUNET_free_non_null (running_arr);
GNUNET_free_non_null (stopped_permute);
}
-
/**
* Restart all peers in the given group.
*
* @param callback_cls closure for the callback function
*/
void
-GNUNET_TESTING_daemons_restart (struct GNUNET_TESTING_PeerGroup *pg,
- GNUNET_TESTING_NotifyCompletion callback,
- void *callback_cls)
+GNUNET_TESTING_daemons_restart(struct GNUNET_TESTING_PeerGroup *pg,
+ GNUNET_TESTING_NotifyCompletion callback, void *callback_cls)
{
struct RestartContext *restart_context;
unsigned int off;
* @param cb_cls closure for cb
*/
void
-GNUNET_TESTING_daemons_vary (struct GNUNET_TESTING_PeerGroup *pg,
- unsigned int offset,
- int desired_status,
- struct GNUNET_TIME_Relative timeout,
- GNUNET_TESTING_NotifyCompletion cb, void *cb_cls)
+GNUNET_TESTING_daemons_vary(struct GNUNET_TESTING_PeerGroup *pg,
+ unsigned int offset, int desired_status,
+ struct GNUNET_TIME_Relative timeout, GNUNET_TESTING_NotifyCompletion cb,
+ void *cb_cls)
{
struct ShutdownContext *shutdown_ctx;
struct ChurnRestartContext *startup_ctx;
churn_ctx->cb = cb;
churn_ctx->cb_cls = cb_cls;
shutdown_ctx->cb_cls = churn_ctx;
- GNUNET_TESTING_daemon_stop (pg->peers[offset].daemon,
- timeout, &churn_stop_callback,
- shutdown_ctx, GNUNET_NO, GNUNET_YES);
+ GNUNET_TESTING_daemon_stop (pg->peers[offset].daemon, timeout,
+ &churn_stop_callback, shutdown_ctx,
+ GNUNET_NO, GNUNET_YES);
}
}
else if (GNUNET_YES == desired_status)
GNUNET_break (0);
}
-
/**
* Callback for shutting down peers in a peer group.
*
* @param emsg NULL on success
*/
void
-internal_shutdown_callback (void *cls, const char *emsg)
+internal_shutdown_callback(void *cls, const char *emsg)
{
struct ShutdownContext *shutdown_ctx = cls;
unsigned int off;
shutdown_ctx->peers_failed++;
}
- if ((shutdown_ctx->cb != NULL)
- && (shutdown_ctx->peers_down + shutdown_ctx->peers_failed ==
- shutdown_ctx->total_peers))
+ if ((shutdown_ctx->cb != NULL) && (shutdown_ctx->peers_down
+ + shutdown_ctx->peers_failed == shutdown_ctx->total_peers))
{
if (shutdown_ctx->peers_failed > 0)
shutdown_ctx->cb (shutdown_ctx->cb_cls,
}
}
-
/**
* Task to rate limit the number of outstanding peer shutdown
* requests. This is necessary for making sure we don't do
* to calling gnunet-arm N times all at once).
*/
static void
-schedule_shutdown_task (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc)
+schedule_shutdown_task(void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct PeerShutdownContext *peer_shutdown_ctx = cls;
struct ShutdownContext *shutdown_ctx;
GNUNET_assert (shutdown_ctx != NULL);
if (shutdown_ctx->outstanding > shutdown_ctx->pg->max_concurrent_ssh)
- GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
- (GNUNET_TIME_UNIT_MILLISECONDS, 100),
+ GNUNET_SCHEDULER_add_delayed (
+ GNUNET_TIME_relative_multiply (
+ GNUNET_TIME_UNIT_MILLISECONDS,
+ 100),
&schedule_shutdown_task, peer_shutdown_ctx);
else
{
* @param cb_cls closure for cb
*/
void
-GNUNET_TESTING_daemons_stop (struct GNUNET_TESTING_PeerGroup *pg,
- struct GNUNET_TIME_Relative timeout,
- GNUNET_TESTING_NotifyCompletion cb, void *cb_cls)
+GNUNET_TESTING_daemons_stop(struct GNUNET_TESTING_PeerGroup *pg,
+ struct GNUNET_TIME_Relative timeout, GNUNET_TESTING_NotifyCompletion cb,
+ void *cb_cls)
{
unsigned int off;
struct ShutdownContext *shutdown_ctx;
}
#else
if (pg->peers[off].allowed_peers != NULL)
- GNUNET_CONTAINER_multihashmap_destroy (pg->peers[off].allowed_peers);
+ GNUNET_CONTAINER_multihashmap_destroy (pg->peers[off].allowed_peers);
if (pg->peers[off].connect_peers != NULL)
- GNUNET_CONTAINER_multihashmap_destroy (pg->peers[off].connect_peers);
+ GNUNET_CONTAINER_multihashmap_destroy (pg->peers[off].connect_peers);
if (pg->peers[off].blacklisted_peers != NULL)
- GNUNET_CONTAINER_multihashmap_destroy (pg->
- peers[off].blacklisted_peers);
+ GNUNET_CONTAINER_multihashmap_destroy (pg->
+ peers[off].blacklisted_peers);
#endif
}
}
-
/* end of testing_group.c */