]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
deep_clone
authorMiek Gieben <miekg@NLnetLabs.nl>
Tue, 1 Mar 2005 13:53:32 +0000 (13:53 +0000)
committerMiek Gieben <miekg@NLnetLabs.nl>
Tue, 1 Mar 2005 13:53:32 +0000 (13:53 +0000)
TODO
dnssec.c
ldns/rdata.h
ldns/rr.h
rdata.c
resolver.c
rr.c

diff --git a/TODO b/TODO
index 6da427b0f810c2f2749d47bda9d522854fb1e8ea..d05b97cd0a4e513e4f94b4bae5a60a92bace2c10 100644 (file)
--- a/TODO
+++ b/TODO
@@ -2,7 +2,7 @@ Current TODO list
 
 Implementation:
 ---------------
-o Deep clone / deep free
+o deep free
 o check all conversion routines on missing types
        - wire2host
        - host2wire
@@ -12,10 +12,15 @@ o network code
        - tsig?
 o printing of signatures dates/times
 o DNSSEC
-       - signing?
+       - signing
 o Make a shared library and test compile some programs
 o Thread safety
 o ssl autoconf
+o create a bunch of small programs:
+       mx 
+       dig
+       host
+       ?
 
 
 Documentation:
@@ -24,16 +29,15 @@ o Crypto interface for dnssec
 o Doxygen
 o Manpages
 o Introduction
-o Tuturial
+o Tutorial
 o Webpage
 o Mailing list(s)
 
 To ponder and discuss:
 ----------------------
 o Second layer (higher level convenience functions)? (Later)
-  o Higherlevel functions, like search for this RR with this name in
-    these RRlists. Give me all RR's of this zone with this type. etc.
+  (some are already implemented)
 o Dependency on openSSL?
 o ldns_lookup_by_name works for types, classes
        should be shielded, only use ldns_get_class_by_name/type
-o rr_list or rr in dnssec functions or both?
+
index 02793820958250e2bf001a005d0dfc4ab74ae8da..921c5d4963cfc22d5ff7d8b77b5726b39dac1731 100644 (file)
--- a/dnssec.c
+++ b/dnssec.c
@@ -121,7 +121,7 @@ ldns_verify_rrsig(ldns_rr_list *rrset, ldns_rr *rrsig, ldns_rr_list *keys)
        ldns_rr_list *rrset_clone;
 
        /* clone the rrset so that we can fiddle with it */
-       rrset_clone = ldns_rr_list_clone(rrset);
+       rrset_clone = ldns_rr_list_deep_clone(rrset);
        
        /* create the buffers which will certainly hold the raw data */
        rawsig_buf = ldns_buffer_new(MAX_PACKETLEN);
index c9b3d09f721f5217668c18d9d40ec5179eca0766..e734cdc0fc2916df956237995c074e8485474b9a 100644 (file)
@@ -109,7 +109,7 @@ uint8_t         *ldns_rdf_data(const ldns_rdf *);
 void            ldns_rdf_free(ldns_rdf *);
 void            ldns_rdf_free_data(ldns_rdf *);
 struct sockaddr_storage * ldns_rdf2native_sockaddr_storage(ldns_rdf *);
-ldns_rdf       *ldns_rdf_clone(const ldns_rdf *);
+ldns_rdf       *ldns_rdf_deep_clone(const ldns_rdf *);
 int            ldns_rdf_compare(const ldns_rdf *, const ldns_rdf *);
 uint8_t                ldns_rdf2native_int8(ldns_rdf *);
 uint16_t       ldns_rdf2native_int16(ldns_rdf *);
index c0dd84f2df846ea376dcb98e015488a0fdb35328..fdc86f5b6d329104eaffc62f95acfba63e6b32ce 100644 (file)
--- a/ldns/rr.h
+++ b/ldns/rr.h
@@ -270,12 +270,12 @@ size_t ldns_rr_uncompressed_size(const ldns_rr *);
 int ldns_rr_compare(const ldns_rr *rr1, const ldns_rr *rr2);
 void ldns_rr_list_sort(ldns_rr_list *);
 
-ldns_rr *ldns_rr_clone(ldns_rr *rr);
+ldns_rr *ldns_rr_deep_clone(ldns_rr *rr);
 ldns_rr *ldns_rr_new_frm_str(const char *);
 ldns_rr *ldns_rr_list_pop_rr(ldns_rr_list *);
 ldns_rr *ldns_rr_set_pop_rr(ldns_rr_list *);
 ldns_rr_list *ldns_rr_list_cat(ldns_rr_list *, ldns_rr_list *);
-ldns_rr_list *ldns_rr_list_clone(ldns_rr_list *);
+ldns_rr_list *ldns_rr_list_deep_clone(ldns_rr_list *);
 void ldns_rr_list2canonical(ldns_rr_list *);
 void ldns_rr2canonical(ldns_rr *);
 
diff --git a/rdata.c b/rdata.c
index 87b03c56b0965ead970a76ef8422a4fd88a66572..cfb9b9675a5062aa81aaac6748eae03a2e84478b 100644 (file)
--- a/rdata.c
+++ b/rdata.c
@@ -219,7 +219,7 @@ ldns_rdf_new_frm_data(ldns_rdf_type type, uint16_t size, const void *data)
  * \return a new rdf structure
  */
 ldns_rdf *
-ldns_rdf_clone(const ldns_rdf *r)
+ldns_rdf_deep_clone(const ldns_rdf *r)
 {
        return (ldns_rdf_new_frm_data(
                                ldns_rdf_get_type(r),
index 5285954192dcd472bac512a2fd56c1e58b9c954f..2978680214a1920398d02ae34b61f1877a63d98b 100644 (file)
@@ -373,7 +373,7 @@ ldns_resolver_send(ldns_resolver *r, ldns_rdf *name, ldns_rr_type type, ldns_rr_
        }
        /* prepare a question pkt from the parameters
         * and then send this */
-       query_pkt = ldns_pkt_query_new(ldns_rdf_clone(name), type, class, flags);
+       query_pkt = ldns_pkt_query_new(ldns_rdf_deep_clone(name), type, class, flags);
        if (!query_pkt) {
                printf("Failed to generate pkt\n");
                return NULL;
@@ -416,7 +416,7 @@ ldns_axfr_start(ldns_resolver *resolver,
        }
        
         /* Create the query */
-       query = ldns_pkt_query_new(ldns_rdf_clone(domain),
+       query = ldns_pkt_query_new(ldns_rdf_deep_clone(domain),
                                   LDNS_RR_TYPE_AXFR,
                                   class,
                                   0);
@@ -498,7 +498,7 @@ ldns_axfr_next(ldns_resolver *resolver)
                        resolver->_cur_axfr_pkt = NULL;
                        return ldns_axfr_next(resolver);
                }
-               cur_rr = ldns_rr_clone(ldns_rr_list_rr(ldns_pkt_answer(resolver->_cur_axfr_pkt), resolver->_axfr_i));
+               cur_rr = ldns_rr_deep_clone(ldns_rr_list_rr(ldns_pkt_answer(resolver->_cur_axfr_pkt), resolver->_axfr_i));
                resolver->_axfr_i++;
                if (ldns_rr_get_type(cur_rr) == LDNS_RR_TYPE_SOA) {
                        resolver->_axfr_soa_count++;
diff --git a/rr.c b/rr.c
index 1d3192e88c65604be806801ee784e0fa56c18f38..1de1bc8e1dc0495eb3c4e4c0824bb8b466140f5e 100644 (file)
--- a/rr.c
+++ b/rr.c
@@ -931,7 +931,7 @@ ldns_get_rr_class_by_name(const char *name)
 }
 
 ldns_rr *
-ldns_rr_clone(ldns_rr *rr)
+ldns_rr_deep_clone(ldns_rr *rr)
 {
        uint16_t i;
        ldns_rr *new_rr;
@@ -940,13 +940,13 @@ ldns_rr_clone(ldns_rr *rr)
        if (!new_rr) {
                return NULL;
        }
-       ldns_rr_set_owner(new_rr, ldns_rdf_clone(ldns_rr_owner(rr)));
+       ldns_rr_set_owner(new_rr, ldns_rdf_deep_clone(ldns_rr_owner(rr)));
        ldns_rr_set_ttl(new_rr, ldns_rr_ttl(rr));
        ldns_rr_set_type(new_rr, ldns_rr_get_type(rr));
        ldns_rr_set_class(new_rr, ldns_rr_get_class(rr));
        
        for (i = 0; i < ldns_rr_rd_count(rr); i++) {
-               ldns_rr_push_rdf(new_rr, ldns_rdf_clone(ldns_rr_rdf(rr, i)));
+               ldns_rr_push_rdf(new_rr, ldns_rdf_deep_clone(ldns_rr_rdf(rr, i)));
        }
 
        return new_rr;
@@ -958,7 +958,7 @@ ldns_rr_clone(ldns_rr *rr)
  * \return the cloned rr list
  */
 ldns_rr_list *
-ldns_rr_list_clone(ldns_rr_list *rrlist)
+ldns_rr_list_deep_clone(ldns_rr_list *rrlist)
 {
        uint16_t i;
        ldns_rr_list *new_list;
@@ -969,7 +969,7 @@ ldns_rr_list_clone(ldns_rr_list *rrlist)
        }
        for (i = 0; i < ldns_rr_list_rr_count(rrlist); i++) {
                ldns_rr_list_push_rr(new_list,
-                               ldns_rr_clone(ldns_rr_list_rr(rrlist, i)));
+                               ldns_rr_deep_clone(ldns_rr_list_rr(rrlist, i)));
        }
        return new_list;
 }