/* this is temp function for debugging wire2rr */
/* do NOT pass compressed data here :p */
+#if 0
+DOES NOT COMPILE ANY MORE DUE TO void*
ldns_status
ldns_rdf2buffer_dname(ldns_buffer *output, ldns_rdf *dname)
{
return ldns_buffer_status(output);
}
+#endif
ldns_status
ldns_rdf2buffer_int8(ldns_buffer *output, ldns_rdf *rdf)
case LDNS_RDF_TYPE_NONE:
break;
case LDNS_RDF_TYPE_DNAME:
- res = ldns_rdf2buffer_dname(buffer, rdf);
+ /*res = ldns_rdf2buffer_dname(buffer, rdf);*/
break;
case LDNS_RDF_TYPE_INT8:
res = ldns_rdf2buffer_int8(buffer, rdf);
case LDNS_RDF_TYPE_NSAP:
res = ldns_rdf2buffer_nsap(buffer, rdf);
break;
+ case LDNS_RDF_TYPE_SERVICE:
+ /* XXX todo */
+ break;
}
return LDNS_STATUS_OK;
const ldns_rr_descriptor *descriptor;
if (ldns_rr_owner(rr)) {
- status = ldns_rdf2buffer_dname(output, ldns_rr_owner(rr));
+ /*status = ldns_rdf2buffer_dname(output, ldns_rr_owner(rr));*/
}
if (status != LDNS_STATUS_OK) {
return status;
LDNS_STATUS_MEM_ERR,
LDNS_STATUS_INTERNAL_ERR,
LDNS_STATUS_ERR,
- LDNS_STATUS_INT_EXP
+ LDNS_STATUS_INT_EXP,
+ LDNS_STATUS_INVALID_IP4
};
typedef enum ldns_enum_status ldns_status;
/** \brief The type of the data */
ldns_rdf_type _type;
/** \brief Pointer to the data (byte buffer) */
- uint8_t *_data;
+ void *_data;
};
typedef struct ldns_struct_rdf ldns_rdf;
/* prototypes */
-ldns_rdf *ldns_rdf_new(uint16_t s, ldns_rdf_type t, uint8_t *d);
uint16_t ldns_rdf_size(ldns_rdf *);
void ldns_rdf_set_size(ldns_rdf *, uint16_t);
void ldns_rdf_set_type(ldns_rdf *, ldns_rdf_type);
-void ldns_rdf_set_data(ldns_rdf *, uint8_t *);
+void ldns_rdf_set_data(ldns_rdf *, void *);
ldns_rdf_type ldns_rdf_get_type(ldns_rdf *);
-ldns_rdf *ldns_rdf_new(uint16_t, ldns_rdf_type, uint8_t *);
+ldns_rdf *ldns_rdf_new(uint16_t, ldns_rdf_type, void *);
uint8_t *ldns_rdf_data(ldns_rdf *);
void ldns_rdf_free(ldns_rdf *);
syn keyword ldnsMacro LDNS_STATUS_INTERNAL_ERR
syn keyword ldnsMacro LDNS_STATUS_INT_EXP
syn keyword ldnsMacro LDNS_STATUS_ERR
+syn keyword ldnsMacro LDNS_STATUS_INVALID_IP4
" ldns/resolver.h
syn keyword ldnsType ldns_resolver
}
void
-ldns_rdf_set_data(ldns_rdf *rd, uint8_t *d)
+ldns_rdf_set_data(ldns_rdf *rd, void *d)
{
/* only copy the pointer */
rd->_data = d;
* fill it and return it
*/
ldns_rdf *
-ldns_rdf_new(uint16_t s, ldns_rdf_type t, uint8_t *d)
+ldns_rdf_new(uint16_t s, ldns_rdf_type t, void *d)
{
ldns_rdf *rd;
rd = MALLOC(ldns_rdf);
}
/**
- * convert .... into wireformat
+ * convert a dname string into wireformat
* \param[in] rd the rdf where to put the data
* \param[in] str the string to be converted
* \return ldns_status
+ *
+ * No special care is taken, all dots are translated into
+ * label seperators.
*/
ldns_status
ldns_str2rdf_dname(ldns_rdf **rd, const uint8_t* str)
ldns_status
ldns_str2rdf_a(ldns_rdf **rd, const uint8_t* str)
{
+ in_addr_t address;
+ uint16_t *r = NULL;
+
+ if (inet_pton(AF_INET, (char*)str, &address) != 1) {
+ return LDNS_STATUS_INVALID_IP4;
+ } else {
+ *rd = ldns_rdf_new(sizeof(address), LDNS_RDF_TYPE_A, &address);
+ }
return LDNS_STATUS_OK;
}