From: Miek Gieben Date: Tue, 3 May 2005 10:39:25 +0000 (+0000) Subject: make ldns_getaddrinfo look more like the real thing X-Git-Tag: release-0.50~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bbc973720b8cc16bc52afe1a5f99d29892669b6c;p=thirdparty%2Fldns.git make ldns_getaddrinfo look more like the real thing --- diff --git a/higher.c b/higher.c index 86c2d6a8..a4d4a47d 100644 --- a/higher.c +++ b/higher.c @@ -188,26 +188,41 @@ ldns_get_rr_list_hosts_frm_file(char *filename) return names; } -ldns_rr_list * -ldns_getaddrinfo(ldns_resolver *res, ldns_rdf *node, ldns_rr_class c) +int +ldns_getaddrinfo(ldns_resolver *res, ldns_rdf *node, ldns_rr_class c, ldns_rr_list **ret) { ldns_rdf_type t; + int names_found; + ldns_resolver *r; t = ldns_rdf_get_type(node); + names_found = 0; + + if (res == NULL) { + /* prepare a new resolver, using /etc/resolv.conf is a guide */ + r = ldns_resolver_new_frm_file(NULL); + if (!r) { + return 0; + } else { + r = res; + } + } if (t == LDNS_RDF_TYPE_DNAME) { /* we're asked to query for a name */ - return ldns_get_rr_list_addr_by_name( - res, node, c, 0); + *ret = ldns_get_rr_list_addr_by_name( + r, node, c, 0); + names_found = ldns_rr_list_rr_count(*ret); } if (t == LDNS_RDF_TYPE_A || t == LDNS_RDF_TYPE_AAAA) { /* an address */ - return ldns_get_rr_list_name_by_addr( - res, node, c, 0); + *ret = ldns_get_rr_list_name_by_addr( + r, node, c, 0); + names_found = ldns_rr_list_rr_count(*ret); } - return NULL; + return names_found; } ldns_rr_list * diff --git a/ldns/higher.h b/ldns/higher.h index b8caf2ef..daaeb801 100644 --- a/ldns/higher.h +++ b/ldns/higher.h @@ -62,11 +62,14 @@ ldns_rr_list *ldns_get_rr_list_hosts_frm_file(char *filename); * and ldns_get_rr_list_addr_by_name. It's name is from the getaddrinfo() * library call. It tries to mimic that call, but without the lowlevel * stuff. - * \param[in] res The resolver to use + * \param[in] res The resolver. If this value is NULL then a resolver will + * be created by ldns_getaddrinfo. * \param[in] node the name or ip address to look up * \param[in] c the class to look in + * \param[out] list put the found RR's in this list + * \return the number of RR found. */ -ldns_rr_list *ldns_getaddrinfo(ldns_resolver *res, ldns_rdf *node, ldns_rr_class c); +int ldns_getaddrinfo(ldns_resolver *res, ldns_rdf *node, ldns_rr_class c, ldns_rr_list **list); /** *