From: Miek Gieben Date: Tue, 15 Mar 2005 09:42:15 +0000 (+0000) Subject: added -4/-6 switching to resolv. X-Git-Tag: release-0.50~252 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d7e13816834a0f91e4acf9bbcc7bd8d344ac8460;p=thirdparty%2Fldns.git added -4/-6 switching to resolv. -6: refuse to do ip4 resolving (discard ip4 nameservers) -4: opposite of 6 --- diff --git a/ldns/resolver.h b/ldns/resolver.h index eab88363..7c08f5bf 100644 --- a/ldns/resolver.h +++ b/ldns/resolver.h @@ -27,6 +27,10 @@ #define RESOLV_DEFDOMAIN 1 #define RESOLV_NAMESERVER 2 +#define LDNS_RESOLV_INETANY 0 +#define LDNS_RESOLV_INET 1 +#define LDNS_RESOLV_INET6 2 + /** * \brief Structure of a dns resolver * diff --git a/net.c b/net.c index b1d2f565..5a1471a1 100644 --- a/net.c +++ b/net.c @@ -71,6 +71,15 @@ ldns_send(ldns_resolver *r, ldns_pkt *query_pkt) ns = ldns_rdf2native_sockaddr_storage(ns_array[i]); + if ((ns->ss_family == AF_INET && + ldns_resolver_ip6(r) == RESOLV_INET6) + || + (ns->ss_family == AF_INET6 && + ldns_resolver_ip6(r) == RESOLV_INET)) { + /* mismatch, next please */ + continue; + } + /* setup some family specific stuff */ switch(ns->ss_family) { case AF_INET: diff --git a/resolver.c b/resolver.c index 8fafcdaf..26008b82 100644 --- a/resolver.c +++ b/resolver.c @@ -399,11 +399,6 @@ ldns_resolver_new(void) r->_searchlist = NULL; r->_nameservers = NULL; -#if 0 - if (!r->_searchlist || !r->_nameservers) { - return NULL; - } -#endif /* defaults are filled out */ ldns_resolver_set_searchlist_count(r, 0);