ldns_pkt_new, ldns_pkt_free, ldns_pkt_print, ldns_pkt_query_new, ldns_pkt_query_new_frm_str, ldns_pkt_reply_type | ldns_pkt
# gets
-ldns_pkt_id, ldns_pkt_qr, ldns_pkt_aa, ldns_pkt_tc, ldns_pkt_rd, ldns_pkt_cd, ldns_pkt_ra, ldns_pkt_ad, ldns_pkt_opcode, ldns_pkt_rcode, ldns_pkt_qdcount, ldns_pkt_ancount, ldns_pkt_nscount, ldns_pkt_arcount, ldns_pkt_answerfrom, ldns_pkt_when, ldns_pkt_querytime, ldns_pkt_size, ldns_pkt_tsig, ldns_pkt_question, ldns_pkt_answer, ldns_pkt_authority, ldns_pkt_additional, ldns_pkt_xxsection, ldns_pkt_rr_list_by_name, ldns_pkt_rr_list_by_type, ldns_pkt_rr_list_by_name_and_type | ldns_pkt
-
+ldns_pkt_id, ldns_pkt_qr, ldns_pkt_aa, ldns_pkt_tc, ldns_pkt_rd, ldns_pkt_cd, ldns_pkt_ra, ldns_pkt_ad, ldns_pkt_opcode, ldns_pkt_rcode, ldns_pkt_qdcount, ldns_pkt_ancount, ldns_pkt_nscount, ldns_pkt_arcount, ldns_pkt_answerfrom, ldns_pkt_when, ldns_pkt_querytime, ldns_pkt_size, ldns_pkt_tsig, ldns_pkt_question, ldns_pkt_answer, ldns_pkt_authority, ldns_pkt_additional, ldns_pkt_get_section, ldns_pkt_rr_list_by_name, ldns_pkt_rr_list_by_type, ldns_pkt_rr_list_by_name_and_type | ldns_pkt
# sets
-ldns_pkt_set_flags, ldns_pkt_set_id, ldns_pkt_set_qr, ldns_pkt_set_aa, ldns_pkt_set_tc, ldns_pkt_set_rd, ldns_pkt_set_cd, ldns_pkt_set_ra, ldns_pkt_set_ad, ldns_pkt_set_opcode, ldns_pkt_set_rcode, ldns_pkt_set_qdcount, ldns_pkt_set_ancount, ldns_pkt_set_nscount, ldns_pkt_set_arcount, ldns_pkt_set_answerfrom, ldns_pkt_set_querytime, ldns_pkt_set_size, ldns_pkt_set_when, ldns_pkt_set_xxcount, ldns_pkt_set_tsig | ldns_pkt
-
+ldns_pkt_set_flags, ldns_pkt_set_id, ldns_pkt_set_qr, ldns_pkt_set_aa, ldns_pkt_set_tc, ldns_pkt_set_rd, ldns_pkt_set_cd, ldns_pkt_set_ra, ldns_pkt_set_ad, ldns_pkt_set_opcode, ldns_pkt_set_rcode, ldns_pkt_set_qdcount, ldns_pkt_set_ancount, ldns_pkt_set_nscount, ldns_pkt_set_arcount, ldns_pkt_set_answerfrom, ldns_pkt_set_querytime, ldns_pkt_set_size, ldns_pkt_set_when, ldns_pkt_set_section_count, ldns_pkt_set_tsig | ldns_pkt
# EDNS0
ldns_pkt_edns, ldns_pkt_edns_udp_size, ldns_pkt_edns_extended_rcode, ldns_pkt_edns_version, ldns_pkt_edns_z, ldns_pkt_edns_data, ldns_pkt_set_edns_udp_size, ldns_pkt_set_edns_extended_rcode, ldns_pkt_set_edns_version, ldns_pkt_set_edns_z, ldns_pkt_set_edns_data | ldns_pkt
ldns_rr_list *ldns_pkt_answer(const ldns_pkt *p);
ldns_rr_list *ldns_pkt_authority(const ldns_pkt *p);
ldns_rr_list *ldns_pkt_additional(const ldns_pkt *p);
-ldns_rr_list *ldns_pkt_xxsection(ldns_pkt *p, ldns_pkt_section s);
+ldns_rr_list *ldns_pkt_get_section(ldns_pkt *p, ldns_pkt_section s);
ldns_rr_list *ldns_pkt_rr_list_by_name(ldns_pkt *p, ldns_rdf *r, ldns_pkt_section s);
ldns_rr_list *ldns_pkt_rr_list_by_type(ldns_pkt *p, ldns_rr_type t, ldns_pkt_section s);
ldns_rr_list *ldns_pkt_rr_list_by_name_and_type(ldns_pkt *packet, ldns_rdf *ownername, ldns_rr_type type, ldns_pkt_section sec);
void ldns_pkt_set_querytime(ldns_pkt *p, uint32_t t);
void ldns_pkt_set_size(ldns_pkt *p, size_t s);
void ldns_pkt_set_when(ldns_pkt *p, char *w);
-void ldns_pkt_set_xxcount(ldns_pkt *p, ldns_pkt_section s, uint16_t x);
+void ldns_pkt_set_section_count(ldns_pkt *p, ldns_pkt_section s, uint16_t x);
void ldns_pkt_set_tsig(ldns_pkt *p, ldns_rr *t);
/**
ldns_resolver* ldns_resolver_new_frm_file(const char *filename);
/**
- * Frees the allocated space for this resolver and all it's data
+ * Frees the allocated space for this resolver
* \param res resolver to free
*/
void ldns_resolver_free(ldns_resolver *res);
+/**
+ * Frees the allocated space for this resolver and all it's data
+ * \param res resolver to free
+ */
+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
void ldns_rr_list_deep_free(ldns_rr_list *rr_list);
/**
- * concatenates two ldns_rr_lists together.
+ * concatenates two ldns_rr_lists together. This modifies
+ * *left (to extend it and add the pointers from *right).
* \param[in] left the leftside
* \param[in] right the rightside
* \return a left with right concatenated to it
ldns_status ldns_rr_list_cat(ldns_rr_list *left, ldns_rr_list *right);
/**
- * concatenates two ldns_rr_lists together, but makes clones of the rr's (instead of pointer copying).
+ * concatenates two ldns_rr_lists together, but makes clones of the rr's
+ * (instead of pointer copying).
* \param[in] left the leftside
* \param[in] right the rightside
* \return a new rr_list with leftside/rightside concatenated
ldns_rr_list *all;
all = ldns_rr_list_cat_clone(
- ldns_pkt_xxsection(packet, LDNS_SECTION_QUESTION),
- ldns_pkt_xxsection(packet, LDNS_SECTION_ANSWER));
+ ldns_pkt_get_section(packet, LDNS_SECTION_QUESTION),
+ ldns_pkt_get_section(packet, LDNS_SECTION_ANSWER));
all = ldns_rr_list_cat_clone(all,
- ldns_pkt_xxsection(packet, LDNS_SECTION_AUTHORITY));
+ ldns_pkt_get_section(packet, LDNS_SECTION_AUTHORITY));
all = ldns_rr_list_cat_clone(all,
- ldns_pkt_xxsection(packet, LDNS_SECTION_ADDITIONAL));
+ ldns_pkt_get_section(packet, LDNS_SECTION_ADDITIONAL));
return all;
}
ldns_rr_list *all, *all2;
all = ldns_rr_list_cat_clone(
- ldns_pkt_xxsection(packet, LDNS_SECTION_ANSWER),
- ldns_pkt_xxsection(packet, LDNS_SECTION_AUTHORITY));
+ ldns_pkt_get_section(packet, LDNS_SECTION_ANSWER),
+ ldns_pkt_get_section(packet, LDNS_SECTION_AUTHORITY));
all2 = ldns_rr_list_cat_clone(all,
- ldns_pkt_xxsection(packet, LDNS_SECTION_ADDITIONAL));
+ ldns_pkt_get_section(packet, LDNS_SECTION_ADDITIONAL));
ldns_rr_list_free(all);
return all2;
return NULL;
}
- rrs = ldns_pkt_xxsection(packet, sec);
+ rrs = ldns_pkt_get_section(packet, sec);
new = ldns_rr_list_new();
ret = NULL;
return NULL;
}
- rrs = ldns_pkt_xxsection(packet, sec);
+ rrs = ldns_pkt_get_section(packet, sec);
new = ldns_rr_list_new();
ret = NULL;
return NULL;
}
- rrs = ldns_pkt_xxsection(packet, sec);
+ rrs = ldns_pkt_get_section(packet, sec);
new = ldns_rr_list_new();
ret = NULL;
uint16_t rr_count;
uint16_t i;
- rrs = ldns_pkt_xxsection(pkt, sec);
+ rrs = ldns_pkt_get_section(pkt, sec);
if (!rrs) {
return NULL;
}
}
uint16_t
-ldns_pkt_xxcount(const ldns_pkt *packet, ldns_pkt_section s)
+ldns_pkt_section_count(const ldns_pkt *packet, ldns_pkt_section s)
{
switch(s) {
case LDNS_SECTION_QUESTION:
}
ldns_rr_list *
-ldns_pkt_xxsection(ldns_pkt *packet, ldns_pkt_section s)
+ldns_pkt_get_section(ldns_pkt *packet, ldns_pkt_section s)
{
switch(s) {
case LDNS_SECTION_QUESTION:
}
void
-ldns_pkt_set_xxcount(ldns_pkt *packet, ldns_pkt_section s, uint16_t count)
+ldns_pkt_set_section_count(ldns_pkt *packet, ldns_pkt_section s, uint16_t count)
{
switch(s) {
case LDNS_SECTION_QUESTION:
ldns_rr_list *rrs;
/* get the right rr list for this section */
- rrs = ldns_pkt_xxsection(packet, section);
+ rrs = ldns_pkt_get_section(packet, section);
if (!rrs) {
return false;
}
ldns_pkt_set_querytime(packet, 0);
ldns_pkt_set_answerfrom(packet, NULL);
ldns_pkt_set_when(packet, NULL);
- ldns_pkt_set_xxcount(packet, LDNS_SECTION_QUESTION, 0);
- ldns_pkt_set_xxcount(packet, LDNS_SECTION_ANSWER, 0);
- ldns_pkt_set_xxcount(packet, LDNS_SECTION_AUTHORITY, 0);
- ldns_pkt_set_xxcount(packet, LDNS_SECTION_ADDITIONAL, 0);
+ ldns_pkt_set_section_count(packet, LDNS_SECTION_QUESTION, 0);
+ ldns_pkt_set_section_count(packet, LDNS_SECTION_ANSWER, 0);
+ ldns_pkt_set_section_count(packet, LDNS_SECTION_AUTHORITY, 0);
+ ldns_pkt_set_section_count(packet, LDNS_SECTION_ADDITIONAL, 0);
ldns_pkt_set_edns_udp_size(packet, 0);
ldns_pkt_set_edns_extended_rcode(packet, 0);
/* set the new value in the resolver */
ldns_resolver_set_nameservers(r, nameservers);
- /* slide n in its slot */
- nameservers[ns_count] = ldns_rdf_clone(n);
+ /* slide n in its slot. */
+ nameservers[ns_count] = n;
ldns_resolver_incr_nameserver_count(r);
return LDNS_STATUS_OK;
}
}
void
-ldns_resolver_free(ldns_resolver *res)
+ldns_resolver_deep_free(ldns_resolver *res)
{
size_t i;
ldns_rdf_deep_free(res->_searchlist[i]);
}
}
- LDNS_FREE(res->_searchlist);
if (res->_nameservers) {
for (i = 0; i < res->_nameserver_count; i++) {
ldns_rdf_deep_free(res->_nameservers[i]);
}
}
+ LDNS_FREE(res->_searchlist);
+ LDNS_FREE(res->_nameservers);
+ LDNS_FREE(res);
+ }
+}
+
+void
+ldns_resolver_free(ldns_resolver *res)
+{
+ if (res) {
+ LDNS_FREE(res->_searchlist);
LDNS_FREE(res->_nameservers);
LDNS_FREE(res);
}
uint16_t l_rr_count;
uint16_t i;
- r_rr_count = 0;
-
if (left) {
l_rr_count = ldns_rr_list_rr_count(left);
} else {
if (right) {
r_rr_count = ldns_rr_list_rr_count(right);
} else {
- return LDNS_STATUS_NULL;
+ r_rr_count = 0;
}
if (l_rr_count + r_rr_count > LDNS_MAX_RR ) {
ldns_rr_list *cat;
l_rr_count = 0;
- r_rr_count = 0;
if (left) {
l_rr_count = ldns_rr_list_rr_count(left);
if (right) {
r_rr_count = ldns_rr_list_rr_count(right);
} else {
- return NULL;
+ r_rr_count = 0;
}
if (l_rr_count + r_rr_count > LDNS_MAX_RR ) {