GNUnet  0.11.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
 

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

#define TEST_TIMEOUT
Value:
10)
#define GNUNET_TIME_UNIT_SECONDS
One second.
struct GNUNET_TIME_Relative GNUNET_TIME_relative_multiply(struct GNUNET_TIME_Relative rel, unsigned long long factor)
Multiply relative time by a given factor.
Definition: time.c:442

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 69 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().

70 {
71  int c_m;
72  int c_s;
73  unsigned int duration;
74  struct BenchmarkPeer *mp;
75  struct BenchmarkPartner *p;
76 
77  unsigned int b_sent_sec;
78  double kb_sent_percent;
79  unsigned int b_recv_sec;
80  double kb_recv_percent;
81  unsigned int rtt;
82 
83 
84  duration = (duration_total.rel_value_us / (1000 * 1000));
85  if (0 == duration)
86  duration = 1;
87  for (c_m = 0; c_m < e->num_masters; c_m++)
88  {
89  mp = &masters_p[c_m];
90  fprintf (stderr,
91  _ (
92  "Master [%u]: sent: %u KiB in %u sec. = %u KiB/s, received: %u KiB in %u sec. = %u KiB/s\n"),
93  mp->no, mp->total_bytes_sent / 1024,
94  duration,
95  (mp->total_bytes_sent / 1024) / duration,
96  mp->total_bytes_received / 1024,
97  duration,
98  (mp->total_bytes_received / 1024) / duration);
99 
100  for (c_s = 0; c_s < e->num_slaves; c_s++)
101  {
102  p = &mp->partners[c_s];
103 
104  b_sent_sec = 0;
105  b_recv_sec = 0;
106  kb_sent_percent = 0.0;
107  kb_recv_percent = 0.0;
108  rtt = 0;
109 
110  if (duration > 0)
111  {
112  b_sent_sec = p->bytes_sent / duration;
113  b_recv_sec = p->bytes_received / duration;
114  }
115 
116  if (mp->total_bytes_sent > 0)
117  kb_sent_percent = ((double) p->bytes_sent * 100) / mp->total_bytes_sent;
118  if (mp->total_bytes_received > 0)
119  kb_recv_percent = ((double) p->bytes_received * 100)
120  / mp->total_bytes_received;
121  if (1000 * p->messages_sent > 0)
122  rtt = p->total_app_rtt / (1000 * p->messages_sent);
123  fprintf (stderr,
124  "%c Master [%u] -> Slave [%u]: sent %u Bips (%.2f %%), received %u Bips (%.2f %%)\n",
125  (mp->pref_partner == p->dest) ? '*' : ' ',
126  mp->no, p->dest->no,
127  b_sent_sec, kb_sent_percent,
128  b_recv_sec, kb_recv_percent);
129  fprintf (stderr,
130  "%c Master [%u] -> Slave [%u]: Average application layer RTT: %u ms\n",
131  (mp->pref_partner == p->dest) ? '*' : ' ',
132  mp->no, p->dest->no, rtt);
133  }
134  }
135 }
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:181
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 139 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().

140 {
141  fprintf (stderr, "Shutdown\n");
142  if (NULL != timeout_task)
143  {
145  timeout_task = NULL;
146  }
147  if (NULL != l)
148  {
151  l = NULL;
152  }
153 
154  /* Stop traffic generation */
156 
157  /* Stop all preference generations */
159 
160  if (NULL != e)
161  {
163  e = NULL;
164  }
166 }
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:967
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:966
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 170 of file gnunet-ats-sim.c.

References GNUNET_SCHEDULER_shutdown().

Referenced by topology_setup_done().

171 {
172  timeout_task = NULL;
174 }
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:526
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 178 of file gnunet-ats-sim.c.

Referenced by main().

184 {
185  if (NULL != l)
186  {
187  // GNUNET_break (0);
188  // GNUNET_ATS_TEST_logging_now (l);
189  }
190 }
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 194 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().

197 {
198  if (GNUNET_OK == success)
200  "Experiment done successful in %s\n",
202  GNUNET_YES));
203  else
204  GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Experiment failed \n");
205 
206  /* Stop logging */
208 
209  /* Stop traffic generation */
211 
212  /* Stop all preference generations */
214 
215  evaluate (duration);
216  if (opt_log)
219 }
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:75
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:526
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:687
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:77
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 223 of file gnunet-ats-sim.c.

References GNUNET_ERROR_TYPE_INFO, GNUNET_log, and Episode::id.

Referenced by topology_setup_done().

224 {
226  "Episode %u done\n",
227  ep->id);
228 }
#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 232 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().

235 {
237  "Topology setup complete!\n");
238 
239  masters_p = masters;
240  slaves_p = slaves;
241 
243  e->name,
244  masters_p,
246  opt_verbose);
250 /*
251  GNUNET_ATS_TEST_generate_preferences_start(&masters[0],&masters[0].partners[0],
252  GNUNET_ATS_TEST_TG_CONSTANT, 1, 1, GNUNET_TIME_UNIT_SECONDS,
253  GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MILLISECONDS, 250),
254  GNUNET_ATS_PREFERENCE_BANDWIDTH);
255  *//*
256  GNUNET_ATS_TEST_generate_preferences_start(&masters[0],&masters[0].partners[0],
257  GNUNET_ATS_TEST_TG_LINEAR, 1, 50,
258  GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 2),
259  GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MILLISECONDS, 250),
260  GNUNET_ATS_PREFERENCE_BANDWIDTH);
261  *//*
262  GNUNET_ATS_TEST_generate_preferences_start(&masters[0],&masters[0].partners[0],
263  GNUNET_ATS_TEST_TG_RANDOM, 1, 50,
264  GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 2),
265  GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MILLISECONDS, 250),
266  GNUNET_ATS_PREFERENCE_BANDWIDTH);
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 
322  e->max_duration),
323  &do_timeout,
324  NULL);
326 }
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:1300
#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:1253
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:579
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 330 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().

331 {
332  int c;
333 
334  opt_exp_file = NULL;
335  opt_log = GNUNET_NO;
337 
338  for (c = 0; c < argc; c++)
339  {
340  if ((c < (argc - 1)) && (0 == strcmp (argv[c], "-e")))
341  {
343  opt_exp_file = GNUNET_strdup (argv[c + 1]);
344  }
345  if (0 == strcmp (argv[c], "-l"))
346  {
348  }
349  if (0 == strcmp (argv[c], "-p"))
350  {
352  }
353  if (0 == strcmp (argv[c], "-v"))
354  {
356  }
357  }
358 }
static char * opt_exp_file
cmd option -e: experiment file
#define GNUNET_NO
Definition: gnunet_common.h:78
#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:77
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 362 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().

363 {
364  GNUNET_log_setup ("gnunet-ats-sim", "INFO", NULL);
365 
366  parse_args (argc, argv);
367  if (NULL == opt_exp_file)
368  {
369  fprintf (stderr, "No experiment given...\n");
370  return 1;
371  }
372 
373  fprintf (stderr, "Loading experiment `%s' \n", opt_exp_file);
375  if (NULL == e)
376  {
377  fprintf (stderr, "Invalid experiment\n");
378  return 1;
379  }
380  if (0 == e->num_episodes)
381  {
382  fprintf (stderr, "No episodes included\n");
383  return 1;
384  }
385 
386  /* Setup a topology with */
387  GNUNET_ATS_TEST_create_topology ("gnunet-ats-sim", e->cfg_file,
388  e->num_slaves,
389  e->num_masters,
390  GNUNET_NO,
392  NULL,
393  &log_request__cb);
395  return 0;
396 }
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:78
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:927
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 38 of file gnunet-ats-sim.c.

◆ slaves_p

struct BenchmarkPeer* slaves_p
static

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

◆ opt_exp_file

char* opt_exp_file
static

cmd option -e: experiment file

Definition at line 44 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 49 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 54 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 59 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 61 of file gnunet-ats-sim.c.

◆ e

struct Experiment* e
static

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

◆ l

struct LoggingHandle* l
static

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