]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
make ldns_getaddrinfo look more like the real thing
authorMiek Gieben <miekg@NLnetLabs.nl>
Tue, 3 May 2005 10:39:25 +0000 (10:39 +0000)
committerMiek Gieben <miekg@NLnetLabs.nl>
Tue, 3 May 2005 10:39:25 +0000 (10:39 +0000)
higher.c
ldns/higher.h

index 86c2d6a8db34f1d4b5e5c138dca60fddb749492c..a4d4a47d3ea2e600ea1365a940b9076ff73e1b93 100644 (file)
--- 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 *
index b8caf2efb6abe259b3eb0fea5c68d1a603357619..daaeb80115a4105974a041d7e3b77e551cebf2c5 100644 (file)
@@ -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);
 
 /**
  *