Implementation:
---------------
-o Deep clone / deep free
+o deep free
o check all conversion routines on missing types
- wire2host
- host2wire
- 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:
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?
+
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);
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 *);
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 *);
* \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),
}
/* 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;
}
/* 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);
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++;
}
ldns_rr *
-ldns_rr_clone(ldns_rr *rr)
+ldns_rr_deep_clone(ldns_rr *rr)
{
uint16_t i;
ldns_rr *new_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;
* \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;
}
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;
}