From: Miek Gieben Date: Thu, 24 Feb 2005 13:11:44 +0000 (+0000) Subject: added some rr_list functions: print X-Git-Tag: release-0.50~380 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e5a57f2a063f3697e669ec2588050bf52b57e616;p=thirdparty%2Fldns.git added some rr_list functions: print --- diff --git a/host2str.c b/host2str.c index c9ef2254..9ef2b5ce 100644 --- a/host2str.c +++ b/host2str.c @@ -820,6 +820,7 @@ ldns_rr_list2buffer_str(ldns_buffer *output, ldns_rr_list *list) for(i = 0; i < ldns_rr_list_rr_count(list); i++) { ldns_rr2buffer_str(output, ldns_rr_list_rr(list, i)); + ldns_buffer_printf(output, "\n"); } return ldns_buffer_status(output); } @@ -1042,6 +1043,21 @@ ldns_pkt2str(ldns_pkt *pkt) return result; } +char * +ldns_rr_list2str(ldns_rr_list *list) +{ + char *result = NULL; + ldns_buffer *tmp_buffer = ldns_buffer_new(MAX_PACKETLEN); /* XXX len? */ + + if (ldns_rr_list2buffer_str(tmp_buffer, list) == LDNS_STATUS_OK) { + /* export and return string, destroy rest */ + result = buffer2str(tmp_buffer); + } + + ldns_buffer_free(tmp_buffer); + return result; +} + void ldns_rdf_print(FILE *output, ldns_rdf *rdf) { @@ -1078,3 +1094,14 @@ ldns_pkt_print(FILE *output, ldns_pkt *pkt) FREE(str); } +void +ldns_rr_list_print(FILE *output, ldns_rr_list *lst) +{ + char *str = ldns_rr_list2str(lst); + if (str) { + fprintf(output, str); + } else { + fprintf(output, "Unable to convert rr_list to string\n"); + } + FREE(str); +} diff --git a/ldns/host2str.h b/ldns/host2str.h index 6db6894e..51cff0c8 100644 --- a/ldns/host2str.h +++ b/ldns/host2str.h @@ -118,4 +118,8 @@ void ldns_rr_print(FILE *output, ldns_rr *rr); */ void ldns_pkt_print(FILE *output, ldns_pkt *pkt); +ldns_status ldns_rr_list2buffer_str(ldns_buffer *, ldns_rr_list *); +void ldns_rr_list_print(FILE *, ldns_rr_list *); + + #endif diff --git a/packet.c b/packet.c index e011ba49..fa50724d 100644 --- a/packet.c +++ b/packet.c @@ -169,7 +169,10 @@ ldns_pkt_xxcount(ldns_pkt *packet, ldns_pkt_section s) case LDNS_SECTION_ADDITIONAL: return ldns_pkt_arcount(packet); case LDNS_SECTION_ANY: - return 0; + return ldns_pkt_qdcount(packet) + + ldns_pkt_ancount(packet) + + ldns_pkt_nscount(packet) + + ldns_pkt_arcount(packet); } return 0; } diff --git a/run-test9.c b/run-test9.c index 0bd91dfb..4ccfc84b 100644 --- a/run-test9.c +++ b/run-test9.c @@ -18,6 +18,7 @@ main(void) ldns_rdf *qname; ldns_rdf *nameserver; ldns_pkt *pkt; + ldns_rr_list *bla; /* init */ res = ldns_resolver_new(); @@ -39,12 +40,10 @@ main(void) pkt = ldns_resolver_send(res, qname, LDNS_RR_TYPE_A, 0, LDNS_RD); if (pkt) { ldns_pkt_print(stdout, pkt); + bla = ldns_pkt_authority(pkt); + + ldns_rr_list_print(stdout, bla); } - ldns_pkt_free(pkt); - - ldns_rdf_free(qname); - ldns_rdf_free(nameserver); - ldns_resolver_free(res); return 0; }