GNUnet  0.11.x
Macros | Typedefs | Enumerations | Functions
GNS service

GNU Name System. More...

Macros

#define GNUNET_GNS_EMPTY_LABEL_AT   "@"
 String we use to indicate an empty label (top-level entry in the zone). More...
 

Typedefs

typedef void(* GNUNET_GNS_LookupResultProcessor) (void *cls, uint32_t rd_count, const struct GNUNET_GNSRECORD_Data *rd)
 Iterator called on obtained result for a GNS lookup. More...
 
typedef void(* GNUNET_GNS_LookupResultProcessor2) (void *cls, int gns_tld, uint32_t rd_count, const struct GNUNET_GNSRECORD_Data *rd)
 Iterator called on obtained result for a GNS lookup where "not GNS" is a valid answer. More...
 

Enumerations

enum  GNUNET_GNS_LocalOptions { GNUNET_GNS_LO_DEFAULT = 0, GNUNET_GNS_LO_NO_DHT = 1, GNUNET_GNS_LO_LOCAL_MASTER = 2 }
 Options for the GNS lookup. More...
 

Functions

struct GNUNET_GNS_HandleGNUNET_GNS_connect (const struct GNUNET_CONFIGURATION_Handle *cfg)
 Initialize the connection with the GNS service. More...
 
void GNUNET_GNS_disconnect (struct GNUNET_GNS_Handle *handle)
 Shutdown connection with the GNS service. More...
 
struct GNUNET_GNS_LookupRequestGNUNET_GNS_lookup (struct GNUNET_GNS_Handle *handle, const char *name, const struct GNUNET_IDENTITY_PublicKey *zone, uint32_t type, enum GNUNET_GNS_LocalOptions options, GNUNET_GNS_LookupResultProcessor proc, void *proc_cls)
 Perform an asynchronous lookup operation on the GNS. More...
 
struct GNUNET_GNS_LookupRequestGNUNET_GNS_lookup_limited (struct GNUNET_GNS_Handle *handle, const char *name, const struct GNUNET_IDENTITY_PublicKey *zone, uint32_t type, enum GNUNET_GNS_LocalOptions options, uint16_t recursion_depth_limit, GNUNET_GNS_LookupResultProcessor proc, void *proc_cls)
 Perform an asynchronous lookup operation on the GNS. More...
 
void * GNUNET_GNS_lookup_cancel (struct GNUNET_GNS_LookupRequest *lr)
 Cancel pending lookup request. More...
 
struct GNUNET_GNS_LookupWithTldRequestGNUNET_GNS_lookup_with_tld (struct GNUNET_GNS_Handle *handle, const char *name, uint32_t type, enum GNUNET_GNS_LocalOptions options, GNUNET_GNS_LookupResultProcessor2 proc, void *proc_cls)
 Perform an asynchronous lookup operation on the GNS, determining the zone using the TLD of the given name and the current configuration to resolve TLDs to zones. More...
 
void * GNUNET_GNS_lookup_with_tld_cancel (struct GNUNET_GNS_LookupWithTldRequest *ltr)
 Cancel pending lookup request. More...
 

Detailed Description

GNU Name System.

See also
Documentation

Macro Definition Documentation

◆ GNUNET_GNS_EMPTY_LABEL_AT

#define GNUNET_GNS_EMPTY_LABEL_AT   "@"

Typedef Documentation

◆ GNUNET_GNS_LookupResultProcessor

typedef void(* GNUNET_GNS_LookupResultProcessor) (void *cls, uint32_t rd_count, const struct GNUNET_GNSRECORD_Data *rd)

Iterator called on obtained result for a GNS lookup.

Parameters
clsclosure
rd_countnumber of records in rd
rdthe records in reply

Definition at line 99 of file gnunet_gns_service.h.

◆ GNUNET_GNS_LookupResultProcessor2

typedef void(* GNUNET_GNS_LookupResultProcessor2) (void *cls, int gns_tld, uint32_t rd_count, const struct GNUNET_GNSRECORD_Data *rd)

Iterator called on obtained result for a GNS lookup where "not GNS" is a valid answer.

Parameters
clsclosure
gns_tldGNUNET_YES if a GNS lookup was attempted, GNUNET_NO if the TLD is not configured for GNS
rd_countnumber of records in rd
rdthe records in the reply

Definition at line 195 of file gnunet_gns_service.h.

Enumeration Type Documentation

◆ GNUNET_GNS_LocalOptions

Options for the GNS lookup.

Enumerator
GNUNET_GNS_LO_DEFAULT 

Defaults, look in cache, then in DHT.

GNUNET_GNS_LO_NO_DHT 

Never look in the DHT, keep request to local cache.

GNUNET_GNS_LO_LOCAL_MASTER 

For the rightmost label, only look in the cache (it is our local namestore), for the others, the DHT is OK.

Definition at line 108 of file gnunet_gns_service.h.

109 {
114 
119 
125 };
For the rightmost label, only look in the cache (it is our local namestore), for the others...
Never look in the DHT, keep request to local cache.
Defaults, look in cache, then in DHT.

Function Documentation

◆ GNUNET_GNS_connect()

struct GNUNET_GNS_Handle* GNUNET_GNS_connect ( const struct GNUNET_CONFIGURATION_Handle cfg)

Initialize the connection with the GNS service.

Parameters
cfgconfiguration to use
Returns
handle to the GNS service, or NULL on error

Definition at line 268 of file gns_api.c.

References cfg, GNUNET_GNS_Handle::cfg, GNUNET_free, GNUNET_new, handle, GNUNET_GNS_Handle::mq, and reconnect().

Referenced by GNUNET_CONVERSATION_call_start(), libgnunet_plugin_rest_gns_init(), libgnunet_plugin_rest_openid_connect_init(), RECLAIM_TICKETS_init(), and run().

269 {
270  struct GNUNET_GNS_Handle *handle;
271 
272  handle = GNUNET_new (struct GNUNET_GNS_Handle);
273  handle->cfg = cfg;
274  reconnect (handle);
275  if (NULL == handle->mq)
276  {
277  GNUNET_free (handle);
278  return NULL;
279  }
280  return handle;
281 }
Connection to the GNS service.
Definition: gns_api.h:35
const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration to use.
Definition: gns_api.h:40
static const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration we are using.
Definition: gnunet-abd.c:36
#define GNUNET_new(type)
Allocate a struct or union of the given type.
struct GNUNET_MQ_Handle * mq
Connection to service (if available).
Definition: gns_api.h:45
static struct GNUNET_DNS_Handle * handle
Handle to transport service.
static void reconnect(struct GNUNET_GNS_Handle *handle)
Reconnect to GNS service.
Definition: gns_api.c:233
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_GNS_disconnect()

void GNUNET_GNS_disconnect ( struct GNUNET_GNS_Handle handle)

Shutdown connection with the GNS service.

Parameters
handleconnection to shut down
handlehandle of the GNS connection to stop

Definition at line 290 of file gns_api.c.

References GNUNET_assert, GNUNET_free, GNUNET_MQ_destroy(), GNUNET_SCHEDULER_cancel(), GNUNET_GNS_Handle::lookup_head, GNUNET_GNS_Handle::mq, and GNUNET_GNS_Handle::reconnect_task.

Referenced by do_shutdown(), GNUNET_CONVERSATION_call_stop(), libgnunet_plugin_rest_gns_done(), libgnunet_plugin_rest_openid_connect_done(), RECLAIM_TICKETS_deinit(), run(), and shutdown_task().

291 {
292  if (NULL != handle->mq)
293  {
294  GNUNET_MQ_destroy (handle->mq);
295  handle->mq = NULL;
296  }
297  if (NULL != handle->reconnect_task)
298  {
300  handle->reconnect_task = NULL;
301  }
302  GNUNET_assert (NULL == handle->lookup_head);
303  GNUNET_free (handle);
304 }
#define GNUNET_assert(cond)
Use this for fatal errors that cannot be handled.
struct GNUNET_MQ_Handle * mq
Connection to service (if available).
Definition: gns_api.h:45
struct GNUNET_GNS_LookupRequest * lookup_head
Head of linked list of active lookup requests.
Definition: gns_api.h:50
void GNUNET_MQ_destroy(struct GNUNET_MQ_Handle *mq)
Destroy the message queue.
Definition: mq.c:837
struct GNUNET_SCHEDULER_Task * reconnect_task
Reconnect task.
Definition: gns_api.h:60
#define GNUNET_free(ptr)
Wrapper around free.
void * GNUNET_SCHEDULER_cancel(struct GNUNET_SCHEDULER_Task *task)
Cancel the task with the specified identifier.
Definition: scheduler.c:972
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_GNS_lookup()

struct GNUNET_GNS_LookupRequest* GNUNET_GNS_lookup ( struct GNUNET_GNS_Handle handle,
const char *  name,
const struct GNUNET_IDENTITY_PublicKey zone,
uint32_t  type,
enum GNUNET_GNS_LocalOptions  options,
GNUNET_GNS_LookupResultProcessor  proc,
void *  proc_cls 
)

Perform an asynchronous lookup operation on the GNS.

Parameters
handlehandle to the GNS service
namethe name to look up (in UTF-8 encoding)
zonezone to look in
typethe GNS record type to look for
optionslocal options for the lookup
procfunction to call on result
proc_clsclosure for proc
Returns
handle to the queued request
Parameters
handlehandle to the GNS service
namethe name to look up (in UTF-8 encoding)
zonethe zone to start the resolution in
typethe record type to look up
optionslocal options for the lookup
procprocessor to call on result
proc_clsclosure for proc
Returns
handle to the get request

Definition at line 412 of file gns_api.c.

References DEFAULT_LIMIT, and GNUNET_GNS_lookup_limited().

Referenced by backward_resolution(), client_redirect(), delegation_chain_bw_resolution_start(), delegation_chain_fw_resolution_start(), forward_resolution(), lookup_authz_cb(), lookup_with_public_key(), and RECLAIM_TICKETS_consume().

419 {
420  return GNUNET_GNS_lookup_limited (handle,
421  name,
422  zone,
423  type,
424  options,
426  proc,
427  proc_cls);
428 }
struct GNUNET_GETOPT_CommandLineOption options[]
Definition: 002.c:5
#define DEFAULT_LIMIT
Default recursion depth limit to apply if the application does not specify any.
Definition: gns_api.c:43
const char * name
enum GNUNET_TESTBED_UnderlayLinkModelType type
the type of this model
struct GNUNET_GNS_LookupRequest * GNUNET_GNS_lookup_limited(struct GNUNET_GNS_Handle *handle, const char *name, const struct GNUNET_IDENTITY_PublicKey *zone, uint32_t type, enum GNUNET_GNS_LocalOptions options, uint16_t recursion_depth_limit, GNUNET_GNS_LookupResultProcessor proc, void *proc_cls)
Perform an asynchronous lookup operation on the GNS.
Definition: gns_api.c:344
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_GNS_lookup_limited()

struct GNUNET_GNS_LookupRequest* GNUNET_GNS_lookup_limited ( struct GNUNET_GNS_Handle handle,
const char *  name,
const struct GNUNET_IDENTITY_PublicKey zone,
uint32_t  type,
enum GNUNET_GNS_LocalOptions  options,
uint16_t  recursion_depth_limit,
GNUNET_GNS_LookupResultProcessor  proc,
void *  proc_cls 
)

Perform an asynchronous lookup operation on the GNS.

Parameters
handlehandle to the GNS service
namethe name to look up (in UTF-8 encoding)
zonezone to look in
typethe GNS record type to look for
optionslocal options for the lookup
recursion_depth_limitmaximum number of zones that the lookup may (still) traverse
procfunction to call on result
proc_clsclosure for proc
Returns
handle to the queued request

Definition at line 344 of file gns_api.c.

References GNUNET_GNS_LookupRequest::env, GNUNET_GNS_LookupRequest::gns_handle, GNUNET_break, GNUNET_CONTAINER_DLL_insert, GNUNET_ERROR_TYPE_DEBUG, GNUNET_MAX_MESSAGE_SIZE, GNUNET_memcpy, GNUNET_MESSAGE_TYPE_GNS_LOOKUP, GNUNET_MQ_msg_extra, GNUNET_MQ_send_copy(), GNUNET_new, handle, LookupMessage::id, LOG, GNUNET_GNS_Handle::lookup_head, GNUNET_GNS_LookupRequest::lookup_proc, GNUNET_GNS_Handle::lookup_tail, lr, GNUNET_GNS_Handle::mq, LookupMessage::options, GNUNET_GNS_LookupRequest::proc_cls, GNUNET_GNS_LookupRequest::r_id, GNUNET_GNS_Handle::r_id_gen, LookupMessage::recursion_depth_limit, LookupMessage::type, LookupMessage::zone, and zone.

Referenced by GNUNET_GNS_lookup().

352 {
353  /* IPC to shorten gns names, return shorten_handle */
354  struct LookupMessage *lookup_msg;
356  size_t nlen;
357 
358  if (NULL == name)
359  {
360  GNUNET_break (0);
361  return NULL;
362  }
364  "Trying to lookup `%s' in GNS\n",
365  name);
366  nlen = strlen (name) + 1;
367  if (nlen >= GNUNET_MAX_MESSAGE_SIZE - sizeof(*lr))
368  {
369  GNUNET_break (0);
370  return NULL;
371  }
372  lr = GNUNET_new (struct GNUNET_GNS_LookupRequest);
373  lr->gns_handle = handle;
374  lr->lookup_proc = proc;
375  lr->proc_cls = proc_cls;
376  lr->r_id = handle->r_id_gen++;
377  lr->env = GNUNET_MQ_msg_extra (lookup_msg,
378  nlen,
380  lookup_msg->id = htonl (lr->r_id);
381  lookup_msg->options = htons ((uint16_t) options);
382  lookup_msg->recursion_depth_limit
383  = htons (recursion_depth_limit);
384  lookup_msg->zone = *zone;
385  lookup_msg->type = htonl (type);
386  GNUNET_memcpy (&lookup_msg[1],
387  name,
388  nlen);
390  handle->lookup_tail,
391  lr);
392  if (NULL != handle->mq)
393  GNUNET_MQ_send_copy (handle->mq,
394  lr->env);
395  return lr;
396 }
uint32_t r_id
request id
Definition: gns_api.c:83
Message from client to GNS service to lookup records.
Definition: gns.h:36
uint32_t id
Unique identifier for this request (for key collisions).
Definition: gns.h:46
struct GNUNET_GNS_Handle * gns_handle
handle to gns
Definition: gns_api.c:63
#define GNUNET_CONTAINER_DLL_insert(head, tail, element)
Insert an element at the head of a DLL.
static struct GNUNET_GNS_LookupWithTldRequest * lr
Handle to lookup request.
Definition: gnunet-gns.c:99
struct GNUNET_GETOPT_CommandLineOption options[]
Definition: 002.c:5
#define GNUNET_MESSAGE_TYPE_GNS_LOOKUP
Client would like to resolve a name.
Handle to a lookup request.
Definition: gns_api.c:48
#define GNUNET_memcpy(dst, src, n)
Call memcpy() but check for n being 0 first.
int32_t type
the type of record to look up
Definition: gns.h:69
#define GNUNET_new(type)
Allocate a struct or union of the given type.
GNUNET_GNS_LookupResultProcessor lookup_proc
processor to call on lookup result
Definition: gns_api.c:68
#define GNUNET_break(cond)
Use this for internal assertion violations that are not fatal (can be handled) but should not occur...
static char * zone
Name of the zone we manage.
uint16_t recursion_depth_limit
Recursion depth limit, i.e.
Definition: gns.h:64
#define GNUNET_MQ_msg_extra(mvar, esize, type)
Allocate an envelope, with extra space allocated after the space needed by the message struct...
Definition: gnunet_mq_lib.h:52
struct GNUNET_MQ_Handle * mq
Connection to service (if available).
Definition: gns_api.h:45
static struct GNUNET_DNS_Handle * handle
Handle to transport service.
struct GNUNET_GNS_LookupRequest * lookup_tail
Tail of linked list of active lookup requests.
Definition: gns_api.h:55
int16_t options
Local options for where to look for results (an enum GNUNET_GNS_LocalOptions in NBO).
Definition: gns.h:57
struct GNUNET_MQ_Envelope * env
Envelope with the message for this queue entry.
Definition: gns_api.c:78
struct GNUNET_GNS_LookupRequest * lookup_head
Head of linked list of active lookup requests.
Definition: gns_api.h:50
#define LOG(kind,...)
Definition: gns_api.c:37
#define GNUNET_MAX_MESSAGE_SIZE
Largest supported message (to be precise, one byte more than the largest possible message...
const char * name
void GNUNET_MQ_send_copy(struct GNUNET_MQ_Handle *mq, const struct GNUNET_MQ_Envelope *ev)
Send a copy of a message with the given message queue.
Definition: mq.c:443
uint32_t r_id_gen
Request Id generator.
Definition: gns_api.h:70
enum GNUNET_TESTBED_UnderlayLinkModelType type
the type of this model
struct GNUNET_IDENTITY_PublicKey zone
Zone that is to be used for lookup.
Definition: gns.h:51
void * proc_cls
lookup_proc closure
Definition: gns_api.c:73
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_GNS_lookup_cancel()

void* GNUNET_GNS_lookup_cancel ( struct GNUNET_GNS_LookupRequest lr)

Cancel pending lookup request.

Parameters
lrthe lookup request to cancel
Returns
closure from the lookup result processor

Definition at line 314 of file gns_api.c.

References GNUNET_GNS_LookupRequest::env, GNUNET_GNS_LookupRequest::gns_handle, GNUNET_CONTAINER_DLL_remove, GNUNET_free, GNUNET_MQ_discard(), handle, GNUNET_GNS_Handle::lookup_head, GNUNET_GNS_Handle::lookup_tail, GNUNET_GNS_LookupRequest::proc_cls, and ret.

Referenced by abort_parallel_lookups(), cleanup_cth(), cleanup_dsq_entry(), cleanup_handle(), and GNUNET_GNS_lookup_with_tld_cancel().

315 {
316  struct GNUNET_GNS_Handle *handle = lr->gns_handle;
317  void *ret;
318 
320  handle->lookup_tail,
321  lr);
322  GNUNET_MQ_discard (lr->env);
323  ret = lr->proc_cls;
324  GNUNET_free (lr);
325  return ret;
326 }
#define GNUNET_CONTAINER_DLL_remove(head, tail, element)
Remove an element from a DLL.
Connection to the GNS service.
Definition: gns_api.h:35
struct GNUNET_GNS_Handle * gns_handle
handle to gns
Definition: gns_api.c:63
static int ret
Return value of the commandline.
Definition: gnunet-abd.c:81
static struct GNUNET_DNS_Handle * handle
Handle to transport service.
struct GNUNET_GNS_LookupRequest * lookup_tail
Tail of linked list of active lookup requests.
Definition: gns_api.h:55
void GNUNET_MQ_discard(struct GNUNET_MQ_Envelope *mqm)
Discard the message queue message, free all allocated resources.
Definition: mq.c:323
struct GNUNET_MQ_Envelope * env
Envelope with the message for this queue entry.
Definition: gns_api.c:78
struct GNUNET_GNS_LookupRequest * lookup_head
Head of linked list of active lookup requests.
Definition: gns_api.h:50
void * proc_cls
lookup_proc closure
Definition: gns_api.c:73
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_GNS_lookup_with_tld()

struct GNUNET_GNS_LookupWithTldRequest* GNUNET_GNS_lookup_with_tld ( struct GNUNET_GNS_Handle handle,
const char *  name,
uint32_t  type,
enum GNUNET_GNS_LocalOptions  options,
GNUNET_GNS_LookupResultProcessor2  proc,
void *  proc_cls 
)

Perform an asynchronous lookup operation on the GNS, determining the zone using the TLD of the given name and the current configuration to resolve TLDs to zones.

Parameters
handlehandle to the GNS service
namethe name to look up, including TLD (in UTF-8 encoding)
typethe record type to look up
optionslocal options for the lookup
procprocessor to call on result
proc_clsclosure for proc
Returns
handle to the get request
Parameters
handlehandle to the GNS service
namethe name to look up, including TLD (in UTF-8 encoding)
typethe record type to look up
optionslocal options for the lookup
procprocessor to call on result
proc_clsclosure for proc
Returns
handle to the get request, NULL on error (i.e. bad configuration)

Definition at line 241 of file gns_tld_api.c.

References _, GNUNET_GNS_Handle::cfg, eat_tld(), get_tld(), GNUNET_asprintf(), GNUNET_CONFIGURATION_get_value_string(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_ERROR, GNUNET_free, GNUNET_IDENTITY_ego_lookup_by_suffix(), GNUNET_IDENTITY_public_key_from_string(), GNUNET_log_config_invalid(), GNUNET_new, GNUNET_OK, GNUNET_strdup, handle, identity_zone_cb(), LOG, lookup_with_public_key(), GNUNET_GNS_LookupWithTldRequest::options, and GNUNET_GNS_LookupWithTldRequest::type.

Referenced by do_s5r_read(), get_gns_cont(), GNUNET_CONVERSATION_call_start(), handle_request(), process_queue(), and run().

247 {
249  const char *tld;
250  char *dot_tld;
251  char *zonestr;
253 
255  ltr->gns_handle = handle;
256  ltr->name = GNUNET_strdup (name);
257  ltr->type = type;
258  ltr->options = options;
259  ltr->lookup_proc = proc;
260  ltr->lookup_proc_cls = proc_cls;
261  /* start with trivial case: TLD is zkey */
262  tld = get_tld (ltr->name);
263  if (GNUNET_OK ==
265  {
267  "`%s' seems to be a valid zone key\n", tld);
268  eat_tld (ltr->name, tld);
270  return ltr;
271  }
272 
273  /* second case: domain is mapped in our configuration file */
274  for (const char *domain = name; NULL != domain;
275  domain = strchr (domain, (unsigned char) '.'))
276  {
277  if ('.' == domain[0])
278  domain++;
279  GNUNET_asprintf (&dot_tld, ".%s", domain);
281  "gns",
282  dot_tld,
283  &zonestr))
284  {
285  if (GNUNET_OK !=
287  &pkey))
288  {
291  "gns",
292  dot_tld,
293  _ ("Expected a base32-encoded public zone key\n"));
294  GNUNET_free (zonestr);
295  GNUNET_free (dot_tld);
296  GNUNET_free (ltr->name);
297  GNUNET_free (ltr);
298  return NULL;
299  }
300  eat_tld (ltr->name, &dot_tld[1]);
301  GNUNET_free (zonestr);
302  GNUNET_free (dot_tld);
304  return ltr;
305  }
306  GNUNET_free (dot_tld);
307  }
309  "`%s' should be a valid ego\n", ltr->name);
310  ltr->id_co =
311  GNUNET_IDENTITY_ego_lookup_by_suffix (ltr->gns_handle->cfg,
312  ltr->name,
314  ltr);
315  if (NULL == ltr->id_co)
316  {
317  GNUNET_free (ltr->name);
318  GNUNET_free (ltr);
319  return NULL;
320  }
321  return ltr;
322 }
const struct GNUNET_CONFIGURATION_Handle * cfg
Configuration to use.
Definition: gns_api.h:40
static char * pkey
Public key of the zone to look in, in ASCII.
struct GNUNET_GETOPT_CommandLineOption options[]
Definition: 002.c:5
static void eat_tld(char *name, const char *tld)
Eat the "TLD" (last bit) of the given name.
Definition: gns_tld_api.c:127
static const char * get_tld(const char *name)
Obtain the TLD of the given name.
Definition: gns_tld_api.c:107
static void lookup_with_public_key(struct GNUNET_GNS_LookupWithTldRequest *ltr, const struct GNUNET_IDENTITY_PublicKey *pkey)
Perform the actual resolution, starting with the zone identified by the given public key...
Definition: gns_tld_api.c:169
#define GNUNET_new(type)
Allocate a struct or union of the given type.
void GNUNET_log_config_invalid(enum GNUNET_ErrorType kind, const char *section, const char *option, const char *required)
Log error message about invalid configuration option value.
#define GNUNET_strdup(a)
Wrapper around GNUNET_xstrdup_.
#define _(String)
GNU gettext support macro.
Definition: platform.h:184
#define LOG(kind,...)
Definition: gns_tld_api.c:38
struct GNUNET_IDENTITY_EgoSuffixLookup * GNUNET_IDENTITY_ego_lookup_by_suffix(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *suffix, GNUNET_IDENTITY_EgoSuffixCallback cb, void *cb_cls)
Lookup an ego by name.
static struct GNUNET_DNS_Handle * handle
Handle to transport service.
int int GNUNET_asprintf(char **buf, const char *format,...) __attribute__((format(printf
Like asprintf, just portable.
int GNUNET_CONFIGURATION_get_value_string(const struct GNUNET_CONFIGURATION_Handle *cfg, const char *section, const char *option, char **value)
Get a configuration value that should be a string.
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.
An identity key as per LSD0001.
const char * name
enum GNUNET_TESTBED_UnderlayLinkModelType type
the type of this model
Handle to a lookup request.
Definition: gns_tld_api.c:44
static void identity_zone_cb(void *cls, const struct GNUNET_IDENTITY_PrivateKey *priv, const char *ego_name)
Method called to with the ego we are to use for the lookup, when the ego is determined by a name...
Definition: gns_tld_api.c:192
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GNUNET_GNS_lookup_with_tld_cancel()

void* GNUNET_GNS_lookup_with_tld_cancel ( struct GNUNET_GNS_LookupWithTldRequest ltr)

Cancel pending lookup request.

Parameters
ltrthe lookup request to cancel
Returns
closure from the lookup result processor

Definition at line 332 of file gns_tld_api.c.

References GNUNET_free, GNUNET_GNS_lookup_cancel(), GNUNET_IDENTITY_ego_lookup_by_suffix_cancel(), GNUNET_GNS_LookupWithTldRequest::id_co, GNUNET_GNS_LookupWithTldRequest::longest_match, GNUNET_GNS_LookupWithTldRequest::lookup_proc_cls, GNUNET_GNS_LookupWithTldRequest::lr, GNUNET_GNS_LookupWithTldRequest::name, and ret.

Referenced by cleanup_handle(), cleanup_s5r(), do_shutdown(), do_timeout(), free_request(), GNUNET_CONVERSATION_call_stop(), and process_lookup_result().

333 {
334  void *ret = ltr->lookup_proc_cls;
335 
336  if (NULL != ltr->id_co)
337  {
339  ltr->id_co = NULL;
340  }
341  if (NULL != ltr->lr)
342  {
344  ltr->lr = NULL;
345  }
346  GNUNET_free (ltr->longest_match);
347  GNUNET_free (ltr->name);
348  GNUNET_free (ltr);
349  return ret;
350 }
struct GNUNET_GNS_LookupRequest * lr
Underlying GNS lookup.
Definition: gns_tld_api.c:69
static int ret
Return value of the commandline.
Definition: gnunet-abd.c:81
struct GNUNET_IDENTITY_EgoSuffixLookup * id_co
Lookup an ego with the identity service.
Definition: gns_tld_api.c:74
void GNUNET_IDENTITY_ego_lookup_by_suffix_cancel(struct GNUNET_IDENTITY_EgoSuffixLookup *el)
Abort ego lookup attempt.
char * name
Domain name we are resolving.
Definition: gns_tld_api.c:59
char * longest_match
Name of the longest matching ego found so far.
Definition: gns_tld_api.c:80
void * GNUNET_GNS_lookup_cancel(struct GNUNET_GNS_LookupRequest *lr)
Cancel pending lookup request.
Definition: gns_api.c:314
void * lookup_proc_cls
lookup_proc closure
Definition: gns_tld_api.c:64
#define GNUNET_free(ptr)
Wrapper around free.
Here is the call graph for this function:
Here is the caller graph for this function: