]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
all network code should be in net.c/net.h
authorMiek Gieben <miekg@NLnetLabs.nl>
Thu, 8 Dec 2005 10:17:03 +0000 (10:17 +0000)
committerMiek Gieben <miekg@NLnetLabs.nl>
Thu, 8 Dec 2005 10:17:03 +0000 (10:17 +0000)
ldns/net.h
ldns/resolver.h
net.c
resolver.c

index 43faa085f5a6724d69fb681baea64ff8509efea1..c0961876dd30250a11c8b37fc0ca1fffa629a64a 100644 (file)
@@ -147,4 +147,14 @@ struct sockaddr_storage * ldns_rdf2native_sockaddr_storage(const ldns_rdf *rd, u
  */
 ldns_rdf * ldns_sockaddr_storage2rdf(struct sockaddr_storage *sock, uint16_t *port);
 
+/**
+ * Prepares the resolver for an axfr query
+ * The query is sent and the answers can be read with ldns_axfr_next
+ * \param[in] resolver the resolver to use
+ * \param[in] domain the domain to exfr
+ * \param[in] c the class to use
+ * \return ldns_status the status of the transfer
+ */
+ldns_status ldns_axfr_start(ldns_resolver *resolver, ldns_rdf *domain, ldns_rr_class c);
+
 #endif  /* !_LDNS_NET_H */
index be84c79cf88a25f2dbd83e5dc2fede5daae18bcc..f599c721156e53a265cbb04f5d78f028a6f9ddd2 100644 (file)
@@ -288,16 +288,6 @@ void ldns_resolver_free(ldns_resolver *res);
  */     
 void ldns_resolver_deep_free(ldns_resolver *res);
 
-/**
- * Prepares the resolver for an axfr query
- * The query is sent and the answers can be read with ldns_axfr_next
- * \param[in] resolver the resolver to use
- * \param[in] domain the domain to exfr
- * \param[in] c the class to use
- * \return ldns_status the status of the transfer
- */
-ldns_status ldns_axfr_start(ldns_resolver *resolver, ldns_rdf *domain, ldns_rr_class c);
-
 /**
  *  get the next stream of RRs in a AXFR 
  * \param[in] resolver the resolver to use. First ldns_axfr_start() must be
diff --git a/net.c b/net.c
index e7371e65c7515f81296995562d7622a71f2fa00f..8583765fd40828b53193bb8efbc2114ba55b51d2 100644 (file)
--- a/net.c
+++ b/net.c
@@ -454,6 +454,7 @@ ldns_tcp_send(uint8_t **result,  ldns_buffer *qbin, const struct sockaddr_storag
  * all networking code is contained in one file
  */
 
+/* code from rdata.c */
 struct sockaddr_storage *
 ldns_rdf2native_sockaddr_storage(const ldns_rdf *rd, uint16_t port, size_t *size)
 {
@@ -490,6 +491,7 @@ ldns_rdf2native_sockaddr_storage(const ldns_rdf *rd, uint16_t port, size_t *size
         }
 }
 
+/* code from rdata.c */
 /* the other way around - for lua-ldns */
 ldns_rdf *
 ldns_sockaddr_storage2rdf(struct sockaddr_storage *sock, uint16_t *port)
@@ -525,3 +527,67 @@ ldns_sockaddr_storage2rdf(struct sockaddr_storage *sock, uint16_t *port)
         }
         return addr;
 }
+
+/* code from resolver.c */
+ldns_status
+ldns_axfr_start(ldns_resolver *resolver,
+                ldns_rdf *domain,
+                ldns_rr_class class)
+{
+        ldns_pkt *query;
+        ldns_buffer *query_wire;
+
+        struct sockaddr_storage *ns;
+        size_t ns_len = 0;
+        ldns_status status;
+
+        if (!resolver || ldns_resolver_nameserver_count(resolver) < 1) {
+                return LDNS_STATUS_ERR;
+        }
+
+        query = ldns_pkt_query_new(ldns_rdf_clone(domain),
+                                   LDNS_RR_TYPE_AXFR,
+                                   class,
+                                   0);
+
+        if (!query) {
+                return LDNS_STATUS_ADDRESS_ERR;
+        }
+        /* For AXFR, we have to make the connection ourselves */
+        ns = ldns_rdf2native_sockaddr_storage(resolver->_nameservers[0],
+                        ldns_resolver_port(resolver), &ns_len);
+
+        resolver->_socket = ldns_tcp_connect(ns, (socklen_t)ns_len, ldns_resolver_timeout(resolver));
+        if (resolver->_socket == 0) {
+                ldns_pkt_free(query);
+                LDNS_FREE(ns);
+                return LDNS_STATUS_NETWORK_ERR;
+        }
+
+        /* Convert the query to a buffer          * Is this necessary?
+         */
+        query_wire = ldns_buffer_new(LDNS_MAX_PACKETLEN);
+        status = ldns_pkt2buffer_wire(query_wire, query);
+        if (status != LDNS_STATUS_OK) {
+                ldns_pkt_free(query);
+                LDNS_FREE(ns);
+                return status;
+        }
+        /* Send the query */
+        if (ldns_tcp_send_query(query_wire, resolver->_socket, ns, (socklen_t)ns_len) == 0) {
+                ldns_pkt_free(query);
+                ldns_buffer_free(query_wire);
+                LDNS_FREE(ns);
+                return LDNS_STATUS_NETWORK_ERR;
+        }
+
+        ldns_pkt_free(query);
+        ldns_buffer_free(query_wire);
+        LDNS_FREE(ns);
+
+        /*
+         * The AXFR is done once the second SOA record is sent
+         */
+        resolver->_axfr_soa_count = 0;
+        return LDNS_STATUS_OK;
+}
index 026eb3a2cd083c7b005a6f32e33d19980eeb5af4..03ce00a7234895a50d9a0a952972ac4e73f1a6b9 100644 (file)
 #include <ldns/config.h>
 
 #include <ldns/dns.h>
-
 #include <strings.h>
 
 /* Access function for reading 
  * and setting the different Resolver 
- * options
- */
+ * options */
 
 /* read */
 uint16_t
@@ -837,73 +835,6 @@ ldns_resolver_bgsend()
        return 0;
 }
  
-ldns_status
-ldns_axfr_start(ldns_resolver *resolver, 
-                ldns_rdf *domain,
-                ldns_rr_class class)
-{
-        ldns_pkt *query;
-        ldns_buffer *query_wire;
-
-        struct sockaddr_storage *ns;
-        size_t ns_len = 0;
-        ldns_status status;
-
-        if (!resolver || ldns_resolver_nameserver_count(resolver) < 1) {
-               return LDNS_STATUS_ERR;
-       }
-       
-        /* Create the query */
-       query = ldns_pkt_query_new(ldns_rdf_clone(domain),
-                                  LDNS_RR_TYPE_AXFR,
-                                  class,
-                                  0);
-                                           
-
-       if (!query) {
-               return LDNS_STATUS_ADDRESS_ERR;
-       }
-       /* For AXFR, we have to make the connection ourselves */
-       ns = ldns_rdf2native_sockaddr_storage(resolver->_nameservers[0], 
-                       ldns_resolver_port(resolver), &ns_len);
-
-       resolver->_socket = ldns_tcp_connect(ns, (socklen_t)ns_len, ldns_resolver_timeout(resolver));
-       if (resolver->_socket == 0) {
-                       ldns_pkt_free(query);
-               LDNS_FREE(ns);
-               return LDNS_STATUS_NETWORK_ERR;
-       }
-       
-       /* Convert the query to a buffer
-        * Is this necessary?
-        */
-       query_wire = ldns_buffer_new(LDNS_MAX_PACKETLEN);
-       status = ldns_pkt2buffer_wire(query_wire, query);
-       if (status != LDNS_STATUS_OK) {
-                       ldns_pkt_free(query);
-               LDNS_FREE(ns);
-               return status;
-       }
-
-       /* Send the query */
-       if (ldns_tcp_send_query(query_wire, resolver->_socket, ns, (socklen_t)ns_len) == 0) {
-               ldns_pkt_free(query);
-               ldns_buffer_free(query_wire);
-               LDNS_FREE(ns);
-               return LDNS_STATUS_NETWORK_ERR;
-       }
-       
-       ldns_pkt_free(query);
-       ldns_buffer_free(query_wire);
-       LDNS_FREE(ns);
-
-       /*
-        * The AXFR is done once the second SOA record is sent
-        */
-       resolver->_axfr_soa_count = 0;
-       return LDNS_STATUS_OK;
-}
-
 ldns_rr *
 ldns_axfr_next(ldns_resolver *resolver)
 {