GNUnet  0.10.x
Macros | Functions | Variables
gnunet-ats-sim.c File Reference

ats traffic simulator: this tool uses the ats-test library to setup a topology and generate traffic between these peers. More...

#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_testbed_service.h"
#include "gnunet_ats_service.h"
#include "gnunet_core_service.h"
#include "ats-testing.h"
Include dependency graph for gnunet-ats-sim.c:

Go to the source code of this file.

Macros

#define TEST_TIMEOUT   GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 10)
 

Functions

static void evaluate (struct GNUNET_TIME_Relative duration_total)
 
static void do_shutdown (void *cls)
 
static void do_timeout (void *cls)
 
static void log_request__cb (void *cls, const struct GNUNET_HELLO_Address *address, int address_active, struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out, struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in, const struct GNUNET_ATS_Properties *ats)
 
static void experiment_done_cb (struct Experiment *e, struct GNUNET_TIME_Relative duration, int success)
 
static void episode_done_cb (struct Episode *ep)
 
static void topology_setup_done (void *cls, struct BenchmarkPeer *masters, struct BenchmarkPeer *slaves)
 
static void parse_args (int argc, char *argv[])
 
int main (int argc, char *argv[])
 

Variables

static struct BenchmarkPeermasters_p
 
static struct BenchmarkPeerslaves_p
 
static char * opt_exp_file
 cmd option -e: experiment file More...
 
static int opt_log
 cmd option -l: enable logging More...
 
static int opt_plot
 cmd option -p: enable plots More...
 
static int opt_verbose
 cmd option -v: verbose logs More...
 
static struct GNUNET_SCHEDULER_Tasktimeout_task
 
static struct Experimente
 
static struct LoggingHandlel
 

Detailed Description

ats traffic simulator: this tool uses the ats-test library to setup a topology and generate traffic between these peers.

The traffic description is loaded from a experiment description file

Author
Christian Grothoff
Matthias Wachs

Definition in file gnunet-ats-sim.c.

Macro Definition Documentation

◆ TEST_TIMEOUT

Definition at line 35 of file gnunet-ats-sim.c.

Function Documentation

◆ evaluate()

static void evaluate ( struct GNUNET_TIME_Relative  duration_total)
static

Definition at line 68 of file gnunet-ats-sim.c.

References _, BenchmarkPartner::bytes_received, BenchmarkPartner::bytes_sent, BenchmarkPartner::dest, duration, BenchmarkPartner::messages_sent, BenchmarkPeer::no, Experiment::num_masters, Experiment::num_slaves, p, BenchmarkPeer::partners, BenchmarkPeer::pref_partner, GNUNET_TIME_Relative::rel_value_us, BenchmarkPartner::total_app_rtt, BenchmarkPeer::total_bytes_received, and BenchmarkPeer::total_bytes_sent.

Referenced by experiment_done_cb().

69 {
70  int c_m;
71  int c_s;
72  unsigned int duration;
73  struct BenchmarkPeer *mp;
74  struct BenchmarkPartner *p;
75 
76  unsigned int b_sent_sec;
77  double kb_sent_percent;
78  unsigned int b_recv_sec;
79  double kb_recv_percent;
80  unsigned int rtt;
81 
82 
83  duration = (duration_total.rel_value_us / (1000 * 1000));
84  if (0 == duration)
85  duration = 1;
86  for (c_m = 0; c_m < e->num_masters; c_m++)
87  {
88  mp = &masters_p[c_m];
89  fprintf (stderr,
90  _("Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. = %u KiB/s\n"),
91  mp->no, mp->total_bytes_sent / 1024,
92  duration,
93  (mp->total_bytes_sent / 1024) / duration,
94  mp->total_bytes_received / 1024,
95  duration,
96  (mp->total_bytes_received / 1024) / duration);
97 
98  for (c_s = 0; c_s < e->num_slaves; c_s++)
99  {
100  p = &mp->partners[c_s];
101 
102  b_sent_sec = 0;
103  b_recv_sec = 0;
104  kb_sent_percent = 0.0;
105  kb_recv_percent = 0.0;
106  rtt = 0;
107 
108  if (duration > 0)
109  {
110  b_sent_sec = p->bytes_sent / duration;
111  b_recv_sec = p->bytes_received / duration;
112  }
113 
114  if (mp->total_bytes_sent > 0)
115  kb_sent_percent = ((double) p->bytes_sent * 100) / mp->total_bytes_sent;
116  if (mp->total_bytes_received > 0)
117  kb_recv_percent = ((double) p->bytes_received * 100) / mp->total_bytes_received;
118  if (1000 * p->messages_sent > 0)
119  rtt = p->total_app_rtt / (1000 * p->messages_sent);
120  fprintf (stderr,
121  "%c Master [%u] -> Slave [%u]: sent %u Bips (%.2f %%), received %u Bips (%.2f %%)\n",
122  (mp->pref_partner == p->dest) ? '*' : ' ',
123  mp->no, p->dest->no,
124  b_sent_sec, kb_sent_percent,
125  b_recv_sec, kb_recv_percent);
126  fprintf (stderr,
127  "%c Master [%u] -> Slave [%u]: Average application layer RTT: %u ms\n",
128  (mp->pref_partner == p->dest) ? '*' : ' ',
129  mp->no, p->dest->no, rtt);
130  }
131  }
132 }
unsigned int total_bytes_sent
Total number of bytes this peer has sent.
Definition: ats-testing.h:217
unsigned int messages_sent
Number of messages sent to this partner.
Definition: ats-testing.h:315
unsigned int total_bytes_received
Total number of bytes this peer has received.
Definition: ats-testing.h:227
uint64_t rel_value_us
The actual value.
unsigned long long int num_masters
Definition: ats-testing.h:525
struct BenchmarkPartner * partners
Array of partners with num_slaves entries (if master) or num_master entries (if slave) ...
Definition: ats-testing.h:191
unsigned int bytes_received
Number of bytes received from this partner.
Definition: ats-testing.h:330
#define _(String)
GNU gettext support macro.
Definition: platform.h:208
int no
Unique identifier.
Definition: ats-testing.h:121
static struct GNUNET_OS_Process * p
Helper process we started.
Definition: gnunet-qr.c:59
unsigned int total_app_rtt
Accumulated RTT for all messages.
Definition: ats-testing.h:310
Information we track for a peer in the testbed.
Definition: ats-testing.h:111
unsigned long long int num_slaves
Definition: ats-testing.h:526
Information about a benchmarking partner.
Definition: ats-testing.h:275
unsigned int bytes_sent
Number of bytes sent to this partner.
Definition: ats-testing.h:320
static struct GNUNET_TIME_Relative duration
How long do we run the test?
struct BenchmarkPeer * pref_partner
Masters only: Peer to set ATS preferences for.
Definition: ats-testing.h:173
static struct BenchmarkPeer * masters_p
static struct Experiment * e
struct BenchmarkPeer * dest
The partner peer.
Definition: ats-testing.h:285
Here is the caller graph for this function:

◆ do_shutdown()

static void do_shutdown ( void *  cls)
static

Definition at line 136 of file gnunet-ats-sim.c.

References GNUNET_ATS_TEST_experimentation_stop(), GNUNET_ATS_TEST_generate_preferences_stop_all(), GNUNET_ATS_TEST_generate_traffic_stop_all(), GNUNET_ATS_TEST_logging_clean_up(), GNUNET_ATS_TEST_logging_stop(), GNUNET_ATS_TEST_shutdown_topology(), and GNUNET_SCHEDULER_cancel().

Referenced by topology_setup_done().

137 {
138  fprintf (stderr, "Shutdown\n");
139  if (NULL != timeout_task)
140  {
142  timeout_task = NULL;
143  }
144  if (NULL != l)
145  {
148  l = NULL;
149  }
150 
151  /* Stop traffic generation */
153 
154  /* Stop all preference generations */
156 
157  if (NULL != e)
158  {
160  e = NULL;
161  }
163 }
void GNUNET_ATS_TEST_logging_stop(struct LoggingHandle *l)
Stop logging.
void GNUNET_ATS_TEST_logging_clean_up(struct LoggingHandle *l)
Clean up logging data.
void GNUNET_ATS_TEST_shutdown_topology(void)
Shutdown topology.
Definition: ats-testing.c:961
void GNUNET_ATS_TEST_experimentation_stop(struct Experiment *e)
Stop an experiment.
void GNUNET_ATS_TEST_generate_preferences_stop_all()
Stop all preferences generators.
static struct LoggingHandle * l
static struct GNUNET_SCHEDULER_Task * timeout_task
void GNUNET_ATS_TEST_generate_traffic_stop_all()
Stop all traffic generators.
static struct Experiment * e
void * GNUNET_SCHEDULER_cancel(struct GNUNET_SCHEDULER_Task *task)
Cancel the task with the specified identifier.
Definition: scheduler.c:965
Here is the call graph for this function:
Here is the caller graph for this function:

◆ do_timeout()

static void do_timeout ( void *  cls)
static

Definition at line 167 of file gnunet-ats-sim.c.

References GNUNET_SCHEDULER_shutdown().

Referenced by topology_setup_done().

168 {
169  timeout_task = NULL;
171 }
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:524
static struct GNUNET_SCHEDULER_Task * timeout_task
Here is the call graph for this function:
Here is the caller graph for this function:

◆ log_request__cb()

static void log_request__cb ( void *  cls,
const struct GNUNET_HELLO_Address address,
int  address_active,
struct GNUNET_BANDWIDTH_Value32NBO  bandwidth_out,
struct GNUNET_BANDWIDTH_Value32NBO  bandwidth_in,
const struct GNUNET_ATS_Properties ats 
)
static

Definition at line 175 of file gnunet-ats-sim.c.

Referenced by main().

181 {
182  if (NULL != l)
183  {
184  //GNUNET_break (0);
185  //GNUNET_ATS_TEST_logging_now (l);
186  }
187 }
static struct LoggingHandle * l
Here is the caller graph for this function:

◆ experiment_done_cb()

static void experiment_done_cb ( struct Experiment e,
struct GNUNET_TIME_Relative  duration,
int  success 
)
static

Definition at line 191 of file gnunet-ats-sim.c.

References evaluate(), GNUNET_ATS_TEST_generate_preferences_stop_all(), GNUNET_ATS_TEST_generate_traffic_stop_all(), GNUNET_ATS_TEST_logging_stop(), GNUNET_ATS_TEST_logging_write_to_file(), GNUNET_ERROR_TYPE_INFO, GNUNET_log, GNUNET_OK, GNUNET_SCHEDULER_shutdown(), GNUNET_STRINGS_relative_time_to_string(), GNUNET_YES, opt_exp_file, opt_log, and opt_plot.

Referenced by topology_setup_done().

194 {
195  if (GNUNET_OK == success)
197  "Experiment done successful in %s\n",
199  GNUNET_YES));
200  else
201  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Experiment failed \n");
202 
203  /* Stop logging */
205 
206  /* Stop traffic generation */
208 
209  /* Stop all preference generations */
211 
212  evaluate (duration);
213  if (opt_log)
216 }
void GNUNET_ATS_TEST_logging_write_to_file(struct LoggingHandle *l, const char *experiment_name, int plots)
Write logging data to file.
static char * opt_exp_file
cmd option -e: experiment file
static void evaluate(struct GNUNET_TIME_Relative duration_total)
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:78
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:524
static int opt_plot
cmd option -p: enable plots
void GNUNET_ATS_TEST_logging_stop(struct LoggingHandle *l)
Stop logging.
const char * GNUNET_STRINGS_relative_time_to_string(struct GNUNET_TIME_Relative delta, int do_round)
Give relative time in human-readable fancy format.
Definition: strings.c:727
void GNUNET_ATS_TEST_generate_preferences_stop_all()
Stop all preferences generators.
static struct LoggingHandle * l
#define GNUNET_log(kind,...)
void GNUNET_ATS_TEST_generate_traffic_stop_all()
Stop all traffic generators.
#define GNUNET_YES
Definition: gnunet_common.h:80
static int opt_log
cmd option -l: enable logging
Here is the call graph for this function:
Here is the caller graph for this function:

◆ episode_done_cb()

static void episode_done_cb ( struct Episode ep)
static

Definition at line 220 of file gnunet-ats-sim.c.

References GNUNET_ERROR_TYPE_INFO, GNUNET_log, and Episode::id.

Referenced by topology_setup_done().

221 {
223  "Episode %u done\n",
224  ep->id);
225 }
#define GNUNET_log(kind,...)
Here is the caller graph for this function:

◆ topology_setup_done()

static void topology_setup_done ( void *  cls,
struct BenchmarkPeer masters,
struct BenchmarkPeer slaves 
)
static

Definition at line 229 of file gnunet-ats-sim.c.

References do_shutdown(), do_timeout(), episode_done_cb(), experiment_done_cb(), GNUNET_ATS_TEST_experimentation_run(), GNUNET_ATS_TEST_generate_traffic_start(), GNUNET_ATS_TEST_logging_start(), GNUNET_ATS_TEST_TG_CONSTANT, GNUNET_ATS_TEST_TG_LINEAR, GNUNET_ATS_TEST_TG_RANDOM, GNUNET_ATS_TEST_TG_SINUS, GNUNET_ERROR_TYPE_INFO, GNUNET_log, GNUNET_SCHEDULER_add_delayed(), GNUNET_SCHEDULER_add_shutdown(), GNUNET_TIME_relative_add(), GNUNET_TIME_UNIT_FOREVER_REL, GNUNET_TIME_UNIT_MINUTES, Experiment::log_freq, Experiment::max_duration, Experiment::name, Experiment::num_masters, Experiment::num_slaves, and opt_verbose.

Referenced by main().

232 {
234  "Topology setup complete!\n");
235 
236  masters_p = masters;
237  slaves_p = slaves;
238 
240  e->name,
241  masters_p,
243  opt_verbose);
247 /*
248  GNUNET_ATS_TEST_generate_preferences_start(&masters[0],&masters[0].partners[0],
249  GNUNET_ATS_TEST_TG_CONSTANT, 1, 1, GNUNET_TIME_UNIT_SECONDS,
250  GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MILLISECONDS, 250),
251  GNUNET_ATS_PREFERENCE_BANDWIDTH);
252 */
253 /*
254  GNUNET_ATS_TEST_generate_preferences_start(&masters[0],&masters[0].partners[0],
255  GNUNET_ATS_TEST_TG_LINEAR, 1, 50,
256  GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 2),
257  GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MILLISECONDS, 250),
258  GNUNET_ATS_PREFERENCE_BANDWIDTH);
259 */
260 /*
261  GNUNET_ATS_TEST_generate_preferences_start(&masters[0],&masters[0].partners[0],
262  GNUNET_ATS_TEST_TG_RANDOM, 1, 50,
263  GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 2),
264  GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MILLISECONDS, 250),
265  GNUNET_ATS_PREFERENCE_BANDWIDTH);
266 */
267  /*
268  GNUNET_ATS_TEST_generate_preferences_start(&masters[0],&masters[0].partners[0],
269  GNUNET_ATS_TEST_TG_SINUS, 10, 5,
270  GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 5),
271  GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MILLISECONDS, 250),
272  GNUNET_ATS_PREFERENCE_BANDWIDTH);
273 */
274 #if 0
275  int c_m;
276  int c_s;
277  for (c_m = 0; c_m < e->num_masters; c_m++)
278  {
279  for (c_s = 0; c_s < e->num_slaves; c_s++)
280  {
281  /* Generate maximum traffic to all peers */
282  /* Example: Generate traffic with constant 10,000 Bytes/s */
284  &masters[c_m].partners[c_s],
286  10000,
288  /* Example: Generate traffic with an increasing rate from 1000 to 2000
289  * Bytes/s with in a minute */
291  &masters[c_m].partners[c_s],
293  1000,
294  2000,
297  /* Example: Generate traffic with a random rate between 1000 to 2000
298  * Bytes/s */
300  &masters[c_m].partners[c_s],
302  1000,
303  2000,
306  /* Example: Generate traffic with a sinus form, a base rate of
307  * 1000 Bytes/s, an amplitude of (max-base), and a period of 1 minute */
309  &masters[c_m].partners[c_s],
311  1000,
312  2000,
315  }
316  }
317 #endif
318 
321  e->max_duration),
322  &do_timeout,
323  NULL);
325 }
void GNUNET_ATS_TEST_experimentation_run(struct Experiment *e, GNUNET_ATS_TESTING_EpisodeDoneCallback ep_done_cb, GNUNET_ATS_TESTING_ExperimentDoneCallback e_done_cb)
Execute the specified experiment.
static void do_shutdown(void *cls)
unsigned long long int num_masters
Definition: ats-testing.h:525
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_shutdown(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run on shutdown, that is when a CTRL-C signal is received, or when GNUNET_SCHEDULER_shutdown() is being invoked.
Definition: scheduler.c:1293
#define GNUNET_TIME_UNIT_MINUTES
One minute.
static void do_timeout(void *cls)
static int opt_verbose
cmd option -v: verbose logs
struct TrafficGenerator * GNUNET_ATS_TEST_generate_traffic_start(struct BenchmarkPeer *src, struct BenchmarkPartner *dest, enum GeneratorType type, unsigned int base_rate, unsigned int max_rate, struct GNUNET_TIME_Relative period, struct GNUNET_TIME_Relative duration)
Generate between the source master and the partner and send traffic with a maximum rate...
struct GNUNET_TIME_Relative log_freq
struct LoggingHandle * GNUNET_ATS_TEST_logging_start(struct GNUNET_TIME_Relative log_frequency, const char *testname, struct BenchmarkPeer *masters, int num_masters, int num_slaves, int verbose)
Start logging.
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_delayed(struct GNUNET_TIME_Relative delay, GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run with a specified delay.
Definition: scheduler.c:1246
unsigned long long int num_slaves
Definition: ats-testing.h:526
#define GNUNET_TIME_UNIT_FOREVER_REL
Constant used to specify "forever".
static struct BenchmarkPeer * slaves_p
struct GNUNET_TIME_Relative GNUNET_TIME_relative_add(struct GNUNET_TIME_Relative a1, struct GNUNET_TIME_Relative a2)
Add relative times together.
Definition: time.c:576
static struct LoggingHandle * l
#define GNUNET_log(kind,...)
static struct BenchmarkPeer * masters_p
static struct GNUNET_SCHEDULER_Task * timeout_task
struct GNUNET_TIME_Relative max_duration
static struct Experiment * e
static void episode_done_cb(struct Episode *ep)
static void experiment_done_cb(struct Experiment *e, struct GNUNET_TIME_Relative duration, int success)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse_args()

static void parse_args ( int  argc,
char *  argv[] 
)
static

Definition at line 329 of file gnunet-ats-sim.c.

References GNUNET_free_non_null, GNUNET_NO, GNUNET_strdup, GNUNET_YES, opt_exp_file, opt_log, opt_plot, and opt_verbose.

Referenced by main().

330 {
331  int c;
332  opt_exp_file = NULL;
333  opt_log = GNUNET_NO;
335 
336  for (c = 0; c < argc; c++)
337  {
338  if ((c < (argc - 1)) && (0 == strcmp (argv[c], "-e")))
339  {
341  opt_exp_file = GNUNET_strdup ( argv[c + 1]);
342  }
343  if (0 == strcmp (argv[c], "-l"))
344  {
346  }
347  if (0 == strcmp (argv[c], "-p"))
348  {
350  }
351  if (0 == strcmp (argv[c], "-v"))
352  {
354  }
355  }
356 }
static char * opt_exp_file
cmd option -e: experiment file
#define GNUNET_NO
Definition: gnunet_common.h:81
#define GNUNET_free_non_null(ptr)
Free the memory pointed to by ptr if ptr is not NULL.
static int opt_verbose
cmd option -v: verbose logs
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
static int opt_plot
cmd option -p: enable plots
#define GNUNET_YES
Definition: gnunet_common.h:80
static int opt_log
cmd option -l: enable logging
Here is the caller graph for this function:

◆ main()

int main ( int  argc,
char *  argv[] 
)

Definition at line 360 of file gnunet-ats-sim.c.

References Experiment::cfg_file, GNUNET_ATS_TEST_create_topology(), GNUNET_ATS_TEST_experimentation_load(), GNUNET_free, GNUNET_log_setup(), GNUNET_NO, log_request__cb(), Experiment::num_episodes, Experiment::num_masters, Experiment::num_slaves, opt_exp_file, parse_args(), and topology_setup_done().

361 {
362  GNUNET_log_setup("gnunet-ats-sim", "INFO", NULL);
363 
364  parse_args (argc, argv);
365  if (NULL == opt_exp_file )
366  {
367  fprintf (stderr, "No experiment given...\n");
368  return 1;
369  }
370 
371  fprintf (stderr, "Loading experiment `%s' \n", opt_exp_file );
373  if (NULL == e)
374  {
375  fprintf (stderr, "Invalid experiment\n");
376  return 1;
377  }
378  if (0 == e->num_episodes)
379  {
380  fprintf (stderr, "No episodes included\n");
381  return 1;
382  }
383 
384  /* Setup a topology with */
385  GNUNET_ATS_TEST_create_topology ("gnunet-ats-sim", e->cfg_file,
386  e->num_slaves,
387  e->num_masters,
388  GNUNET_NO,
390  NULL,
391  &log_request__cb);
393  return 0;
394 }
struct Experiment * GNUNET_ATS_TEST_experimentation_load(const char *filename)
Load an experiment from a file.
unsigned long long int num_masters
Definition: ats-testing.h:525
static char * opt_exp_file
cmd option -e: experiment file
#define GNUNET_NO
Definition: gnunet_common.h:81
unsigned int num_episodes
unsigned long long int num_slaves
Definition: ats-testing.h:526
static void parse_args(int argc, char *argv[])
static void topology_setup_done(void *cls, struct BenchmarkPeer *masters, struct BenchmarkPeer *slaves)
void GNUNET_ATS_TEST_create_topology(char *name, char *cfg_file, unsigned int num_slaves, unsigned int num_masters, int test_core, GNUNET_ATS_TEST_TopologySetupDoneCallback done_cb, void *done_cb_cls, GNUNET_ATS_AddressInformationCallback log_request_cb)
Create a topology for ats testing.
Definition: ats-testing.c:923
int GNUNET_log_setup(const char *comp, const char *loglevel, const char *logfile)
Setup logging.
static struct Experiment * e
#define GNUNET_free(ptr)
Wrapper around free.
static void log_request__cb(void *cls, const struct GNUNET_HELLO_Address *address, int address_active, struct GNUNET_BANDWIDTH_Value32NBO bandwidth_out, struct GNUNET_BANDWIDTH_Value32NBO bandwidth_in, const struct GNUNET_ATS_Properties *ats)
Here is the call graph for this function:

Variable Documentation

◆ masters_p

struct BenchmarkPeer* masters_p
static

Definition at line 37 of file gnunet-ats-sim.c.

◆ slaves_p

struct BenchmarkPeer* slaves_p
static

Definition at line 38 of file gnunet-ats-sim.c.

◆ opt_exp_file

char* opt_exp_file
static

cmd option -e: experiment file

Definition at line 43 of file gnunet-ats-sim.c.

Referenced by experiment_done_cb(), main(), and parse_args().

◆ opt_log

int opt_log
static

cmd option -l: enable logging

Definition at line 48 of file gnunet-ats-sim.c.

Referenced by experiment_done_cb(), and parse_args().

◆ opt_plot

int opt_plot
static

cmd option -p: enable plots

Definition at line 53 of file gnunet-ats-sim.c.

Referenced by experiment_done_cb(), and parse_args().

◆ opt_verbose

int opt_verbose
static

cmd option -v: verbose logs

Definition at line 58 of file gnunet-ats-sim.c.

Referenced by parse_args(), and topology_setup_done().

◆ timeout_task

struct GNUNET_SCHEDULER_Task* timeout_task
static

Definition at line 60 of file gnunet-ats-sim.c.

◆ e

struct Experiment* e
static

Definition at line 62 of file gnunet-ats-sim.c.

◆ l

struct LoggingHandle* l
static

Definition at line 64 of file gnunet-ats-sim.c.