GNUnet  0.11.x
Functions | Variables
gnunet-daemon-regexprofiler.c File Reference

daemon that uses cadet to announce a regular expression. More...

#include "platform.h"
#include "gnunet_util_lib.h"
#include "regex_internal_lib.h"
#include "regex_test_lib.h"
#include "gnunet_dht_service.h"
#include "gnunet_statistics_service.h"
Include dependency graph for gnunet-daemon-regexprofiler.c:

Go to the source code of this file.

Functions

static void shutdown_task (void *cls)
 Task run during shutdown. More...
 
static void reannounce_regex (void *cls)
 Announce a previously announced regex re-using cached data. More...
 
static void announce_regex (const char *regex)
 Announce the given regular expression using regex and the path compression length read from config. More...
 
static int scan (void *cls, const char *filename)
 Scan through the policy_dir looking for the n-th filename. More...
 
static void run (void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg_)
 Main function that will be run by the scheduler. More...
 
int main (int argc, char *const *argv)
 The main function of the regexprofiler service. More...
 

Variables

static int global_ret
 Return value from 'main'. More...
 
static const struct GNUNET_CONFIGURATION_Handlecfg
 Configuration we use. More...
 
static struct GNUNET_STATISTICS_Handlestats_handle
 Handle to the statistics service. More...
 
static struct GNUNET_DHT_Handledht_handle
 Peer's dht handle. More...
 
static struct REGEX_INTERNAL_Announcementannounce_handle
 Peer's regex announce handle. More...
 
static struct GNUNET_SCHEDULER_Taskreannounce_task
 Periodically reannounce regex. More...
 
static struct GNUNET_TIME_Relative reannounce_period_max
 What's the maximum reannounce period. More...
 
static unsigned long long max_path_compression
 Maximal path compression length for regex announcing. More...
 
static char * policy_filename
 Name of the file containing policies that this peer should announce. More...
 
static char * regex_prefix
 Prefix to add before every regex we're announcing. More...
 
static char * rx_with_pfx
 Regex with prefix. More...
 
static unsigned int rounds = 3
 How many put rounds should we do. More...
 
static struct GNUNET_CRYPTO_EddsaPrivateKeymy_private_key
 Private key for this peer. More...
 

Detailed Description

daemon that uses cadet to announce a regular expression.

Used in conjunction with gnunet-regex-profiler to announce regexes on serveral peers without the need to explicitly connect to the cadet service running on the peer from within the profiler.

Author
Maximilian Szengel
Bartlomiej Polot

Definition in file gnunet-daemon-regexprofiler.c.

Function Documentation

◆ shutdown_task()

static void shutdown_task ( void *  cls)
static

Task run during shutdown.

Parameters
clsunused

Definition at line 110 of file gnunet-daemon-regexprofiler.c.

References GNUNET_DHT_disconnect(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_INFO, GNUNET_free, GNUNET_log, GNUNET_SCHEDULER_cancel(), policy_filename, and REGEX_INTERNAL_announce_cancel().

Referenced by run().

111 {
112  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "shutting down\n");
113 
114  if (NULL != announce_handle)
115  {
117  announce_handle = NULL;
118  }
119  if (NULL != reannounce_task)
120  {
122  reannounce_task = NULL;
123  }
124  if (NULL != dht_handle)
125  {
127  dht_handle = NULL;
128  }
130  my_private_key = NULL;
131 
133  "Daemon for %s shutting down\n",
135 }
void REGEX_INTERNAL_announce_cancel(struct REGEX_INTERNAL_Announcement *h)
Clear all cached data used by a regex announce.
static char * policy_filename
Name of the file containing policies that this peer should announce.
static struct GNUNET_DHT_Handle * dht_handle
Peer's dht handle.
static struct GNUNET_CRYPTO_EddsaPrivateKey * my_private_key
Private key for this peer.
void GNUNET_DHT_disconnect(struct GNUNET_DHT_Handle *handle)
Shutdown connection with the DHT service.
Definition: dht_api.c:918
static struct GNUNET_SCHEDULER_Task * reannounce_task
Periodically reannounce regex.
static struct REGEX_INTERNAL_Announcement * announce_handle
Peer's regex announce handle.
#define GNUNET_log(kind,...)
#define GNUNET_free(ptr)
Wrapper around free.
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:

◆ reannounce_regex()

static void reannounce_regex ( void *  cls)
static

Announce a previously announced regex re-using cached data.

Parameters
clsClosure (regex to announce if needed).

Definition at line 144 of file gnunet-daemon-regexprofiler.c.

References global_ret, GNUNET_assert, GNUNET_CRYPTO_QUALITY_WEAK, GNUNET_CRYPTO_random_u32(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_log, GNUNET_NO, GNUNET_SCHEDULER_add_delayed(), GNUNET_SCHEDULER_shutdown(), GNUNET_STATISTICS_update(), GNUNET_TIME_relative_multiply(), GNUNET_TIME_UNIT_MICROSECONDS, max_path_compression, reannounce_period_max, REGEX_INTERNAL_announce(), REGEX_INTERNAL_reannounce(), GNUNET_TIME_Relative::rel_value_us, and rounds.

Referenced by announce_regex().

145 {
146  char *regex = cls;
147  struct GNUNET_TIME_Relative random_delay;
148 
149  reannounce_task = NULL;
150  if (0 == rounds--)
151  {
152  global_ret = 0;
154  GNUNET_free (regex);
155  return;
156  }
157  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Announcing regex: %s\n", regex);
158  GNUNET_STATISTICS_update (stats_handle, "# regexes announced", 1, GNUNET_NO);
159  if ((NULL == announce_handle) && (NULL != regex))
160  {
162  "First time, creating regex: %s\n",
163  regex);
166  regex,
167  (unsigned
169  stats_handle);
170  }
171  else
172  {
173  GNUNET_assert (NULL != announce_handle);
175  }
176 
177  random_delay =
182  reannounce_task = GNUNET_SCHEDULER_add_delayed (random_delay,
183  &reannounce_regex, cls);
184 }
uint64_t rel_value_us
The actual value.
void * cls
Closure for cont or cb.
Definition: reclaim_api.c:97
uint32_t GNUNET_CRYPTO_random_u32(enum GNUNET_CRYPTO_Quality mode, uint32_t i)
Produce a random value.
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
#define GNUNET_NO
Definition: gnunet_common.h:78
void GNUNET_STATISTICS_update(struct GNUNET_STATISTICS_Handle *handle, const char *name, int64_t delta, int make_persistent)
Set statistic value for the peer.
static struct GNUNET_TIME_Relative reannounce_period_max
What's the maximum reannounce period.
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:526
static struct GNUNET_DHT_Handle * dht_handle
Peer's dht handle.
static void reannounce_regex(void *cls)
Announce a previously announced regex re-using cached data.
static struct GNUNET_CRYPTO_EddsaPrivateKey * my_private_key
Private key for this peer.
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
static int global_ret
Return value from 'main'.
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
struct REGEX_INTERNAL_Announcement * REGEX_INTERNAL_announce(struct GNUNET_DHT_Handle *dht, const struct GNUNET_CRYPTO_EddsaPrivateKey *priv, const char *regex, uint16_t compression, struct GNUNET_STATISTICS_Handle *stats)
Announce a regular expression: put all states of the automaton in the DHT.
static struct GNUNET_STATISTICS_Handle * stats_handle
Handle to the statistics service.
static struct GNUNET_SCHEDULER_Task * reannounce_task
Periodically reannounce regex.
void REGEX_INTERNAL_reannounce(struct REGEX_INTERNAL_Announcement *h)
Announce again a regular expression previously announced.
static struct REGEX_INTERNAL_Announcement * announce_handle
Peer's regex announce handle.
static unsigned int rounds
How many put rounds should we do.
#define GNUNET_log(kind,...)
static unsigned long long max_path_compression
Maximal path compression length for regex announcing.
#define GNUNET_TIME_UNIT_MICROSECONDS
One microsecond, our basic time unit.
No good quality of the operation is needed (i.e., random numbers can be pseudo-random).
#define GNUNET_free(ptr)
Wrapper around free.
Time for relative time used by GNUnet, in microseconds.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ announce_regex()

static void announce_regex ( const char *  regex)
static

Announce the given regular expression using regex and the path compression length read from config.

Parameters
regexregular expression to announce on this peer's cadet.

Definition at line 194 of file gnunet-daemon-regexprofiler.c.

References GNUNET_assert, GNUNET_ERROR_TYPE_ERROR, GNUNET_ERROR_TYPE_INFO, GNUNET_log, GNUNET_SCHEDULER_add_now(), GNUNET_strdup, policy_filename, and reannounce_regex().

Referenced by run().

195 {
196  char *copy;
197 
198  if ((NULL == regex) || (0 == strlen (regex)))
199  {
200  GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Cannot announce empty regex\n");
201  return;
202  }
203 
205  "Daemon for %s starting\n",
207  GNUNET_assert (NULL == reannounce_task);
208  copy = GNUNET_strdup (regex);
210  (void *) copy);
211 }
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
static char * policy_filename
Name of the file containing policies that this peer should announce.
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
static void reannounce_regex(void *cls)
Announce a previously announced regex re-using cached data.
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_now(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run as soon as possible.
Definition: scheduler.c:1280
static struct GNUNET_SCHEDULER_Task * reannounce_task
Periodically reannounce regex.
#define GNUNET_log(kind,...)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ scan()

static int scan ( void *  cls,
const char *  filename 
)
static

Scan through the policy_dir looking for the n-th filename.

Parameters
clsClosure (target number n).
filenamecomplete filename (absolute path).
Returns
GNUNET_OK to continue to iterate, GNUNET_NO to stop when found

Definition at line 223 of file gnunet-daemon-regexprofiler.c.

References GNUNET_NO, GNUNET_OK, GNUNET_strdup, and policy_filename.

Referenced by run().

224 {
225  long n = (long) cls;
226  static long c = 0;
227 
228  if (c == n)
229  {
231  return GNUNET_NO;
232  }
233  c++;
234  return GNUNET_OK;
235 }
#define GNUNET_NO
Definition: gnunet_common.h:78
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
static char * policy_filename
Name of the file containing policies that this peer should announce.
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
static char * filename
Here is the caller graph for this function:

◆ run()

static void run ( void *  cls,
char *const *  args,
const char *  cfgfile,
const struct GNUNET_CONFIGURATION_Handle cfg_ 
)
static

Main function that will be run by the scheduler.

Parameters
clsclosure
argsremaining command-line arguments
cfgfilename of the configuration file used (for saving, can be NULL!)
cfg_configuration

Definition at line 247 of file gnunet-daemon-regexprofiler.c.

References _, announce_regex(), global_ret, GNUNET_asprintf(), GNUNET_assert, GNUNET_CONFIGURATION_get_value_number(), GNUNET_CONFIGURATION_get_value_string(), GNUNET_CONFIGURATION_get_value_time(), GNUNET_CRYPTO_eddsa_key_create_from_configuration(), GNUNET_DHT_connect(), GNUNET_DISK_directory_scan(), GNUNET_ERROR_TYPE_ERROR, GNUNET_free, GNUNET_log, GNUNET_log_config_missing(), GNUNET_OK, GNUNET_SCHEDULER_add_shutdown(), GNUNET_SCHEDULER_shutdown(), GNUNET_STATISTICS_create(), GNUNET_SYSERR, GNUNET_TIME_relative_multiply(), GNUNET_TIME_UNIT_MINUTES, max_path_compression, peer_id, policy_dir, policy_filename, reannounce_period_max, regex_prefix, REGEX_TEST_combine(), REGEX_TEST_free_from_file(), REGEX_TEST_read_from_file(), rx_with_pfx, scan(), and shutdown_task().

Referenced by main().

250 {
251  char *regex = NULL;
252  char **components;
253  char *policy_dir;
254  long long unsigned int peer_id;
255 
256  cfg = cfg_;
257 
259  GNUNET_assert (NULL != my_private_key);
260  if (GNUNET_OK !=
261  GNUNET_CONFIGURATION_get_value_number (cfg, "REGEXPROFILER",
262  "MAX_PATH_COMPRESSION",
264  {
266  _
267  (
268  "%s service is lacking key configuration settings (%s). Exiting.\n"),
269  "regexprofiler", "max_path_compression");
272  return;
273  }
274  if (GNUNET_OK !=
275  GNUNET_CONFIGURATION_get_value_string (cfg, "REGEXPROFILER",
276  "POLICY_DIR", &policy_dir))
277  {
279  "POLICY_DIR");
282  return;
283  }
284  if (GNUNET_OK !=
286  "PEERID", &peer_id))
287  {
288  GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, "TESTBED", "PEERID");
290  GNUNET_free (policy_dir);
292  return;
293  }
294 
295  if (GNUNET_OK !=
296  GNUNET_CONFIGURATION_get_value_string (cfg, "REGEXPROFILER",
297  "REGEX_PREFIX", &regex_prefix))
298  {
300  "REGEX_PREFIX");
302  GNUNET_free (policy_dir);
304  return;
305  }
306 
307  if (GNUNET_OK !=
308  GNUNET_CONFIGURATION_get_value_time (cfg, "REGEXPROFILER",
309  "REANNOUNCE_PERIOD_MAX",
311  {
313  "reannounce_period_max not given. Using 10 minutes.\n");
316  }
317 
318  stats_handle = GNUNET_STATISTICS_create ("regexprofiler", cfg);
319 
321 
322  if (NULL == dht_handle)
323  {
325  "Could not acquire dht handle. Exiting.\n");
327  GNUNET_free (policy_dir);
329  return;
330  }
331 
332  /* Read regexes from policy files */
333  GNUNET_assert (-1 != GNUNET_DISK_directory_scan (policy_dir, &scan,
334  (void *) (long) peer_id));
335  if (NULL == (components = REGEX_TEST_read_from_file (policy_filename)))
336  {
338  "Policy file %s contains no policies. Exiting.\n",
341  GNUNET_free (policy_dir);
343  return;
344  }
345  GNUNET_free (policy_dir);
346  regex = REGEX_TEST_combine (components, 16);
347  REGEX_TEST_free_from_file (components);
348 
349  /* Announcing regexes from policy_filename */
351  "%s(%s)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)*",
352  regex_prefix,
353  regex);
355  GNUNET_free (regex);
357 
358  /* Scheduled the task to clean up when shutdown is called */
360  NULL);
361 }
int GNUNET_CONFIGURATION_get_value_time(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *section, const char *option, struct GNUNET_TIME_Relative *time)
Get a configuration value that should be a relative time.
int GNUNET_CONFIGURATION_get_value_number(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *section, const char *option, unsigned long long *number)
Get a configuration value that should be a number.
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.
struct GNUNET_STATISTICS_Handle * GNUNET_STATISTICS_create(const char *subsystem, const struct GNUNET_CONFIGURATION_Handle *cfg)
Get handle for the statistics service.
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
static char * regex_prefix
Prefix to add before every regex we're announcing.
static char * rx_with_pfx
Regex with prefix.
static char * peer_id
Option –peer.
Definition: gnunet-cadet.c:42
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
static char * policy_filename
Name of the file containing policies that this peer should announce.
int GNUNET_DISK_directory_scan(const char *dir_name, GNUNET_FileNameCallback callback, void *callback_cls)
Scan a directory for files.
Definition: disk.c:912
static struct GNUNET_TIME_Relative reannounce_period_max
What's the maximum reannounce period.
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:526
static struct GNUNET_DHT_Handle * dht_handle
Peer's dht handle.
#define _(String)
GNU gettext support macro.
Definition: platform.h:181
static struct GNUNET_CRYPTO_EddsaPrivateKey * my_private_key
Private key for this peer.
static int scan(void *cls, const char *filename)
Scan through the policy_dir looking for the n-th filename.
int GNUNET_asprintf(char **buf, const char *format,...)
Like asprintf, just portable.
char * REGEX_TEST_combine(char *const regexes[], unsigned int alphabet_size)
Combine an array of regexes into a single prefix-shared regex.
void GNUNET_log_config_missing(enum GNUNET_ErrorType kind, const char *section, const char *option)
Log error message about missing configuration option.
static void announce_regex(const char *regex)
Announce the given regular expression using regex and the path compression length read from config...
static int global_ret
Return value from 'main'.
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
int GNUNET_CONFIGURATION_get_value_string(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *section, const char *option, char **value)
Get a configuration value that should be a string.
#define GNUNET_SYSERR
Definition: gnunet_common.h:76
struct GNUNET_DHT_Handle * GNUNET_DHT_connect(const struct GNUNET_CONFIGURATION_Handle *cfg, unsigned int ht_len)
Initialize the connection with the DHT service.
Definition: dht_api.c:890
static struct GNUNET_STATISTICS_Handle * stats_handle
Handle to the statistics service.
static char * policy_dir
Folder where policy files are stored.
static void shutdown_task(void *cls)
Task run during shutdown.
static const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration we use.
void REGEX_TEST_free_from_file(char **regexes)
Free all memory reserved for a set of regexes created by read_from_file.
char ** REGEX_TEST_read_from_file(const char *filename)
Read a set of regexes from a file, one per line and return them in an array suitable for REGEX_TEST_c...
#define GNUNET_log(kind,...)
struct GNUNET_CRYPTO_EddsaPrivateKey * GNUNET_CRYPTO_eddsa_key_create_from_configuration(const struct GNUNET_CONFIGURATION_Handle *cfg)
Create a new private key by reading our peer's key from the file specified in the configuration...
static unsigned long long max_path_compression
Maximal path compression length for regex announcing.
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ main()

int main ( int  argc,
char *const *  argv 
)

The main function of the regexprofiler service.

Parameters
argcnumber of arguments from the command line
argvcommand line arguments
Returns
0 ok, 1 on error

Definition at line 372 of file gnunet-daemon-regexprofiler.c.

References __attribute__, gettext_noop, global_ret, GNUNET_GETOPT_OPTION_END, GNUNET_OK, GNUNET_PROGRAM_run(), GNUNET_STRINGS_get_utf8_args(), and run().

373 {
374  static const struct GNUNET_GETOPT_CommandLineOption options[] = {
376  };
377 
378  if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
379  return 2;
380  return (GNUNET_OK ==
381  GNUNET_PROGRAM_run (argc, argv, "regexprofiler",
383  (
384  "Daemon to announce regular expressions for the peer using cadet."),
385  options, &run, NULL)) ? global_ret : 1;
386 }
struct GNUNET_GETOPT_CommandLineOption options[]
Definition: 002.c:5
static void run(void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg_)
Main function that will be run by the scheduler.
int GNUNET_STRINGS_get_utf8_args(int argc, char *const *argv, int *u8argc, char *const **u8argv)
Returns utf-8 encoded arguments.
Definition: strings.c:1438
#define GNUNET_OK
Named constants for return values.
Definition: gnunet_common.h:75
Definition of a command line option.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_OPTION_END
Definition: 002.c:13
static int global_ret
Return value from 'main'.
int GNUNET_PROGRAM_run(int argc, char *const *argv, const char *binaryName, const char *binaryHelp, const struct GNUNET_GETOPT_CommandLineOption *options, GNUNET_PROGRAM_Main task, void *task_cls)
Run a standard GNUnet command startup sequence (initialize loggers and configuration, parse options).
Definition: program.c:367
#define gettext_noop(String)
Definition: gettext.h:69
Here is the call graph for this function:

Variable Documentation

◆ global_ret

int global_ret
static

Return value from 'main'.

Definition at line 40 of file gnunet-daemon-regexprofiler.c.

Referenced by main(), reannounce_regex(), and run().

◆ cfg

const struct GNUNET_CONFIGURATION_Handle* cfg
static

Configuration we use.

Definition at line 45 of file gnunet-daemon-regexprofiler.c.

◆ stats_handle

struct GNUNET_STATISTICS_Handle* stats_handle
static

Handle to the statistics service.

Definition at line 50 of file gnunet-daemon-regexprofiler.c.

◆ dht_handle

struct GNUNET_DHT_Handle* dht_handle
static

Peer's dht handle.

Definition at line 55 of file gnunet-daemon-regexprofiler.c.

◆ announce_handle

struct REGEX_INTERNAL_Announcement* announce_handle
static

Peer's regex announce handle.

Definition at line 60 of file gnunet-daemon-regexprofiler.c.

◆ reannounce_task

struct GNUNET_SCHEDULER_Task* reannounce_task
static

Periodically reannounce regex.

Definition at line 65 of file gnunet-daemon-regexprofiler.c.

◆ reannounce_period_max

struct GNUNET_TIME_Relative reannounce_period_max
static

What's the maximum reannounce period.

Definition at line 70 of file gnunet-daemon-regexprofiler.c.

Referenced by reannounce_regex(), and run().

◆ max_path_compression

unsigned long long max_path_compression
static

Maximal path compression length for regex announcing.

Definition at line 75 of file gnunet-daemon-regexprofiler.c.

Referenced by reannounce_regex(), and run().

◆ policy_filename

char* policy_filename
static

Name of the file containing policies that this peer should announce.

One policy per line.

Definition at line 81 of file gnunet-daemon-regexprofiler.c.

Referenced by announce_regex(), run(), scan(), and shutdown_task().

◆ regex_prefix

char* regex_prefix
static

Prefix to add before every regex we're announcing.

Definition at line 86 of file gnunet-daemon-regexprofiler.c.

Referenced by run().

◆ rx_with_pfx

char* rx_with_pfx
static

Regex with prefix.

Definition at line 91 of file gnunet-daemon-regexprofiler.c.

Referenced by run().

◆ rounds

unsigned int rounds = 3
static

How many put rounds should we do.

Definition at line 96 of file gnunet-daemon-regexprofiler.c.

Referenced by reannounce_regex().

◆ my_private_key

struct GNUNET_CRYPTO_EddsaPrivateKey* my_private_key
static

Private key for this peer.

Definition at line 101 of file gnunet-daemon-regexprofiler.c.