GNUnet 0.21.1
gnunet-namecache.c File Reference

command line tool to inspect the name cache More...

Include dependency graph for gnunet-namecache.c:

Go to the source code of this file.


static void do_shutdown (void *cls)
 Task run on shutdown. More...
static void display_records_from_block (void *cls, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd)
 Process a record that was stored in the namecache in a block. More...
static void handle_block (void *cls, const struct GNUNET_GNSRECORD_Block *block)
 Display block obtained from listing (by name). 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-namecache. More...


static struct GNUNET_NAMECACHE_Handlens
 Handle to the namecache. More...
static struct GNUNET_NAMECACHE_QueueEntryqe
 Queue entry for the 'query' operation. More...
static char * name
 Name (label) of the records to list. More...
static struct GNUNET_CRYPTO_PublicKey pubkey
 Public key of the zone to look in. More...
static char * pkey
 Public key of the zone to look in, in ASCII. More...
static int ret
 Global return value. More...

Detailed Description

command line tool to inspect the name cache

Christian Grothoff


  • test

Definition in file gnunet-namecache.c.

Function Documentation

◆ do_shutdown()

static void do_shutdown ( void *  cls)

Task run on shutdown.

Cleans up everything.


Definition at line 72 of file gnunet-namecache.c.

74 if (NULL != qe)
75 {
77 qe = NULL;
78 }
79 if (NULL != ns)
80 {
82 ns = NULL;
83 }
static struct GNUNET_NAMECACHE_QueueEntry * qe
Queue entry for the 'query' operation.
static struct GNUNET_NAMECACHE_Handle * ns
Handle to the namecache.
void GNUNET_NAMECACHE_disconnect(struct GNUNET_NAMECACHE_Handle *h)
Disconnect from the namecache service (and free associated resources).
void GNUNET_NAMECACHE_cancel(struct GNUNET_NAMECACHE_QueueEntry *qe)
Cancel a namecache operation.

References GNUNET_NAMECACHE_cancel(), GNUNET_NAMECACHE_disconnect(), ns, and qe.

Referenced by run().

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

◆ display_records_from_block()

static void display_records_from_block ( void *  cls,
unsigned int  rd_len,
const struct GNUNET_GNSRECORD_Data rd 

Process a record that was stored in the namecache in a block.

clsclosure, NULL
rd_lennumber of entries in rd array
rdarray of records with data to store

Definition at line 95 of file gnunet-namecache.c.

99 const char *typestring;
100 char *s;
101 unsigned int i;
103 if (0 == rd_len)
104 {
105 fprintf (stdout, _ ("No records found for `%s'"), name);
106 return;
107 }
108 fprintf (stdout, "%s:\n", name);
109 for (i = 0; i < rd_len; i++)
110 {
112 s = GNUNET_GNSRECORD_value_to_string (rd[i].record_type,
113 rd[i].data,
114 rd[i].data_size);
115 if (NULL == s)
116 {
117 fprintf (stdout,
118 _ ("\tCorrupt or unsupported record of type %u\n"),
119 (unsigned int) rd[i].record_type);
120 continue;
121 }
122 fprintf (stdout, "\t%s: %s\n", typestring, s);
123 GNUNET_free (s);
124 }
125 fprintf (stdout, "%s", "\n");
static char * data
The data to insert into the dht.
static char * name
Name (label) of the records to list.
static struct GNUNET_GNSRECORD_Data rd[50]
The record data under a single label.
static size_t data_size
Number of bytes in data.
static char * typestring
Type of the record to add/remove, NULL to remove all.
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
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
#define GNUNET_free(ptr)
Wrapper around free.
#define _(String)
GNU gettext support macro.
Definition: platform.h:178

References _, data, data_size, GNUNET_free, GNUNET_GNSRECORD_number_to_typename(), GNUNET_GNSRECORD_value_to_string(), name, rd, and typestring.

Referenced by handle_block().

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

◆ handle_block()

static void handle_block ( void *  cls,
const struct GNUNET_GNSRECORD_Block block 

Display block obtained from listing (by name).

blockNULL if not found

Definition at line 136 of file gnunet-namecache.c.

138 qe = NULL;
139 if (NULL == block)
140 {
141 fprintf (stderr, "No matching block found\n");
142 }
143 else if (GNUNET_OK !=
145 &pubkey,
146 name,
148 NULL))
149 {
150 fprintf (stderr, "Failed to decrypt block!\n");
151 }
static void display_records_from_block(void *cls, unsigned int rd_len, const struct GNUNET_GNSRECORD_Data *rd)
Process a record that was stored in the namecache in a block.
static struct GNUNET_CRYPTO_PublicKey pubkey
Public key of the zone to look in.
enum GNUNET_GenericReturnValue GNUNET_GNSRECORD_block_decrypt(const struct GNUNET_GNSRECORD_Block *block, const struct GNUNET_CRYPTO_PublicKey *zone_key, const char *label, GNUNET_GNSRECORD_RecordCallback proc, void *proc_cls)
Decrypt block.
void GNUNET_SCHEDULER_shutdown(void)
Request the shutdown of a scheduler.
Definition: scheduler.c:567

References display_records_from_block(), GNUNET_GNSRECORD_block_decrypt(), GNUNET_OK, GNUNET_SCHEDULER_shutdown(), name, pubkey, and qe.

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 

Main function that will be run.

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

Definition at line 165 of file gnunet-namecache.c.

170 struct GNUNET_HashCode dhash;
172 if (NULL == pkey)
173 {
174 fprintf (stderr, _ ("You must specify which zone should be accessed\n"));
175 return;
176 }
178 if (GNUNET_OK !=
180 {
181 fprintf (stderr, _ ("Invalid public key for zone `%s'\n"), pkey);
183 return;
184 }
185 if (NULL == name)
186 {
187 fprintf (stderr, _ ("You must specify a name\n"));
188 return;
189 }
static struct GNUNET_CONFIGURATION_Handle * cfg
Our configuration.
Definition: gnunet-arm.c:109
static char * pkey
Public key of the zone to look in, in ASCII.
static void do_shutdown(void *cls)
Task run on shutdown.
static void handle_block(void *cls, const struct GNUNET_GNSRECORD_Block *block)
Display block obtained from listing (by name).
void GNUNET_GNSRECORD_query_from_public_key(const struct GNUNET_CRYPTO_PublicKey *pub, const char *label, struct GNUNET_HashCode *query)
Calculate the DHT query for a given label in a given zone.
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
struct GNUNET_NAMECACHE_Handle * GNUNET_NAMECACHE_connect(const struct GNUNET_CONFIGURATION_Handle *cfg)
Connect to the namecache service.
struct GNUNET_NAMECACHE_QueueEntry * GNUNET_NAMECACHE_lookup_block(struct GNUNET_NAMECACHE_Handle *h, const struct GNUNET_HashCode *derived_hash, GNUNET_NAMECACHE_BlockProcessor proc, void *proc_cls)
Get a result for a particular key from the namecache.
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:1340
A 512-bit hashcode.

References _, cfg, do_shutdown(), GNUNET_CRYPTO_public_key_from_string(), GNUNET_GNSRECORD_query_from_public_key(), GNUNET_NAMECACHE_connect(), GNUNET_NAMECACHE_lookup_block(), GNUNET_OK, GNUNET_SCHEDULER_add_shutdown(), GNUNET_SCHEDULER_shutdown(), handle_block(), name, ns, pkey, pubkey, and qe.

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-namecache.

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

Definition at line 206 of file gnunet-namecache.c.

210 "name",
211 "NAME",
213 "name of the record to add/delete/display"),
214 &name),
217 'z',
218 "zone",
219 "PKEY",
220 gettext_noop ("specifies the public key of the zone to look in"),
221 &pkey),
225 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
226 return 2;
228 GNUNET_log_setup ("gnunet-namecache", "WARNING", NULL);
229 if (GNUNET_OK != GNUNET_PROGRAM_run (argc,
230 argv,
231 "gnunet-namecache",
232 _ ("GNUnet zone manipulation tool"),
233 options,
234 &run,
235 NULL))
236 {
237 GNUNET_free_nz ((void *) argv);
238 return 1;
239 }
240 GNUNET_free_nz ((void *) argv);
241 return ret;
Definition: 002.c:13
struct GNUNET_GETOPT_CommandLineOption options[]
Definition: 002.c:5
#define gettext_noop(String)
Definition: gettext.h:70
static int ret
Global return value.
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_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 _, gettext_noop, GNUNET_free_nz, GNUNET_GETOPT_OPTION_END, GNUNET_GETOPT_option_string(), GNUNET_log_setup(), GNUNET_OK, GNUNET_PROGRAM_run(), GNUNET_STRINGS_get_utf8_args(), name, options, pkey, ret, and run().

Here is the call graph for this function:

Variable Documentation

◆ ns

◆ qe

struct GNUNET_NAMECACHE_QueueEntry* qe

Queue entry for the 'query' operation.

Definition at line 43 of file gnunet-namecache.c.

Referenced by do_shutdown(), handle_block(), and run().

◆ name

char* name

Name (label) of the records to list.

Definition at line 48 of file gnunet-namecache.c.

Referenced by _nss_gns_gethostbyname2_r(), _nss_gns_gethostbyname_r(), add_services(), add_setter_action(), bandwidth_stats_iterator(), broadcast_status(), cache_answers(), check_delete_message(), check_get(), check_lookup_result(), check_monitor_notify(), check_record_result(), check_set(), check_ssl_certificate(), check_statistics_value(), check_watch(), convert_with_table(), create_message_name(), create_response(), display_records_from_block(), eat_tld(), ego_cb(), ego_delete_name(), ego_edit_name(), expect_data_dynamic(), expect_data_fixed(), find_service(), find_stat_entry(), format_help(), generate_gns_certificate(), get_egoentry(), get_egoentry_namestore(), get_file_handle(), get_gns_cont(), get_srv_handle_data_subdir(), get_tld(), GNS_get_tld(), gns_resolve_name(), GNS_resolver_lookup(), GNUNET_DATACACHE_create(), GNUNET_DISK_directory_scan(), GNUNET_DNSPARSER_builder_add_name(), GNUNET_DNSPARSER_check_name(), GNUNET_DNSPARSER_parse_query(), GNUNET_DNSPARSER_parse_record(), GNUNET_FS_GETOPT_KEYWORDS(), GNUNET_FS_GETOPT_METADATA(), GNUNET_GETOPT_option_absolute_time(), GNUNET_GETOPT_option_base32_fixed_size(), GNUNET_GETOPT_option_filename(), GNUNET_GETOPT_option_flag(), GNUNET_GETOPT_option_increment_uint(), GNUNET_GETOPT_option_relative_time(), GNUNET_GETOPT_option_string(), GNUNET_GETOPT_option_timestamp(), GNUNET_GETOPT_option_timetravel(), GNUNET_GETOPT_option_uint(), GNUNET_GETOPT_option_uint16(), GNUNET_GETOPT_option_ulong(), GNUNET_GETOPT_run(), GNUNET_GNS_lookup(), GNUNET_GNS_lookup_limited(), GNUNET_GNS_lookup_with_tld(), GNUNET_GNS_protocol_name_to_number(), GNUNET_GNS_protocol_number_to_name(), GNUNET_GNS_service_port_name_to_number(), GNUNET_GNS_service_port_number_to_name(), GNUNET_GNSRECORD_JSON_spec_gnsrecord(), GNUNET_IDENTITY_create(), GNUNET_IDENTITY_delete(), GNUNET_IDENTITY_ego_lookup(), GNUNET_JSON_getopt(), GNUNET_JSON_pack_array_incref(), GNUNET_JSON_pack_array_steal(), GNUNET_JSON_pack_bool(), GNUNET_JSON_pack_data64_varsize(), GNUNET_JSON_pack_data_varsize(), GNUNET_JSON_pack_double(), GNUNET_JSON_pack_int64(), GNUNET_JSON_pack_object_incref(), GNUNET_JSON_pack_object_steal(), GNUNET_JSON_pack_rsa_public_key(), GNUNET_JSON_pack_rsa_signature(), GNUNET_JSON_pack_string(), GNUNET_JSON_pack_time_rel(), GNUNET_JSON_pack_time_rel_nbo(), GNUNET_JSON_pack_timestamp(), GNUNET_JSON_pack_timestamp_nbo(), GNUNET_JSON_pack_uint64(), GNUNET_JSON_spec_array_const(), GNUNET_JSON_spec_bool(), GNUNET_JSON_spec_boolean(), GNUNET_JSON_spec_double(), GNUNET_JSON_spec_fixed(), GNUNET_JSON_spec_fixed64(), GNUNET_JSON_spec_int64(), GNUNET_JSON_spec_json(), GNUNET_JSON_spec_object_const(), GNUNET_JSON_spec_relative_time(), GNUNET_JSON_spec_rsa_public_key(), GNUNET_JSON_spec_rsa_signature(), GNUNET_JSON_spec_string(), GNUNET_JSON_spec_timestamp(), GNUNET_JSON_spec_timestamp_nbo(), GNUNET_JSON_spec_uint16(), GNUNET_JSON_spec_uint32(), GNUNET_JSON_spec_uint64(), GNUNET_JSON_spec_uint8(), GNUNET_JSON_spec_varsize(), GNUNET_MESSENGER_connect(), GNUNET_MESSENGER_set_name(), GNUNET_NETWORK_socket_accept(), GNUNET_PQ_connect2(), GNUNET_PQ_exec_prepared(), GNUNET_PQ_get_oid_by_name(), GNUNET_PQ_make_prepare(), GNUNET_PQ_prepare_once(), GNUNET_PQ_prepare_statements(), GNUNET_PQ_result_spec_absolute_time(), GNUNET_PQ_result_spec_absolute_time_nbo(), GNUNET_PQ_result_spec_array_abs_time(), GNUNET_PQ_result_spec_array_bool(), GNUNET_PQ_result_spec_array_fixed_size(), GNUNET_PQ_result_spec_array_rel_time(), GNUNET_PQ_result_spec_array_string(), GNUNET_PQ_result_spec_array_timestamp(), GNUNET_PQ_result_spec_array_uint16(), GNUNET_PQ_result_spec_array_uint32(), GNUNET_PQ_result_spec_array_uint64(), GNUNET_PQ_result_spec_array_variable_size(), GNUNET_PQ_result_spec_bool(), GNUNET_PQ_result_spec_fixed_size(), GNUNET_PQ_result_spec_int64(), GNUNET_PQ_result_spec_relative_time(), GNUNET_PQ_result_spec_rsa_public_key(), GNUNET_PQ_result_spec_rsa_signature(), GNUNET_PQ_result_spec_string(), GNUNET_PQ_result_spec_timestamp(), GNUNET_PQ_result_spec_timestamp_nbo(), GNUNET_PQ_result_spec_uint16(), GNUNET_PQ_result_spec_uint32(), GNUNET_PQ_result_spec_uint64(), GNUNET_PQ_result_spec_variable_size(), GNUNET_PROGRAM_run2(), GNUNET_RECLAIM_attribute_serialize(), GNUNET_RECLAIM_attribute_serialize_get_size(), GNUNET_RECLAIM_credential_serialize(), GNUNET_RECLAIM_credential_serialize_get_size(), GNUNET_STATISTICS_get(), GNUNET_STATISTICS_set(), GNUNET_STATISTICS_update(), GNUNET_STATISTICS_watch(), GNUNET_STATISTICS_watch_cancel(), gst_element_factory_make_debug(), handle_arm_list_result(), handle_block(), handle_delete_message(), handle_get(), handle_lookup(), handle_lookup_by_suffix_message(), handle_lookup_message(), handle_lookup_result(), handle_record_result(), handle_set(), handle_statistics_value(), handle_watch(), handle_zone_to_name_it(), identity_cb(), interface_proc(), is_canonical(), iterate_send_name_to_room(), list_callback(), main(), monitor_iterate_cb(), on_identity(), on_message(), open_static_resource(), parse_gnsrecordobject(), print_entry(), process_dids(), process_stats(), REGEX_TEST_automaton_save_graph_step(), resolve_function(), resolver_getprotobyname(), resolver_getservbyname(), run(), send_ibf(), send_lookup_response_with_filter(), set_contact_name(), set_handle_name(), setup_plugin(), signal_result(), stats_iterator(), store_service(), stun_attr2str(), stun_msg2str(), translate_dot_plus(), and zone_iterate_proc().

◆ pubkey

◆ pkey

char* pkey

Public key of the zone to look in, in ASCII.

Definition at line 58 of file gnunet-namecache.c.

Referenced by authorize_endpoint(), block_create2(), block_create_ecdsa(), block_create_eddsa(), block_sign_ecdsa(), block_sign_eddsa(), check_proof_of_work(), checkvec(), conversation_value_to_string(), DID_create(), DID_create_namestore_lookup_cb(), DID_did_to_pkey(), DID_ego_to_did(), DID_identity_to_did(), DID_identity_to_did_document(), DID_key_convert_gnunet_to_multibase_base64(), DID_pkey_to_did(), DID_pkey_to_did_document(), DID_resolve(), GNS_find_tld(), GNUNET_CRYPTO_ecdsa_key_from_file(), GNUNET_CRYPTO_eddsa_key_from_file(), GNUNET_CRYPTO_eddsa_key_get_public_from_scalar(), GNUNET_CRYPTO_eddsa_sign_derived(), GNUNET_CRYPTO_rsa_blind(), GNUNET_CRYPTO_rsa_sign_fdh(), GNUNET_CRYPTO_rsa_unblind(), GNUNET_CRYPTO_rsa_verify(), GNUNET_GNS_lookup_with_tld(), GNUNET_GNSRECORD_block_calculate_size(), GNUNET_GNSRECORD_block_create(), GNUNET_GNSRECORD_block_create2(), GNUNET_GNSRECORD_block_create_unsigned(), GNUNET_GNSRECORD_block_sign(), GNUNET_GNSRECORD_pkey_to_zkey(), GNUNET_GNSRECORD_zkey_to_pkey(), GNUNET_NAMESTORE_record_set_edit_begin(), GNUNET_NAMESTORE_record_set_edit_cancel(), GNUNET_NAMESTORE_record_set_store(), GNUNET_NAMESTORE_records_lookup(), GNUNET_NAMESTORE_records_lookup2(), GNUNET_NAMESTORE_records_store(), GNUNET_RECLAIM_attribute_delete(), GNUNET_RECLAIM_attribute_store(), GNUNET_RECLAIM_credential_delete(), GNUNET_RECLAIM_credential_store(), hash_pkey_and_label(), identity_zone_cb(), lookup_with_public_key(), main(), namestore_postgres_clear_editor_hint(), namestore_postgres_store_records(), namestore_sqlite_store_records(), output_vectors(), records_lookup(), rsa_blinding_key_derive(), rsa_full_domain_hash(), run(), run_with_zone_pkey(), and tld_iter().

◆ ret

int ret

Global return value.

Definition at line 63 of file gnunet-namecache.c.

Referenced by main().