Esempio n. 1
0
/* more sophisticated functions */
ldns_resolver *
ldns_resolver_new(void)
{
    ldns_resolver *r;

    r = LDNS_MALLOC(ldns_resolver);
    if (!r) {
        return NULL;
    }

    r->_searchlist = NULL;
    r->_nameservers = NULL;
    r->_rtt = NULL;

    /* defaults are filled out */
    ldns_resolver_set_searchlist_count(r, 0);
    ldns_resolver_set_nameserver_count(r, 0);
    ldns_resolver_set_usevc(r, 0);
    ldns_resolver_set_port(r, LDNS_PORT);
    ldns_resolver_set_domain(r, NULL);
    ldns_resolver_set_defnames(r, false);
    ldns_resolver_set_retry(r, 3);
    ldns_resolver_set_retrans(r, 2);
    ldns_resolver_set_fallback(r, true);
    ldns_resolver_set_fail(r, false);
    ldns_resolver_set_edns_udp_size(r, 0);
    ldns_resolver_set_dnssec(r, false);
    ldns_resolver_set_dnssec_cd(r, false);
    ldns_resolver_set_dnssec_anchors(r, NULL);
    ldns_resolver_set_ip6(r, LDNS_RESOLV_INETANY);
    ldns_resolver_set_igntc(r, false);
    ldns_resolver_set_recursive(r, false);
    ldns_resolver_set_dnsrch(r, true);

    /* randomize the nameserver to be queried
     * when there are multiple
     */
    ldns_resolver_set_random(r, true);

    ldns_resolver_set_debug(r, 0);

    r->_timeout.tv_sec = LDNS_DEFAULT_TIMEOUT_SEC;
    r->_timeout.tv_usec = LDNS_DEFAULT_TIMEOUT_USEC;

    /* TODO: fd=0 is actually a valid socket (stdin),
           replace with -1 */
    r->_socket = 0;
    r->_axfr_soa_count = 0;
    r->_axfr_i = 0;
    r->_cur_axfr_pkt = NULL;

    r->_tsig_keyname = NULL;
    r->_tsig_keydata = NULL;
    r->_tsig_algorithm = NULL;
    return r;
}
Esempio n. 2
0
void
ldns_resolver_push_searchlist(ldns_resolver *r, ldns_rdf *d)
{
	ldns_rdf **searchlist;
	size_t list_count;

	if (ldns_rdf_get_type(d) != LDNS_RDF_TYPE_DNAME) {
		return;
	}

	list_count = ldns_resolver_searchlist_count(r);
	searchlist = ldns_resolver_searchlist(r);

	searchlist = LDNS_XREALLOC(searchlist, ldns_rdf *, (list_count + 1));
	if (searchlist) {
		r->_searchlist = searchlist;

		searchlist[list_count] = ldns_rdf_clone(d);
		ldns_resolver_set_searchlist_count(r, list_count + 1);
	}
}