diff options
Diffstat (limited to 'src/experimentation/gnunet-daemon-experimentation_experiments.c')
-rw-r--r-- | src/experimentation/gnunet-daemon-experimentation_experiments.c | 96 |
1 files changed, 48 insertions, 48 deletions
diff --git a/src/experimentation/gnunet-daemon-experimentation_experiments.c b/src/experimentation/gnunet-daemon-experimentation_experiments.c index b4db5188b..928502cf5 100644 --- a/src/experimentation/gnunet-daemon-experimentation_experiments.c +++ b/src/experimentation/gnunet-daemon-experimentation_experiments.c | |||
@@ -54,14 +54,14 @@ experiment_verify (struct Issuer *i, struct Experiment *e) | |||
54 | { | 54 | { |
55 | GNUNET_assert (NULL != i); | 55 | GNUNET_assert (NULL != i); |
56 | GNUNET_assert (NULL != e); | 56 | GNUNET_assert (NULL != e); |
57 | 57 | ||
58 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 58 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
59 | "Verification: to be implemented\n"); | 59 | "Verification: to be implemented\n"); |
60 | return GNUNET_OK; | 60 | return GNUNET_OK; |
61 | } | 61 | } |
62 | 62 | ||
63 | 63 | ||
64 | static int | 64 | static int |
65 | free_experiment (void *cls, | 65 | free_experiment (void *cls, |
66 | const struct GNUNET_HashCode * key, | 66 | const struct GNUNET_HashCode * key, |
67 | void *value) | 67 | void *value) |
@@ -84,15 +84,15 @@ free_experiment (void *cls, | |||
84 | * @param value the issuer element to free | 84 | * @param value the issuer element to free |
85 | * @return GNUNET_OK to continue | 85 | * @return GNUNET_OK to continue |
86 | */ | 86 | */ |
87 | static int | 87 | static int |
88 | free_issuer (void *cls, | 88 | free_issuer (void *cls, |
89 | const struct GNUNET_HashCode * key, | 89 | const struct GNUNET_HashCode * key, |
90 | void *value) | 90 | void *value) |
91 | { | 91 | { |
92 | struct Issuer *i = value; | 92 | struct Issuer *i = value; |
93 | 93 | ||
94 | GNUNET_break (0 == GNUNET_CONTAINER_multihashmap_remove (valid_issuers, | 94 | GNUNET_break (0 == GNUNET_CONTAINER_multihashmap_remove (valid_issuers, |
95 | key, | 95 | key, |
96 | i)); | 96 | i)); |
97 | GNUNET_free (i); | 97 | GNUNET_free (i); |
98 | return GNUNET_OK; | 98 | return GNUNET_OK; |
@@ -149,8 +149,8 @@ GED_experiments_find (const struct GNUNET_CRYPTO_EccPublicSignKey *issuer, | |||
149 | const struct GNUNET_TIME_Absolute version) | 149 | const struct GNUNET_TIME_Absolute version) |
150 | { | 150 | { |
151 | struct GNUNET_HashCode hc; | 151 | struct GNUNET_HashCode hc; |
152 | 152 | ||
153 | get_experiment_key (issuer, | 153 | get_experiment_key (issuer, |
154 | name, | 154 | name, |
155 | version, | 155 | version, |
156 | &hc); | 156 | &hc); |
@@ -180,7 +180,7 @@ get_it (void *cls, | |||
180 | if (0 == memcmp (&e->issuer, | 180 | if (0 == memcmp (&e->issuer, |
181 | get_ctx->issuer, | 181 | get_ctx->issuer, |
182 | sizeof (struct GNUNET_CRYPTO_EccPublicSignKey))) | 182 | sizeof (struct GNUNET_CRYPTO_EccPublicSignKey))) |
183 | get_ctx->get_cb (get_ctx->n, e); | 183 | get_ctx->get_cb (get_ctx->n, e); |
184 | return GNUNET_OK; | 184 | return GNUNET_OK; |
185 | } | 185 | } |
186 | 186 | ||
@@ -222,7 +222,7 @@ GNUNET_EXPERIMENTATION_experiments_add (struct Issuer *i, | |||
222 | struct Experiment *e; | 222 | struct Experiment *e; |
223 | struct GNUNET_HashCode hc; | 223 | struct GNUNET_HashCode hc; |
224 | 224 | ||
225 | e = GNUNET_new (struct Experiment); | 225 | e = GNUNET_new (struct Experiment); |
226 | e->name = GNUNET_strdup (name); | 226 | e->name = GNUNET_strdup (name); |
227 | e->issuer = *issuer_id; | 227 | e->issuer = *issuer_id; |
228 | e->version = version; | 228 | e->version = version; |
@@ -233,20 +233,20 @@ GNUNET_EXPERIMENTATION_experiments_add (struct Issuer *i, | |||
233 | e->frequency = frequency; | 233 | e->frequency = frequency; |
234 | e->duration = duration; | 234 | e->duration = duration; |
235 | e->stop = stop; | 235 | e->stop = stop; |
236 | 236 | ||
237 | /* verify experiment */ | 237 | /* verify experiment */ |
238 | if (GNUNET_SYSERR == experiment_verify (i, e)) | 238 | if (GNUNET_SYSERR == experiment_verify (i, e)) |
239 | { | 239 | { |
240 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 240 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
241 | _("Experiment `%s': Experiment signature is invalid\n"), | 241 | _("Experiment `%s': Experiment signature is invalid\n"), |
242 | name); | 242 | name); |
243 | GNUNET_free (e); | 243 | GNUNET_free (e); |
244 | GNUNET_free_non_null (e->name); | 244 | GNUNET_free_non_null (e->name); |
245 | GNUNET_free_non_null (e->description); | 245 | GNUNET_free_non_null (e->description); |
246 | return GNUNET_SYSERR; | 246 | return GNUNET_SYSERR; |
247 | } | 247 | } |
248 | 248 | ||
249 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 249 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
250 | _("Adding experiment `%s' running from `%s' to `%s' every %llu sec. for %llu sec. \n"), | 250 | _("Adding experiment `%s' running from `%s' to `%s' every %llu sec. for %llu sec. \n"), |
251 | e->name, | 251 | e->name, |
252 | GNUNET_STRINGS_absolute_time_to_string (start), | 252 | GNUNET_STRINGS_absolute_time_to_string (start), |
@@ -259,12 +259,12 @@ GNUNET_EXPERIMENTATION_experiments_add (struct Issuer *i, | |||
259 | &hc); | 259 | &hc); |
260 | GNUNET_CONTAINER_multihashmap_put (experiments, | 260 | GNUNET_CONTAINER_multihashmap_put (experiments, |
261 | &hc, | 261 | &hc, |
262 | e, | 262 | e, |
263 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); | 263 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE); |
264 | GNUNET_STATISTICS_set (GED_stats, | 264 | GNUNET_STATISTICS_set (GED_stats, |
265 | "# experiments", | 265 | "# experiments", |
266 | GNUNET_CONTAINER_multihashmap_size (experiments), GNUNET_NO); | 266 | GNUNET_CONTAINER_multihashmap_size (experiments), GNUNET_NO); |
267 | 267 | ||
268 | return GNUNET_OK; | 268 | return GNUNET_OK; |
269 | } | 269 | } |
270 | 270 | ||
@@ -293,9 +293,9 @@ exp_file_iterator (void *cls, | |||
293 | struct GNUNET_TIME_Relative frequency; | 293 | struct GNUNET_TIME_Relative frequency; |
294 | struct GNUNET_TIME_Relative duration; | 294 | struct GNUNET_TIME_Relative duration; |
295 | struct GNUNET_HashCode phash; | 295 | struct GNUNET_HashCode phash; |
296 | 296 | ||
297 | /* Mandatory fields */ | 297 | /* Mandatory fields */ |
298 | 298 | ||
299 | /* Issuer */ | 299 | /* Issuer */ |
300 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_string (exp, name, "ISSUER", &val)) | 300 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_string (exp, name, "ISSUER", &val)) |
301 | { | 301 | { |
@@ -303,8 +303,8 @@ exp_file_iterator (void *cls, | |||
303 | _("Experiment `%s': Issuer missing\n"), name); | 303 | _("Experiment `%s': Issuer missing\n"), name); |
304 | return; | 304 | return; |
305 | } | 305 | } |
306 | if (GNUNET_SYSERR == | 306 | if (GNUNET_SYSERR == |
307 | GNUNET_CRYPTO_ecc_public_sign_key_from_string (val, | 307 | GNUNET_CRYPTO_ecc_public_sign_key_from_string (val, |
308 | strlen (val), | 308 | strlen (val), |
309 | &issuer)) | 309 | &issuer)) |
310 | { | 310 | { |
@@ -322,20 +322,20 @@ exp_file_iterator (void *cls, | |||
322 | return; | 322 | return; |
323 | } | 323 | } |
324 | GNUNET_free (val); | 324 | GNUNET_free (val); |
325 | 325 | ||
326 | /* Version */ | 326 | /* Version */ |
327 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_number (exp, name, "VERSION", &number)) | 327 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_number (exp, name, "VERSION", &number)) |
328 | { | 328 | { |
329 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 329 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
330 | _("Experiment `%s': Version missing or invalid \n"), name); | 330 | _("Experiment `%s': Version missing or invalid \n"), name); |
331 | return; | 331 | return; |
332 | } | 332 | } |
333 | version.abs_value_us = number; // FIXME: what is this supposed to be? Version != TIME!??? | 333 | version.abs_value_us = number; // FIXME: what is this supposed to be? Version != TIME!??? |
334 | 334 | ||
335 | /* Required capabilities */ | 335 | /* Required capabilities */ |
336 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_number (exp, name, "CAPABILITIES", &number)) | 336 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_number (exp, name, "CAPABILITIES", &number)) |
337 | { | 337 | { |
338 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 338 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
339 | _("Experiment `%s': Required capabilities missing \n"), name); | 339 | _("Experiment `%s': Required capabilities missing \n"), name); |
340 | return; | 340 | return; |
341 | } | 341 | } |
@@ -346,23 +346,23 @@ exp_file_iterator (void *cls, | |||
346 | return; | 346 | return; |
347 | } | 347 | } |
348 | required_capabilities = number; | 348 | required_capabilities = number; |
349 | 349 | ||
350 | /* Optional fields */ | 350 | /* Optional fields */ |
351 | 351 | ||
352 | /* Description */ | 352 | /* Description */ |
353 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_string (exp, name, "DESCRIPTION", &description)) | 353 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_string (exp, name, "DESCRIPTION", &description)) |
354 | description = NULL; | 354 | description = NULL; |
355 | 355 | ||
356 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_number (exp, name, "START", (long long unsigned int *) &start.abs_value_us)) | 356 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_number (exp, name, "START", (long long unsigned int *) &start.abs_value_us)) |
357 | start = GNUNET_TIME_UNIT_ZERO_ABS; | 357 | start = GNUNET_TIME_UNIT_ZERO_ABS; |
358 | 358 | ||
359 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_time (exp, name, "FREQUENCY", &frequency)) | 359 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_time (exp, name, "FREQUENCY", &frequency)) |
360 | frequency = EXP_DEFAULT_EXP_FREQ; | 360 | frequency = EXP_DEFAULT_EXP_FREQ; |
361 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_time (exp, name, "DURATION", &duration)) | 361 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_time (exp, name, "DURATION", &duration)) |
362 | duration = EXP_DEFAULT_EXP_DUR; | 362 | duration = EXP_DEFAULT_EXP_DUR; |
363 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_number (exp, name, "STOP", (long long unsigned int *)&stop.abs_value_us)) | 363 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_number (exp, name, "STOP", (long long unsigned int *)&stop.abs_value_us)) |
364 | stop = GNUNET_TIME_UNIT_FOREVER_ABS; | 364 | stop = GNUNET_TIME_UNIT_FOREVER_ABS; |
365 | 365 | ||
366 | GNUNET_EXPERIMENTATION_experiments_add (i, name, &issuer, version, | 366 | GNUNET_EXPERIMENTATION_experiments_add (i, name, &issuer, version, |
367 | description, required_capabilities, | 367 | description, required_capabilities, |
368 | start, frequency, duration, stop); | 368 | start, frequency, duration, stop); |
@@ -382,12 +382,12 @@ load_file (const char * file) | |||
382 | 382 | ||
383 | if (NULL == exp) | 383 | if (NULL == exp) |
384 | return; | 384 | return; |
385 | 385 | ||
386 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_parse (exp, file)) | 386 | if (GNUNET_SYSERR == GNUNET_CONFIGURATION_parse (exp, file)) |
387 | { | 387 | { |
388 | GNUNET_CONFIGURATION_destroy (exp); | 388 | GNUNET_CONFIGURATION_destroy (exp); |
389 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 389 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
390 | _("Failed to parse file `%s'\n"), | 390 | _("Failed to parse file `%s'\n"), |
391 | file); | 391 | file); |
392 | return; | 392 | return; |
393 | } | 393 | } |
@@ -408,28 +408,28 @@ GED_experiments_start () | |||
408 | char *pos; | 408 | char *pos; |
409 | struct GNUNET_CRYPTO_EccPublicSignKey issuer_ID; | 409 | struct GNUNET_CRYPTO_EccPublicSignKey issuer_ID; |
410 | struct GNUNET_HashCode hash; | 410 | struct GNUNET_HashCode hash; |
411 | 411 | ||
412 | /* Load valid issuer */ | 412 | /* Load valid issuer */ |
413 | if (GNUNET_SYSERR == | 413 | if (GNUNET_SYSERR == |
414 | GNUNET_CONFIGURATION_get_value_string (GED_cfg, | 414 | GNUNET_CONFIGURATION_get_value_string (GED_cfg, |
415 | "EXPERIMENTATION", | 415 | "EXPERIMENTATION", |
416 | "ISSUERS", | 416 | "ISSUERS", |
417 | &issuers)) | 417 | &issuers)) |
418 | { | 418 | { |
419 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 419 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
420 | _("No valid experiment issuers configured! Set value to public keys of issuers! Exiting.\n")); | 420 | _("No valid experiment issuers configured! Set value to public keys of issuers! Exiting.\n")); |
421 | GED_experiments_stop (); | 421 | GED_experiments_stop (); |
422 | return GNUNET_SYSERR; | 422 | return GNUNET_SYSERR; |
423 | } | 423 | } |
424 | 424 | ||
425 | valid_issuers = GNUNET_CONTAINER_multihashmap_create (10, GNUNET_NO); | 425 | valid_issuers = GNUNET_CONTAINER_multihashmap_create (10, GNUNET_NO); |
426 | for (pos = strtok (issuers, " "); pos != NULL; pos = strtok (NULL, " ")) | 426 | for (pos = strtok (issuers, " "); pos != NULL; pos = strtok (NULL, " ")) |
427 | { | 427 | { |
428 | if (GNUNET_SYSERR == GNUNET_CRYPTO_ecc_public_sign_key_from_string (pos, | 428 | if (GNUNET_SYSERR == GNUNET_CRYPTO_ecc_public_sign_key_from_string (pos, |
429 | strlen (pos), | 429 | strlen (pos), |
430 | &issuer_ID)) | 430 | &issuer_ID)) |
431 | { | 431 | { |
432 | GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, | 432 | GNUNET_log_config_invalid (GNUNET_ERROR_TYPE_ERROR, |
433 | "EXPERIMENTATION", | 433 | "EXPERIMENTATION", |
434 | "ISSUERS", | 434 | "ISSUERS", |
435 | _("Invalid value for public key\n")); | 435 | _("Invalid value for public key\n")); |
@@ -439,33 +439,33 @@ GED_experiments_start () | |||
439 | i = GNUNET_new (struct Issuer); | 439 | i = GNUNET_new (struct Issuer); |
440 | i->pubkey = issuer_ID; | 440 | i->pubkey = issuer_ID; |
441 | GNUNET_CRYPTO_hash( &issuer_ID, sizeof (issuer_ID), &hash); | 441 | GNUNET_CRYPTO_hash( &issuer_ID, sizeof (issuer_ID), &hash); |
442 | GNUNET_CONTAINER_multihashmap_put (valid_issuers, | 442 | GNUNET_CONTAINER_multihashmap_put (valid_issuers, |
443 | &hash, | 443 | &hash, |
444 | i, | 444 | i, |
445 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); | 445 | GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST); |
446 | } | 446 | } |
447 | GNUNET_free (issuers); | 447 | GNUNET_free (issuers); |
448 | if (0 == GNUNET_CONTAINER_multihashmap_size (valid_issuers)) | 448 | if (0 == GNUNET_CONTAINER_multihashmap_size (valid_issuers)) |
449 | { | 449 | { |
450 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 450 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
451 | _("No valid experiment issuers configured! Set value to public keys of issuers! Exiting.\n")); | 451 | _("No valid experiment issuers configured! Set value to public keys of issuers! Exiting.\n")); |
452 | GED_experiments_stop (); | 452 | GED_experiments_stop (); |
453 | return GNUNET_SYSERR; | 453 | return GNUNET_SYSERR; |
454 | } | 454 | } |
455 | GNUNET_STATISTICS_set (GED_stats, | 455 | GNUNET_STATISTICS_set (GED_stats, |
456 | "# issuer", | 456 | "# issuer", |
457 | GNUNET_CONTAINER_multihashmap_size (valid_issuers), | 457 | GNUNET_CONTAINER_multihashmap_size (valid_issuers), |
458 | GNUNET_NO); | 458 | GNUNET_NO); |
459 | 459 | ||
460 | experiments = GNUNET_CONTAINER_multihashmap_create (10, GNUNET_NO); | 460 | experiments = GNUNET_CONTAINER_multihashmap_create (10, GNUNET_NO); |
461 | /* Load experiments from file */ | 461 | /* Load experiments from file */ |
462 | if (GNUNET_SYSERR == | 462 | if (GNUNET_SYSERR == |
463 | GNUNET_CONFIGURATION_get_value_string (GED_cfg, | 463 | GNUNET_CONFIGURATION_get_value_string (GED_cfg, |
464 | "EXPERIMENTATION", | 464 | "EXPERIMENTATION", |
465 | "EXPERIMENTS", | 465 | "EXPERIMENTS", |
466 | &file)) | 466 | &file)) |
467 | return GNUNET_OK; | 467 | return GNUNET_OK; |
468 | 468 | ||
469 | if (GNUNET_YES != GNUNET_DISK_file_test (file)) | 469 | if (GNUNET_YES != GNUNET_DISK_file_test (file)) |
470 | { | 470 | { |
471 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 471 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |