static void _fill_benchmark_dns_cache(DNSCache *cache, gint cache_size) { gint i; for (i = 0; i < cache_size; i++) { guint32 ni = htonl(i); dns_cache_store_dynamic(cache, AF_INET, (void *) &ni, positive_hostname, TRUE); } }
static void _fill_dns_cache(DNSCache *cache, gint cache_size) { gint i; for (i = 0; i < cache_size; i++) { guint32 ni = htonl(i); gboolean positive = i < (cache_size / 2); dns_cache_store_dynamic(cache, AF_INET, (void *) &ni, positive ? positive_hostname : negative_hostname, positive); } }
static const gchar * resolve_sockaddr_to_inet_or_inet6_hostname(gsize *result_len, GSockAddr *saddr, const HostResolveOptions *host_resolve_options) { const gchar *hname; gsize hname_len; gboolean positive; void *dnscache_key; dnscache_key = sockaddr_to_dnscache_key(saddr); hname = NULL; positive = FALSE; if (host_resolve_options->use_dns_cache) { if (dns_cache_lookup(saddr->sa.sa_family, dnscache_key, (const gchar **) &hname, &hname_len, &positive)) return hostname_apply_options_fqdn(hname_len, result_len, hname, positive, host_resolve_options); } if (!hname && host_resolve_options->use_dns && host_resolve_options->use_dns != 2) { #ifdef HAVE_GETNAMEINFO hname = resolve_address_using_getnameinfo(saddr, hostname_buffer, sizeof(hostname_buffer)); #else hname = resolve_address_using_gethostbyaddr(saddr, hostname_buffer, sizeof(hostname_buffer)); #endif positive = (hname != NULL); } if (!hname) { hname = g_sockaddr_format(saddr, hostname_buffer, sizeof(hostname_buffer), GSA_ADDRESS_ONLY); positive = FALSE; } if (host_resolve_options->use_dns_cache) dns_cache_store_dynamic(saddr->sa.sa_family, dnscache_key, hname, positive); return hostname_apply_options_fqdn(-1, result_len, hname, positive, host_resolve_options); }