GNU Name System resolver logic. More...
#include "platform.h"
#include "gnunet_util_lib.h"
#include "gnunet_dht_service.h"
#include "gnunet_gnsrecord_lib.h"
#include "gnunet_namecache_service.h"
#include "gnunet_resolver_service.h"
#include "gnunet_revocation_service.h"
#include "gnunet_gns_service.h"
#include "gnunet-service-gns.h"
#include "gnunet-service-gns_resolver.h"
#include "gnu_name_system_protocols.h"
#include "gnu_name_system_service_ports.h"
Go to the source code of this file.
Data Structures | |
struct | Gns2DnsPending |
Element of a resolution process for looking up the responsible DNS server hostname in a GNS2DNS recursive resolution. More... | |
struct | AuthorityChain |
DLL to hold the authority chain we had to pass in the resolution process. More... | |
struct | DnsResult |
A result we got from DNS. More... | |
struct | GNS_ResolverHandle |
Handle to a currently pending resolution. More... | |
struct | CacheOps |
Active namestore caching operations. More... | |
Macros | |
#define | DHT_LOOKUP_TIMEOUT |
Default DHT timeout for lookups. More... | |
#define | DNS_LOOKUP_TIMEOUT |
Default timeout for DNS lookups. More... | |
#define | DHT_GNS_REPLICATION_LEVEL 10 |
DHT replication level. More... | |
Functions | |
static char * | translate_dot_plus (struct GNS_ResolverHandle *rh, char *name) |
Expands a name ending in . More... | |
static void | GNS_resolver_lookup_cancel_ (void *cls) |
Wrapper around GNS_resolver_lookup_cancel() as a task. More... | |
static void | fail_resolution (struct GNS_ResolverHandle *rh) |
Function called to asynchronously fail a resolution. More... | |
static void | timeout_resolution (void *cls) |
Function called when a resolution times out. More... | |
static int | resolver_getprotobyname (const char *name) |
Function called to receive the protocol number for a service. More... | |
static int | resolver_getservbyname (const char *name, const char *proto) |
Function called to receive the port number for a service. More... | |
static char * | resolver_lookup_get_next_label (struct GNS_ResolverHandle *rh) |
Get the next, rightmost label from the name that we are trying to resolve, and update the resolution position accordingly. More... | |
static void | transmit_lookup_dns_result (struct GNS_ResolverHandle *rh) |
Gives the cumulative result obtained to the callback and clean up the request. More... | |
static void | add_dns_result (struct GNS_ResolverHandle *rh, uint64_t expiration_time, uint32_t record_type, size_t data_size, const void *data) |
Add a result from DNS to the records to be returned to the application. More... | |
static void | handle_dns_result (void *cls, const struct sockaddr *addr, socklen_t addrlen) |
We had to do a DNS lookup. More... | |
static void | recursive_resolution (void *cls) |
Task scheduled to continue with the resolution process. More... | |
static void | start_resolver_lookup (void *cls) |
Begin the resolution process from 'name', starting with the identification of the zone specified by 'name'. More... | |
static void | dns_result_parser (void *cls, const struct GNUNET_TUN_DnsHeader *dns, size_t dns_len) |
Function called with the result of a DNS resolution. More... | |
static void | recursive_dns_resolution (struct GNS_ResolverHandle *rh) |
Perform recursive DNS resolution. More... | |
static void | handle_gns_redirect_result (struct GNS_ResolverHandle *rh, const char *rname) |
We encountered a REDIRECT record during our resolution. More... | |
static void | handle_gns_cname_result (struct GNS_ResolverHandle *rh, const char *cname) |
We encountered a CNAME record during our resolution. More... | |
static void | handle_gns_resolution_result (void *cls, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd) |
Process records that were decrypted from a block. More... | |
static void | continue_with_gns2dns (struct AuthorityChain *ac) |
We have resolved one or more of the nameservers for a GNS2DNS lookup. More... | |
static void | handle_gns2dns_result (void *cls, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd) |
We've resolved the IP address for the DNS resolver to use after encountering a GNS2DNS record. More... | |
static void | handle_gns2dns_ip (void *cls, const struct sockaddr *addr, socklen_t addrlen) |
Function called by the resolver for each address obtained from DNS. More... | |
static void | recursive_redirect_resolution (struct GNS_ResolverHandle *rh, const struct GNUNET_GNSRECORD_Data *rd) |
We found a REDIRECT record, perform recursive resolution on it. More... | |
static void | recursive_cname_resolution (struct GNS_ResolverHandle *rh, const struct GNUNET_GNSRECORD_Data *rd) |
We found a CNAME record, perform recursive resolution on it. More... | |
static void | recursive_pkey_resolution (struct GNS_ResolverHandle *rh, const struct GNUNET_GNSRECORD_Data *rd) |
We found a PKEY record, perform recursive resolution on it. More... | |
static int | recursive_gns2dns_resolution (struct GNS_ResolverHandle *rh, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd) |
We found one or more GNS2DNS records, perform recursive resolution on it. More... | |
static void | namecache_cache_continuation (void *cls, int32_t success, const char *emsg) |
Function called once the namestore has completed the request for caching a block. More... | |
static void | handle_dht_response (void *cls, struct GNUNET_TIME_Absolute exp, const struct GNUNET_HashCode *key, const struct GNUNET_PeerIdentity *trunc_peer, const struct GNUNET_DHT_PathElement *get_path, unsigned int get_path_length, const struct GNUNET_DHT_PathElement *put_path, unsigned int put_path_length, enum GNUNET_BLOCK_Type type, size_t size, const void *data) |
Iterator called on each result obtained for a DHT operation that expects a reply. More... | |
static void | start_dht_request (struct GNS_ResolverHandle *rh, const struct GNUNET_HashCode *query) |
Initiate a DHT query for a set of GNS records. More... | |
static void | handle_gns_namecache_resolution_result (void *cls, unsigned int rd_count, const struct GNUNET_GNSRECORD_Data *rd) |
Process a records that were decrypted from a block that we got from the namecache. More... | |
static void | handle_namecache_block_response (void *cls, const struct GNUNET_GNSRECORD_Block *block) |
Process a record that was stored in the namecache. More... | |
static void | recursive_gns_resolution_namecache (struct GNS_ResolverHandle *rh) |
Lookup tail of our authority chain in the namecache. More... | |
static void | handle_revocation_result (void *cls, int is_valid) |
Function called with the result from a revocation check. More... | |
static void | recursive_gns_resolution_revocation (struct GNS_ResolverHandle *rh) |
Perform revocation check on tail of our authority chain. More... | |
struct GNS_ResolverHandle * | GNS_resolver_lookup (const struct GNUNET_CRYPTO_PublicKey *zone, uint32_t record_type, const char *name, enum GNUNET_GNS_LocalOptions options, uint16_t recursion_depth_limit, GNS_ResultProcessor proc, void *proc_cls) |
Lookup of a record in a specific zone calls lookup result processor on result. More... | |
void | GNS_resolver_lookup_cancel (struct GNS_ResolverHandle *rh) |
Cancel active resolution (i.e. More... | |
void | GNS_resolver_init (struct GNUNET_NAMECACHE_Handle *nc, struct GNUNET_DHT_Handle *dht, const struct GNUNET_CONFIGURATION_Handle *c, unsigned long long max_bg_queries) |
Initialize the resolver. More... | |
void | GNS_resolver_done () |
Shutdown resolver. More... | |
Variables | |
static struct GNUNET_NAMECACHE_Handle * | namecache_handle |
Our handle to the namecache service. More... | |
static struct GNUNET_DHT_Handle * | dht_handle |
Resolver handle to the dht. More... | |
static struct GNUNET_CONTAINER_Heap * | dht_lookup_heap |
Heap for limiting parallel DHT lookups. More... | |
static unsigned long long | max_allowed_background_queries |
Maximum amount of parallel queries to the DHT. More... | |
static struct GNS_ResolverHandle * | rlh_head |
Head of resolver lookup list. More... | |
static struct GNS_ResolverHandle * | rlh_tail |
Tail of resolver lookup list. More... | |
static struct CacheOps * | co_head |
Organized in a DLL. More... | |
static struct CacheOps * | co_tail |
Organized in a DLL. More... | |
static int | disable_cache |
Use namecache. More... | |
static const struct GNUNET_CONFIGURATION_Handle * | cfg |
Global configuration. More... | |
GNU Name System resolver logic.
Definition in file gnunet-service-gns_resolver.c.
#define DHT_LOOKUP_TIMEOUT |
Default DHT timeout for lookups.
Definition at line 57 of file gnunet-service-gns_resolver.c.
#define DNS_LOOKUP_TIMEOUT |
Default timeout for DNS lookups.
Definition at line 63 of file gnunet-service-gns_resolver.c.
#define DHT_GNS_REPLICATION_LEVEL 10 |
DHT replication level.
Definition at line 69 of file gnunet-service-gns_resolver.c.
|
static |
Expands a name ending in .
rh | resolution context |
name | name to modify (to be free'd or returned) |
Definition at line 482 of file gnunet-service-gns_resolver.c.
References GNS_ResolverHandle::ac_tail, AuthorityChain::authority_info, AuthorityChain::gns_authority, GNUNET_asprintf(), GNUNET_assert, GNUNET_free, GNUNET_GNSRECORD_pkey_to_zkey(), GNUNET_YES, name, and ret.
Referenced by handle_gns_resolution_result(), and recursive_gns2dns_resolution().
|
static |
Wrapper around GNS_resolver_lookup_cancel() as a task.
Used for delayed cleanup so we can unwind the stack first.
cls | the struct GNS_ResolverHandle |
Definition at line 510 of file gnunet-service-gns_resolver.c.
References GNS_resolver_lookup_cancel(), and GNS_ResolverHandle::task_id.
Referenced by dns_result_parser(), fail_resolution(), GNS_resolver_lookup_cancel(), handle_gns_resolution_result(), recursive_dns_resolution(), and start_resolver_lookup().
|
static |
Function called to asynchronously fail a resolution.
rh | the resolution to fail |
Definition at line 525 of file gnunet-service-gns_resolver.c.
References GNS_resolver_lookup_cancel_(), GNUNET_assert, GNUNET_SCHEDULER_add_now(), GNS_ResolverHandle::proc, GNS_ResolverHandle::proc_cls, and GNS_ResolverHandle::task_id.
Referenced by continue_with_gns2dns(), dns_result_parser(), handle_dht_response(), handle_gns_resolution_result(), handle_namecache_block_response(), handle_revocation_result(), recursive_cname_resolution(), recursive_pkey_resolution(), recursive_resolution(), start_dht_request(), and timeout_resolution().
|
static |
Function called when a resolution times out.
cls | the struct GNS_ResolverHandle |
Definition at line 542 of file gnunet-service-gns_resolver.c.
References fail_resolution(), and GNS_ResolverHandle::task_id.
Referenced by recursive_dns_resolution().
|
static |
Function called to receive the protocol number for a service.
name | name of the protocol |
Definition at line 557 of file gnunet-service-gns_resolver.c.
References GNUNET_GNS_protocol_name_to_number(), and name.
Referenced by resolver_lookup_get_next_label().
|
static |
Function called to receive the port number for a service.
name | name of the service |
proto | name of the protocol |
Definition at line 575 of file gnunet-service-gns_resolver.c.
References GNUNET_GNS_service_port_name_to_number(), name, and proto.
Referenced by resolver_lookup_get_next_label().
|
static |
Get the next, rightmost label from the name that we are trying to resolve, and update the resolution position accordingly.
Labels usually consist of up to 63 characters without a period ("."); however, we use a special convention to support resource records where the domain name includes a label starting with '_'. The syntax (see RFC 8552) here is "someLabel._Label.Name" and in this special case we include the "someLabel._Label" in the rightmost label. Thus, for "_443._tcp.foo.bar" we first return the label "bar" and then the label "_443._tcp.foo". The special case is detected by the presence of one label beginning with an underscore. The rightmost label beginning with an underscore, is combined with the label to its right (and the "." is preserved). If the label is in the syntax of "_PORT._PROTOCOL" (e.g. "_443._tcp") we also extract the port and protocol. In this implementation, the more specific case is handled first.
rh | handle to the resolution operation to get the next label from |
Do not advance a label. This seems to be a name only consisting of a prefix. Indicating a BOX record (_443,_tcp) Or some version of an SBOX record (HEX,_smimeacert) Which means, it is a BOX/SBOX under the empty label. leaving name_resolution_pos as is and returning empty label.
If we have labels starting with underscore with label on the right (SRV/DANE/BOX case), determine port/protocol; The format of rh->name
must be "_PORT._PROTOCOL".
If we have labels starting with underscore with label on the right, copy prefix to rh->prefix; The format of rh->name
must be "*._label" or "_label", where label is a string without '.'
Definition at line 605 of file gnunet-service-gns_resolver.c.
References _, GNUNET_ERROR_TYPE_WARNING, GNUNET_free, GNUNET_GNS_EMPTY_LABEL_AT, GNUNET_log, GNUNET_strndup, memrchr, GNS_ResolverHandle::name, GNS_ResolverHandle::name_resolution_pos, GNS_ResolverHandle::prefix, GNS_ResolverHandle::protocol, resolver_getprotobyname(), resolver_getservbyname(), ret, rp, service, and GNS_ResolverHandle::service.
Referenced by handle_gns_redirect_result(), recursive_pkey_resolution(), and start_resolver_lookup().
|
static |
Gives the cumulative result obtained to the callback and clean up the request.
rh | resolution process that has culminated in a result |
If this is a LEHO, we added this before. It must be a supplemental record #LSD0001
Definition at line 738 of file gnunet-service-gns_resolver.c.
References GNUNET_GNSRECORD_Data::data, DnsResult::data, GNUNET_GNSRECORD_Data::data_size, DnsResult::data_size, GNS_ResolverHandle::dns_result_head, GNUNET_GNSRECORD_Data::expiration_time, DnsResult::expiration_time, GNUNET_GNSRECORD_Data::flags, GNS_resolver_lookup_cancel(), GNUNET_assert, GNUNET_ERROR_TYPE_DEBUG, GNUNET_GNSRECORD_RF_NONE, GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION, GNUNET_GNSRECORD_RF_SUPPLEMENTAL, GNUNET_GNSRECORD_TYPE_LEHO, GNUNET_log, DnsResult::next, GNS_ResolverHandle::proc, GNS_ResolverHandle::proc_cls, rd, GNUNET_GNSRECORD_Data::record_type, and DnsResult::record_type.
Referenced by handle_dns_result().
|
static |
Add a result from DNS to the records to be returned to the application.
rh | resolution request to extend with a result |
expiration_time | expiration time for the answer |
record_type | DNS record type of the answer |
data_size | number of bytes in data |
data | binary data to return in DNS record |
Definition at line 796 of file gnunet-service-gns_resolver.c.
References data, data_size, GNS_ResolverHandle::dns_result_head, GNS_ResolverHandle::dns_result_tail, DnsResult::expiration_time, GNUNET_CONTAINER_DLL_insert, GNUNET_malloc, GNUNET_memcpy, DnsResult::record_type, and res.
Referenced by dns_result_parser(), and handle_dns_result().
|
static |
We had to do a DNS lookup.
Convert the result (if any) and return it.
cls | closure with the struct GNS_ResolverHandle |
addr | one of the addresses of the host, NULL for the last address |
addrlen | length of the address |
Definition at line 827 of file gnunet-service-gns_resolver.c.
References add_dns_result(), GNUNET_break, GNUNET_DNSPARSER_TYPE_A, GNUNET_DNSPARSER_TYPE_AAAA, GNUNET_ERROR_TYPE_DEBUG, GNUNET_log, GNS_ResolverHandle::std_resolve, and transmit_lookup_dns_result().
Referenced by dns_result_parser(), handle_gns_cname_result(), and handle_gns_redirect_result().
|
static |
Task scheduled to continue with the resolution process.
cls | the 'struct GNS_ResolverHandle' of the resolution |
Definition at line 2829 of file gnunet-service-gns_resolver.c.
References GNS_ResolverHandle::ac_tail, fail_resolution(), AuthorityChain::gns_authority, GNUNET_ERROR_TYPE_WARNING, GNUNET_log, GNUNET_YES, GNS_ResolverHandle::loop_limiter, GNS_ResolverHandle::loop_threshold, GNS_ResolverHandle::name, recursive_dns_resolution(), recursive_gns_resolution_revocation(), and GNS_ResolverHandle::task_id.
Referenced by continue_with_gns2dns(), handle_gns_redirect_result(), handle_gns_resolution_result(), recursive_pkey_resolution(), and start_resolver_lookup().
|
static |
Begin the resolution process from 'name', starting with the identification of the zone specified by 'name'.
cls | closure with struct GNS_ResolverHandle *rh |
Definition at line 2850 of file gnunet-service-gns_resolver.c.
References GNS_ResolverHandle::ac_head, GNS_ResolverHandle::ac_tail, AuthorityChain::authority_info, GNS_ResolverHandle::authority_zone, GNUNET_GNSRECORD_Data::data, GNUNET_GNSRECORD_Data::data_size, GNUNET_GNSRECORD_Data::expiration_time, GNUNET_GNSRECORD_Data::flags, AuthorityChain::gns_authority, GNS_resolver_lookup_cancel_(), GNUNET_assert, GNUNET_CONTAINER_DLL_insert_tail, GNUNET_DNSPARSER_TYPE_A, GNUNET_DNSPARSER_TYPE_AAAA, GNUNET_GNS_EMPTY_LABEL_AT, GNUNET_new, GNUNET_SCHEDULER_add_now(), GNUNET_strdup, GNUNET_YES, AuthorityChain::label, GNS_ResolverHandle::name, GNS_ResolverHandle::proc, GNS_ResolverHandle::proc_cls, rd, GNUNET_GNSRECORD_Data::record_type, recursive_resolution(), resolver_lookup_get_next_label(), AuthorityChain::rh, and GNS_ResolverHandle::task_id.
Referenced by GNS_resolver_lookup(), and recursive_gns2dns_resolution().
|
static |
Function called with the result of a DNS resolution.
cls | the request handle of the resolution that we were attempting to make |
dns | dns response, never NULL |
dns_len | number of bytes in dns |
Definition at line 899 of file gnunet-service-gns_resolver.c.
References _, GNUNET_TIME_Absolute::abs_value_us, GNS_ResolverHandle::ac_tail, add_dns_result(), GNUNET_DNSPARSER_RawRecord::data, GNUNET_DNSPARSER_Record::data, GNUNET_GNSRECORD_Data::data, GNUNET_DNSPARSER_RawRecord::data_len, GNUNET_GNSRECORD_Data::data_size, DNS_LOOKUP_TIMEOUT, GNS_ResolverHandle::dns_request, GNUNET_DNSPARSER_Record::expiration_time, GNUNET_GNSRECORD_Data::expiration_time, fail_resolution(), GNUNET_GNSRECORD_Data::flags, GNS_resolver_lookup_cancel_(), GNUNET_break, GNUNET_break_op, GNUNET_DNSPARSER_builder_add_mx(), GNUNET_DNSPARSER_builder_add_name(), GNUNET_DNSPARSER_builder_add_soa(), GNUNET_DNSPARSER_builder_add_srv(), GNUNET_DNSPARSER_builder_add_uri(), GNUNET_DNSPARSER_free_packet(), GNUNET_DNSPARSER_parse(), GNUNET_DNSPARSER_TYPE_A, GNUNET_DNSPARSER_TYPE_AAAA, GNUNET_DNSPARSER_TYPE_CNAME, GNUNET_DNSPARSER_TYPE_MX, GNUNET_DNSPARSER_TYPE_NS, GNUNET_DNSPARSER_TYPE_PTR, GNUNET_DNSPARSER_TYPE_SOA, GNUNET_DNSPARSER_TYPE_SRV, GNUNET_DNSPARSER_TYPE_URI, GNUNET_DNSSTUB_resolve_cancel(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_INFO, GNUNET_ERROR_TYPE_WARNING, GNUNET_free, GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION, GNUNET_GNSRECORD_RF_SUPPLEMENTAL, GNUNET_GNSRECORD_TYPE_LEHO, GNUNET_log, GNUNET_OK, GNUNET_RESOLVER_ip_get(), GNUNET_RESOLVER_request_cancel(), GNUNET_SCHEDULER_add_now(), GNUNET_SCHEDULER_cancel(), GNUNET_strdup, GNUNET_TIME_UNIT_HOURS, handle_dns_result(), GNUNET_DNSPARSER_Record::hostname, GNUNET_TUN_DnsHeader::id, AuthorityChain::label, GNS_ResolverHandle::leho, GNUNET_DNSPARSER_Record::mx, GNUNET_DNSPARSER_Record::name, GNS_ResolverHandle::name, GNS_ResolverHandle::name_resolution_pos, GNS_ResolverHandle::original_dns_id, p, GNS_ResolverHandle::proc, GNS_ResolverHandle::proc_cls, GNUNET_DNSPARSER_Record::raw, rd, rd_count, GNUNET_GNSRECORD_Data::record_type, GNS_ResolverHandle::record_type, GNUNET_DNSPARSER_Record::soa, GNUNET_DNSPARSER_Record::srv, GNS_ResolverHandle::std_resolve, GNS_ResolverHandle::task_id, GNUNET_DNSPARSER_Record::type, and GNUNET_DNSPARSER_Record::uri.
Referenced by recursive_dns_resolution().
|
static |
Perform recursive DNS resolution.
Asks the given DNS resolver to resolve "rh->dns_name", possibly recursively proceeding following NS delegations, CNAMES, etc., until 'rh->loop_limiter' bounds us or we find the answer.
rh | resolution information |
Definition at line 1179 of file gnunet-service-gns_resolver.c.
References GNS_ResolverHandle::ac_tail, AuthorityChain::authority_info, AuthorityChain::dns_authority, AuthorityChain::dns_handle, DNS_LOOKUP_TIMEOUT, GNS_ResolverHandle::dns_request, dns_result_parser(), GNUNET_DNSPARSER_Query::dns_traffic_class, AuthorityChain::gns_authority, GNS_resolver_lookup_cancel_(), GNUNET_assert, GNUNET_break, GNUNET_CRYPTO_QUALITY_NONCE, GNUNET_CRYPTO_random_u32(), GNUNET_DNSPARSER_free_packet(), GNUNET_DNSPARSER_pack(), GNUNET_DNSSTUB_resolve(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_log, GNUNET_new, GNUNET_NO, GNUNET_OK, GNUNET_SCHEDULER_add_delayed(), GNUNET_SCHEDULER_add_now(), GNUNET_strdup, GNUNET_SYSERR, GNUNET_TUN_DNS_CLASS_INTERNET, GNUNET_TUN_DNS_OPCODE_QUERY, AuthorityChain::label, GNS_ResolverHandle::leho, GNUNET_DNSPARSER_Query::name, GNS_ResolverHandle::original_dns_id, p, GNS_ResolverHandle::proc, GNS_ResolverHandle::proc_cls, GNS_ResolverHandle::record_type, ret, GNS_ResolverHandle::task_id, timeout_resolution(), and GNUNET_DNSPARSER_Query::type.
Referenced by recursive_resolution().
|
static |
We encountered a REDIRECT record during our resolution.
Merge it into our chain.
rh | resolution we are performing |
rname | value of the redirect record we got for the current authority chain tail |
Definition at line 1250 of file gnunet-service-gns_resolver.c.
References GNS_ResolverHandle::ac_head, GNS_ResolverHandle::ac_tail, AuthorityChain::authority_info, DNS_LOOKUP_TIMEOUT, AuthorityChain::gns_authority, GNS_get_tld(), GNUNET_asprintf(), GNUNET_CONTAINER_DLL_insert_tail, GNUNET_DNSPARSER_TYPE_A, GNUNET_DNSPARSER_TYPE_AAAA, GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_INFO, GNUNET_ERROR_TYPE_WARNING, GNUNET_free, GNUNET_GNSRECORD_zkey_to_pkey(), GNUNET_log, GNUNET_new, GNUNET_OK, GNUNET_RESOLVER_ip_get(), GNUNET_RESOLVER_request_cancel(), GNUNET_SCHEDULER_add_now(), GNUNET_strdup, GNUNET_strndup, GNUNET_YES, handle_dns_result(), AuthorityChain::label, GNS_ResolverHandle::name, GNS_ResolverHandle::name_resolution_pos, GNS_ResolverHandle::record_type, recursive_resolution(), res, resolver_lookup_get_next_label(), AuthorityChain::rh, GNS_ResolverHandle::std_resolve, and GNS_ResolverHandle::task_id.
Referenced by handle_gns_resolution_result(), and recursive_redirect_resolution().
|
static |
We encountered a CNAME record during our resolution.
Merge it into our chain.
rh | resolution we are performing |
cname | value of the cname record we got for the current authority chain tail |
Definition at line 1385 of file gnunet-service-gns_resolver.c.
References DNS_LOOKUP_TIMEOUT, GNUNET_DNSPARSER_TYPE_A, GNUNET_DNSPARSER_TYPE_AAAA, GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_log, GNUNET_RESOLVER_ip_get(), GNUNET_strdup, handle_dns_result(), GNS_ResolverHandle::name, GNS_ResolverHandle::name_resolution_pos, GNS_ResolverHandle::record_type, and GNS_ResolverHandle::std_resolve.
Referenced by handle_gns_resolution_result(), and recursive_cname_resolution().
|
static |
Process records that were decrypted from a block.
cls | closure with the 'struct GNS_ResolverHandle' |
rd_count | number of entries in rd array |
rd | array of records with data to store |
Definition at line 1936 of file gnunet-service-gns_resolver.c.
References _, GNS_ResolverHandle::ac_head, GNS_ResolverHandle::ac_tail, AuthorityChain::authority_info, data, GNUNET_GNSRECORD_Data::data, data_size, GNUNET_GNSRECORD_Data::data_size, fail_resolution(), AuthorityChain::gns_authority, GNS_resolver_lookup_cancel_(), GNUNET_assert, GNUNET_break, GNUNET_break_op, GNUNET_CONTAINER_DLL_insert_tail, GNUNET_DNSPARSER_builder_add_mx(), GNUNET_DNSPARSER_builder_add_name(), GNUNET_DNSPARSER_builder_add_soa(), GNUNET_DNSPARSER_builder_add_srv(), GNUNET_DNSPARSER_builder_add_uri(), GNUNET_DNSPARSER_free_mx(), GNUNET_DNSPARSER_free_soa(), GNUNET_DNSPARSER_free_srv(), GNUNET_DNSPARSER_free_uri(), GNUNET_DNSPARSER_parse_mx(), GNUNET_DNSPARSER_parse_name(), GNUNET_DNSPARSER_parse_soa(), GNUNET_DNSPARSER_parse_srv(), GNUNET_DNSPARSER_parse_uri(), GNUNET_DNSPARSER_TYPE_A, GNUNET_DNSPARSER_TYPE_AAAA, GNUNET_DNSPARSER_TYPE_CNAME, GNUNET_DNSPARSER_TYPE_MX, GNUNET_DNSPARSER_TYPE_SOA, GNUNET_DNSPARSER_TYPE_SRV, GNUNET_DNSPARSER_TYPE_URI, GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_ERROR, GNUNET_ERROR_TYPE_INFO, GNUNET_ERROR_TYPE_WARNING, GNUNET_free, GNUNET_GNS_EMPTY_LABEL_AT, GNUNET_GNSRECORD_identity_from_data(), GNUNET_GNSRECORD_is_critical(), GNUNET_GNSRECORD_TYPE_BOX, GNUNET_GNSRECORD_TYPE_EDKEY, GNUNET_GNSRECORD_TYPE_GNS2DNS, GNUNET_GNSRECORD_TYPE_PKEY, GNUNET_GNSRECORD_TYPE_REDIRECT, GNUNET_GNSRECORD_TYPE_SBOX, GNUNET_GNSRECORD_z2s(), GNUNET_log, GNUNET_new, GNUNET_OK, GNUNET_SCHEDULER_add_now(), GNUNET_strdup, GNUNET_strndup, GNUNET_YES, handle_gns_cname_result(), handle_gns_redirect_result(), AuthorityChain::label, GNUNET_DNSPARSER_SoaRecord::mname, GNUNET_DNSPARSER_MxRecord::mxhost, GNS_ResolverHandle::name, GNS_ResolverHandle::name_resolution_pos, prefix, GNS_ResolverHandle::prefix, GNS_ResolverHandle::proc, GNS_ResolverHandle::proc_cls, GNUNET_GNSRECORD_BoxRecord::protocol, GNS_ResolverHandle::protocol, pubkey, rd, rd_count, GNUNET_GNSRECORD_Data::record_type, GNUNET_GNSRECORD_BoxRecord::record_type, GNUNET_GNSRECORD_SBoxRecord::record_type, GNS_ResolverHandle::record_type, recursive_cname_resolution(), recursive_gns2dns_resolution(), recursive_pkey_resolution(), recursive_redirect_resolution(), recursive_resolution(), AuthorityChain::rh, GNUNET_DNSPARSER_SoaRecord::rname, GNUNET_GNSRECORD_BoxRecord::service, GNS_ResolverHandle::service, strnlen(), GNUNET_DNSPARSER_SrvRecord::target, GNS_ResolverHandle::task_id, translate_dot_plus(), and uri.
Referenced by handle_dht_response(), and handle_gns_namecache_resolution_result().
|
static |
We have resolved one or more of the nameservers for a GNS2DNS lookup.
Once we have some of them, begin using the DNSSTUB resolver.
ac | context for GNS2DNS resolution |
Definition at line 1440 of file gnunet-service-gns_resolver.c.
References AuthorityChain::authority_info, AuthorityChain::dns_authority, fail_resolution(), AuthorityChain::found, GNUNET_assert, GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_INFO, GNUNET_log, GNUNET_NO, GNUNET_SCHEDULER_add_now(), GNUNET_YES, AuthorityChain::gp_head, AuthorityChain::label, AuthorityChain::launched, AuthorityChain::name, recursive_resolution(), AuthorityChain::rh, and GNS_ResolverHandle::task_id.
Referenced by handle_gns2dns_ip(), handle_gns2dns_result(), and recursive_gns2dns_resolution().
|
static |
We've resolved the IP address for the DNS resolver to use after encountering a GNS2DNS record.
cls | the struct Gns2DnsPending used for this request |
rd_count | number of records in rd |
rd | addresses for the DNS resolver (presumably) |
Definition at line 1477 of file gnunet-service-gns_resolver.c.
References Gns2DnsPending::ac, AuthorityChain::authority_info, continue_with_gns2dns(), GNUNET_GNSRECORD_Data::data, data_size, AuthorityChain::dns_authority, AuthorityChain::dns_handle, AuthorityChain::found, GNUNET_break_op, GNUNET_CONTAINER_DLL_insert, GNUNET_CONTAINER_DLL_remove, GNUNET_DNSPARSER_TYPE_A, GNUNET_DNSPARSER_TYPE_AAAA, GNUNET_DNSSTUB_add_dns_sa(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_log, GNUNET_memcpy, GNUNET_OK, GNUNET_YES, AuthorityChain::gp_head, AuthorityChain::gp_tail, rd, rd_count, Gns2DnsPending::rh, rlh_head, and rlh_tail.
Referenced by recursive_gns2dns_resolution().
|
static |
Function called by the resolver for each address obtained from DNS.
cls | closure, a struct Gns2DnsPending * |
addr | one of the addresses of the host, NULL for the last address |
addrlen | length of addr |
Definition at line 1579 of file gnunet-service-gns_resolver.c.
References Gns2DnsPending::ac, AuthorityChain::authority_info, continue_with_gns2dns(), AuthorityChain::dns_authority, AuthorityChain::dns_handle, AuthorityChain::found, GNUNET_CONTAINER_DLL_remove, GNUNET_DNSSTUB_add_dns_sa(), GNUNET_ERROR_TYPE_ERROR, GNUNET_ERROR_TYPE_WARNING, GNUNET_free, GNUNET_log, GNUNET_memcpy, GNUNET_OK, GNUNET_YES, AuthorityChain::gp_head, AuthorityChain::gp_tail, and Gns2DnsPending::num_results.
Referenced by recursive_gns2dns_resolution().
|
static |
We found a REDIRECT record, perform recursive resolution on it.
rh | resolution handle |
rd | record with CNAME to resolve recursively |
Definition at line 1639 of file gnunet-service-gns_resolver.c.
References GNUNET_GNSRECORD_Data::data, handle_gns_redirect_result(), and rd.
Referenced by handle_gns_resolution_result().
|
static |
We found a CNAME record, perform recursive resolution on it.
rh | resolution handle |
rd | record with CNAME to resolve recursively |
Definition at line 1654 of file gnunet-service-gns_resolver.c.
References GNUNET_GNSRECORD_Data::data, GNUNET_GNSRECORD_Data::data_size, fail_resolution(), GNUNET_break_op, GNUNET_DNSPARSER_parse_name(), GNUNET_free, handle_gns_cname_result(), and rd.
Referenced by handle_gns_resolution_result().
|
static |
We found a PKEY record, perform recursive resolution on it.
rh | resolution handle |
rd | record with PKEY to resolve recursively |
Definition at line 1685 of file gnunet-service-gns_resolver.c.
References GNS_ResolverHandle::ac_head, GNS_ResolverHandle::ac_tail, AuthorityChain::authority_info, GNUNET_GNSRECORD_Data::data, GNUNET_GNSRECORD_Data::data_size, fail_resolution(), AuthorityChain::gns_authority, GNUNET_break_op, GNUNET_CONTAINER_DLL_insert_tail, GNUNET_GNSRECORD_identity_from_data(), GNUNET_new, GNUNET_OK, GNUNET_SCHEDULER_add_now(), GNUNET_YES, AuthorityChain::label, rd, GNUNET_GNSRECORD_Data::record_type, recursive_resolution(), resolver_lookup_get_next_label(), AuthorityChain::rh, and GNS_ResolverHandle::task_id.
Referenced by handle_gns_resolution_result().
|
static |
We found one or more GNS2DNS records, perform recursive resolution on it.
(to be precise, one or more records in rd is GNS2DNS, there may be others, so this function still needs to check which ones are GNS2DNS).
rh | resolution handle |
rd_count | length of the rd array |
rd | record with PKEY to resolve recursively |
Records other than GNS2DNS not allowed
Definition at line 1728 of file gnunet-service-gns_resolver.c.
References _, Gns2DnsPending::ac, GNS_ResolverHandle::ac_head, GNS_ResolverHandle::ac_tail, AuthorityChain::authority_info, GNS_ResolverHandle::authority_zone, continue_with_gns2dns(), data, data_size, AuthorityChain::dns_authority, AuthorityChain::dns_handle, Gns2DnsPending::dns_rh, AuthorityChain::found, GNS_get_tld(), GNUNET_asprintf(), GNUNET_assert, GNUNET_break, GNUNET_break_op, GNUNET_CONTAINER_DLL_insert, GNUNET_CONTAINER_DLL_insert_tail, GNUNET_DNSPARSER_MAX_NAME_LENGTH, GNUNET_DNSPARSER_parse_name(), GNUNET_DNSSTUB_add_dns_ip(), GNUNET_DNSSTUB_start(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_ERROR_TYPE_WARNING, GNUNET_free, GNUNET_GNS_LO_DEFAULT, GNUNET_GNSRECORD_TYPE_ANY, GNUNET_GNSRECORD_TYPE_GNS2DNS, GNUNET_GNSRECORD_zkey_to_pkey(), GNUNET_log, GNUNET_new, GNUNET_OK, GNUNET_RESOLVER_ip_get(), GNUNET_SCHEDULER_add_now(), GNUNET_strdup, GNUNET_SYSERR, GNUNET_TIME_UNIT_FOREVER_REL, GNUNET_YES, AuthorityChain::gp_head, AuthorityChain::gp_tail, handle_gns2dns_ip(), handle_gns2dns_result(), AuthorityChain::label, GNS_ResolverHandle::loop_limiter, GNS_ResolverHandle::loop_threshold, AuthorityChain::name, GNS_ResolverHandle::name, GNS_ResolverHandle::name_resolution_pos, ns, GNS_ResolverHandle::options, GNS_ResolverHandle::proc, GNS_ResolverHandle::proc_cls, rd, rd_count, GNS_ResolverHandle::record_type, Gns2DnsPending::rh, AuthorityChain::rh, start_resolver_lookup(), GNS_ResolverHandle::task_id, and translate_dot_plus().
Referenced by handle_gns_resolution_result().
|
static |
Function called once the namestore has completed the request for caching a block.
Definition at line 2474 of file gnunet-service-gns_resolver.c.
References _, co_head, co_tail, GNUNET_CONTAINER_DLL_remove, GNUNET_ERROR_TYPE_WARNING, GNUNET_free, GNUNET_log, GNUNET_OK, and CacheOps::namecache_qe_cache.
Referenced by handle_dht_response().
|
static |
Iterator called on each result obtained for a DHT operation that expects a reply.
cls | closure with the struct GNS_ResolverHandle |
exp | when will this value expire |
key | key of the result |
trunc_peer | truncated peer, NULL if not truncated |
get_path | peers on reply path (or NULL if not recorded) [0] = datastore's first neighbor, [length - 1] = local peer |
get_path_length | number of entries in get_path |
put_path | peers on the PUT path (or NULL if not recorded) [0] = origin, [length - 1] = datastore |
put_path_length | number of entries in put_path |
type | type of the result |
size | number of bytes in data |
data | pointer to the result data |
Definition at line 2511 of file gnunet-service-gns_resolver.c.
References GNS_ResolverHandle::ac_tail, AuthorityChain::authority_info, co_head, co_tail, data, GNS_ResolverHandle::dht_heap_node, disable_cache, fail_resolution(), GNS_ResolverHandle::get_handle, AuthorityChain::gns_authority, GNUNET_break, GNUNET_break_op, GNUNET_CONTAINER_DLL_insert, GNUNET_CONTAINER_heap_remove_node(), GNUNET_DHT_get_stop(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_GNSRECORD_block_decrypt(), GNUNET_GNSRECORD_block_get_expiration(), GNUNET_GNSRECORD_block_get_size(), GNUNET_log, GNUNET_NAMECACHE_block_cache(), GNUNET_new, GNUNET_OK, GNUNET_STRINGS_absolute_time_to_string(), GNUNET_TIME_absolute_get_remaining(), GNUNET_YES, handle_gns_resolution_result(), key, AuthorityChain::label, GNS_ResolverHandle::name, namecache_cache_continuation(), namecache_handle, CacheOps::namecache_qe_cache, AuthorityChain::rh, size, and type.
Referenced by start_dht_request().
|
static |
Initiate a DHT query for a set of GNS records.
rh | resolution handle |
query | key to use in the DHT lookup |
Definition at line 2604 of file gnunet-service-gns_resolver.c.
References DHT_GNS_REPLICATION_LEVEL, dht_handle, GNS_ResolverHandle::dht_heap_node, dht_lookup_heap, fail_resolution(), GNS_ResolverHandle::get_handle, GNUNET_assert, GNUNET_BLOCK_TYPE_GNS_NAMERECORD, GNUNET_CONTAINER_heap_get_size(), GNUNET_CONTAINER_heap_insert(), GNUNET_CONTAINER_heap_remove_root(), GNUNET_DHT_get_start(), GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE, GNUNET_TIME_absolute_get(), handle_dht_response(), and max_allowed_background_queries.
Referenced by handle_namecache_block_response(), and recursive_gns_resolution_namecache().
|
static |
Process a records that were decrypted from a block that we got from the namecache.
Simply calls handle_gns_resolution_result().
cls | closure with the struct GNS_ResolverHandle |
rd_count | number of entries in rd array |
rd | array of records with data to store |
Definition at line 2642 of file gnunet-service-gns_resolver.c.
References _, GNUNET_ERROR_TYPE_WARNING, GNUNET_log, handle_gns_resolution_result(), GNS_ResolverHandle::name, rd, and rd_count.
Referenced by handle_namecache_block_response().
|
static |
Process a record that was stored in the namecache.
cls | closure with the struct GNS_ResolverHandle |
block | block that was stored in the namecache |
Definition at line 2665 of file gnunet-service-gns_resolver.c.
References GNS_ResolverHandle::ac_head, GNS_ResolverHandle::ac_tail, AuthorityChain::authority_info, fail_resolution(), AuthorityChain::gns_authority, GNUNET_assert, GNUNET_break_op, GNUNET_ERROR_TYPE_DEBUG, GNUNET_GNS_LO_DEFAULT, GNUNET_GNS_LO_LOCAL_MASTER, GNUNET_GNSRECORD_block_decrypt(), GNUNET_GNSRECORD_block_get_expiration(), GNUNET_GNSRECORD_query_from_public_key(), GNUNET_GNSRECORD_z2s(), GNUNET_h2s(), GNUNET_log, GNUNET_OK, GNUNET_STRINGS_absolute_time_to_string(), GNUNET_TIME_absolute_get_remaining(), handle_gns_namecache_resolution_result(), AuthorityChain::label, GNS_ResolverHandle::namecache_qe, GNS_ResolverHandle::options, AuthorityChain::rh, and start_dht_request().
Referenced by recursive_gns_resolution_namecache().
|
static |
Lookup tail of our authority chain in the namecache.
rh | query we are processing |
Definition at line 2752 of file gnunet-service-gns_resolver.c.
References GNS_ResolverHandle::ac_tail, AuthorityChain::authority_info, disable_cache, AuthorityChain::gns_authority, GNUNET_assert, GNUNET_ERROR_TYPE_DEBUG, GNUNET_GNSRECORD_query_from_public_key(), GNUNET_GNSRECORD_z2s(), GNUNET_log, GNUNET_NAMECACHE_lookup_block(), GNUNET_YES, handle_namecache_block_response(), AuthorityChain::label, namecache_handle, GNS_ResolverHandle::namecache_qe, AuthorityChain::rh, and start_dht_request().
Referenced by handle_revocation_result().
|
static |
Function called with the result from a revocation check.
cls | the struct GNS_ResovlerHandle |
is_valid | GNUNET_YES if the zone was not yet revoked |
Definition at line 2788 of file gnunet-service-gns_resolver.c.
References _, GNS_ResolverHandle::ac_tail, AuthorityChain::authority_info, fail_resolution(), AuthorityChain::gns_authority, GNUNET_ERROR_TYPE_WARNING, GNUNET_GNSRECORD_z2s(), GNUNET_log, GNUNET_YES, recursive_gns_resolution_namecache(), GNS_ResolverHandle::rev_check, and AuthorityChain::rh.
Referenced by recursive_gns_resolution_revocation().
|
static |
Perform revocation check on tail of our authority chain.
rh | query we are processing |
Definition at line 2813 of file gnunet-service-gns_resolver.c.
References GNS_ResolverHandle::ac_tail, AuthorityChain::authority_info, cfg, AuthorityChain::gns_authority, GNUNET_assert, GNUNET_ERROR_TYPE_DEBUG, GNUNET_GNSRECORD_z2s(), GNUNET_log, GNUNET_REVOCATION_query(), handle_revocation_result(), GNS_ResolverHandle::rev_check, and AuthorityChain::rh.
Referenced by recursive_resolution().
struct GNS_ResolverHandle * GNS_resolver_lookup | ( | const struct GNUNET_CRYPTO_PublicKey * | zone, |
uint32_t | record_type, | ||
const char * | name, | ||
enum GNUNET_GNS_LocalOptions | options, | ||
uint16_t | recursion_depth_limit, | ||
GNS_ResultProcessor | proc, | ||
void * | proc_cls | ||
) |
Lookup of a record in a specific zone calls lookup result processor on result.
Lookup of a record in a specific zone calls RecordLookupProcessor on result or timeout.
zone | the zone to perform the lookup in |
record_type | the record type to look up |
name | the name to look up |
options | local options to control local lookup |
recursion_depth_limit | how many zones to traverse at most |
proc | the processor to call on result |
proc_cls | the closure to pass to proc |
Definition at line 2931 of file gnunet-service-gns_resolver.c.
References GNS_ResolverHandle::authority_zone, GNUNET_CONTAINER_DLL_insert, GNUNET_ERROR_TYPE_DEBUG, GNUNET_log, GNUNET_new, GNUNET_SCHEDULER_add_now(), GNUNET_strdup, GNS_ResolverHandle::loop_threshold, name, GNS_ResolverHandle::name, GNS_ResolverHandle::name_resolution_pos, options, GNS_ResolverHandle::options, GNS_ResolverHandle::proc, GNS_ResolverHandle::proc_cls, GNS_ResolverHandle::record_type, rlh_head, rlh_tail, start_resolver_lookup(), and GNS_ResolverHandle::task_id.
Referenced by handle_dns_request(), and handle_lookup().
void GNS_resolver_lookup_cancel | ( | struct GNS_ResolverHandle * | rh | ) |
Cancel active resolution (i.e.
client disconnected).
rh | resolution to abort |
Definition at line 2968 of file gnunet-service-gns_resolver.c.
References Gns2DnsPending::ac, GNS_ResolverHandle::ac_head, GNS_ResolverHandle::ac_tail, AuthorityChain::authority_info, GNS_ResolverHandle::dht_heap_node, AuthorityChain::dns_authority, AuthorityChain::dns_handle, GNS_ResolverHandle::dns_request, GNS_ResolverHandle::dns_result_head, GNS_ResolverHandle::dns_result_tail, Gns2DnsPending::dns_rh, GNS_ResolverHandle::get_handle, AuthorityChain::gns_authority, GNS_resolver_lookup_cancel_(), GNUNET_assert, GNUNET_CONTAINER_DLL_insert, GNUNET_CONTAINER_DLL_remove, GNUNET_CONTAINER_heap_remove_node(), GNUNET_DHT_get_stop(), GNUNET_DNSSTUB_resolve_cancel(), GNUNET_DNSSTUB_stop(), GNUNET_ERROR_TYPE_DEBUG, GNUNET_free, GNUNET_log, GNUNET_NAMECACHE_cancel(), GNUNET_NO, GNUNET_RESOLVER_request_cancel(), GNUNET_REVOCATION_query_cancel(), GNUNET_SCHEDULER_add_now(), GNUNET_SCHEDULER_cancel(), AuthorityChain::gp_head, AuthorityChain::gp_tail, AuthorityChain::label, GNS_ResolverHandle::leho, GNS_ResolverHandle::name, GNS_ResolverHandle::namecache_qe, GNS_ResolverHandle::prefix, GNS_ResolverHandle::rev_check, Gns2DnsPending::rh, AuthorityChain::rh, rlh_head, rlh_tail, GNS_ResolverHandle::std_resolve, and GNS_ResolverHandle::task_id.
Referenced by client_disconnect_cb(), GNS_interceptor_done(), GNS_resolver_done(), GNS_resolver_lookup_cancel_(), and transmit_lookup_dns_result().
void GNS_resolver_init | ( | struct GNUNET_NAMECACHE_Handle * | nc, |
struct GNUNET_DHT_Handle * | dht, | ||
const struct GNUNET_CONFIGURATION_Handle * | c, | ||
unsigned long long | max_bg_queries | ||
) |
Initialize the resolver.
Initialize the resolver subsystem.
nc | the namecache handle |
dht | the dht handle |
c | configuration handle |
max_bg_queries | maximum number of parallel background queries in dht |
Definition at line 3083 of file gnunet-service-gns_resolver.c.
References cfg, dht, dht_handle, dht_lookup_heap, disable_cache, GNUNET_CONFIGURATION_get_value_yesno(), GNUNET_CONTAINER_heap_create(), GNUNET_CONTAINER_HEAP_ORDER_MIN, GNUNET_ERROR_TYPE_WARNING, GNUNET_log, GNUNET_YES, max_allowed_background_queries, namecache_handle, and nc.
Referenced by run().
void GNS_resolver_done | ( | void | ) |
Shutdown resolver.
Cleanup resolver: Terminate pending lookups.
Definition at line 3107 of file gnunet-service-gns_resolver.c.
References co_head, co_tail, dht_handle, dht_lookup_heap, GNS_resolver_lookup_cancel(), GNUNET_CONTAINER_DLL_remove, GNUNET_CONTAINER_heap_destroy(), GNUNET_free, GNUNET_NAMECACHE_cancel(), namecache_handle, CacheOps::namecache_qe_cache, GNS_ResolverHandle::proc, GNS_ResolverHandle::proc_cls, and rlh_head.
Referenced by shutdown_task().
|
static |
Our handle to the namecache service.
Definition at line 424 of file gnunet-service-gns_resolver.c.
Referenced by GNS_resolver_done(), GNS_resolver_init(), handle_dht_response(), and recursive_gns_resolution_namecache().
|
static |
Resolver handle to the dht.
Definition at line 429 of file gnunet-service-gns_resolver.c.
Referenced by GNS_resolver_done(), GNS_resolver_init(), and start_dht_request().
|
static |
Heap for limiting parallel DHT lookups.
Definition at line 434 of file gnunet-service-gns_resolver.c.
Referenced by GNS_resolver_done(), GNS_resolver_init(), and start_dht_request().
|
static |
Maximum amount of parallel queries to the DHT.
Definition at line 439 of file gnunet-service-gns_resolver.c.
Referenced by GNS_resolver_init(), and start_dht_request().
|
static |
Head of resolver lookup list.
Definition at line 444 of file gnunet-service-gns_resolver.c.
Referenced by GNS_resolver_done(), GNS_resolver_lookup(), GNS_resolver_lookup_cancel(), and handle_gns2dns_result().
|
static |
Tail of resolver lookup list.
Definition at line 449 of file gnunet-service-gns_resolver.c.
Referenced by GNS_resolver_lookup(), GNS_resolver_lookup_cancel(), and handle_gns2dns_result().
|
static |
Organized in a DLL.
Definition at line 454 of file gnunet-service-gns_resolver.c.
Referenced by GNS_resolver_done(), handle_dht_response(), and namecache_cache_continuation().
|
static |
Organized in a DLL.
Definition at line 459 of file gnunet-service-gns_resolver.c.
Referenced by GNS_resolver_done(), handle_dht_response(), and namecache_cache_continuation().
|
static |
Use namecache.
Definition at line 464 of file gnunet-service-gns_resolver.c.
Referenced by GNS_resolver_init(), handle_dht_response(), and recursive_gns_resolution_namecache().
|
static |
Global configuration.
Definition at line 469 of file gnunet-service-gns_resolver.c.
Referenced by GNS_resolver_init(), and recursive_gns_resolution_revocation().