234 if (NULL != get_default)
264 if (NULL != add_qe_uri)
309 if ((NULL == add_qe) && (NULL == add_qe_uri) && (NULL == get_qe) &&
310 (NULL == del_qe) && (NULL == reverse_qe) && (NULL == list_it))
334 _ (
"Adding record failed: %s\n"),
335 (
GNUNET_NO == success) ?
"record exists" : emsg);
362 _ (
"Deleting record failed, record does not exist%s%s\n"),
363 (NULL != emsg) ?
": " :
"",
364 (NULL != emsg) ? emsg :
"");
369 _ (
"Deleting record failed%s%s\n"),
370 (NULL != emsg) ?
": " :
"",
371 (NULL != emsg) ? emsg :
"");
397 fprintf (stderr,
"Error iterating over zone\n");
422 if ((NULL !=
name) && (0 != strcmp (
name, rname)))
428 for (
unsigned int i = 0; i < rd_len; i++)
440 fprintf (stdout,
"%s:\n", rname);
445 for (
unsigned int i = 0; i < rd_len; i++)
459 _ (
"\tCorrupt or unsupported record of type %u\n"),
460 (
unsigned int) rd[i].record_type);
474 "\t%s: %s (%s)\t%s\t%s\n",
484 fprintf (stdout,
"%s",
"\n");
567 fprintf (stdout,
"%s",
"Monitor is now in sync.\n");
580 fprintf (stderr,
"%s",
"Monitor disconnected and out of sync.\n");
594 fprintf (stderr,
"%s",
"Failed to lookup record.\n");
626 const char *rec_name,
627 unsigned int rd_count,
636 if (0 != strcmp (rec_name,
name))
645 "Received %u records for name `%s'\n",
648 for (
unsigned int i = 0; i < rd_count; i++)
656 "A %s record exists already under `%s', no other records can be added.\n"),
668 "A zone key record exists already under `%s', no other records can be added.\n"),
680 "A SOA record exists already under `%s', cannot add a second SOA to the same zone.\n"),
696 "Records already exist under `%s', cannot add `%s' record.\n"),
711 "Records already exist under `%s', cannot add record.\n"),
720 for (
unsigned int i = 0; i < rd_count; i++)
726 "Non-GNS2DNS records already exist under `%s', cannot add GNS2DNS record.\n"),
786 unsigned int rd_count,
797 fprintf (stdout,
"%s.%s\n", label,
ego_name);
831 unsigned int rd_count,
835 unsigned int rd_left;
846 "There are no records under label `%s' that could be deleted.\n"),
869 for (
unsigned int i = 0; i < rd_count; i++)
879 (0 == strcmp (vs,
value)))))
880 rdx[rd_left++] = rd[i];
883 if (rd_count == rd_left)
889 "There are no records under label `%s' that match the request for deletion.\n"),
921 if (0 == strcmp (expirationstring,
"never"))
933 "Storing record with relative expiration time of %s\n",
943 "Storing record with absolute expiration time of %s\n",
970 _ (
"Failed to replace records: %s\n"),
993 fprintf (stderr,
_ (
"No options given\n"));
1001 _ (
"Failed to connect to namestore\n"));
1005 if (NULL != recordset)
1008 unsigned int rd_count;
1014 _ (
"Missing option `%s' for operation `%s'\n"),
1028 rd[rd_count] =
e->record;
1045 fprintf (stderr,
_ (
"Invalid nick `%s'\n"),
nickstring);
1066 _ (
"Missing option `%s' for operation `%s'\n"),
1076 _ (
"Missing option `%s' for operation `%s'\n"),
1084 if (UINT32_MAX ==
type)
1086 fprintf (stderr,
_ (
"Unsupported type `%s'\n"),
typestring);
1096 _ (
"For DNS record types `SRV', `TLSA' and `OPENPGPKEY'"));
1097 fprintf (stderr,
", please use a `BOX' record instead\n");
1105 _ (
"Missing option `%s' for operation `%s'\n"),
1116 _ (
"Value `%s' invalid for record type `%s'\n"),
1126 _ (
"Missing option `%s' for operation `%s'\n"),
1153 _ (
"Missing option `%s' for operation `%s'\n"),
1197 _ (
"Invalid public key for reverse lookup `%s'\n"),
1216 if ((2 != (sscanf (
uri,
"gnunet://gns/%52s/%63s", sh, sname))) ||
1220 fprintf (stderr,
_ (
"Invalid URI `%s'\n"),
uri);
1228 _ (
"Missing option `%s' for operation `%s'\n"),
1242 memset (&rd, 0,
sizeof(rd));
1287 if ((NULL !=
name) && (0 != strchr (
name,
'.')))
1290 _ (
"Label `%s' contains `.' which is not allowed\n"),
1302 _ (
"Ego `%s' not known to identity service\n"),
1340 _ (
"No default identity configured for `namestore' subsystem\n" 1341 "Run gnunet-identity -s namestore -e $NAME to set the default to $NAME\n" 1342 "Run gnunet-identity -d to get a list of choices for $NAME\n"));
1394 const char *cfgfile,
1397 const char *pkey_str;
1402 if (NULL != args[0])
1405 _ (
"Superfluous command line arguments (starting with `%s') ignored\n"),
1407 if ((NULL != args[0]) && (NULL ==
uri))
1411 pkey_str =
getenv (
"GNUNET_NAMESTORE_EGO_PRIVATE_KEY");
1412 if (NULL != pkey_str)
1420 "Malformed private key `%s' in $%s\n",
1422 "GNUNET_NAMESTORE_EGO_PRIVATE_KEY");
1434 fprintf (stderr,
_ (
"Cannot connect to identity service\n"));
1477 tok = strtok_r (cp,
" ", &saveptr);
1481 _ (
"Empty record line argument is not allowed.\n"));
1493 _ (
"Invalid expiration time `%s' (must be without unit)\n"),
1501 tok = strtok_r (NULL,
" ", &saveptr);
1505 _ (
"Missing entries in record line `%s'.\n"),
1517 tok = strtok_r (NULL,
" ", &saveptr);
1521 _ (
"Missing entries in record line `%s'.\n"),
1529 if (NULL == strchr (tok, (
unsigned char)
'p'))
1531 if (NULL != strchr (tok, (
unsigned char)
's'))
1534 tok = strchr (&value[tok - cp], (
unsigned char)
' ');
1538 _ (
"Missing entries in record line `%s'.\n"),
1551 _ (
"Invalid record data for type %s: `%s'.\n"),
1559 record.
data = &r[1];
1560 memcpy (&r[1], raw_data, record.
data_size);
1588 .require_argument = 1,
1591 .scls = (
void *) rs };
1622 "expiration time for record to use (for adding only), \"never\" is possible"),
1628 "set the desired nick name for the zone"),
1633 "monitor changes in the namestore"),
1639 "name of the record to add/delete/display"),
1645 "determine our name for the given PKEY"),
1652 "set record set to values given by (possibly multiple) RECORDLINES; can be specified multiple times"),
1658 "type of the record to add/delete/display"),
1669 "value of the record to add/delete"),
1679 "create shadow record (only valid if all other records of the same type have expired"),
1685 "name of the ego controlling the zone"),
1700 _ (
"GNUnet zone manipulation tool"),
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.
General context for command line processors.
static void display_record_monitor(void *cls, const struct GNUNET_IDENTITY_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 void add_error_cb(void *cls)
Function called if lookup fails.
void GNUNET_IDENTITY_cancel(struct GNUNET_IDENTITY_Operation *op)
Cancel an identity operation.
static struct GNUNET_DATASTORE_QueueEntry * qe
Current operation.
This record should not be used unless all (other) records with an absolute expiration time have expir...
struct RecordSetEntry * next
Kept in a linked list.
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, parse options).
const char * argumentHelp
Name of the argument for the user in help text.
void GNUNET_IDENTITY_ego_lookup_cancel(struct GNUNET_IDENTITY_EgoLookup *el)
Abort ego lookup attempt.
static const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration we are using.
uint64_t rel_value_us
The actual value.
static struct GNUNET_NAMESTORE_QueueEntry * add_qe
Queue entry for the 'add' operation.
static void lookup_error_cb(void *cls)
Function called on errors while monitoring.
static char * pkey
Public key of the zone to look in, in ASCII.
static int parse_expiration(const char *expirationstring, int *etime_is_rel, uint64_t *etime)
Parse expiration time.
static struct GNUNET_NAMESTORE_QueueEntry * add_qe_uri
Queue entry for the 'add-uri' operation.
uint32_t type
Type of public key.
#define GNUNET_GNS_EMPTY_LABEL_AT
String we use to indicate an empty label (top-level entry in the zone).
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_TYPE_CNAME
#define GNUNET_GNSRECORD_TYPE_EDKEY
Record type for EDKEY delegations.
static void sync_cb(void *cls)
Function called once we are in sync in monitor mode.
struct GNUNET_SCHEDULER_Task * GNUNET_SCHEDULER_add_shutdown(GNUNET_SCHEDULER_TaskCallback task, void *task_cls)
Schedule a new task to be run on shutdown, that is when a CTRL-C signal is received, or when GNUNET_SCHEDULER_shutdown() is being invoked.
const char * description
Help text for the option (description)
static struct GNUNET_IDENTITY_EgoLookup * el
Handle to identity lookup.
int GNUNET_STRINGS_get_utf8_args(int argc, char *const *argv, int *u8argc, char *const **u8argv)
Returns utf-8 encoded arguments.
uint32_t GNUNET_GNSRECORD_typename_to_number(const char *dns_typename)
Convert a type name (i.e.
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
int 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.
struct GNUNET_NAMESTORE_ZoneMonitor * GNUNET_NAMESTORE_zone_monitor_start(const struct GNUNET_CONFIGURATION_Handle *cfg, const struct GNUNET_IDENTITY_PrivateKey *zone, int iterate_first, GNUNET_SCHEDULER_TaskCallback error_cb, void *error_cb_cls, GNUNET_NAMESTORE_RecordMonitor monitor, void *monitor_cls, GNUNET_SCHEDULER_TaskCallback sync_cb, void *sync_cb_cls)
Begin monitoring a zone for changes.
#define GNUNET_GNSRECORD_TYPE_ANY
Record type indicating any record/'*'.
ssize_t GNUNET_IDENTITY_key_get_length(const struct GNUNET_IDENTITY_PublicKey *key)
Get the compacted length of a GNUNET_IDENTITY_PublicKey.
static void do_shutdown(void *cls)
Task run on shutdown.
A private key for an identity as per LSD0001.
#define GNUNET_memcpy(dst, src, n)
Call memcpy() but check for n being 0 first.
static void * data
Value in binary format.
int 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.
struct GNUNET_IDENTITY_Operation * GNUNET_IDENTITY_get(struct GNUNET_IDENTITY_Handle *h, const char *service_name, GNUNET_IDENTITY_Callback cb, void *cb_cls)
Obtain the identity that is currently preferred/default for a service.
void GNUNET_NAMESTORE_zone_monitor_stop(struct GNUNET_NAMESTORE_ZoneMonitor *zm)
Stop monitoring a zone for changes.
int main(int argc, char *const *argv)
The main function for gnunet-namestore.
static struct Experiment * e
static struct GNUNET_NAMESTORE_ZoneMonitor * zm
Monitor handle.
size_t data_size
Number of bytes in data.
struct GNUNET_NAMESTORE_QueueEntry * GNUNET_NAMESTORE_records_store(struct GNUNET_NAMESTORE_Handle *h, const struct GNUNET_IDENTITY_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.
Definition of a command line option.
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...
static char * name
Name of the records to add/list/remove.
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
static void zone_iteration_finished(void *cls)
Function called when we are done with a zone iteration.
const char shortName
Short name of the option.
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
#define GNUNET_GNSRECORD_TYPE_NICK
Record type for GNS nick names ("NICK").
static struct RecordSetEntry * recordset
Entry in record set for processing records in bulk.
uint64_t abs_value_us
The actual value.
#define GNUNET_break(cond)
Use this for internal assertion violations that are not fatal (can be handled) but should not occur...
Handle for an operation with the identity service.
struct GNUNET_GETOPT_CommandLineOption GNUNET_GETOPT_OPTION_END
static void zone_iteration_error_cb(void *cls)
Function called when we encountered an error in a zone iteration.
static struct GNUNET_DNSSTUB_Context * ctx
Context for DNS resolution.
static int etime_is_rel
Is expiration time relative or absolute time?
void GNUNET_NAMESTORE_cancel(struct GNUNET_NAMESTORE_QueueEntry *qe)
Cancel a namestore operation.
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.
#define GNUNET_TIME_UNIT_FOREVER_ABS
Constant used to specify "forever".
static struct GNUNET_IDENTITY_Handle * idh
Identity service handle.
static void add_continuation(void *cls, int32_t success, const char *emsg)
Continuation called to notify client about result of the operation.
static char * zone
Name of the zone we manage.
static void identity_cb(void *cls, struct GNUNET_IDENTITY_Ego *ego)
Callback invoked from identity service with ego information.
void GNUNET_NAMESTORE_disconnect(struct GNUNET_NAMESTORE_Handle *h)
Disconnect from the namestore service (and free associated resources).
Handle for a monitoring activity.
Handle for a zone iterator operation.
static void replace_cont(void *cls, int success, const char *emsg)
Function called when namestore is done with the replace operation.
static int is_shadow
Is record a shadow record (GNUNET_GNSRECORD_RF_SHADOW_RECORD)
#define GNUNET_DNSPARSER_TYPE_SOA
const void * data
Binary value stored in the DNS record.
static void del_monitor(void *cls, const struct GNUNET_IDENTITY_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 char * value
Value of the record to add/remove.
static int monitor
Enables monitor mode.
static int del
Desired action is to remove a record.
#define GNUNET_GNSRECORD_TYPE_PKEY
Record type for GNS zone transfer ("PKEY").
Connection to the NAMESTORE service.
uint64_t expiration_time
Expiration time for the DNS record.
static int ret
Global return value.
static struct SolverHandle * sh
#define GNUNET_GNSRECORD_TYPE_GNS2DNS
Record type for delegation to DNS.
static struct GNUNET_NAMESTORE_QueueEntry * set_qe
Queue entry for the 'set/replace' operation.
static void display_record_iterator(void *cls, const struct GNUNET_IDENTITY_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.
const char * GNUNET_STRINGS_relative_time_to_string(struct GNUNET_TIME_Relative delta, int do_round)
Give relative time in human-readable fancy format.
static char * option
Name of the option.
#define GNUNET_new_array(n, type)
Allocate a size n array with structs or unions of the given type.
struct GNUNET_NAMESTORE_QueueEntry * GNUNET_NAMESTORE_zone_to_name(struct GNUNET_NAMESTORE_Handle *h, const struct GNUNET_IDENTITY_PrivateKey *zone, const struct GNUNET_IDENTITY_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.
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...
void GNUNET_IDENTITY_disconnect(struct GNUNET_IDENTITY_Handle *h)
Disconnect from identity service.
static void del_continuation(void *cls, int32_t success, const char *emsg)
Continuation called to notify client about result of the operation.
This is a private record of this peer and it should thus not be handed out to other peers...
struct GNUNET_NAMESTORE_ZoneIterator * GNUNET_NAMESTORE_zone_iteration_start(struct GNUNET_NAMESTORE_Handle *h, const struct GNUNET_IDENTITY_PrivateKey *zone, GNUNET_SCHEDULER_TaskCallback error_cb, void *error_cb_cls, GNUNET_NAMESTORE_RecordMonitor proc, void *proc_cls, GNUNET_SCHEDULER_TaskCallback finish_cb, void *finish_cb_cls)
Starts a new zone iteration (used to periodically PUT all of our records into our DHT)...
void GNUNET_NAMESTORE_zone_iteration_stop(struct GNUNET_NAMESTORE_ZoneIterator *it)
Stops iteration and releases the namestore handle for further calls.
int GNUNET_GNSRECORD_string_to_value(uint32_t type, const char *s, void **data, size_t *data_size)
Convert human-readable version of a 'value' of a record to the binary representation.
int int GNUNET_asprintf(char **buf, const char *format,...) __attribute__((format(printf
Like asprintf, just portable.
enum GNUNET_GenericReturnValue GNUNET_IDENTITY_public_key_from_string(const char *str, struct GNUNET_IDENTITY_PublicKey *key)
Parses a (Base32) string representation of the public key.
static void run(void *cls, char *const *args, const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg)
Main function that will be run.
#define GNUNET_free_nz(ptr)
Wrapper around free.
static struct GNUNET_NAMESTORE_QueueEntry * reverse_qe
Queue entry for the 'reverse lookup' operation (in combination with a name).
static uint64_t etime
Expiration string converted to numeric value.
An QueueEntry used to store information for a pending NAMESTORE record operation. ...
static char * reverse_pkey
Reverse lookup to perform.
static char * expirationstring
Desired expiration time.
struct GNUNET_NAMESTORE_Handle * GNUNET_NAMESTORE_connect(const struct GNUNET_CONFIGURATION_Handle *cfg)
Connect to the namestore service.
static void test_finished()
Check if we are finished, and if so, perform shutdown.
static char * uri
URI to import.
static struct GNUNET_IDENTITY_PrivateKey zone_pkey
Private key for the our zone.
struct GNUNET_GNSRECORD_Data record
The record to add/remove.
static int is_public
Is record public (opposite of GNUNET_GNSRECORD_RF_PRIVATE)
static int add
Desired action is to add a record.
#define GNUNET_DNSPARSER_TYPE_OPENPGPKEY
static int list
Desired action is to list records.
#define GNUNET_DNSPARSER_TYPE_TLSA
static void default_ego_cb(void *cls, struct GNUNET_IDENTITY_Ego *ego, void **ctx, const char *name)
Function called with the default ego to be used for GNS operations.
Entry in record set for bulk processing.
struct GNUNET_NAMESTORE_QueueEntry * GNUNET_NAMESTORE_records_lookup(struct GNUNET_NAMESTORE_Handle *h, const struct GNUNET_IDENTITY_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_IDENTITY_EgoLookup * GNUNET_IDENTITY_ego_lookup(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *name, GNUNET_IDENTITY_EgoCallback cb, void *cb_cls)
Lookup an ego by name.
struct GNUNET_IDENTITY_Operation * get_default
Obtain default ego.
An identity key as per LSD0001.
static uint32_t type
Type string converted to DNS type value.
uint32_t record_type
Type of the GNS/DNS record.
static void del_lookup_error_cb(void *cls)
Function called if lookup for deletion fails.
static char * nickstring
Desired nick name.
static struct PendingResolutions * head
Head of list of pending resolution requests.
const struct GNUNET_IDENTITY_PrivateKey * GNUNET_IDENTITY_ego_get_private_key(const struct GNUNET_IDENTITY_Ego *ego)
Obtain the ECC key associated with a ego.
static char * ego_name
Name of the ego controlling the zone.
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.
#define GNUNET_log(kind,...)
static struct GNUNET_NAMESTORE_ZoneIterator * list_it
List iterator for the 'list' operation.
static void get_existing_record(void *cls, const struct GNUNET_IDENTITY_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...
static void monitor_error_cb(void *cls)
Function called on errors while monitoring.
static struct GNUNET_NAMESTORE_QueueEntry * get_qe
Queue entry for the 'lookup' operation.
static struct GNUNET_NAMESTORE_QueueEntry * del_qe
Queue entry for the 'del' operation.
Time for absolute times used by GNUnet, in microseconds.
static char * typestring
Type of the record to add/remove, NULL to remove all.
static void display_record_lookup(void *cls, const struct GNUNET_IDENTITY_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 void display_record(const char *rname, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd)
Process a record that was stored in the namestore.
enum GNUNET_GNSRECORD_Flags flags
Flags for the record.
This expiration time of the record is a relative time (not an absolute time).
const char * GNUNET_STRINGS_absolute_time_to_string(struct GNUNET_TIME_Absolute t)
Like asctime, except for GNUnet time.
int GNUNET_log_setup(const char *comp, const char *loglevel, const char *logfile)
Setup logging.
static void reverse_error_cb(void *cls)
Function called if we encountered an error in zone-to-name.
#define GNUNET_DNSPARSER_TYPE_SRV
char * GNUNET_GNSRECORD_value_to_string(uint32_t type, const void *data, size_t data_size)
Convert the 'value' of a record to a string.
static int multirecord_process(struct GNUNET_GETOPT_CommandLineProcessorContext *ctx, void *scls, const char *option, const char *value)
Command-line option parser function that allows the user to specify a complete record as one argument...
static size_t data_size
Number of bytes in data.
static void handle_reverse_lookup(void *cls, const struct GNUNET_IDENTITY_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...
const char * GNUNET_GNSRECORD_number_to_typename(uint32_t type)
Convert a type number (i.e.
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)...
static struct GNUNET_NAMESTORE_Handle * ns
Handle to the namestore.
#define GNUNET_malloc(size)
Wrapper around malloc.
int GNUNET_STRINGS_string_to_data(const char *enc, size_t enclen, void *out, size_t out_size)
Convert CrockfordBase32 encoding back to data.
#define GNUNET_free(ptr)
Wrapper around free.
Time for relative time used by GNUnet, in microseconds.
struct GNUNET_GETOPT_CommandLineOption multirecord_option(char shortName, const char *name, const char *argumentHelp, const char *description, struct RecordSetEntry **rs)
Allow user to specify keywords.
void GNUNET_STRINGS_utf8_tolower(const char *input, char *output)
Convert the utf-8 input string to lower case.
#define gettext_noop(String)