no|*)
;;
esac
+AC_ARG_ENABLE(rrtype-doa, AC_HELP_STRING([--enable-rrtype-doa], [Enable draft RR type DOA.]))
+case "$enable_rrtype_doa" in
+ yes)
+ AC_DEFINE_UNQUOTED([RRTYPE_DOA], [], [Define this to enable RR type DOA.])
+ ;;
+ no|*)
+ ;;
+esac
+
AC_SUBST(LIBSSL_CPPFLAGS)
AC_SUBST(LIBSSL_LDFLAGS)
ldns_rdf2buffer_str_b64(ldns_buffer *output, const ldns_rdf *rdf)
{
size_t size = ldns_b64_ntop_calculate_size(ldns_rdf_size(rdf));
- char *b64 = LDNS_XMALLOC(char, size);
- if(!b64) return LDNS_STATUS_MEM_ERR;
+ char *b64;
+
+ if (ldns_rdf_size(rdf) == 0) {
+ ldns_buffer_printf(output, "-");
+ return ldns_buffer_status(output);
+ } else
+ size = ldns_b64_ntop_calculate_size(ldns_rdf_size(rdf));
+
+ if (!(b64 = LDNS_XMALLOC(char, size)))
+ return LDNS_STATUS_MEM_ERR;
+
if (ldns_b64_ntop(ldns_rdf_data(rdf), ldns_rdf_size(rdf), b64, size)) {
ldns_buffer_printf(output, "%s", b64);
}
/** The bytes TTL, CLASS and length use up in an rr */
#define LDNS_RR_OVERHEAD 10
-/* The first fields are contiguous and can be referenced instantly */
-#define LDNS_RDATA_FIELD_DESCRIPTORS_COMMON 259
-
/**
LDNS_RR_TYPE_URI = 256, /* RFC 7553 */
LDNS_RR_TYPE_CAA = 257, /* RFC 6844 */
LDNS_RR_TYPE_AVC = 258, /* Cisco's DNS-AS RR, see www.dns-as.org */
+ LDNS_RR_TYPE_DOA = 259, /* draft-durand-doa-over-dns */
/** DNSSEC Trust Authorities */
LDNS_RR_TYPE_TA = 32768,
};
typedef enum ldns_enum_rr_type ldns_rr_type;
+/* The first fields are contiguous and can be referenced instantly */
+#define LDNS_RDATA_FIELD_DESCRIPTORS_COMMON (LDNS_RR_TYPE_DOA + 1)
+
/**
* Resource Record
*
LDNS_RDF_TYPE_TAG,
LDNS_RDF_TYPE_LONG_STR
};
+#ifdef RRTYPE_DOA
+static const ldns_rdf_type type_doa_wireformat[] = {
+ LDNS_RDF_TYPE_INT32,
+ LDNS_RDF_TYPE_INT32,
+ LDNS_RDF_TYPE_INT8,
+ LDNS_RDF_TYPE_STR,
+ LDNS_RDF_TYPE_B64
+};
+#endif
+
/** \endcond */
/** \cond */
#else
{LDNS_RR_TYPE_NULL, "TYPE258", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 },
#endif
+#ifdef RRTYPE_DOA
+ /* 259 */
+ {LDNS_RR_TYPE_DOA, "DOA", 5, 5, type_doa_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 },
+#else
+{LDNS_RR_TYPE_NULL, "TYPE259", 1, 1, type_0_wireformat, LDNS_RDF_TYPE_NONE, LDNS_RR_NO_COMPRESS, 0 },
+#endif
/* split in array, no longer contiguous */
uint8_t *buffer;
int16_t i;
+ if (*str == '-' && str[1] == '\0') {
+ *rd = ldns_rdf_new_frm_data(LDNS_RDF_TYPE_B64, 0, NULL);
+ return *rd ? LDNS_STATUS_OK : LDNS_STATUS_MEM_ERR;
+ }
+
buffer = LDNS_XMALLOC(uint8_t, ldns_b64_ntop_calculate_size(strlen(str)));
if(!buffer) {
return LDNS_STATUS_MEM_ERR;