From: Jelte Jansen Date: Wed, 22 Dec 2004 15:48:52 +0000 (+0000) Subject: prefixes X-Git-Tag: release-0.50~596 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1b336cf782b52a024d917cffff358f315aaea12a;p=thirdparty%2Fldns.git prefixes rr type string now found through descriptor --- diff --git a/host2str.c b/host2str.c index e262fc37..9c550964 100644 --- a/host2str.c +++ b/host2str.c @@ -19,7 +19,7 @@ #include -#include "util.h" +#include /* lookup tables partly stolen from nsd, is there better way? are these used somewhere else? */ @@ -56,57 +56,6 @@ ldns_lookup_table ldns_rr_classes[] = { { 0, NULL } }; -ldns_lookup_table ldns_rr_types[] = { - { LDNS_RR_TYPE_A, "A" }, - { LDNS_RR_TYPE_NS, "NS" }, - { LDNS_RR_TYPE_MD, "MD" }, - { LDNS_RR_TYPE_MF, "MF" }, - { LDNS_RR_TYPE_CNAME, "CNAME" }, - { LDNS_RR_TYPE_SOA, "SOA" }, - { LDNS_RR_TYPE_MB, "MB" }, - { LDNS_RR_TYPE_MG, "MG" }, - { LDNS_RR_TYPE_MR, "MR" }, - { LDNS_RR_TYPE_NULL, "NULL" }, - { LDNS_RR_TYPE_WKS, "WKS" }, - { LDNS_RR_TYPE_PTR, "PTR" }, - { LDNS_RR_TYPE_HINFO, "HINFO" }, - { LDNS_RR_TYPE_MINFO, "MINFO" }, - { LDNS_RR_TYPE_MX, "MX" }, - { LDNS_RR_TYPE_TXT, "TXT" }, - { LDNS_RR_TYPE_RP, "RP" }, - { LDNS_RR_TYPE_AFSDB, "AFSDB" }, - { LDNS_RR_TYPE_X25, "X25" }, - { LDNS_RR_TYPE_ISDN, "ISDN" }, - { LDNS_RR_TYPE_RT, "RT" }, - { LDNS_RR_TYPE_NSAP, "NSAP" }, - { LDNS_RR_TYPE_SIG, "SIG" }, - { LDNS_RR_TYPE_KEY, "KEY" }, - { LDNS_RR_TYPE_PX, "PX" }, - { LDNS_RR_TYPE_AAAA, "AAAA" }, - { LDNS_RR_TYPE_LOC, "LOC" }, - { LDNS_RR_TYPE_NXT, "NXT" }, - { LDNS_RR_TYPE_SRV, "SRV" }, - { LDNS_RR_TYPE_NAPTR, "NAPTR" }, - { LDNS_RR_TYPE_KX, "KX" }, - { LDNS_RR_TYPE_CERT, "CERT" }, - { LDNS_RR_TYPE_DNAME, "DNAME" }, - { LDNS_RR_TYPE_OPT, "OPT" }, - { LDNS_RR_TYPE_APL, "APL" }, - { LDNS_RR_TYPE_DS, "DS" }, - { LDNS_RR_TYPE_SSHFP, "SSHFP" }, - { LDNS_RR_TYPE_RRSIG, "RRSIG" }, - { LDNS_RR_TYPE_NSEC, "NSEC" }, - { LDNS_RR_TYPE_DNSKEY, "DNSKEY" }, - { LDNS_RR_TYPE_TSIG, "TSIG" }, - { LDNS_RR_TYPE_IXFR, "IXFR" }, - { LDNS_RR_TYPE_AXFR, "AXFR" }, - { LDNS_RR_TYPE_MAILB, "MAILB" }, - { LDNS_RR_TYPE_MAILA, "MAILA" }, - { LDNS_RR_TYPE_ANY, "ANY" }, - { 0, NULL } -}; - - /* TODO: general rdata2str or dname2str, with error checks and return status etc */ /* this is temp function for debugging wire2rr */ @@ -289,7 +238,8 @@ ldns_rr2buffer(ldns_buffer *output, ldns_rr *rr) uint16_t i; ldns_status status = LDNS_STATUS_OK; ldns_lookup_table *lt; - + const ldns_rr_descriptor *descriptor; + if (ldns_rr_owner(rr)) { status = ldns_rdf2buffer_dname(output, ldns_rr_owner(rr)); } @@ -297,20 +247,22 @@ ldns_rr2buffer(ldns_buffer *output, ldns_rr *rr) return status; } - lt = lookup_by_id(ldns_rr_classes, ldns_rr_get_class(rr)); + lt = ldns_lookup_by_id(ldns_rr_classes, ldns_rr_get_class(rr)); if (lt) { ldns_buffer_printf(output, "\t%s\t", lt->name); } else { ldns_buffer_printf(output, "\tCLASS%d\t", ldns_rr_get_class(rr)); } - - lt = lookup_by_id(ldns_rr_types, ldns_rr_get_type(rr)); - if (lt) { - ldns_buffer_printf(output, "%s\t", lt->name); + + descriptor = ldns_rr_descript(ldns_rr_get_type(rr)); + + if (descriptor->_name) { + ldns_buffer_printf(output, "%s\t", descriptor->_name); } else { ldns_buffer_printf(output, "TYPE%d\t", ldns_rr_get_type(rr)); } + for (i = 0; i < ldns_rr_rd_count(rr); i++) { status = ldns_rdf2buffer(output, ldns_rr_rdf(rr, i)); } diff --git a/ldns/host2str.h b/ldns/host2str.h index 449d0ed0..636c398c 100644 --- a/ldns/host2str.h +++ b/ldns/host2str.h @@ -10,6 +10,8 @@ #include #include +#include "util.h" + ldns_status ldns_rdf2buffer(ldns_buffer *buffer, ldns_rdf *rdf); ldns_status ldns_rr2buffer(ldns_buffer *buffer, ldns_rr *rr); ldns_status ldns_pkt2buffer(ldns_buffer *buffer, ldns_pkt *pkt); diff --git a/ldns/rr.h b/ldns/rr.h index 0a364111..5d50aab6 100644 --- a/ldns/rr.h +++ b/ldns/rr.h @@ -199,7 +199,6 @@ struct ldns_struct_rr_descriptor }; typedef struct ldns_struct_rr_descriptor ldns_rr_descriptor; - /* prototypes */ ldns_rr * ldns_rr_new(void); void ldns_rr_set_owner(ldns_rr *, ldns_rdf *); diff --git a/run-test0.c b/run-test0.c index f87a2cbc..fb00e92a 100644 --- a/run-test0.c +++ b/run-test0.c @@ -54,12 +54,9 @@ main(void) memcpy(rdf_data+10, "net", 3); rdf_data[13] = 0; rd_f = ldns_rdf_new(20, LDNS_RDF_TYPE_DNAME, rdf_data); - xprintf_rdf(rd_f); ldns_rr_push_rdf(rr, rd_f); - xprintf_rr(rr); - status = ldns_wire2pkt(&packet, wire, sizeof(wire)); if (status == LDNS_STATUS_OK) { printf("packet id: %d\n", (int) ldns_pkt_id(packet)); diff --git a/util.c b/util.c index 0a628378..b103717b 100644 --- a/util.c +++ b/util.c @@ -43,7 +43,7 @@ xprintf_rr(ldns_rr *rr) } ldns_lookup_table * -lookup_by_name(ldns_lookup_table *table, const char *name) +ldns_lookup_by_name(ldns_lookup_table *table, const char *name) { while (table->name != NULL) { if (strcasecmp(name, table->name) == 0) @@ -54,7 +54,7 @@ lookup_by_name(ldns_lookup_table *table, const char *name) } ldns_lookup_table * -lookup_by_id(ldns_lookup_table *table, int id) +ldns_lookup_by_id(ldns_lookup_table *table, int id) { while (table->name != NULL) { if (table->id == id) diff --git a/util.h b/util.h index ce2ecafa..a3850d3a 100644 --- a/util.h +++ b/util.h @@ -107,18 +107,15 @@ struct lookup_table { const char *name; }; -/* +/** * Looks up the table entry by name, returns NULL if not found. */ ldns_lookup_table *ldns_lookup_by_name(ldns_lookup_table table[], const char *name); -/* +/** * Looks up the table entry by id, returns NULL if not found. */ ldns_lookup_table *ldns_lookup_by_id(ldns_lookup_table table[], int id); -void xprintf_rdf(ldns_rdf *); -void xprintf_rr(ldns_rr *); - #endif /* !_UTIL_H */