GNUnet 0.21.0
gnunet-namestore.c File Reference

command line tool to manipulate the local zone More...

#include "platform.h"
#include <gnunet_util_lib.h>
#include <gnunet_identity_service.h>
#include <gnunet_gnsrecord_lib.h>
#include <gnunet_gns_service.h>
#include <gnunet_namestore_service.h>
#include <inttypes.h>
Include dependency graph for gnunet-namestore.c:

Go to the source code of this file.

Data Structures

struct  RecordSetEntry
 Entry in record set for bulk processing. More...
 
struct  MarkedRecord
 The record marked for deletion. More...
 
struct  EgoEntry
 The default namestore ego. More...
 

Macros

#define WARN_RELATIVE_EXPIRATION_LIMIT
 The upper bound for the zone iteration interval (per record). More...
 
#define MAX_LINE_LEN   4086
 
#define MAX_ARGS   20
 

Functions

static int parse_expiration (const char *expirationstring, int *etime_is_rel, uint64_t *etime)
 Parse expiration time. More...
 
static int parse_recordline (const char *line)
 
static void reset_handles (void)
 
static void do_shutdown (void *cls)
 Task run on shutdown. More...
 
static void process_command_stdin ()
 
static void finish_command (void)
 
static void add_continuation (void *cls, enum GNUNET_ErrorCode ec)
 
static void del_continuation (void *cls, enum GNUNET_ErrorCode ec)
 
static void purge_next_record (void *cls)
 
static void marked_deleted (void *cls, enum GNUNET_ErrorCode ec)
 
static void zone_iteration_finished (void *cls)
 Function called when we are done with a zone iteration. More...
 
static void zone_iteration_error_cb (void *cls)
 Function called when we encountered an error in a zone iteration. More...
 
static void collect_zone_records_to_purge (const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd)
 
static void collect_orphans (const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd)
 
static void display_record (const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd)
 Process a record that was stored in the namestore. More...
 
static void purge_zone_iterator (void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd, struct GNUNET_TIME_Absolute expiry)
 
static void purge_orphans_iterator (void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd, struct GNUNET_TIME_Absolute expiry)
 
static void display_record_iterator (void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd, struct GNUNET_TIME_Absolute expiry)
 Process a record that was stored in the namestore. More...
 
static void display_record_monitor (void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd, struct GNUNET_TIME_Absolute expiry)
 Process a record that was stored in the namestore. More...
 
static void display_record_lookup (void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd)
 Process a record that was stored in the namestore. More...
 
static void sync_cb (void *cls)
 Function called once we are in sync in monitor mode. More...
 
static void monitor_error_cb (void *cls)
 Function called on errors while monitoring. More...
 
static void lookup_error_cb (void *cls)
 Function called on errors while monitoring. More...
 
static void add_error_cb (void *cls)
 Function called if lookup fails. More...
 
static void get_existing_record (void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rec_name, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd)
 We're storing a record; this function is given the existing record so that we can merge the information. More...
 
static void reverse_error_cb (void *cls)
 Function called if we encountered an error in zone-to-name. More...
 
static void handle_reverse_lookup (void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone, const char *label, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd)
 Function called with the result of our attempt to obtain a name for a given public key. More...
 
static void del_lookup_error_cb (void *cls)
 Function called if lookup for deletion fails. More...
 
static void del_monitor (void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone, const char *label, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd)
 We were asked to delete something; this function is called with the existing records. More...
 
static void replace_cont (void *cls, enum GNUNET_ErrorCode ec)
 
static void run_with_zone_pkey (const struct GNUNET_CONFIGURATION_Handle *cfg)
 We have obtained the zone's private key, so now process the main commands using it. More...
 
static int get_identity_for_string (const char *str, struct GNUNET_CRYPTO_PrivateKey *zk)
 
static void id_connect_cb (void *cls, struct GNUNET_IDENTITY_Ego *ego, void **ctx, const char *name)
 Function called with ALL of the egos known to the identity service, used on startup if the user did not specify a zone on the command-line. More...
 
static void run (void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *_cfg)
 Main function that will be run. More...
 
int main (int argc, char *const *argv)
 The main function for gnunet-namestore. More...
 

Variables

static struct GNUNET_NAMESTORE_Handlens
 Handle to the namestore. More...
 
static struct GNUNET_CRYPTO_PrivateKey zone_pkey
 Private key for the our zone. More...
 
static struct GNUNET_IDENTITY_Handleidh
 Identity service handle. More...
 
static char * ego_name
 Name of the ego controlling the zone. More...
 
static struct GNUNET_NAMESTORE_QueueEntryadd_qe_uri
 Queue entry for the 'add-uri' operation. More...
 
static struct GNUNET_NAMESTORE_QueueEntryadd_qe
 Queue entry for the 'add' operation. More...
 
static struct GNUNET_NAMESTORE_QueueEntryget_qe
 Queue entry for the 'lookup' operation. More...
 
static struct GNUNET_NAMESTORE_QueueEntryreverse_qe
 Queue entry for the 'reverse lookup' operation (in combination with a name). More...
 
static struct MarkedRecordmarked_head
 Marked record list. More...
 
static struct MarkedRecordmarked_tail
 Marked record list. More...
 
const struct GNUNET_CONFIGURATION_Handlecfg
 Configuration handle. More...
 
static struct EgoEntryego_head
 Ego list. More...
 
static struct EgoEntryego_tail
 Ego list. More...
 
static struct GNUNET_NAMESTORE_ZoneIteratorlist_it
 List iterator for the 'list' operation. More...
 
static int read_from_stdin
 Run in read from stdin mode. More...
 
static int list
 Desired action is to list records. More...
 
static int add
 Desired action is to add a record. More...
 
static int del
 Desired action is to remove a record. More...
 
static int is_public
 Is record public (opposite of GNUNET_GNSRECORD_RF_PRIVATE) More...
 
static int is_shadow
 Is record a shadow record (GNUNET_GNSRECORD_RF_SHADOW) More...
 
static int is_maintenance
 Is record a maintenance record (GNUNET_GNSRECORD_RF_MAINTENANCE) More...
 
static int omit_private
 Filter private records. More...
 
static int output_recordline
 Output in recordline format. More...
 
static int purge_zone
 Purge zone contents. More...
 
static int include_maintenance
 Do not filter maintenance records. More...
 
static int purge_orphaned
 Purge orphaned records. More...
 
static int list_orphaned
 List records and zone keys of orphaned records. More...
 
static struct GNUNET_NAMESTORE_QueueEntrydel_qe
 Queue entry for the 'del' operation. More...
 
static struct GNUNET_NAMESTORE_QueueEntryset_qe
 Queue entry for the 'set/replace' operation. More...
 
static struct GNUNET_NAMESTORE_QueueEntryns_qe
 Queue entry for begin/commit. More...
 
static char * name
 Name of the records to add/list/remove. More...
 
static char * value
 Value of the record to add/remove. More...
 
static char * uri
 URI to import. More...
 
static char * reverse_pkey
 Reverse lookup to perform. More...
 
static char * typestring
 Type of the record to add/remove, NULL to remove all. More...
 
static char * expirationstring
 Desired expiration time. More...
 
static char * nickstring
 Desired nick name. More...
 
static int ret
 Global return value. More...
 
static uint32_t type
 Type string converted to DNS type value. More...
 
static void * data
 Value in binary format. More...
 
static size_t data_size
 Number of bytes in data. More...
 
static uint64_t etime
 Expiration string converted to numeric value. More...
 
static int etime_is_rel = GNUNET_SYSERR
 Is expiration time relative or absolute time? More...
 
static struct GNUNET_NAMESTORE_ZoneMonitorzm
 Monitor handle. More...
 
static int monitor
 Enables monitor mode. More...
 
static struct RecordSetEntryrecordset
 Entry in record set for processing records in bulk. More...
 
static struct GNUNET_SCHEDULER_Taskpurge_task
 Purge task. More...
 

Detailed Description

command line tool to manipulate the local zone

Author
Christian Grothoff

TODO:

  • test

Definition in file gnunet-namestore.c.

Macro Definition Documentation

◆ WARN_RELATIVE_EXPIRATION_LIMIT

#define WARN_RELATIVE_EXPIRATION_LIMIT
Value:
#define GNUNET_TIME_UNIT_MINUTES
One minute.
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:484

The upper bound for the zone iteration interval (per record).

Definition at line 40 of file gnunet-namestore.c.

◆ MAX_LINE_LEN

#define MAX_LINE_LEN   4086

Definition at line 1744 of file gnunet-namestore.c.

◆ MAX_ARGS

#define MAX_ARGS   20

Definition at line 1746 of file gnunet-namestore.c.

Function Documentation

◆ parse_expiration()

static int parse_expiration ( const char *  expirationstring,
int *  etime_is_rel,
uint64_t *  etime 
)
static

Parse expiration time.

Parameters
expirationstringtext to parse
[out]etime_is_relset to GNUNET_YES if time is relative
[out]etimeset to expiration time (abs or rel)
Returns
GNUNET_OK on success

Definition at line 356 of file gnunet-namestore.c.

359{
360 struct GNUNET_TIME_Relative etime_rel;
361 struct GNUNET_TIME_Absolute etime_abs;
362
363 if (0 == strcmp (expirationstring, "never"))
364 {
365 *etime = GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us;
367 return GNUNET_OK;
368 }
369 if (GNUNET_OK ==
371 {
373 *etime = etime_rel.rel_value_us;
375 {
377 "Relative expiration times of less than %s are not recommended. To improve availability, consider increasing this value.\n",
380 }
382 "Storing record with relative expiration time of %s\n",
384 return GNUNET_OK;
385 }
386 if (GNUNET_OK ==
388 {
390 *etime = etime_abs.abs_value_us;
392 "Storing record with absolute expiration time of %s\n",
394 return GNUNET_OK;
395 }
396 return GNUNET_SYSERR;
397}
#define WARN_RELATIVE_EXPIRATION_LIMIT
The upper bound for the zone iteration interval (per record).
static int etime_is_rel
Is expiration time relative or absolute time?
static char * expirationstring
Desired expiration time.
static uint64_t etime
Expiration string converted to numeric value.
#define GNUNET_log(kind,...)
@ GNUNET_OK
@ GNUNET_YES
@ GNUNET_NO
@ GNUNET_SYSERR
@ GNUNET_ERROR_TYPE_WARNING
@ GNUNET_ERROR_TYPE_DEBUG
enum GNUNET_GenericReturnValue GNUNET_STRINGS_fancy_time_to_relative(const char *fancy_time, struct GNUNET_TIME_Relative *rtime)
Convert a given fancy human-readable time to our internal representation.
Definition: strings.c:260
#define GNUNET_TIME_relative_cmp(t1, op, t2)
Compare two relative times.
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:570
const char * GNUNET_STRINGS_absolute_time_to_string(struct GNUNET_TIME_Absolute t)
Like asctime, except for GNUnet time.
Definition: strings.c:617
#define GNUNET_TIME_UNIT_FOREVER_ABS
Constant used to specify "forever".
enum GNUNET_GenericReturnValue GNUNET_STRINGS_fancy_time_to_absolute(const char *fancy_time, struct GNUNET_TIME_Absolute *atime)
Convert a given fancy human-readable time to our internal representation.
Definition: strings.c:302
Time for absolute times used by GNUnet, in microseconds.
Time for relative time used by GNUnet, in microseconds.

References GNUNET_TIME_Absolute::abs_value_us, etime, etime_is_rel, expirationstring, GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_WARNING, GNUNET_log, GNUNET_NO, GNUNET_OK, GNUNET_STRINGS_absolute_time_to_string(), GNUNET_STRINGS_fancy_time_to_absolute(), GNUNET_STRINGS_fancy_time_to_relative(), GNUNET_STRINGS_relative_time_to_string(), GNUNET_SYSERR, GNUNET_TIME_relative_cmp, GNUNET_TIME_UNIT_FOREVER_ABS, GNUNET_YES, GNUNET_TIME_Relative::rel_value_us, and WARN_RELATIVE_EXPIRATION_LIMIT.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse_recordline()

static int parse_recordline ( const char *  line)
static

Definition at line 401 of file gnunet-namestore.c.

402{
403 struct RecordSetEntry **head = &recordset;
404 struct RecordSetEntry *r;
406 char *cp;
407 char *tok;
408 char *saveptr;
409 void *raw_data;
410
411 cp = GNUNET_strdup (line);
412 tok = strtok_r (cp, " ", &saveptr);
413 if (NULL == tok)
414 {
416 _ ("Missing entries in record line `%s'.\n"),
417 line);
418 GNUNET_free (cp);
419 return GNUNET_SYSERR;
420 }
422 if (UINT32_MAX == record.record_type)
423 {
424 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _ ("Unknown record type `%s'\n"), tok);
425 GNUNET_free (cp);
426 return GNUNET_SYSERR;
427 }
428 tok = strtok_r (NULL, " ", &saveptr);
429 if (NULL == tok)
430 {
432 _ ("Empty record line argument is not allowed.\n"));
433 GNUNET_free (cp);
434 return GNUNET_SYSERR;
435 }
436 if (1 != sscanf (tok, "%" SCNu64, &record.expiration_time))
437 {
438 fprintf (stderr,
439 _ ("Error parsing expiration time %s.\n"), tok);
440 GNUNET_free (cp);
441 return GNUNET_SYSERR;
442 }
443 tok = strtok_r (NULL, " ", &saveptr);
444 if (NULL == tok)
445 {
447 _ ("Empty record line argument is not allowed.\n"));
448 GNUNET_free (cp);
449 return GNUNET_SYSERR;
450 }
452 if (NULL != strchr (tok, (unsigned char) 'r'))
454 if (NULL == strchr (tok, (unsigned char) 'p')) /* p = public */
456 if (NULL != strchr (tok, (unsigned char) 'S'))
458 if (NULL != strchr (tok, (unsigned char) 's'))
460 if (NULL != strchr (tok, (unsigned char) 'C'))
462 tok += strlen (tok) + 1;
464 tok,
465 &raw_data,
466 &record.data_size))
467 {
469 _ ("Invalid record data for type %s: `%s'.\n"),
471 tok);
472 GNUNET_free (cp);
473 return GNUNET_SYSERR;
474 }
475 GNUNET_free (cp);
476
477 r = GNUNET_malloc (sizeof(struct RecordSetEntry) + record.data_size);
478 r->next = *head;
479 record.data = &r[1];
480 memcpy (&r[1], raw_data, record.data_size);
481 GNUNET_free (raw_data);
482 r->record = record;
483 *head = r;
484 return GNUNET_OK;
485}
static void record(void *cls, size_t data_size, const void *data)
Process recorded audio data.
static char * line
Desired phone line (string to be converted to a hash).
static struct RecordSetEntry * recordset
Entry in record set for processing records in bulk.
const char * GNUNET_GNSRECORD_number_to_typename(uint32_t type)
Convert a type number to the corresponding type string (e.g.
Definition: gnsrecord.c:227
uint32_t GNUNET_GNSRECORD_typename_to_number(const char *dns_typename)
Convert a type name (e.g.
Definition: gnsrecord.c:200
int GNUNET_GNSRECORD_string_to_value(uint32_t type, const char *s, void **data, size_t *data_size)
Convert human-readable version of the value s of a record of type type to the respective binary repre...
Definition: gnsrecord.c:177
@ GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION
This expiration time of the record is a relative time (not an absolute time).
@ GNUNET_GNSRECORD_RF_CRITICAL
This record is critical.
@ GNUNET_GNSRECORD_RF_SUPPLEMENTAL
This is a supplemental record.
@ GNUNET_GNSRECORD_RF_SHADOW
This record should not be used unless all (other) records in the set with an absolute expiration time...
@ GNUNET_GNSRECORD_RF_PRIVATE
This is a private record of this peer and it should thus not be published.
@ GNUNET_GNSRECORD_RF_NONE
Entry for no flags / cleared flags.
@ GNUNET_ERROR_TYPE_ERROR
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
#define GNUNET_malloc(size)
Wrapper around malloc.
#define GNUNET_free(ptr)
Wrapper around free.
#define _(String)
GNU gettext support macro.
Definition: platform.h:178
Entry in record set for bulk processing.
struct GNUNET_GNSRECORD_Data record
The record to add/remove.
struct RecordSetEntry * next
Kept in a linked list.

References _, GNUNET_ERROR_TYPE_ERROR, GNUNET_free, GNUNET_GNSRECORD_number_to_typename(), GNUNET_GNSRECORD_RF_CRITICAL, GNUNET_GNSRECORD_RF_NONE, GNUNET_GNSRECORD_RF_PRIVATE, GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION, GNUNET_GNSRECORD_RF_SHADOW, GNUNET_GNSRECORD_RF_SUPPLEMENTAL, GNUNET_GNSRECORD_string_to_value(), GNUNET_GNSRECORD_typename_to_number(), GNUNET_log, GNUNET_malloc, GNUNET_OK, GNUNET_strdup, GNUNET_SYSERR, line, RecordSetEntry::next, RecordSetEntry::record, record(), and recordset.

Referenced by process_command_stdin().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reset_handles()

static void reset_handles ( void  )
static

Definition at line 489 of file gnunet-namestore.c.

490{
491 struct MarkedRecord *mrec;
492 struct MarkedRecord *mrec_tmp;
493 struct RecordSetEntry *rs_entry;
494
495 rs_entry = recordset;
496 while (NULL != (rs_entry = recordset))
497 {
499 GNUNET_free (rs_entry);
500 }
501 recordset = NULL;
502 if (NULL != ego_name)
503 {
505 ego_name = NULL;
506 }
507 if (NULL != name)
508 {
510 name = NULL;
511 }
512 if (NULL != value)
513 {
515 value = NULL;
516 }
517 if (NULL != uri)
518 {
520 uri = NULL;
521 }
522 if (NULL != expirationstring)
523 {
525 expirationstring = NULL;
526 }
527 if (NULL != purge_task)
528 {
530 purge_task = NULL;
531 }
532 for (mrec = marked_head; NULL != mrec;)
533 {
534 mrec_tmp = mrec;
535 mrec = mrec->next;
536 GNUNET_free (mrec_tmp->name);
537 GNUNET_free (mrec_tmp);
538 }
539 if (NULL != list_it)
540 {
542 list_it = NULL;
543 }
544 if (NULL != add_qe)
545 {
547 add_qe = NULL;
548 }
549 if (NULL != set_qe)
550 {
552 set_qe = NULL;
553 }
554 if (NULL != add_qe_uri)
555 {
557 add_qe_uri = NULL;
558 }
559 if (NULL != get_qe)
560 {
562 get_qe = NULL;
563 }
564 if (NULL != del_qe)
565 {
567 del_qe = NULL;
568 }
569 if (NULL != reverse_qe)
570 {
572 reverse_qe = NULL;
573 }
574 memset (&zone_pkey, 0, sizeof(zone_pkey));
575 if (NULL != zm)
576 {
578 zm = NULL;
579 }
580 if (NULL != data)
581 {
583 data = NULL;
584 }
585 if (NULL != typestring)
586 {
588 typestring = NULL;
589 }
590 list = 0;
591 is_public = 0;
592 is_shadow = 0;
593 is_maintenance = 0;
594 purge_zone = 0;
595}
static struct GNUNET_NAMESTORE_QueueEntry * get_qe
Queue entry for the 'lookup' operation.
static struct GNUNET_CRYPTO_PrivateKey zone_pkey
Private key for the our zone.
static struct GNUNET_NAMESTORE_ZoneMonitor * zm
Monitor handle.
static struct GNUNET_NAMESTORE_QueueEntry * add_qe
Queue entry for the 'add' operation.
static char * value
Value of the record to add/remove.
static int list
Desired action is to list records.
static struct GNUNET_NAMESTORE_QueueEntry * del_qe
Queue entry for the 'del' operation.
static int purge_zone
Purge zone contents.
static char * name
Name of the records to add/list/remove.
static struct GNUNET_NAMESTORE_QueueEntry * set_qe
Queue entry for the 'set/replace' operation.
static void * data
Value in binary format.
static char * ego_name
Name of the ego controlling the zone.
static struct MarkedRecord * marked_head
Marked record list.
static int is_shadow
Is record a shadow record (GNUNET_GNSRECORD_RF_SHADOW)
static struct GNUNET_SCHEDULER_Task * purge_task
Purge task.
static struct GNUNET_NAMESTORE_ZoneIterator * list_it
List iterator for the 'list' operation.
static int is_maintenance
Is record a maintenance record (GNUNET_GNSRECORD_RF_MAINTENANCE)
static struct GNUNET_NAMESTORE_QueueEntry * add_qe_uri
Queue entry for the 'add-uri' operation.
static struct GNUNET_NAMESTORE_QueueEntry * reverse_qe
Queue entry for the 'reverse lookup' operation (in combination with a name).
static char * typestring
Type of the record to add/remove, NULL to remove all.
static char * uri
URI to import.
static int is_public
Is record public (opposite of GNUNET_GNSRECORD_RF_PRIVATE)
void GNUNET_NAMESTORE_cancel(struct GNUNET_NAMESTORE_QueueEntry *qe)
Cancel a namestore operation.
void GNUNET_NAMESTORE_zone_monitor_stop(struct GNUNET_NAMESTORE_ZoneMonitor *zm)
Stop monitoring a zone for changes.
void GNUNET_NAMESTORE_zone_iteration_stop(struct GNUNET_NAMESTORE_ZoneIterator *it)
Stops iteration and releases the namestore handle for further calls.
void * GNUNET_SCHEDULER_cancel(struct GNUNET_SCHEDULER_Task *task)
Cancel the task with the specified identifier.
Definition: scheduler.c:975
The record marked for deletion.
struct MarkedRecord * next
DLL.
char * name
Ego Identifier.

References add_qe, add_qe_uri, data, del_qe, ego_name, expirationstring, get_qe, GNUNET_free, GNUNET_NAMESTORE_cancel(), GNUNET_NAMESTORE_zone_iteration_stop(), GNUNET_NAMESTORE_zone_monitor_stop(), GNUNET_SCHEDULER_cancel(), is_maintenance, is_public, is_shadow, list, list_it, marked_head, MarkedRecord::name, name, RecordSetEntry::next, MarkedRecord::next, purge_task, purge_zone, recordset, reverse_qe, set_qe, typestring, uri, value, zm, and zone_pkey.

Referenced by do_shutdown(), and finish_command().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ do_shutdown()

static void do_shutdown ( void *  cls)
static

Task run on shutdown.

Cleans up everything.

Parameters
clsunused

Definition at line 604 of file gnunet-namestore.c.

605{
606 struct EgoEntry *ego_entry;
607 struct EgoEntry *ego_tmp;
608 (void) cls;
609
610 reset_handles ();
611 if (NULL != ns_qe)
612 {
614 ns_qe = NULL;
615 }
616 if (NULL != ns)
617 {
619 ns = NULL;
620 }
621 if (NULL != idh)
622 {
624 idh = NULL;
625 }
626 for (ego_entry = ego_head; NULL != ego_entry;)
627 {
628 ego_tmp = ego_entry;
629 ego_entry = ego_entry->next;
630 GNUNET_free (ego_tmp->identifier);
631 GNUNET_free (ego_tmp);
632 }
633}
static struct GNUNET_NAMESTORE_QueueEntry * ns_qe
Queue entry for begin/commit.
static void reset_handles(void)
static struct GNUNET_IDENTITY_Handle * idh
Identity service handle.
static struct EgoEntry * ego_head
Ego list.
static struct GNUNET_NAMESTORE_Handle * ns
Handle to the namestore.
void GNUNET_IDENTITY_disconnect(struct GNUNET_IDENTITY_Handle *h)
Disconnect from identity service.
Definition: identity_api.c:732
void GNUNET_NAMESTORE_disconnect(struct GNUNET_NAMESTORE_Handle *h)
Disconnect from the namestore service (and free associated resources).
The default namestore ego.
char * identifier
Ego Identifier.
struct EgoEntry * next
DLL.

References ego_head, GNUNET_free, GNUNET_IDENTITY_disconnect(), GNUNET_NAMESTORE_cancel(), GNUNET_NAMESTORE_disconnect(), EgoEntry::identifier, idh, EgoEntry::next, ns, ns_qe, and reset_handles().

Referenced by run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ process_command_stdin()

static void process_command_stdin ( )
static

Check if this is a new name. If yes, and we have records, store them.

one last time

Definition at line 1788 of file gnunet-namestore.c.

1789{
1790 char buf[MAX_LINE_LEN];
1791 static struct GNUNET_CRYPTO_PrivateKey next_zone_key;
1792 static char next_name[GNUNET_DNSPARSER_MAX_NAME_LENGTH];
1793 static int finished = GNUNET_NO;
1794 static int have_next_zonekey = GNUNET_NO;
1795 int zonekey_set = GNUNET_NO;
1796 char *tmp;
1797
1798
1799 if (GNUNET_YES == have_next_zonekey)
1800 {
1801 zone_pkey = next_zone_key;
1802 if (NULL != name)
1803 GNUNET_free (name);
1804 name = GNUNET_strdup (next_name);
1805 zonekey_set = GNUNET_YES;
1806 }
1807 while (NULL != fgets (buf, sizeof (buf), stdin))
1808 {
1809 if (1 >= strlen (buf))
1810 continue;
1811 if (buf[strlen (buf) - 1] == '\n')
1812 buf[strlen (buf) - 1] = '\0';
1816 if (buf[strlen (buf) - 1] == ':')
1817 {
1818 memset (next_name, 0, sizeof (next_name));
1819 strncpy (next_name, buf, strlen (buf) - 1);
1820 tmp = strchr (next_name, '.');
1821 if (NULL == tmp)
1822 {
1823 fprintf (stderr, "Error parsing name `%s'\n", next_name);
1825 ret = 1;
1826 return;
1827 }
1828 if (GNUNET_OK != get_identity_for_string (tmp + 1, &next_zone_key))
1829 {
1830 fprintf (stderr, "Error parsing zone name `%s'\n", tmp + 1);
1831 ret = 1;
1833 return;
1834 }
1835 *tmp = '\0';
1836 have_next_zonekey = GNUNET_YES;
1837 /* Run a command for the previous record set */
1838 if (NULL != recordset)
1839 {
1841 return;
1842 }
1843 zone_pkey = next_zone_key;
1844 if (NULL != name)
1845 GNUNET_free (name);
1846 name = GNUNET_strdup (next_name);
1847 zonekey_set = GNUNET_YES;
1848 continue;
1849 }
1850 if (GNUNET_NO == zonekey_set)
1851 {
1852 fprintf (stderr, "Warning, encountered recordline without zone\n");
1853 continue;
1854 }
1855 parse_recordline (buf);
1856 }
1857 if (GNUNET_NO == finished)
1858 {
1859 if (NULL != recordset)
1860 {
1861 if (GNUNET_YES == zonekey_set)
1862 {
1864 finished = GNUNET_YES;
1865 return;
1866 }
1867 fprintf (stderr, "Warning, encountered recordline without zone\n");
1868 }
1869 }
1871 return;
1872}
#define MAX_LINE_LEN
static int parse_recordline(const char *line)
const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration handle.
static int get_identity_for_string(const char *str, struct GNUNET_CRYPTO_PrivateKey *zk)
static int ret
Global return value.
static void run_with_zone_pkey(const struct GNUNET_CONFIGURATION_Handle *cfg)
We have obtained the zone's private key, so now process the main commands using it.
#define GNUNET_DNSPARSER_MAX_NAME_LENGTH
Maximum length of a name in DNS.
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:562
A private key for an identity as per LSD0001.

References cfg, get_identity_for_string(), GNUNET_DNSPARSER_MAX_NAME_LENGTH, GNUNET_free, GNUNET_NO, GNUNET_OK, GNUNET_SCHEDULER_shutdown(), GNUNET_strdup, GNUNET_YES, MAX_LINE_LEN, name, parse_recordline(), recordset, ret, run_with_zone_pkey(), and zone_pkey.

Referenced by finish_command(), and id_connect_cb().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ finish_command()

static void finish_command ( void  )
static

Definition at line 641 of file gnunet-namestore.c.

642{
643 reset_handles ();
644 if (read_from_stdin)
645 {
647 return;
648 }
650}
static int read_from_stdin
Run in read from stdin mode.
static void process_command_stdin()

References GNUNET_SCHEDULER_shutdown(), process_command_stdin(), read_from_stdin, and reset_handles().

Referenced by add_continuation(), add_error_cb(), del_continuation(), del_lookup_error_cb(), del_monitor(), display_record_lookup(), get_existing_record(), handle_reverse_lookup(), lookup_error_cb(), purge_next_record(), replace_cont(), run_with_zone_pkey(), zone_iteration_error_cb(), and zone_iteration_finished().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_continuation()

static void add_continuation ( void *  cls,
enum GNUNET_ErrorCode  ec 
)
static

Definition at line 654 of file gnunet-namestore.c.

655{
656 struct GNUNET_NAMESTORE_QueueEntry **qe = cls;
657
658 *qe = NULL;
659 if (GNUNET_EC_NONE != ec)
660 {
661 fprintf (stderr,
662 _ ("Adding record failed: %s\n"),
665 ret = 1;
666 }
667 ret = 0;
669}
static struct GNUNET_DATASTORE_QueueEntry * qe
Current operation.
static void finish_command(void)
const char * GNUNET_ErrorCode_get_hint(enum GNUNET_ErrorCode ec)
Returns a hint for a given error code.
@ GNUNET_EC_NONE
No error (success).
@ GNUNET_EC_NAMESTORE_RECORD_EXISTS
Record already exists.
An QueueEntry used to store information for a pending NAMESTORE record operation.
Definition: namestore_api.c:49

References _, finish_command(), GNUNET_EC_NAMESTORE_RECORD_EXISTS, GNUNET_EC_NONE, GNUNET_ErrorCode_get_hint(), qe, and ret.

Referenced by get_existing_record(), and run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ del_continuation()

static void del_continuation ( void *  cls,
enum GNUNET_ErrorCode  ec 
)
static

Definition at line 673 of file gnunet-namestore.c.

674{
675 (void) cls;
676 del_qe = NULL;
678 {
679 fprintf (stderr,
680 _ ("Deleting record failed: %s\n"), GNUNET_ErrorCode_get_hint (
681 ec));
682 }
684}
@ GNUNET_EC_NAMESTORE_RECORD_NOT_FOUND
Record not found.

References _, del_qe, finish_command(), GNUNET_EC_NAMESTORE_RECORD_NOT_FOUND, and GNUNET_ErrorCode_get_hint().

Referenced by del_monitor().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ purge_next_record()

static void purge_next_record ( void *  cls)
static

Definition at line 705 of file gnunet-namestore.c.

706{
707 struct MarkedRecord *mrec;
708 purge_task = NULL;
709
710 if (NULL == marked_head)
711 {
712 ret = 0;
714 return;
715 }
716 mrec = marked_head;
719 mrec);
721 &mrec->key,
722 mrec->name,
723 0, NULL,
725 NULL);
726 GNUNET_free (mrec->name);
727 GNUNET_free (mrec);
728}
static void marked_deleted(void *cls, enum GNUNET_ErrorCode ec)
static struct MarkedRecord * marked_tail
Marked record list.
#define GNUNET_CONTAINER_DLL_remove(head, tail, element)
Remove an element from a DLL.
struct GNUNET_NAMESTORE_QueueEntry * GNUNET_NAMESTORE_record_set_store(struct GNUNET_NAMESTORE_Handle *h, const struct GNUNET_CRYPTO_PrivateKey *pkey, const char *label, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd, GNUNET_NAMESTORE_ContinuationWithStatus cont, void *cont_cls)
Store an item in the namestore.
struct GNUNET_CRYPTO_PrivateKey key
The zone key.

References del_qe, finish_command(), GNUNET_CONTAINER_DLL_remove, GNUNET_free, GNUNET_NAMESTORE_record_set_store(), MarkedRecord::key, marked_deleted(), marked_head, marked_tail, MarkedRecord::name, ns, purge_task, and ret.

Referenced by marked_deleted(), and zone_iteration_finished().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ marked_deleted()

static void marked_deleted ( void *  cls,
enum GNUNET_ErrorCode  ec 
)
static

Definition at line 691 of file gnunet-namestore.c.

692{
693 del_qe = NULL;
694 if (GNUNET_EC_NONE != ec)
695 {
696 fprintf (stderr,
697 _ ("Deleting record failed: %s\n"),
699 }
701}
static void purge_next_record(void *cls)
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:1299

References _, del_qe, GNUNET_EC_NONE, GNUNET_ErrorCode_get_hint(), GNUNET_SCHEDULER_add_now(), purge_next_record(), and purge_task.

Referenced by purge_next_record().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ zone_iteration_finished()

static void zone_iteration_finished ( void *  cls)
static

Function called when we are done with a zone iteration.

Definition at line 735 of file gnunet-namestore.c.

736{
737 (void) cls;
738 list_it = NULL;
740 {
742 return;
743 }
744 ret = 0;
746}
static int purge_orphaned
Purge orphaned records.

References finish_command(), GNUNET_SCHEDULER_add_now(), list_it, purge_next_record(), purge_orphaned, purge_task, purge_zone, and ret.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ zone_iteration_error_cb()

static void zone_iteration_error_cb ( void *  cls)
static

Function called when we encountered an error in a zone iteration.

Definition at line 753 of file gnunet-namestore.c.

754{
755 (void) cls;
756 list_it = NULL;
757 fprintf (stderr, "Error iterating over zone\n");
758 ret = 1;
760}

References finish_command(), list_it, and ret.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ collect_zone_records_to_purge()

static void collect_zone_records_to_purge ( const struct GNUNET_CRYPTO_PrivateKey zone_key,
const char *  rname,
unsigned int  rd_len,
const struct GNUNET_GNSRECORD_Data rd 
)
static

Definition at line 764 of file gnunet-namestore.c.

769{
770 struct MarkedRecord *mrec;
771
772 mrec = GNUNET_new (struct MarkedRecord);
773 mrec->key = *zone_key;
774 mrec->name = GNUNET_strdup (rname);
777 mrec);
778}
#define GNUNET_CONTAINER_DLL_insert(head, tail, element)
Insert an element at the head of a DLL.
#define GNUNET_new(type)
Allocate a struct or union of the given type.

References GNUNET_CONTAINER_DLL_insert, GNUNET_new, GNUNET_strdup, MarkedRecord::key, marked_head, marked_tail, and MarkedRecord::name.

Referenced by purge_zone_iterator().

Here is the caller graph for this function:

◆ collect_orphans()

static void collect_orphans ( const struct GNUNET_CRYPTO_PrivateKey zone_key,
const char *  rname,
unsigned int  rd_len,
const struct GNUNET_GNSRECORD_Data rd 
)
static

Definition at line 782 of file gnunet-namestore.c.

786{
787 struct EgoEntry *ego;
788 struct MarkedRecord *orphan;
789 int is_orphaned = 1;
790
791 for (ego = ego_head; NULL != ego; ego = ego->next)
792 {
793 if (0 == memcmp (GNUNET_IDENTITY_ego_get_private_key (ego->ego),
794 zone_key,
795 sizeof (*zone_key)))
796 {
797 is_orphaned = 0;
798 break;
799 }
800 }
801 if (is_orphaned)
802 {
803 orphan = GNUNET_new (struct MarkedRecord);
804 orphan->key = *zone_key;
805 orphan->name = GNUNET_strdup (rname);
808 orphan);
809 }
810}
const struct GNUNET_CRYPTO_PrivateKey * GNUNET_IDENTITY_ego_get_private_key(const struct GNUNET_IDENTITY_Ego *ego)
Obtain the ECC key associated with a ego.
Definition: identity_api.c:517
struct GNUNET_IDENTITY_Ego * ego
The Ego.

References EgoEntry::ego, ego_head, GNUNET_CONTAINER_DLL_insert, GNUNET_IDENTITY_ego_get_private_key(), GNUNET_new, GNUNET_strdup, MarkedRecord::key, marked_head, marked_tail, MarkedRecord::name, and EgoEntry::next.

Referenced by purge_orphans_iterator().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ display_record()

static void display_record ( const struct GNUNET_CRYPTO_PrivateKey zone_key,
const char *  rname,
unsigned int  rd_len,
const struct GNUNET_GNSRECORD_Data rd 
)
static

Process a record that was stored in the namestore.

Parameters
rnamename that is being mapped (at most 255 characters long)
rd_lennumber of entries in rd array
rdarray of records with data to store

Definition at line 821 of file gnunet-namestore.c.

825{
826 const char *typestr;
827 char *s;
828 const char *ets;
829 struct GNUNET_TIME_Absolute at;
830 struct GNUNET_TIME_Relative rt;
831 struct EgoEntry *ego;
832 int have_record;
833 int is_orphaned = 1;
834 char *orphaned_str;
835
836 if ((NULL != name) && (0 != strcmp (name, rname)))
837 return;
838 have_record = GNUNET_NO;
839 for (unsigned int i = 0; i < rd_len; i++)
840 {
841 if ((GNUNET_GNSRECORD_TYPE_NICK == rd[i].record_type) &&
842 (0 != strcmp (rname, GNUNET_GNS_EMPTY_LABEL_AT)))
843 continue;
844 if ((type != rd[i].record_type) && (GNUNET_GNSRECORD_TYPE_ANY != type))
845 continue;
846 have_record = GNUNET_YES;
847 break;
848 }
849 if (GNUNET_NO == have_record)
850 return;
851 for (ego = ego_head; NULL != ego; ego = ego->next)
852 {
853 if (0 == memcmp (GNUNET_IDENTITY_ego_get_private_key (ego->ego),
854 zone_key,
855 sizeof (*zone_key)))
856 {
857 is_orphaned = 0;
858 break;
859 }
860 }
861 if (list_orphaned && ! is_orphaned)
862 return;
863 if (! list_orphaned && is_orphaned)
864 return;
865 orphaned_str = GNUNET_CRYPTO_private_key_to_string (zone_key);
866 fprintf (stdout, "%s.%s:\n", rname, is_orphaned ? orphaned_str :
867 ego->identifier);
868 GNUNET_free (orphaned_str);
869 if (NULL != typestring)
871 else
873 for (unsigned int i = 0; i < rd_len; i++)
874 {
875 if ((GNUNET_GNSRECORD_TYPE_NICK == rd[i].record_type) &&
876 (0 != strcmp (rname, GNUNET_GNS_EMPTY_LABEL_AT)))
877 continue;
878 if ((type != rd[i].record_type) && (GNUNET_GNSRECORD_TYPE_ANY != type))
879 continue;
880 typestr = GNUNET_GNSRECORD_number_to_typename (rd[i].record_type);
881 s = GNUNET_GNSRECORD_value_to_string (rd[i].record_type,
882 rd[i].data,
883 rd[i].data_size);
884 if (NULL == s)
885 {
886 fprintf (stdout,
887 _ ("\tCorrupt or unsupported record of type %u\n"),
888 (unsigned int) rd[i].record_type);
889 continue;
890 }
891 if (0 != (rd[i].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION))
892 {
893 rt.rel_value_us = rd[i].expiration_time;
895 }
896 else
897 {
898 at.abs_value_us = rd[i].expiration_time;
900 }
901 char flgstr[16];
902 sprintf (flgstr, "[%s%s%s%s%s]",
903 (rd[i].flags & GNUNET_GNSRECORD_RF_PRIVATE) ? "" : "p",
904 (rd[i].flags & GNUNET_GNSRECORD_RF_SUPPLEMENTAL) ? "S" : "",
905 (rd[i].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION) ? "r" : "",
906 (rd[i].flags & GNUNET_GNSRECORD_RF_SHADOW) ? "S" : "",
907 (rd[i].flags & GNUNET_GNSRECORD_RF_CRITICAL) ? "C" : "");
909 fprintf (stdout,
910 " %s %" PRIu64 " %s %s\n",
911 typestr,
912 rd[i].expiration_time,
913 flgstr,
914 s);
915 else
916 fprintf (stdout,
917 "\t%s: %s (%s)\t%s\t%s\t%s\n",
918 typestr,
919 s,
920 ets,
921 (0 != (rd[i].flags & GNUNET_GNSRECORD_RF_PRIVATE)) ? "PRIVATE"
922 : "PUBLIC",
923 (0 != (rd[i].flags & GNUNET_GNSRECORD_RF_SHADOW)) ? "SHADOW"
924 : "",
925 (0 != (rd[i].flags & GNUNET_GNSRECORD_RF_MAINTENANCE)) ?
926 "MAINTENANCE"
927 : "");
928 GNUNET_free (s);
929 }
930 // fprintf (stdout, "%s", "\n");
931}
static struct GNUNET_GNSRECORD_Data rd[50]
The record data under a single label.
static int output_recordline
Output in recordline format.
static int list_orphaned
List records and zone keys of orphaned records.
static uint32_t type
Type string converted to DNS type value.
static size_t data_size
Number of bytes in data.
#define GNUNET_GNS_EMPTY_LABEL_AT
String we use to indicate an empty label (top-level entry in the zone).
#define GNUNET_GNSRECORD_TYPE_ANY
Record type indicating any record/'*'.
char * GNUNET_GNSRECORD_value_to_string(uint32_t type, const void *data, size_t data_size)
Convert the binary value data of a record of type type to a human-readable string.
Definition: gnsrecord.c:155
@ GNUNET_GNSRECORD_RF_MAINTENANCE
Maintenance records.
char * GNUNET_CRYPTO_private_key_to_string(const struct GNUNET_CRYPTO_PrivateKey *key)
Creates a (Base32) string representation of the private key.
Definition: crypto_pkey.c:561
#define GNUNET_GNSRECORD_TYPE_NICK
GNS zone nickname.
uint64_t expiration_time
Expiration time for the DNS record.

References _, GNUNET_TIME_Absolute::abs_value_us, data, data_size, EgoEntry::ego, ego_head, GNUNET_GNSRECORD_Data::expiration_time, GNUNET_CRYPTO_private_key_to_string(), GNUNET_free, GNUNET_GNS_EMPTY_LABEL_AT, GNUNET_GNSRECORD_number_to_typename(), GNUNET_GNSRECORD_RF_CRITICAL, GNUNET_GNSRECORD_RF_MAINTENANCE, GNUNET_GNSRECORD_RF_PRIVATE, GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION, GNUNET_GNSRECORD_RF_SHADOW, GNUNET_GNSRECORD_RF_SUPPLEMENTAL, GNUNET_GNSRECORD_TYPE_ANY, GNUNET_GNSRECORD_TYPE_NICK, GNUNET_GNSRECORD_typename_to_number(), GNUNET_GNSRECORD_value_to_string(), GNUNET_IDENTITY_ego_get_private_key(), GNUNET_NO, GNUNET_STRINGS_absolute_time_to_string(), GNUNET_STRINGS_relative_time_to_string(), GNUNET_YES, list_orphaned, name, output_recordline, rd, GNUNET_TIME_Relative::rel_value_us, type, and typestring.

Referenced by display_record_iterator(), display_record_lookup(), and display_record_monitor().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ purge_zone_iterator()

static void purge_zone_iterator ( void *  cls,
const struct GNUNET_CRYPTO_PrivateKey zone_key,
const char *  rname,
unsigned int  rd_len,
const struct GNUNET_GNSRECORD_Data rd,
struct GNUNET_TIME_Absolute  expiry 
)
static

Definition at line 935 of file gnunet-namestore.c.

941{
942 (void) cls;
943 (void) zone_key;
944 (void) expiry;
945 collect_zone_records_to_purge (zone_key, rname, rd_len, rd);
947}
static void collect_zone_records_to_purge(const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd)
void GNUNET_NAMESTORE_zone_iterator_next(struct GNUNET_NAMESTORE_ZoneIterator *it, uint64_t limit)
Calls the record processor specified in GNUNET_NAMESTORE_zone_iteration_start for the next record.

References collect_zone_records_to_purge(), GNUNET_NAMESTORE_zone_iterator_next(), list_it, and rd.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ purge_orphans_iterator()

static void purge_orphans_iterator ( void *  cls,
const struct GNUNET_CRYPTO_PrivateKey zone_key,
const char *  rname,
unsigned int  rd_len,
const struct GNUNET_GNSRECORD_Data rd,
struct GNUNET_TIME_Absolute  expiry 
)
static

Definition at line 951 of file gnunet-namestore.c.

957{
958 (void) cls;
959 (void) zone_key;
960 (void) expiry;
961 collect_orphans (zone_key, rname, rd_len, rd);
963}
static void collect_orphans(const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd)

References collect_orphans(), GNUNET_NAMESTORE_zone_iterator_next(), list_it, and rd.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ display_record_iterator()

static void display_record_iterator ( void *  cls,
const struct GNUNET_CRYPTO_PrivateKey zone_key,
const char *  rname,
unsigned int  rd_len,
const struct GNUNET_GNSRECORD_Data rd,
struct GNUNET_TIME_Absolute  expiry 
)
static

Process a record that was stored in the namestore.

Parameters
clsclosure
zone_keyprivate key of the zone
rnamename that is being mapped (at most 255 characters long)
rd_lennumber of entries in rd array
rdarray of records with data to store

Definition at line 976 of file gnunet-namestore.c.

982{
983 (void) cls;
984 (void) zone_key;
985 (void) expiry;
986 display_record (zone_key, rname, rd_len, rd);
988}
static void display_record(const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd)
Process a record that was stored in the namestore.

References display_record(), GNUNET_NAMESTORE_zone_iterator_next(), list_it, and rd.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ display_record_monitor()

static void display_record_monitor ( void *  cls,
const struct GNUNET_CRYPTO_PrivateKey zone_key,
const char *  rname,
unsigned int  rd_len,
const struct GNUNET_GNSRECORD_Data rd,
struct GNUNET_TIME_Absolute  expiry 
)
static

Process a record that was stored in the namestore.

Parameters
clsclosure
zone_keyprivate key of the zone
rnamename that is being mapped (at most 255 characters long)
rd_lennumber of entries in rd array
rdarray of records with data to store

Definition at line 1001 of file gnunet-namestore.c.

1007{
1008 (void) cls;
1009 (void) zone_key;
1010 (void) expiry;
1011 display_record (zone_key, rname, rd_len, rd);
1013}
void GNUNET_NAMESTORE_zone_monitor_next(struct GNUNET_NAMESTORE_ZoneMonitor *zm, uint64_t limit)
Calls the monitor processor specified in GNUNET_NAMESTORE_zone_monitor_start for the next record(s).

References display_record(), GNUNET_NAMESTORE_zone_monitor_next(), rd, and zm.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ display_record_lookup()

static void display_record_lookup ( void *  cls,
const struct GNUNET_CRYPTO_PrivateKey zone_key,
const char *  rname,
unsigned int  rd_len,
const struct GNUNET_GNSRECORD_Data rd 
)
static

Process a record that was stored in the namestore.

Parameters
clsclosure
zone_keyprivate key of the zone
rnamename that is being mapped (at most 255 characters long)
rd_lennumber of entries in rd array
rdarray of records with data to store

Definition at line 1026 of file gnunet-namestore.c.

1031{
1032 (void) cls;
1033 (void) zone_key;
1034 get_qe = NULL;
1035 display_record (zone_key, rname, rd_len, rd);
1036 finish_command ();
1037}

References display_record(), finish_command(), get_qe, and rd.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sync_cb()

static void sync_cb ( void *  cls)
static

Function called once we are in sync in monitor mode.

Parameters
clsNULL

Definition at line 1046 of file gnunet-namestore.c.

1047{
1048 (void) cls;
1049 fprintf (stdout, "%s", "Monitor is now in sync.\n");
1050}

Referenced by GNUNET_NAMESTORE_zone_monitor_start(), GNUNET_NAMESTORE_zone_monitor_start2(), GNUNET_PEERSTORE_monitor_start(), and run_with_zone_pkey().

Here is the caller graph for this function:

◆ monitor_error_cb()

static void monitor_error_cb ( void *  cls)
static

Function called on errors while monitoring.

Parameters
clsNULL

Definition at line 1059 of file gnunet-namestore.c.

1060{
1061 (void) cls;
1062 fprintf (stderr, "%s", "Monitor disconnected and out of sync.\n");
1063}

Referenced by run_with_zone_pkey().

Here is the caller graph for this function:

◆ lookup_error_cb()

static void lookup_error_cb ( void *  cls)
static

Function called on errors while monitoring.

Parameters
clsNULL

Definition at line 1072 of file gnunet-namestore.c.

1073{
1074 (void) cls;
1075 get_qe = NULL;
1076 fprintf (stderr, "%s", "Failed to lookup record.\n");
1077 finish_command ();
1078}

References finish_command(), and get_qe.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_error_cb()

static void add_error_cb ( void *  cls)
static

Function called if lookup fails.

Definition at line 1085 of file gnunet-namestore.c.

1086{
1087 (void) cls;
1088 add_qe = NULL;
1089 GNUNET_break (0);
1090 ret = 1;
1091 finish_command ();
1092}
#define GNUNET_break(cond)
Use this for internal assertion violations that are not fatal (can be handled) but should not occur.

References add_qe, finish_command(), GNUNET_break, and ret.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_existing_record()

static void get_existing_record ( void *  cls,
const struct GNUNET_CRYPTO_PrivateKey zone_key,
const char *  rec_name,
unsigned int  rd_count,
const struct GNUNET_GNSRECORD_Data rd 
)
static

We're storing a record; this function is given the existing record so that we can merge the information.

Parameters
clsclosure, unused
zone_keyprivate key of the zone
rec_namename that is being mapped (at most 255 characters long)
rd_countnumber of entries in rd array
rdarray of records with data to store

Definition at line 1106 of file gnunet-namestore.c.

1111{
1112 struct GNUNET_GNSRECORD_Data rdn[rd_count + 1];
1113 struct GNUNET_GNSRECORD_Data *rde;
1114
1115 (void) cls;
1116 (void) zone_key;
1117 add_qe = NULL;
1118 if (0 != strcmp (rec_name, name))
1119 {
1120 GNUNET_break (0);
1121 ret = 1;
1122 finish_command ();
1123 return;
1124 }
1125
1127 "Received %u records for name `%s'\n",
1128 rd_count,
1129 rec_name);
1130 for (unsigned int i = 0; i < rd_count; i++)
1131 {
1132 switch (rd[i].record_type)
1133 {
1136 {
1137 fprintf (
1138 stderr,
1139 _ (
1140 "A SOA record exists already under `%s', cannot add a second SOA to the same zone.\n"),
1141 rec_name);
1142 ret = 1;
1143 finish_command ();
1144 return;
1145 }
1146 break;
1147 }
1148 }
1149 memset (rdn, 0, sizeof(struct GNUNET_GNSRECORD_Data));
1150 GNUNET_memcpy (&rdn[1], rd, rd_count * sizeof(struct GNUNET_GNSRECORD_Data));
1151 rde = &rdn[0];
1152 rde->data = data;
1153 rde->data_size = data_size;
1154 rde->record_type = type;
1155 if (1 == is_shadow)
1157 if (1 == is_maintenance)
1159 if (1 != is_public)
1161 rde->expiration_time = etime;
1162 if (GNUNET_YES == etime_is_rel)
1164 else if (GNUNET_NO != etime_is_rel)
1166 GNUNET_assert (NULL != name);
1168 &zone_pkey,
1169 name,
1170 rd_count + 1,
1171 rde,
1173 &add_qe);
1174}
static unsigned int rd_count
Number of records for currently parsed set.
static void add_continuation(void *cls, enum GNUNET_ErrorCode ec)
#define GNUNET_DNSPARSER_TYPE_SOA
#define GNUNET_memcpy(dst, src, n)
Call memcpy() but check for n being 0 first.
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
uint32_t record_type
Type of the GNS/DNS record.
const void * data
Binary value stored in the DNS record.
size_t data_size
Number of bytes in data.
enum GNUNET_GNSRECORD_Flags flags
Flags for the record.

References _, add_continuation(), add_qe, data, GNUNET_GNSRECORD_Data::data, data_size, GNUNET_GNSRECORD_Data::data_size, etime, etime_is_rel, GNUNET_GNSRECORD_Data::expiration_time, finish_command(), GNUNET_GNSRECORD_Data::flags, GNUNET_assert, GNUNET_break, GNUNET_DNSPARSER_TYPE_SOA, GNUNET_ERROR_TYPE_DEBUG, GNUNET_GNSRECORD_RF_MAINTENANCE, GNUNET_GNSRECORD_RF_PRIVATE, GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION, GNUNET_GNSRECORD_RF_SHADOW, GNUNET_log, GNUNET_memcpy, GNUNET_NAMESTORE_record_set_store(), GNUNET_NO, GNUNET_TIME_UNIT_FOREVER_ABS, GNUNET_YES, is_maintenance, is_public, is_shadow, name, ns, rd, rd_count, GNUNET_GNSRECORD_Data::record_type, ret, type, and zone_pkey.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reverse_error_cb()

static void reverse_error_cb ( void *  cls)
static

Function called if we encountered an error in zone-to-name.

Definition at line 1181 of file gnunet-namestore.c.

1182{
1183 (void) cls;
1184 reverse_qe = NULL;
1185 fprintf (stdout, "%s.zkey\n", reverse_pkey);
1186}
static char * reverse_pkey
Reverse lookup to perform.

References reverse_pkey, and reverse_qe.

Referenced by run_with_zone_pkey().

Here is the caller graph for this function:

◆ handle_reverse_lookup()

static void handle_reverse_lookup ( void *  cls,
const struct GNUNET_CRYPTO_PrivateKey zone,
const char *  label,
unsigned int  rd_count,
const struct GNUNET_GNSRECORD_Data rd 
)
static

Function called with the result of our attempt to obtain a name for a given public key.

Parameters
clsNULL
zoneprivate key of the zone; NULL on disconnect
labellabel of the records; NULL on disconnect
rd_countnumber of entries in rd array, 0 if label was deleted
rdarray of records with data to store

Definition at line 1200 of file gnunet-namestore.c.

1205{
1206 (void) cls;
1207 (void) zone;
1208 (void) rd_count;
1209 (void) rd;
1210 reverse_qe = NULL;
1211 if (NULL == label)
1212 fprintf (stdout, "%s\n", reverse_pkey);
1213 else
1214 fprintf (stdout, "%s.%s\n", label, ego_name);
1215 finish_command ();
1216}

References ego_name, finish_command(), rd, rd_count, reverse_pkey, and reverse_qe.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ del_lookup_error_cb()

static void del_lookup_error_cb ( void *  cls)
static

Function called if lookup for deletion fails.

Definition at line 1223 of file gnunet-namestore.c.

1224{
1225 (void) cls;
1226 del_qe = NULL;
1227 GNUNET_break (0);
1228 ret = 1;
1229 finish_command ();
1230}

References del_qe, finish_command(), GNUNET_break, and ret.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ del_monitor()

static void del_monitor ( void *  cls,
const struct GNUNET_CRYPTO_PrivateKey zone,
const char *  label,
unsigned int  rd_count,
const struct GNUNET_GNSRECORD_Data rd 
)
static

We were asked to delete something; this function is called with the existing records.

Now we should determine what should be deleted and then issue the deletion operation.

Parameters
clsNULL
zoneprivate key of the zone we are deleting from
labelname of the records we are editing
rd_countsize of the rd array
rdexisting records

Definition at line 1245 of file gnunet-namestore.c.

1250{
1251 struct GNUNET_GNSRECORD_Data rdx[rd_count];
1252 unsigned int rd_left;
1253 uint32_t type;
1254 char *vs;
1255
1256 (void) cls;
1257 (void) zone;
1258 del_qe = NULL;
1259 if (0 == rd_count)
1260 {
1261 fprintf (stderr,
1262 _ (
1263 "There are no records under label `%s' that could be deleted.\n"),
1264 label);
1265 ret = 1;
1266 finish_command ();
1267 return;
1268 }
1269 if ((NULL == value) && (NULL == typestring))
1270 {
1271 /* delete everything */
1273 &zone_pkey,
1274 name,
1275 0,
1276 NULL,
1278 NULL);
1279 return;
1280 }
1281 rd_left = 0;
1282 if (NULL != typestring)
1284 else
1286 for (unsigned int i = 0; i < rd_count; i++)
1287 {
1288 vs = NULL;
1289 if (! (((GNUNET_GNSRECORD_TYPE_ANY == type) ||
1290 (rd[i].record_type == type)) &&
1291 ((NULL == value) ||
1292 (NULL ==
1294 rd[i].data,
1295 rd[i].data_size)))) ||
1296 (0 == strcmp (vs, value)))))
1297 rdx[rd_left++] = rd[i];
1298 GNUNET_free (vs);
1299 }
1300 if (rd_count == rd_left)
1301 {
1302 /* nothing got deleted */
1303 fprintf (
1304 stderr,
1305 _ (
1306 "There are no records under label `%s' that match the request for deletion.\n"),
1307 label);
1308 finish_command ();
1309 return;
1310 }
1311 /* delete everything but what we copied to 'rdx' */
1313 &zone_pkey,
1314 name,
1315 rd_left,
1316 rdx,
1318 NULL);
1319}
static void del_continuation(void *cls, enum GNUNET_ErrorCode ec)

References _, data, data_size, del_continuation(), del_qe, finish_command(), GNUNET_free, GNUNET_GNSRECORD_TYPE_ANY, GNUNET_GNSRECORD_typename_to_number(), GNUNET_GNSRECORD_value_to_string(), GNUNET_NAMESTORE_record_set_store(), name, ns, rd, rd_count, GNUNET_GNSRECORD_Data::record_type, ret, type, typestring, value, and zone_pkey.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ replace_cont()

static void replace_cont ( void *  cls,
enum GNUNET_ErrorCode  ec 
)
static

Definition at line 1323 of file gnunet-namestore.c.

1324{
1325 (void) cls;
1326
1327 set_qe = NULL;
1328 if (GNUNET_EC_NONE != ec)
1329 {
1331 _ ("%s\n"),
1333 ret = 1; /* fail from 'main' */
1334 }
1335 finish_command ();
1336}
@ GNUNET_ERROR_TYPE_MESSAGE

References _, finish_command(), GNUNET_EC_NONE, GNUNET_ERROR_TYPE_MESSAGE, GNUNET_ErrorCode_get_hint(), GNUNET_log, ret, and set_qe.

Referenced by run_with_zone_pkey().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ run_with_zone_pkey()

static void run_with_zone_pkey ( const struct GNUNET_CONFIGURATION_Handle cfg)
static

We have obtained the zone's private key, so now process the main commands using it.

Parameters
cfgconfiguration to use

Definition at line 1346 of file gnunet-namestore.c.

1347{
1350
1351 if (omit_private)
1355 if (! (add | del | list | (NULL != nickstring) | (NULL != uri)
1356 | (NULL != reverse_pkey) | (NULL != recordset) | (monitor)
1358 {
1359 /* nothing more to be done */
1360 fprintf (stderr, _ ("No options given\n"));
1361 finish_command ();
1362 return;
1363 }
1364
1365 if (NULL != recordset)
1366 {
1367 /* replace entire record set */
1368 unsigned int rd_count;
1369 struct GNUNET_GNSRECORD_Data *rd;
1370
1371 /* FIXME: We could easily support append and delete with this as well */
1372 if (! add)
1373 {
1374 fprintf (stderr, _ ("Recordlines only work with option `%s'\n"),
1375 "-a");
1376 ret = 1;
1377 finish_command ();
1378 return;
1379 }
1380 if (NULL == name)
1381 {
1382 fprintf (stderr,
1383 _ ("Missing option `%s' for operation `%s'\n"),
1384 "-n",
1385 _ ("name"));
1386 ret = 1;
1387 finish_command ();
1388 return;
1389 }
1390 rd_count = 0;
1391 for (struct RecordSetEntry *e = recordset; NULL != e; e = e->next)
1392 rd_count++;
1394 rd_count = 0;
1395 for (struct RecordSetEntry *e = recordset; NULL != e; e = e->next)
1396 {
1397 rd[rd_count] = e->record;
1398 rd_count++;
1399 }
1401 &zone_pkey,
1402 name,
1403 rd_count,
1404 rd,
1405 &replace_cont,
1406 NULL);
1407 GNUNET_free (rd);
1408 return;
1409 }
1410 if (NULL != nickstring)
1411 {
1412 if (0 == strlen (nickstring))
1413 {
1414 fprintf (stderr, _ ("Invalid nick `%s'\n"), nickstring);
1415 ret = 1;
1416 finish_command ();
1417 return;
1418 }
1419 add = 1;
1424 is_public = 0;
1425 expirationstring = GNUNET_strdup ("never");
1427 nickstring = NULL;
1428 }
1429
1430 if (add)
1431 {
1432 if (NULL == ego_name)
1433 {
1434 fprintf (stderr,
1435 _ ("Missing option `%s' for operation `%s'\n"),
1436 "-z",
1437 _ ("add"));
1438 ret = 1;
1439 finish_command ();
1440 return;
1441 }
1442 if (NULL == name)
1443 {
1444 fprintf (stderr,
1445 _ ("Missing option `%s' for operation `%s'\n"),
1446 "-n",
1447 _ ("add"));
1448 ret = 1;
1449 finish_command ();
1450 return;
1451 }
1452 if (NULL == typestring)
1453 {
1454 fprintf (stderr,
1455 _ ("Missing option `%s' for operation `%s'\n"),
1456 "-t",
1457 _ ("add"));
1458 ret = 1;
1459 finish_command ();
1460 return;
1461 }
1463 if (UINT32_MAX == type)
1464 {
1465 fprintf (stderr, _ ("Unsupported type `%s'\n"), typestring);
1466 ret = 1;
1467 finish_command ();
1468 return;
1469 }
1474 {
1475 fprintf (stderr,
1476 _ (
1477 "For DNS record types `SRV', `TLSA', `SMIMEA' and `OPENPGPKEY'"));
1478 fprintf (stderr, ", please use a `BOX' record instead\n");
1479 ret = 1;
1480 finish_command ();
1481 return;
1482 }
1483 if (NULL == value)
1484 {
1485 fprintf (stderr,
1486 _ ("Missing option `%s' for operation `%s'\n"),
1487 "-V",
1488 _ ("add"));
1489 ret = 1;
1490 finish_command ();
1491 return;
1492 }
1493 if (GNUNET_OK !=
1495 {
1496 fprintf (stderr,
1497 _ ("Value `%s' invalid for record type `%s'\n"),
1498 value,
1499 typestring);
1500 ret = 1;
1501 finish_command ();
1502 return;
1503 }
1504 if (NULL == expirationstring)
1505 {
1506 fprintf (stderr,
1507 _ ("Missing option `%s' for operation `%s'\n"),
1508 "-e",
1509 _ ("add"));
1510 ret = 1;
1511 finish_command ();
1512 return;
1513 }
1515 {
1516 fprintf (stderr, _ ("Invalid time format `%s'\n"), expirationstring);
1517 ret = 1;
1518 finish_command ();
1519 return;
1520 }
1522 &zone_pkey,
1523 name,
1524 &add_error_cb,
1525 NULL,
1527 NULL);
1528 }
1529 if (del)
1530 {
1531 if (NULL == ego_name)
1532 {
1533 fprintf (stderr,
1534 _ ("Missing option `%s' for operation `%s'\n"),
1535 "-z",
1536 _ ("del"));
1537 ret = 1;
1538 finish_command ();
1539 return;
1540 }
1541 if (NULL == name)
1542 {
1543 fprintf (stderr,
1544 _ ("Missing option `%s' for operation `%s'\n"),
1545 "-n",
1546 _ ("del"));
1547 ret = 1;
1548 finish_command ();
1549 return;
1550 }
1552 &zone_pkey,
1553 name,
1555 NULL,
1556 &del_monitor,
1557 NULL,
1558 filter_flags);
1559 }
1560 if (purge_orphaned)
1561 {
1563 NULL,
1565 NULL,
1567 NULL,
1569 NULL,
1570 filter_flags);
1571
1572 }
1573 else if (purge_zone)
1574 {
1575 if (NULL == ego_name)
1576 {
1577 fprintf (stderr,
1578 _ ("Missing option `%s' for operation `%s'\n"),
1579 "-z",
1580 _ ("purge-zone"));
1581 ret = 1;
1582 finish_command ();
1583 return;
1584 }
1586 &zone_pkey,
1588 NULL,
1590 NULL,
1592 NULL,
1593 filter_flags);
1594
1595 }
1596 else if (list || list_orphaned)
1597 {
1598 if (NULL != name)
1599 {
1600 if (NULL == ego_name)
1601 {
1602 fprintf (stderr,
1603 _ ("Missing option `%s' for operation `%s'\n"),
1604 "-z",
1605 _ ("list"));
1606 ret = 1;
1607 finish_command ();
1608 return;
1609 }
1611 &zone_pkey,
1612 name,
1614 NULL,
1616 NULL);
1617 }
1618 else
1620 (NULL == ego_name) ?
1621 NULL : &zone_pkey,
1623 NULL,
1625 NULL,
1627 NULL,
1628 filter_flags);
1629 }
1630 if (NULL != reverse_pkey)
1631 {
1633
1634 if (NULL == ego_name)
1635 {
1636 fprintf (stderr,
1637 _ ("Missing option `%s' for operation `%s'\n"),
1638 "-z",
1639 _ ("reverse-pkey"));
1640 ret = 1;
1641 finish_command ();
1642 return;
1643 }
1644 if (GNUNET_OK !=
1646 &pubkey))
1647 {
1648 fprintf (stderr,
1649 _ ("Invalid public key for reverse lookup `%s'\n"),
1650 reverse_pkey);
1651 ret = 1;
1652 finish_command ();
1653 return;
1654 }
1656 &zone_pkey,
1657 &pubkey,
1659 NULL,
1661 NULL);
1662 }
1663 if (NULL != uri)
1664 {
1665 char sh[105];
1666 char sname[64];
1668 if (NULL == ego_name)
1669 {
1670 fprintf (stderr,
1671 _ ("Missing option `%s' for operation `%s'\n"),
1672 "-z",
1673 _ ("uri"));
1674 ret = 1;
1675 finish_command ();
1676 return;
1677 }
1678
1679 memset (sh, 0, 105);
1680 memset (sname, 0, 64);
1681
1682 if ((2 != (sscanf (uri, "gnunet://gns/%58s/%63s", sh, sname))) ||
1683 (GNUNET_OK !=
1685 {
1686 fprintf (stderr, _ ("Invalid URI `%s'\n"), uri);
1687 ret = 1;
1688 finish_command ();
1689 return;
1690 }
1691 if (NULL == expirationstring)
1692 {
1693 fprintf (stderr,
1694 _ ("Missing option `%s' for operation `%s'\n"),
1695 "-e",
1696 _ ("add"));
1697 ret = 1;
1698 finish_command ();
1699 return;
1700 }
1702 {
1703 fprintf (stderr, _ ("Invalid time format `%s'\n"), expirationstring);
1704 ret = 1;
1705 finish_command ();
1706 return;
1707 }
1708 memset (&rd, 0, sizeof(rd));
1709 rd.data = &pkey;
1711 rd.record_type = ntohl (pkey.type);
1713 if (GNUNET_YES == etime_is_rel)
1715 if (1 == is_shadow)
1717 if (1 == is_maintenance)
1720 &zone_pkey,
1721 sname,
1722 1,
1723 &rd,
1725 &add_qe_uri);
1726 }
1727 if (monitor)
1728 {
1730 (NULL != ego_name) ?
1731 &zone_pkey : NULL,
1732 GNUNET_YES,
1734 NULL,
1736 NULL,
1737 &sync_cb,
1738 NULL,
1739 filter_flags);
1740 }
1741}
static struct GNUNET_IDENTITY_Handle * sh
Handle to IDENTITY service.
static char * pkey
Public key of the zone to look in, in ASCII.
static struct GNUNET_CRYPTO_PublicKey pubkey
Public key of the zone to look in.
static void display_record_monitor(void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd, struct GNUNET_TIME_Absolute expiry)
Process a record that was stored in the namestore.
static int omit_private
Filter private records.
static void zone_iteration_finished(void *cls)
Function called when we are done with a zone iteration.
static void replace_cont(void *cls, enum GNUNET_ErrorCode ec)
static void sync_cb(void *cls)
Function called once we are in sync in monitor mode.
static void del_lookup_error_cb(void *cls)
Function called if lookup for deletion fails.
static void purge_zone_iterator(void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd, struct GNUNET_TIME_Absolute expiry)
static char * nickstring
Desired nick name.
static void display_record_lookup(void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd)
Process a record that was stored in the namestore.
static int monitor
Enables monitor mode.
static int include_maintenance
Do not filter maintenance records.
static void handle_reverse_lookup(void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone, const char *label, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd)
Function called with the result of our attempt to obtain a name for a given public key.
static void lookup_error_cb(void *cls)
Function called on errors while monitoring.
static void reverse_error_cb(void *cls)
Function called if we encountered an error in zone-to-name.
static int del
Desired action is to remove a record.
static void add_error_cb(void *cls)
Function called if lookup fails.
static int parse_expiration(const char *expirationstring, int *etime_is_rel, uint64_t *etime)
Parse expiration time.
static void display_record_iterator(void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd, struct GNUNET_TIME_Absolute expiry)
Process a record that was stored in the namestore.
static void purge_orphans_iterator(void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd, struct GNUNET_TIME_Absolute expiry)
static void monitor_error_cb(void *cls)
Function called on errors while monitoring.
static void del_monitor(void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone, const char *label, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd)
We were asked to delete something; this function is called with the existing records.
static int add
Desired action is to add a record.
static void zone_iteration_error_cb(void *cls)
Function called when we encountered an error in a zone iteration.
static void get_existing_record(void *cls, const struct GNUNET_CRYPTO_PrivateKey *zone_key, const char *rec_name, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd)
We're storing a record; this function is given the existing record so that we can merge the informati...
#define GNUNET_DNSPARSER_TYPE_OPENPGPKEY
#define GNUNET_DNSPARSER_TYPE_TLSA
#define GNUNET_DNSPARSER_TYPE_SRV
#define GNUNET_DNSPARSER_TYPE_SMIMEA
GNUNET_GNSRECORD_Filter
Filter for GNUNET_GNSRECORD_normalize_record_set().
@ GNUNET_GNSRECORD_FILTER_NONE
No filter flags set.
@ GNUNET_GNSRECORD_FILTER_INCLUDE_MAINTENANCE
Include maintenance records (TOMBSTONE etc).
@ GNUNET_GNSRECORD_FILTER_OMIT_PRIVATE
Filter private records.
ssize_t GNUNET_CRYPTO_public_key_get_length(const struct GNUNET_CRYPTO_PublicKey *key)
Get the compacted length of a GNUNET_CRYPTO_PublicKey.
Definition: crypto_pkey.c:68
enum GNUNET_GenericReturnValue GNUNET_CRYPTO_public_key_from_string(const char *str, struct GNUNET_CRYPTO_PublicKey *key)
Parses a (Base32) string representation of the public key.
Definition: crypto_pkey.c:571
#define GNUNET_new_array(n, type)
Allocate a size n array with structs or unions of the given type.
struct GNUNET_NAMESTORE_ZoneIterator * GNUNET_NAMESTORE_zone_iteration_start2(struct GNUNET_NAMESTORE_Handle *h, const struct GNUNET_CRYPTO_PrivateKey *zone, GNUNET_SCHEDULER_TaskCallback error_cb, void *error_cb_cls, GNUNET_NAMESTORE_RecordSetMonitor proc, void *proc_cls, GNUNET_SCHEDULER_TaskCallback finish_cb, void *finish_cb_cls, enum GNUNET_GNSRECORD_Filter filter)
Starts a new zone iteration (used to periodically PUT all of our records into our DHT).
struct GNUNET_NAMESTORE_QueueEntry * GNUNET_NAMESTORE_records_lookup(struct GNUNET_NAMESTORE_Handle *h, const struct GNUNET_CRYPTO_PrivateKey *pkey, const char *label, GNUNET_SCHEDULER_TaskCallback error_cb, void *error_cb_cls, GNUNET_NAMESTORE_RecordMonitor rm, void *rm_cls)
Lookup an item in the namestore.
struct GNUNET_NAMESTORE_QueueEntry * GNUNET_NAMESTORE_records_lookup2(struct GNUNET_NAMESTORE_Handle *h, const struct GNUNET_CRYPTO_PrivateKey *pkey, const char *label, GNUNET_SCHEDULER_TaskCallback error_cb, void *error_cb_cls, GNUNET_NAMESTORE_RecordMonitor rm, void *rm_cls, enum GNUNET_GNSRECORD_Filter filter)
Lookup an item in the namestore with GNSRECORD filter.
struct GNUNET_NAMESTORE_QueueEntry * GNUNET_NAMESTORE_zone_to_name(struct GNUNET_NAMESTORE_Handle *h, const struct GNUNET_CRYPTO_PrivateKey *zone, const struct GNUNET_CRYPTO_PublicKey *value_zone, GNUNET_SCHEDULER_TaskCallback error_cb, void *error_cb_cls, GNUNET_NAMESTORE_RecordMonitor proc, void *proc_cls)
Look for an existing PKEY delegation record for a given public key.
struct GNUNET_NAMESTORE_ZoneMonitor * GNUNET_NAMESTORE_zone_monitor_start2(const struct GNUNET_CONFIGURATION_Handle *cfg, const struct GNUNET_CRYPTO_PrivateKey *zone, int iterate_first, GNUNET_SCHEDULER_TaskCallback error_cb, void *error_cb_cls, GNUNET_NAMESTORE_RecordSetMonitor monitor, void *monitor_cls, GNUNET_SCHEDULER_TaskCallback sync_cb, void *sync_cb_cls, enum GNUNET_GNSRECORD_Filter filter)
Begin monitoring a zone for changes.
An identity key as per LSD0001.

References _, add, add_continuation(), add_error_cb(), add_qe, add_qe_uri, cfg, data, GNUNET_GNSRECORD_Data::data, data_size, GNUNET_GNSRECORD_Data::data_size, del, del_lookup_error_cb(), del_monitor(), del_qe, display_record_iterator(), display_record_lookup(), display_record_monitor(), ego_name, etime, etime_is_rel, GNUNET_GNSRECORD_Data::expiration_time, expirationstring, finish_command(), GNUNET_GNSRECORD_Data::flags, get_existing_record(), get_qe, GNUNET_CRYPTO_public_key_from_string(), GNUNET_CRYPTO_public_key_get_length(), GNUNET_DNSPARSER_TYPE_OPENPGPKEY, GNUNET_DNSPARSER_TYPE_SMIMEA, GNUNET_DNSPARSER_TYPE_SRV, GNUNET_DNSPARSER_TYPE_TLSA, GNUNET_free, GNUNET_GNS_EMPTY_LABEL_AT, GNUNET_GNSRECORD_FILTER_INCLUDE_MAINTENANCE, GNUNET_GNSRECORD_FILTER_NONE, GNUNET_GNSRECORD_FILTER_OMIT_PRIVATE, GNUNET_GNSRECORD_number_to_typename(), GNUNET_GNSRECORD_RF_MAINTENANCE, GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION, GNUNET_GNSRECORD_RF_SHADOW, GNUNET_GNSRECORD_string_to_value(), GNUNET_GNSRECORD_TYPE_NICK, GNUNET_GNSRECORD_typename_to_number(), GNUNET_NAMESTORE_record_set_store(), GNUNET_NAMESTORE_records_lookup(), GNUNET_NAMESTORE_records_lookup2(), GNUNET_NAMESTORE_zone_iteration_start2(), GNUNET_NAMESTORE_zone_monitor_start2(), GNUNET_NAMESTORE_zone_to_name(), GNUNET_new_array, GNUNET_OK, GNUNET_strdup, GNUNET_YES, handle_reverse_lookup(), include_maintenance, is_maintenance, is_public, is_shadow, list, list_it, list_orphaned, lookup_error_cb(), monitor, monitor_error_cb(), name, RecordSetEntry::next, nickstring, ns, omit_private, parse_expiration(), pkey, pubkey, purge_orphaned, purge_orphans_iterator(), purge_zone, purge_zone_iterator(), rd, rd_count, GNUNET_GNSRECORD_Data::record_type, recordset, replace_cont(), ret, reverse_error_cb(), reverse_pkey, reverse_qe, set_qe, sh, sync_cb(), type, typestring, uri, value, zm, zone_iteration_error_cb(), zone_iteration_finished(), and zone_pkey.

Referenced by id_connect_cb(), and process_command_stdin().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_identity_for_string()

static int get_identity_for_string ( const char *  str,
struct GNUNET_CRYPTO_PrivateKey zk 
)
static

FIXME: Check for zTLD?

Definition at line 1749 of file gnunet-namestore.c.

1751{
1752 const struct GNUNET_CRYPTO_PrivateKey *privkey;
1754 struct GNUNET_CRYPTO_PublicKey ego_pubkey;
1755 struct EgoEntry *ego_entry;
1756
1758 &pubkey))
1759 {
1760 for (ego_entry = ego_head;
1761 NULL != ego_entry; ego_entry = ego_entry->next)
1762 {
1763 privkey = GNUNET_IDENTITY_ego_get_private_key (ego_entry->ego);
1764 GNUNET_IDENTITY_ego_get_public_key (ego_entry->ego, &ego_pubkey);
1765 if (0 == memcmp (&ego_pubkey, &pubkey, sizeof (pubkey)))
1766 {
1767 *zk = *privkey;
1768 return GNUNET_OK;
1769 }
1770 }
1771 }
1772 else
1773 {
1774 for (ego_entry = ego_head; NULL != ego_entry; ego_entry = ego_entry->next)
1775 {
1777 if (0 != strcmp (str, ego_entry->identifier))
1778 continue;
1779 *zk = *GNUNET_IDENTITY_ego_get_private_key (ego_entry->ego);
1780 return GNUNET_OK;
1781 }
1782 }
1783 return GNUNET_NO;
1784}
void GNUNET_IDENTITY_ego_get_public_key(struct GNUNET_IDENTITY_Ego *ego, struct GNUNET_CRYPTO_PublicKey *pk)
Get the identifier (public key) of an ego.
Definition: identity_api.c:529

References EgoEntry::ego, ego_head, GNUNET_CRYPTO_public_key_from_string(), GNUNET_IDENTITY_ego_get_private_key(), GNUNET_IDENTITY_ego_get_public_key(), GNUNET_NO, GNUNET_OK, EgoEntry::identifier, EgoEntry::next, and pubkey.

Referenced by process_command_stdin().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ id_connect_cb()

static void id_connect_cb ( void *  cls,
struct GNUNET_IDENTITY_Ego ego,
void **  ctx,
const char *  name 
)
static

Function called with ALL of the egos known to the identity service, used on startup if the user did not specify a zone on the command-line.

Once the iteration is done (ego is NULL), we ask for the default ego for "namestore".

Parameters
clsa struct GNUNET_CONFIGURATION_Handle
egoan ego, NULL for end of iteration
ctxNULL
namename associated with ego

Definition at line 1888 of file gnunet-namestore.c.

1892{
1894 struct EgoEntry *ego_entry;
1895
1896 (void) ctx;
1897 (void) name;
1898 if ((NULL != name) && (NULL != ego))
1899 {
1900 ego_entry = GNUNET_new (struct EgoEntry);
1902 ego_entry->ego = ego;
1903 ego_entry->identifier = GNUNET_strdup (name);
1905 ego_tail,
1906 ego_entry);
1907 if ((NULL != ego_name) &&
1908 (0 == strcmp (name, ego_name)))
1910 return;
1911 }
1912 if (NULL != ego)
1913 return;
1914 if (read_from_stdin)
1915 {
1917 return;
1918 }
1920}
static struct GNUNET_FS_Handle * ctx
struct GNUNET_CRYPTO_PrivateKey pk
Private key from command line option, or NULL.
static struct EgoEntry * ego_tail
Ego list.
#define GNUNET_CONTAINER_DLL_insert_tail(head, tail, element)
Insert an element at the tail of a DLL.

References cfg, ctx, EgoEntry::ego, ego_head, ego_name, ego_tail, GNUNET_CONTAINER_DLL_insert_tail, GNUNET_IDENTITY_ego_get_private_key(), GNUNET_IDENTITY_ego_get_public_key(), GNUNET_new, GNUNET_strdup, EgoEntry::identifier, name, pk, process_command_stdin(), read_from_stdin, run_with_zone_pkey(), and zone_pkey.

Referenced by run().

Here is the call graph for this function:
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.

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

Definition at line 1932 of file gnunet-namestore.c.

1936{
1937 (void) cls;
1938 (void) args;
1939 (void) cfgfile;
1940 cfg = _cfg;
1941 if (NULL != args[0])
1942 GNUNET_log (
1944 _ ("Superfluous command line arguments (starting with `%s') ignored\n"),
1945 args[0]);
1946
1949 if (NULL == ns)
1950 {
1951 fprintf (stderr, _ ("Failed to connect to namestore\n"));
1953 return;
1954 }
1956 if (NULL == idh)
1957 {
1958 ret = -1;
1959 fprintf (stderr, _ ("Cannot connect to identity service\n"));
1961 }
1962}
static void do_shutdown(void *cls)
Task run on shutdown.
static void id_connect_cb(void *cls, struct GNUNET_IDENTITY_Ego *ego, void **ctx, const char *name)
Function called with ALL of the egos known to the identity service, used on startup if the user did n...
struct GNUNET_IDENTITY_Handle * GNUNET_IDENTITY_connect(const struct GNUNET_CONFIGURATION_Handle *cfg, GNUNET_IDENTITY_Callback cb, void *cb_cls)
Connect to the identity service.
Definition: identity_api.c:487
struct GNUNET_NAMESTORE_Handle * GNUNET_NAMESTORE_connect(const struct GNUNET_CONFIGURATION_Handle *cfg)
Connect to the namestore service.
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,...
Definition: scheduler.c:1334

References _, consensus-simulation::args, cfg, do_shutdown(), GNUNET_ERROR_TYPE_WARNING, GNUNET_IDENTITY_connect(), GNUNET_log, GNUNET_NAMESTORE_connect(), GNUNET_SCHEDULER_add_shutdown(), GNUNET_SCHEDULER_shutdown(), id_connect_cb(), idh, ns, and ret.

Referenced by main().

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 for gnunet-namestore.

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

Definition at line 1973 of file gnunet-namestore.c.

1974{
1975 int lret;
1977 { GNUNET_GETOPT_option_flag ('a', "add", gettext_noop ("add record"), &add),
1979 "delete",
1980 gettext_noop ("delete record"),
1981 &del),
1983 "display",
1984 gettext_noop ("display records"),
1985 &list),
1987 "from-stdin",
1988 gettext_noop ("read commands from stdin"),
1991 'e',
1992 "expiration",
1993 "TIME",
1994 gettext_noop (
1995 "expiration time for record to use (for adding only), \"never\" is possible"),
1998 "nick",
1999 "NICKNAME",
2000 gettext_noop (
2001 "set the desired nick name for the zone"),
2002 &nickstring),
2004 "monitor",
2005 gettext_noop (
2006 "monitor changes in the namestore"),
2007 &monitor),
2009 "name",
2010 "NAME",
2011 gettext_noop (
2012 "name of the record to add/delete/display"),
2013 &name),
2015 "recordline",
2016 gettext_noop ("Output in recordline format"),
2019 "zone-to-name",
2020 "KEY",
2021 gettext_noop (
2022 "determine our name for the given KEY"),
2023 &reverse_pkey),
2025 "type",
2026 "TYPE",
2027 gettext_noop (
2028 "type of the record to add/delete/display"),
2029 &typestring),
2031 "uri",
2032 "URI",
2033 gettext_noop ("URI to import into our zone"),
2034 &uri),
2036 "value",
2037 "VALUE",
2038 gettext_noop (
2039 "value of the record to add/delete"),
2040 &value),
2042 "public",
2043 gettext_noop ("create or list public record"),
2044 &is_public),
2046 "omit-private",
2047 gettext_noop ("omit private records"),
2048 &omit_private),
2050 "include-maintenance",
2051 gettext_noop (
2052 "do not filter maintenance records"),
2055 "purge-orphans",
2056 gettext_noop (
2057 "purge namestore of all orphans"),
2060 "list-orphans",
2061 gettext_noop (
2062 "show private key for orphaned records for recovery using `gnunet-identity -C -P <key>'. Use in combination with --display"),
2063 &list_orphaned),
2065 "purge-zone-records",
2066 gettext_noop (
2067 "delete all records in specified zone"),
2068 &purge_zone),
2070 's',
2071 "shadow",
2072 gettext_noop (
2073 "create shadow record (only valid if all other records of the same type have expired)"),
2074 &is_shadow),
2076 'M',
2077 "maintenance",
2078 gettext_noop (
2079 "create maintenance record (e.g TOMBSTONEs)"),
2082 "zone",
2083 "EGO",
2084 gettext_noop (
2085 "name of the ego controlling the zone"),
2086 &ego_name),
2088
2089
2090 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
2091 return 2;
2092
2093 is_public = -1;
2094 is_shadow = -1;
2095 is_maintenance = -1;
2096 GNUNET_log_setup ("gnunet-namestore", "WARNING", NULL);
2097 if (GNUNET_OK !=
2098 (lret = GNUNET_PROGRAM_run (argc,
2099 argv,
2100 "gnunet-namestore",
2101 _ ("GNUnet zone manipulation tool"),
2102 options,
2103 &run,
2104 NULL)))
2105 {
2106 GNUNET_free_nz ((void *) argv);
2107 // FIXME
2108 // GNUNET_CRYPTO_ecdsa_key_clear (&zone_pkey);
2109 return lret;
2110 }
2111 GNUNET_free_nz ((void *) argv);
2112 // FIXME
2113 // GNUNET_CRYPTO_ecdsa_key_clear (&zone_pkey);
2114 return ret;
2115}
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_OPTION_END
Definition: 002.c:13
struct GNUNET_GETOPT_CommandLineOption options[]
Definition: 002.c:5
#define gettext_noop(String)
Definition: gettext.h:70
static void run(void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *_cfg)
Main function that will be run.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_flag(char shortName, const char *name, const char *description, int *val)
Allow user to specify a flag (which internally means setting an integer to 1/GNUNET_YES/GNUNET_OK.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_option_string(char shortName, const char *name, const char *argumentHelp, const char *description, char **str)
Allow user to specify a string.
enum GNUNET_GenericReturnValue GNUNET_log_setup(const char *comp, const char *loglevel, const char *logfile)
Setup logging.
#define GNUNET_free_nz(ptr)
Wrapper around free.
enum GNUNET_GenericReturnValue 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,...
Definition: program.c:400
enum GNUNET_GenericReturnValue GNUNET_STRINGS_get_utf8_args(int argc, char *const *argv, int *u8argc, char *const **u8argv)
Returns utf-8 encoded arguments.
Definition: strings.c:1230
Definition of a command line option.

References _, add, del, ego_name, expirationstring, gettext_noop, GNUNET_free_nz, GNUNET_GETOPT_OPTION_END, GNUNET_GETOPT_option_flag(), GNUNET_GETOPT_option_string(), GNUNET_log_setup(), GNUNET_OK, GNUNET_PROGRAM_run(), GNUNET_STRINGS_get_utf8_args(), include_maintenance, is_maintenance, is_public, is_shadow, list, list_orphaned, monitor, name, nickstring, omit_private, options, output_recordline, purge_orphaned, purge_zone, read_from_stdin, ret, reverse_pkey, run(), typestring, uri, and value.

Here is the call graph for this function:

Variable Documentation

◆ ns

struct GNUNET_NAMESTORE_Handle* ns
static

Handle to the namestore.

Definition at line 114 of file gnunet-namestore.c.

Referenced by del_monitor(), do_shutdown(), get_existing_record(), purge_next_record(), run(), and run_with_zone_pkey().

◆ zone_pkey

struct GNUNET_CRYPTO_PrivateKey zone_pkey
static

Private key for the our zone.

Definition at line 119 of file gnunet-namestore.c.

Referenced by del_monitor(), get_existing_record(), id_connect_cb(), process_command_stdin(), reset_handles(), and run_with_zone_pkey().

◆ idh

struct GNUNET_IDENTITY_Handle* idh
static

Identity service handle.

Definition at line 124 of file gnunet-namestore.c.

Referenced by do_shutdown(), and run().

◆ ego_name

char* ego_name
static

Name of the ego controlling the zone.

Definition at line 129 of file gnunet-namestore.c.

Referenced by handle_reverse_lookup(), id_connect_cb(), main(), reset_handles(), and run_with_zone_pkey().

◆ add_qe_uri

struct GNUNET_NAMESTORE_QueueEntry* add_qe_uri
static

Queue entry for the 'add-uri' operation.

Definition at line 134 of file gnunet-namestore.c.

Referenced by reset_handles(), and run_with_zone_pkey().

◆ add_qe

struct GNUNET_NAMESTORE_QueueEntry* add_qe
static

Queue entry for the 'add' operation.

Definition at line 139 of file gnunet-namestore.c.

Referenced by add_error_cb(), get_existing_record(), reset_handles(), and run_with_zone_pkey().

◆ get_qe

struct GNUNET_NAMESTORE_QueueEntry* get_qe
static

Queue entry for the 'lookup' operation.

Definition at line 144 of file gnunet-namestore.c.

Referenced by display_record_lookup(), lookup_error_cb(), reset_handles(), and run_with_zone_pkey().

◆ reverse_qe

struct GNUNET_NAMESTORE_QueueEntry* reverse_qe
static

Queue entry for the 'reverse lookup' operation (in combination with a name).

Definition at line 149 of file gnunet-namestore.c.

Referenced by handle_reverse_lookup(), reset_handles(), reverse_error_cb(), and run_with_zone_pkey().

◆ marked_head

struct MarkedRecord* marked_head
static

Marked record list.

Definition at line 154 of file gnunet-namestore.c.

Referenced by collect_orphans(), collect_zone_records_to_purge(), purge_next_record(), and reset_handles().

◆ marked_tail

struct MarkedRecord* marked_tail
static

Marked record list.

Definition at line 159 of file gnunet-namestore.c.

Referenced by collect_orphans(), collect_zone_records_to_purge(), and purge_next_record().

◆ cfg

const struct GNUNET_CONFIGURATION_Handle* cfg

Configuration handle.

Handle to our configuration.

Definition at line 164 of file gnunet-namestore.c.

Referenced by id_connect_cb(), process_command_stdin(), run(), and run_with_zone_pkey().

◆ ego_head

struct EgoEntry* ego_head
static

◆ ego_tail

struct EgoEntry* ego_tail
static

Ego list.

Definition at line 174 of file gnunet-namestore.c.

Referenced by id_connect_cb().

◆ list_it

◆ read_from_stdin

int read_from_stdin
static

Run in read from stdin mode.

Definition at line 184 of file gnunet-namestore.c.

Referenced by finish_command(), id_connect_cb(), and main().

◆ list

int list
static

Desired action is to list records.

Definition at line 189 of file gnunet-namestore.c.

Referenced by main(), reset_handles(), and run_with_zone_pkey().

◆ add

◆ del

int del
static

Desired action is to remove a record.

Definition at line 199 of file gnunet-namestore.c.

Referenced by forward_resolution(), GNUNET_ABD_delegate_issue(), main(), run_with_zone_pkey(), and send_lookup_response().

◆ is_public

int is_public
static

Is record public (opposite of GNUNET_GNSRECORD_RF_PRIVATE)

Definition at line 204 of file gnunet-namestore.c.

Referenced by get_existing_record(), main(), reset_handles(), and run_with_zone_pkey().

◆ is_shadow

int is_shadow
static

Is record a shadow record (GNUNET_GNSRECORD_RF_SHADOW)

Definition at line 209 of file gnunet-namestore.c.

Referenced by get_existing_record(), main(), reset_handles(), and run_with_zone_pkey().

◆ is_maintenance

int is_maintenance
static

Is record a maintenance record (GNUNET_GNSRECORD_RF_MAINTENANCE)

Definition at line 214 of file gnunet-namestore.c.

Referenced by get_existing_record(), main(), reset_handles(), and run_with_zone_pkey().

◆ omit_private

int omit_private
static

Filter private records.

Definition at line 219 of file gnunet-namestore.c.

Referenced by main(), and run_with_zone_pkey().

◆ output_recordline

int output_recordline
static

Output in recordline format.

Definition at line 224 of file gnunet-namestore.c.

Referenced by display_record(), and main().

◆ purge_zone

int purge_zone
static

Purge zone contents.

Definition at line 230 of file gnunet-namestore.c.

Referenced by main(), reset_handles(), run_with_zone_pkey(), and zone_iteration_finished().

◆ include_maintenance

int include_maintenance
static

Do not filter maintenance records.

Definition at line 235 of file gnunet-namestore.c.

Referenced by main(), and run_with_zone_pkey().

◆ purge_orphaned

int purge_orphaned
static

Purge orphaned records.

Definition at line 240 of file gnunet-namestore.c.

Referenced by main(), run_with_zone_pkey(), and zone_iteration_finished().

◆ list_orphaned

int list_orphaned
static

List records and zone keys of orphaned records.

Definition at line 245 of file gnunet-namestore.c.

Referenced by display_record(), main(), and run_with_zone_pkey().

◆ del_qe

struct GNUNET_NAMESTORE_QueueEntry* del_qe
static

◆ set_qe

struct GNUNET_NAMESTORE_QueueEntry* set_qe
static

Queue entry for the 'set/replace' operation.

Definition at line 255 of file gnunet-namestore.c.

Referenced by replace_cont(), reset_handles(), and run_with_zone_pkey().

◆ ns_qe

struct GNUNET_NAMESTORE_QueueEntry* ns_qe
static

Queue entry for begin/commit.

Definition at line 260 of file gnunet-namestore.c.

Referenced by do_shutdown().

◆ name

char* name
static

Name of the records to add/list/remove.

Definition at line 265 of file gnunet-namestore.c.

Referenced by del_monitor(), display_record(), get_existing_record(), id_connect_cb(), main(), process_command_stdin(), reset_handles(), and run_with_zone_pkey().

◆ value

char* value
static

Value of the record to add/remove.

Definition at line 270 of file gnunet-namestore.c.

Referenced by add_get_request_to_pending(), add_known_to_bloom(), add_section_contents(), add_sections(), add_setter_action(), attr_in_claims_request(), auto_conf_iter(), bandwidth_stats_iterator(), bind_loose_channel(), build_result_set(), bulk_tx_start(), call_iterator(), cancel_pending_request(), cfg_copy_iterator(), change_peer_respect(), channel_destroy_iterator(), check_connection_quality(), check_known_address(), check_known_challenge(), check_validation_request_pending(), check_vectors(), clean_local_client(), clean_request(), cleanup_channel(), cleanup_destination(), cleanup_hashmap(), cleanup_url_map(), clear_linked_hash(), client_release_ports(), close_files_iter(), collector(), compare_entries(), compute_service_response(), compute_square_sum_mpi_elements(), con_val_iter(), consume_cont(), cookie_identity_interpretation(), copy_element_cb(), copy_entry(), create_randomized_element_iterator(), create_response(), debug_channel(), decrementBit(), del_monitor(), delete_linked_hash(), delete_value(), destroy_active_client_request(), destroy_channel_cb(), destroy_elements_iterator(), destroy_it(), destroy_iterator_cb(), destroy_key_to_element_iter(), destroy_paths_now(), destroy_port_cb(), destroy_remaining_channels(), destroy_tunnels_now(), determinate_avg_element_size_iterator(), determinate_done_message_iterator(), disconnect_and_free_peer_entry(), dns_string_to_value(), dns_value_to_string(), do_flood(), do_notify(), do_restart_typemap_message(), dv_neighbour_selection(), dv_neighbour_transmission(), escape_name(), execute_get(), expire_blocks(), filter_all(), filtered_map_initialization(), find_advertisable_hello(), find_by_message_uuid(), find_by_unique_id(), find_closest(), find_linked_hash(), find_result_set(), find_store_peer(), find_trees(), flush_respect(), format_help(), forward_reply(), free_ack_cummulator_cb(), free_backtalker_cb(), free_barrier_node_cb(), free_barriers_cb(), free_dv_routes_cb(), free_ego(), free_element_cb(), free_entry(), free_item(), free_iterate(), free_namespaces_cb(), free_neighbour_cb(), free_nodes_cb(), free_peer(), free_pending_ack_cb(), free_reassembly_cb(), free_request_it(), free_result(), free_service_record(), free_sug_handle(), free_validation_state_cb(), free_value(), free_values_iter(), free_waiting_entry(), full_sync_plausibility_check(), get_all_peers_iterator(), get_all_tunnels_iterator(), get_cb(), get_iterator(), get_lt_delete_it(), get_peer_delete_it(), get_queue_delete_it(), get_rand_peer_iterator(), get_receiver_delete_it(), get_result_present(), get_sender_delete_it(), get_url_parameter_copy(), getopt_set_keywords(), getopt_set_metadata(), GNUNET_CONFIGURATION_append_value_filename(), GNUNET_CONFIGURATION_config_tool_run(), GNUNET_CONFIGURATION_deserialize(), GNUNET_CONFIGURATION_get_value_choice(), GNUNET_CONFIGURATION_get_value_filename(), GNUNET_CONFIGURATION_get_value_string(), GNUNET_CONFIGURATION_remove_value_filename(), GNUNET_CONFIGURATION_set_value_string(), GNUNET_CONTAINER_multihashmap32_contains_value(), GNUNET_CONTAINER_multihashmap32_iterator_next(), GNUNET_CONTAINER_multihashmap32_put(), GNUNET_CONTAINER_multihashmap32_remove(), GNUNET_CONTAINER_multihashmap_contains_value(), GNUNET_CONTAINER_multihashmap_iterator_next(), GNUNET_CONTAINER_multihashmap_put(), GNUNET_CONTAINER_multihashmap_remove(), GNUNET_CONTAINER_multipeermap_contains_value(), GNUNET_CONTAINER_multipeermap_iterator_next(), GNUNET_CONTAINER_multipeermap_put(), GNUNET_CONTAINER_multipeermap_remove(), GNUNET_CONTAINER_multishortmap_contains_value(), GNUNET_CONTAINER_multishortmap_iterator_next(), GNUNET_CONTAINER_multishortmap_put(), GNUNET_CONTAINER_multishortmap_remove(), GNUNET_CONTAINER_multiuuidmap_contains_value(), GNUNET_CONTAINER_multiuuidmap_iterator_next(), GNUNET_CONTAINER_multiuuidmap_put(), GNUNET_CONTAINER_multiuuidmap_remove(), GNUNET_NETWORK_socket_disable_corking(), GNUNET_PEERSTORE_store(), GNUNET_STATISTICS_set(), GNUNET_TESTING_get_topo_from_string(), GNUNET_TESTING_set_label(), GSF_cadet_release_clients(), handle_ack(), handle_ack_by_sender(), handle_alice_client_message(), handle_bob_client_message(), handle_set(), header_iterator(), heap_plugin_get_expiration(), heap_plugin_get_replication(), heap_plugin_get_zero_anonymity(), heap_plugin_put(), host_processor(), increment_value(), incrementBit(), init_key_to_element_iterator(), initialize_map_unfiltered(), inspect_attrs(), iterate_channels_cb(), iterate_close_room(), iterate_copy_history(), iterate_destroy_contacts(), iterate_destroy_entries(), iterate_destroy_link(), iterate_destroy_links(), iterate_destroy_members(), iterate_destroy_message(), iterate_destroy_messages(), iterate_destroy_operations(), iterate_destroy_peers(), iterate_destroy_room(), iterate_destroy_rooms(), iterate_destroy_session(), iterate_destroy_tunnels(), iterate_find_member(), iterate_find_room(), iterate_free_values(), iterate_load_next_member_sessions(), iterate_load_next_session(), iterate_local_members(), iterate_member_sessions_it(), iterate_message_control(), iterate_next_member_ids(), iterate_reachables(), iterate_reset_room(), iterate_save_entries(), iterate_save_links(), iterate_save_member_session_history_hentries(), iterate_save_members(), iterate_save_messages(), iterate_save_operations(), iterate_save_peers(), iterate_save_session(), iterate_search_session(), iterate_send_room_message(), iterate_store_members_it(), iterate_sync_member_contacts(), iterate_sync_session_contact(), iterate_zones(), iterator_bf_create(), iterator_bf_reduce(), jwt_parse_attributes(), link_room_message(), log_namespaces(), log_nodes(), lookup_queue_it(), main(), migrate_and_drop_keywords(), migrate_and_drop_metadata(), move_to_pending(), move_to_queue(), mpi_to_sexp(), neighbour_delete(), nibble_to_regex(), node_connections(), notify_client_about_session(), notify_client_connect_info(), notify_client_queues(), notify_tunnel_up_cb(), num_to_regex(), op_get_element_iterator(), open_port_cb(), parse_jwt(), parse_record(), parse_record_data(), peermap_clear_iterator(), PEERSTORE_create_record_mq_envelope(), peerstore_sqlite_store_record(), pending_reversals_delete_it(), prepare_ibf_iterator(), print_option(), print_version(), printer(), printer_watch(), process(), process_client_result(), process_reply(), process_result_with_request(), process_stat(), process_stat_in(), process_stats(), process_update_node(), put_cb(), reachability_iterator(), read_service_conf(), regex_cancel_dht_get(), regex_free_result(), regex_result_iterator(), register_notify(), remove_all(), remove_by_unique_id(), remove_iterator(), reschedule_hellos(), reset_handles(), resume_communicators(), rsa_sign_mpi(), run_with_zone_pkey(), schedule_current_round(), search_result_free(), search_result_freeze_probes(), search_result_resume_probes(), search_result_stop(), search_result_suspend(), send_full_element_iterator(), send_missing_full_elements_iter(), send_offers_iterator(), send_simple_cb(), set_absolute_time(), set_attributes_from_idtoken(), set_base32(), set_cont(), set_filename(), set_json(), set_one(), set_relative_time(), set_string(), set_timestamp(), set_timetravel_time(), set_uint(), set_uint16(), set_ulong(), set_value(), signal_result_resume(), socket_set_nodelay(), stats_iterator(), stop_peer_request(), store_and_free_entries(), store_peer_presistently_iterator(), stun_attr2str(), stun_msg2str(), test_exist_cb(), test_result_present(), ticket_collect(), tld_iter(), transmit_client_response(), transmit_suggestion(), try_add_peers(), try_combine_recent(), update_config(), update_flood_times(), update_iterator(), update_sre_result_maps(), url_iterator(), valid_peer_iterator(), verify_store_peer(), write_item(), and zone_to_name().

◆ uri

char* uri
static

URI to import.

Definition at line 275 of file gnunet-namestore.c.

Referenced by main(), reset_handles(), and run_with_zone_pkey().

◆ reverse_pkey

char* reverse_pkey
static

Reverse lookup to perform.

Definition at line 280 of file gnunet-namestore.c.

Referenced by handle_reverse_lookup(), main(), reverse_error_cb(), and run_with_zone_pkey().

◆ typestring

char* typestring
static

Type of the record to add/remove, NULL to remove all.

Definition at line 285 of file gnunet-namestore.c.

Referenced by del_monitor(), display_record(), display_records_from_block(), main(), reset_handles(), and run_with_zone_pkey().

◆ expirationstring

char* expirationstring
static

Desired expiration time.

Definition at line 290 of file gnunet-namestore.c.

Referenced by main(), parse_expiration(), reset_handles(), and run_with_zone_pkey().

◆ nickstring

char* nickstring
static

Desired nick name.

Definition at line 295 of file gnunet-namestore.c.

Referenced by main(), and run_with_zone_pkey().

◆ ret

◆ type

uint32_t type
static

Type string converted to DNS type value.

Definition at line 305 of file gnunet-namestore.c.

Referenced by abd_number_to_typename(), abd_string_to_value(), abd_value_to_string(), add_record(), add_setter_action(), add_to_meta_counter(), attr_collect(), auto_config_cb(), basic_number_to_typename(), basic_string_to_value(), basic_value_to_string(), block_plugin_dht_check_block(), block_plugin_dht_check_query(), block_plugin_dht_check_reply(), block_plugin_dht_create_group(), block_plugin_dht_get_key(), block_plugin_dns_check_block(), block_plugin_dns_check_query(), block_plugin_dns_check_reply(), block_plugin_dns_create_group(), block_plugin_dns_get_key(), block_plugin_fs_check_block(), block_plugin_fs_check_query(), block_plugin_fs_check_reply(), block_plugin_fs_create_group(), block_plugin_fs_get_key(), block_plugin_gns_check_block(), block_plugin_gns_check_query(), block_plugin_gns_check_reply(), block_plugin_gns_create_group(), block_plugin_gns_get_key(), block_plugin_regex_check_block(), block_plugin_regex_check_query(), block_plugin_regex_check_reply(), block_plugin_regex_create_group(), block_plugin_regex_get_key(), block_plugin_revocation_check_block(), block_plugin_revocation_check_query(), block_plugin_revocation_check_reply(), block_plugin_revocation_get_key(), block_plugin_seti_test_check_block(), block_plugin_seti_test_check_query(), block_plugin_seti_test_check_reply(), block_plugin_seti_test_get_key(), block_plugin_setu_test_check_block(), block_plugin_setu_test_check_query(), block_plugin_setu_test_check_reply(), block_plugin_setu_test_get_key(), block_plugin_template_create_group(), block_plugin_test_check_block(), block_plugin_test_check_query(), block_plugin_test_check_reply(), block_plugin_test_create_group(), block_plugin_test_get_key(), block_proc(), cadet_reply_proc(), callback_store_operation(), change_service(), check_key_type(), check_p2p_put(), child_completed_callback(), client_response_handler(), conversation_number_to_typename(), conversation_string_to_value(), conversation_value_to_string(), cred_collect(), del_monitor(), display_record(), dns_number_to_typename(), dns_string_to_value(), dns_value_to_string(), gnunet-chk::encode_data_to_string(), execute_get(), expired_processor(), find_full_data(), find_plugin(), for_matching_monitors(), gather_uri_data(), GDS_CLIENTS_process_get(), GDS_DATACACHE_get_closest(), GDS_DATACACHE_handle_get(), GDS_NEIGHBOURS_handle_get(), GDS_ROUTING_add(), get_app(), get_audiobin(), get_callback(), get_cb(), get_coder(), get_existing_record(), get_resp_callback(), get_result_iterator(), get_type(), get_typed(), getopt_set_metadata(), gns_is_critical(), gns_number_to_typename(), gns_string_to_value(), gns_value_to_string(), GNUNET_BLOCK_check_block(), GNUNET_BLOCK_check_query(), GNUNET_BLOCK_check_reply(), GNUNET_BLOCK_get_key(), GNUNET_BLOCK_GROUP_bf_create(), GNUNET_BLOCK_group_create(), GNUNET_CADET_drop_message(), GNUNET_CRYPTO_signature_get_raw_length_by_type(), GNUNET_DATACACHE_get(), GNUNET_DATACACHE_get_closest(), GNUNET_DATASTORE_get_key(), GNUNET_DATASTORE_get_zero_anonymity(), GNUNET_DATASTORE_put(), GNUNET_DHT_get_start(), GNUNET_DHT_monitor_start(), GNUNET_DHT_put(), GNUNET_FS_meta_data_delete(), GNUNET_FS_meta_data_get_by_type(), GNUNET_FS_meta_data_get_first_by_types(), GNUNET_FS_meta_data_insert(), GNUNET_GNS_lookup(), GNUNET_GNS_lookup_limited(), GNUNET_GNS_lookup_with_tld(), GNUNET_GNSRECORD_data_from_identity(), GNUNET_GNSRECORD_identity_from_data(), GNUNET_GNSRECORD_is_critical(), GNUNET_GNSRECORD_is_zonekey_type(), GNUNET_GNSRECORD_number_to_typename(), GNUNET_GNSRECORD_string_to_value(), GNUNET_GNSRECORD_value_to_string(), GNUNET_MQ_msg_(), GNUNET_MQ_msg_nested_mh_(), GNUNET_MQ_preference_to_string(), GNUNET_NETWORK_socket_create(), GNUNET_NT_scanner_get_type(), GNUNET_OS_process_status(), GNUNET_OS_process_wait_status(), GNUNET_PQ_exec_sql(), GNUNET_RECLAIM_attribute_list_add(), GNUNET_RECLAIM_attribute_new(), GNUNET_RECLAIM_attribute_number_to_typename(), GNUNET_RECLAIM_attribute_string_to_value(), GNUNET_RECLAIM_attribute_value_to_string(), GNUNET_RECLAIM_credential_new(), GNUNET_RECLAIM_credential_number_to_typename(), GNUNET_RECLAIM_credential_string_to_value(), GNUNET_RECLAIM_credential_value_to_string(), GNUNET_RECLAIM_presentation_new(), GNUNET_RECLAIM_presentation_number_to_typename(), GNUNET_RECLAIM_presentation_string_to_value(), GNUNET_RECLAIM_presentation_value_to_string(), GSC_SESSIONS_add_to_typemap(), GSF_cadet_query(), GSF_pending_request_create_(), handle_auto_result(), handle_client_accept(), handle_client_start_search(), handle_datastore_reply(), handle_dht_p2p_get(), handle_dht_reply(), handle_dht_response(), handle_get_zero_anonymity(), handle_local_data(), handle_p2p_put(), handle_p2p_reply(), handle_reply(), handle_result(), heap_plugin_get(), heap_plugin_get_closest(), heap_plugin_get_key(), heap_plugin_get_zero_anonymity(), heap_plugin_put(), initialize_network_handle(), insert_pending_message(), item_printer(), iter_finished(), jwt_number_to_typename(), jwt_string_to_value(), jwt_value_to_string(), main(), maint_child_death(), match_full_data(), merge_helper(), messenger_number_to_typename(), messenger_string_to_value(), messenger_value_to_string(), meta_printer(), number_to_typename(), pabc_number_to_typename(), pabc_string_to_value(), pabc_value_to_string(), pack(), parse(), parse_attr(), parse_credential(), parse_jwt(), postgres_plugin_get(), postgres_plugin_get_closest(), postgres_plugin_get_key(), postgres_plugin_get_zero_anonymity(), postgres_plugin_put(), process_client_result(), process_dht_put_content(), process_kblock_for_unindex(), process_local_reply(), process_migration_content(), process_status(), put_callback(), queue_send_msg(), quota_processor(), refresh_bloomfilter(), repl_proc(), resolve_and_cache(), run_with_zone_pkey(), send_message(), sqlite_plugin_get(), sqlite_plugin_get_closest(), sqlite_plugin_get_key(), sqlite_plugin_get_zero_anonymity(), sqlite_plugin_put(), start_operation(), string_to_value(), stun_get_mapped(), submit_request(), tokenizer_cb(), transmit_item(), try_handle_plaintext(), try_transmission(), type_match(), unindex_process(), union_accept(), use_store_operation(), value_to_string(), and work_test().

◆ data

void* data
static

Value in binary format.

Definition at line 310 of file gnunet-namestore.c.

Referenced by del_monitor(), display_record(), get_existing_record(), reset_handles(), and run_with_zone_pkey().

◆ data_size

size_t data_size
static

Number of bytes in data.

Definition at line 315 of file gnunet-namestore.c.

Referenced by abd_string_to_value(), abd_value_to_string(), add_dns_result(), add_host(), basic_string_to_value(), basic_value_to_string(), buffer_append(), buffer_init(), cadet_reply_proc(), check_pkey(), collect_tickets_cb(), consistency_iter(), consume_ticket(), conversation_string_to_value(), conversation_value_to_string(), count_and_separate_strings(), create_string_array(), del_monitor(), display_record(), display_records_from_block(), dns_string_to_value(), dns_value_to_string(), dv_hmac(), filter_tickets_cb(), forward_resolution(), GDS_CLIENTS_handle_reply(), GDS_NEIGHBOURS_handle_reply(), get_existing_record(), get_records_and_call_iterator(), gns_string_to_value(), gns_value_to_string(), GNUNET_ABD_delegate_deserialize(), GNUNET_CONFIGURATION_get_data(), GNUNET_DHT_verify_path(), GNUNET_DNSPARSER_bin_to_hex(), GNUNET_DNSPARSER_hex_to_bin(), GNUNET_FS_meta_data_delete(), GNUNET_FS_meta_data_insert(), GNUNET_GNSRECORD_data_from_identity(), GNUNET_GNSRECORD_identity_from_data(), GNUNET_GNSRECORD_JSON_from_gnsrecord(), GNUNET_GNSRECORD_records_deserialize(), GNUNET_GNSRECORD_records_get_size(), GNUNET_GNSRECORD_records_serialize(), GNUNET_GNSRECORD_string_to_value(), GNUNET_GNSRECORD_value_to_string(), GNUNET_NAT_stun_handle_packet(), GNUNET_OP_result(), GNUNET_RECLAIM_attribute_deserialize(), GNUNET_RECLAIM_attribute_list_add(), GNUNET_RECLAIM_attribute_list_deserialize(), GNUNET_RECLAIM_attribute_new(), GNUNET_RECLAIM_attribute_serialize(), GNUNET_RECLAIM_attribute_serialize_get_size(), GNUNET_RECLAIM_attribute_string_to_value(), GNUNET_RECLAIM_attribute_value_to_string(), GNUNET_RECLAIM_credential_deserialize(), GNUNET_RECLAIM_credential_list_deserialize(), GNUNET_RECLAIM_credential_new(), GNUNET_RECLAIM_credential_serialize(), GNUNET_RECLAIM_credential_serialize_get_size(), GNUNET_RECLAIM_credential_string_to_value(), GNUNET_RECLAIM_credential_value_to_string(), GNUNET_RECLAIM_presentation_deserialize(), GNUNET_RECLAIM_presentation_list_deserialize(), GNUNET_RECLAIM_presentation_new(), GNUNET_RECLAIM_presentation_serialize(), GNUNET_RECLAIM_presentation_serialize_get_size(), GNUNET_RECLAIM_presentation_string_to_value(), GNUNET_RECLAIM_presentation_value_to_string(), handle_delegate_collection_cb(), handle_gns2dns_result(), handle_gns_resolution_result(), handle_gns_response(), issue_ticket(), item_printer(), iter_finished(), jwt_get_expiration(), jwt_get_issuer(), jwt_parse_attributes(), jwt_string_to_value(), jwt_value_to_string(), lookup_authz_cb(), lookup_nick_it(), lookup_redirect_uri_result(), merge_helper(), merge_with_nick_records(), messenger_string_to_value(), messenger_value_to_string(), namestore_flat_store_records(), namestore_postgres_store_records(), namestore_sqlite_store_records(), op_result(), pabc_string_to_value(), pabc_value_to_string(), parse(), parse_attr(), parse_credential(), parse_jwt(), parse_result_call_iterator(), play(), process_lookup_result(), process_parallel_lookup_result(), read_stdio(), record(), recursive_gns2dns_resolution(), reply_to_dns(), result_processor(), run_with_zone_pkey(), rvk_move_attr_cb(), sign_path(), sqlite_plugin_del(), store_and_free_entries(), string_to_value(), transmit_call_audio(), transmit_phone_audio(), update_tickets(), and value_to_string().

◆ etime

uint64_t etime
static

Expiration string converted to numeric value.

Definition at line 320 of file gnunet-namestore.c.

Referenced by generate_gns_certificate(), get_existing_record(), parse_expiration(), run(), and run_with_zone_pkey().

◆ etime_is_rel

int etime_is_rel = GNUNET_SYSERR
static

Is expiration time relative or absolute time?

Definition at line 325 of file gnunet-namestore.c.

Referenced by get_existing_record(), parse_expiration(), and run_with_zone_pkey().

◆ zm

◆ monitor

int monitor
static

Enables monitor mode.

Definition at line 335 of file gnunet-namestore.c.

Referenced by main(), and run_with_zone_pkey().

◆ recordset

struct RecordSetEntry* recordset
static

Entry in record set for processing records in bulk.

Definition at line 340 of file gnunet-namestore.c.

Referenced by parse_recordline(), process_command_stdin(), reset_handles(), and run_with_zone_pkey().

◆ purge_task

struct GNUNET_SCHEDULER_Task* purge_task
static

Purge task.

Definition at line 345 of file gnunet-namestore.c.

Referenced by marked_deleted(), purge_next_record(), reset_handles(), and zone_iteration_finished().