summaryrefslogtreecommitdiff
path: root/host2str.c
diff options
context:
space:
mode:
Diffstat (limited to 'host2str.c')
-rw-r--r--host2str.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/host2str.c b/host2str.c
index deeeaf634e63..9f2795afadba 100644
--- a/host2str.c
+++ b/host2str.c
@@ -410,6 +410,14 @@ ldns_rdf2buffer_str_int32(ldns_buffer *output, const ldns_rdf *rdf)
}
ldns_status
+ldns_rdf2buffer_str_int64(ldns_buffer *output, const ldns_rdf *rdf)
+{
+ uint64_t data = ldns_read_uint64(ldns_rdf_data(rdf));
+ ldns_buffer_printf(output, "%llu", (unsigned long long) data);
+ return ldns_buffer_status(output);
+}
+
+ldns_status
ldns_rdf2buffer_str_time(ldns_buffer *output, const ldns_rdf *rdf)
{
/* create a YYYYMMDDHHMMSS string if possible */
@@ -1225,6 +1233,34 @@ ldns_rdf2buffer_str_eui64(ldns_buffer *output, const ldns_rdf *rdf)
}
ldns_status
+ldns_rdf2buffer_str_unquoted(ldns_buffer *output, const ldns_rdf *rdf)
+{
+ size_t amount, i;
+ uint8_t ch;
+ if(ldns_rdf_size(rdf) < 1) {
+ return LDNS_STATUS_WIRE_RDATA_ERR;
+ }
+ if((int)ldns_rdf_size(rdf) < (int)ldns_rdf_data(rdf)[0] + 1) {
+ return LDNS_STATUS_WIRE_RDATA_ERR;
+ }
+ amount = ldns_rdf_data(rdf)[0];
+ for(i=0; i<amount; i++) {
+ ch = ldns_rdf_data(rdf)[1+i];
+ if (isprint((int)ch) || ch == '\t') {
+ if (ch == '\"' || ch == '\\' || ch == '\'' ||
+ ch == '(' || ch == ')' || isspace((int)ch))
+ ldns_buffer_printf(output, "\\%c", ch);
+ else
+ ldns_buffer_printf(output, "%c", ch);
+ } else {
+ ldns_buffer_printf(output, "\\%03u",
+ (unsigned)(uint8_t) ch);
+ }
+ }
+ return ldns_buffer_status(output);
+}
+
+ldns_status
ldns_rdf2buffer_str_tag(ldns_buffer *output, const ldns_rdf *rdf)
{
size_t nchars;
@@ -1386,6 +1422,8 @@ ldns_rdf2buffer_str_amtrelay(ldns_buffer *output, const ldns_rdf *rdf)
precedence, discovery_optional, relay_type);
if (relay)
(void) ldns_rdf2buffer_str(output, relay);
+ else
+ ldns_buffer_printf(output, ".");
ldns_rdf_deep_free(relay);
return ldns_buffer_status(output);
@@ -1644,6 +1682,10 @@ ldns_rdf2buffer_str_fmt(ldns_buffer *buffer,
case LDNS_RDF_TYPE_INT32:
res = ldns_rdf2buffer_str_int32(buffer, rdf);
break;
+ case LDNS_RDF_TYPE_INT64:
+ case LDNS_RDF_TYPE_IPN:
+ res = ldns_rdf2buffer_str_int64(buffer, rdf);
+ break;
case LDNS_RDF_TYPE_PERIOD:
res = ldns_rdf2buffer_str_period(buffer, rdf);
break;
@@ -1726,6 +1768,9 @@ ldns_rdf2buffer_str_fmt(ldns_buffer *buffer,
case LDNS_RDF_TYPE_EUI64:
res = ldns_rdf2buffer_str_eui64(buffer, rdf);
break;
+ case LDNS_RDF_TYPE_UNQUOTED:
+ res = ldns_rdf2buffer_str_unquoted(buffer, rdf);
+ break;
case LDNS_RDF_TYPE_TAG:
res = ldns_rdf2buffer_str_tag(buffer, rdf);
break;
@@ -2545,6 +2590,18 @@ ldns_edns_ede2buffer_str(ldns_buffer* output, uint8_t* data, size_t len)
case LDNS_EDE_TOO_EARLY:
ldns_buffer_printf(output, " 26 (Too Early)");
break;
+ case LDNS_EDE_UNSUPPORTED_NSEC3_ITERATIONS_VALUE:
+ ldns_buffer_printf(output, " 27 (Unsupported NSEC3 Iterations Value)");
+ break;
+ case LDNS_EDE_UNABLE_TO_CONFORM_TO_POLICY:
+ ldns_buffer_printf(output, " 28 (Unable to conform to policy)");
+ break;
+ case LDNS_EDE_SYNTHESIZED:
+ ldns_buffer_printf(output, " 29 (Synthesized)");
+ break;
+ case LDNS_EDE_INVALID_QUERY_TYPE:
+ ldns_buffer_printf(output, " 30 (Invalid Query Type)");
+ break;
default:
ldns_buffer_printf(output, " %02x", data[0]);
ldns_buffer_printf(output, " %02x", data[1]);
@@ -2773,6 +2830,9 @@ ldns_pkt2buffer_str_fmt(ldns_buffer *output,
if (ldns_pkt_edns_do(pkt)) {
ldns_buffer_printf(output, " do");
}
+ if (ldns_pkt_edns_co(pkt)) {
+ ldns_buffer_printf(output, " co");
+ }
/* the extended rcode is the value set, shifted four bits,
* and or'd with the original rcode */
if (ldns_pkt_edns_extended_rcode(pkt)) {