str2wire.c File Reference

str2wire.c - read txt presentation of RRs More...

#include "config.h"
#include "sldns/str2wire.h"
#include "sldns/wire2str.h"
#include "sldns/sbuffer.h"
#include "sldns/parse.h"
#include "sldns/parseutil.h"
#include <ctype.h>

Macros

#define RET_OFFSET_MASK   (((unsigned)(~LDNS_WIREPARSE_MASK))>>LDNS_WIREPARSE_SHIFT)
 bits for the offset
 
#define RET_ERR(e, off)   ((int)(((e)&LDNS_WIREPARSE_MASK)|(((off)&RET_OFFSET_MASK)<<LDNS_WIREPARSE_SHIFT)))
 return an error
 
#define RET_ERR_SHIFT(e, move)   RET_ERR(LDNS_WIREPARSE_ERROR(e), LDNS_WIREPARSE_OFFSET(e)+(move));
 Move parse error but keep its ID.
 

Functions

static int sldns_str2wire_dname_buf_rel (const char *str, uint8_t *buf, size_t *olen, int *rel)
 
int sldns_str2wire_dname_buf (const char *str, uint8_t *buf, size_t *len)
 Convert text string into dname wireformat, mallocless, with user buffer. More...
 
int sldns_str2wire_dname_buf_origin (const char *str, uint8_t *buf, size_t *len, uint8_t *origin, size_t origin_len)
 Same as sldns_str2wire_dname_buf, but concatenates origin if the domain name is relative (does not end in '. More...
 
uint8_t * sldns_str2wire_dname (const char *str, size_t *len)
 Convert text string into dname wireformat. More...
 
static int rrinternal_get_owner (sldns_buffer *strbuf, uint8_t *rr, size_t *len, size_t *dname_len, uint8_t *origin, size_t origin_len, uint8_t *prev, size_t prev_len, char *token, size_t token_len)
 read owner name
 
static int rrinternal_get_ttl (sldns_buffer *strbuf, char *token, size_t token_len, int *not_there, uint32_t *ttl, uint32_t default_ttl)
 read ttl
 
static int rrinternal_get_class (sldns_buffer *strbuf, char *token, size_t token_len, int *not_there, uint16_t *cl)
 read class
 
static int rrinternal_get_type (sldns_buffer *strbuf, char *token, size_t token_len, int *not_there, uint16_t *tp)
 read type
 
static int rrinternal_write_typeclassttl (sldns_buffer *strbuf, uint8_t *rr, size_t len, size_t dname_len, uint16_t tp, uint16_t cl, uint32_t ttl, int question)
 put type, class, ttl into rr buffer
 
static const char * rrinternal_get_delims (sldns_rdf_type rdftype, size_t r_cnt, size_t r_max)
 find delimiters for type
 
static int sldns_rdf_type_maybe_quoted (sldns_rdf_type rdf_type)
 
static int rrinternal_get_quoted (sldns_buffer *strbuf, const char **delimiters, sldns_rdf_type rdftype)
 see if rdata is quoted
 
static int rrinternal_spool_hex (char *token, uint8_t *rr, size_t rr_len, size_t rr_cur_len, size_t *cur_hex_data_size, size_t hex_data_size)
 spool hex data into rdata
 
static int rrinternal_parse_unknown (sldns_buffer *strbuf, char *token, size_t token_len, uint8_t *rr, size_t *rr_len, size_t *rr_cur_len, size_t pre_data_pos)
 read unknown rr type format
 
static int rrinternal_parse_rdf (sldns_buffer *strbuf, char *token, size_t token_len, uint8_t *rr, size_t rr_len, size_t *rr_cur_len, sldns_rdf_type rdftype, uint16_t rr_type, size_t r_cnt, size_t r_max, size_t dname_len, uint8_t *origin, size_t origin_len)
 parse normal RR rdata element
 
static int sldns_parse_rdf_token (sldns_buffer *strbuf, char *token, size_t token_len, int *quoted, int *parens, size_t *pre_data_pos, const char *delimiters, sldns_rdf_type rdftype, size_t *token_strlen)
 Parse one rdf token. More...
 
static int sldns_affix_token (sldns_buffer *strbuf, char *token, size_t *token_len, int *quoted, int *parens, size_t *pre_data_pos, const char *delimiters, sldns_rdf_type rdftype, size_t *token_strlen)
 Add space and one more rdf token onto the existing token string.
 
static int sldns_str2wire_svcparam_key_cmp (const void *a, const void *b)
 
static int sldns_str2wire_check_svcbparams (uint8_t *rdata, uint16_t rdata_len)
 Add constraints to the SVCB RRs which involve the whole set.
 
static int rrinternal_parse_rdata (sldns_buffer *strbuf, char *token, size_t token_len, uint8_t *rr, size_t *rr_len, size_t dname_len, uint16_t rr_type, uint8_t *origin, size_t origin_len)
 parse rdata from string into rr buffer(-remainder after dname).
 
static int sldns_str2wire_rr_buf_internal (const char *str, uint8_t *rr, size_t *len, size_t *dname_len, uint32_t default_ttl, uint8_t *origin, size_t origin_len, uint8_t *prev, size_t prev_len, int question)
 
int sldns_str2wire_rr_buf (const char *str, uint8_t *rr, size_t *len, size_t *dname_len, uint32_t default_ttl, uint8_t *origin, size_t origin_len, uint8_t *prev, size_t prev_len)
 Convert text RR to wireformat, with user buffer. More...
 
int sldns_str2wire_rr_question_buf (const char *str, uint8_t *rr, size_t *len, size_t *dname_len, uint8_t *origin, size_t origin_len, uint8_t *prev, size_t prev_len)
 Same as sldns_str2wire_rr_buf, but there is no rdata, it returns an RR with zero rdata and no ttl. More...
 
uint16_t sldns_wirerr_get_type (uint8_t *rr, size_t len, size_t dname_len)
 Get the type of the RR. More...
 
uint16_t sldns_wirerr_get_class (uint8_t *rr, size_t len, size_t dname_len)
 Get the class of the RR. More...
 
uint32_t sldns_wirerr_get_ttl (uint8_t *rr, size_t len, size_t dname_len)
 Get the ttl of the RR. More...
 
uint16_t sldns_wirerr_get_rdatalen (uint8_t *rr, size_t len, size_t dname_len)
 Get the rdata length of the RR. More...
 
uint8_t * sldns_wirerr_get_rdata (uint8_t *rr, size_t len, size_t dname_len)
 Get the rdata pointer of the RR. More...
 
uint8_t * sldns_wirerr_get_rdatawl (uint8_t *rr, size_t len, size_t dname_len)
 Get the rdata pointer of the RR. More...
 
const char * sldns_get_errorstr_parse (int e)
 Get reference to a constant string for the (parse) error. More...
 
char * sldns_strip_ws (char *line)
 Strip whitespace from the start and the end of line. More...
 
int sldns_fp2wire_rr_buf (FILE *in, uint8_t *rr, size_t *len, size_t *dname_len, struct sldns_file_parse_state *parse_state)
 Read one RR from zonefile with buffer for the data. More...
 
static int sldns_str2wire_svcparam_key_lookup (const char *key, size_t key_len)
 
static int sldns_str2wire_svcparam_port (const char *val, uint8_t *rd, size_t *rd_len)
 
static int sldns_str2wire_svcbparam_ipv4hint (const char *val, uint8_t *rd, size_t *rd_len)
 
static int sldns_str2wire_svcbparam_ipv6hint (const char *val, uint8_t *rd, size_t *rd_len)
 
static int sldns_network_uint16_cmp (const void *a, const void *b)
 
static int sldns_str2wire_svcbparam_mandatory (const char *val, uint8_t *rd, size_t *rd_len)
 
static int sldns_str2wire_svcbparam_ech_value (const char *val, uint8_t *rd, size_t *rd_len)
 
static const char * sldns_str2wire_svcbparam_parse_next_unescaped_comma (const char *val)
 
static size_t sldns_str2wire_svcbparam_parse_copy_unescaped (uint8_t *dst, const char *src, size_t len)
 
static int sldns_str2wire_svcbparam_alpn_value (const char *val, uint8_t *rd, size_t *rd_len)
 
static int sldns_str2wire_svcbparam_dohpath_value (const char *val, uint8_t *rd, size_t *rd_len)
 
static int sldns_str2wire_svcparam_value (const char *key, size_t key_len, const char *val, uint8_t *rd, size_t *rd_len)
 
static int sldns_str2wire_svcparam_buf (const char *str, uint8_t *rd, size_t *rd_len)
 
int sldns_str2wire_rdf_buf (const char *str, uint8_t *rd, size_t *len, sldns_rdf_type rdftype)
 Convert one rdf in rdata to wireformat and parse from string. More...
 
int sldns_str2wire_int8_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_INT8 from string to wireformat. More...
 
int sldns_str2wire_int16_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_INT16 from string to wireformat. More...
 
int sldns_str2wire_int32_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_INT32 from string to wireformat. More...
 
int sldns_str2wire_a_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_A from string to wireformat. More...
 
int sldns_str2wire_aaaa_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_AAAA from string to wireformat. More...
 
int sldns_str2wire_str_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_STR from string to wireformat. More...
 
int sldns_str2wire_apl_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_APL from string to wireformat. More...
 
int sldns_str2wire_b64_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_B64 from string to wireformat. More...
 
int sldns_str2wire_b32_ext_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_B32_EXT from string to wireformat. More...
 
static int sldns_is_last_of_string (const char *str)
 see if the string ends, or ends in whitespace
 
int sldns_str2wire_hex_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_HEX from string to wireformat. More...
 
int sldns_str2wire_nsec_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_NSEC from string to wireformat. More...
 
int sldns_str2wire_type_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_TYPE from string to wireformat. More...
 
int sldns_str2wire_class_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_CLASS from string to wireformat. More...
 
int sldns_str2wire_cert_alg_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_CERT_ALG from string to wireformat. More...
 
int sldns_str2wire_alg_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_ALG from string to wireformat. More...
 
int sldns_str2wire_tsigerror_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_TSIGERROR from string to wireformat. More...
 
int sldns_str2wire_time_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_TIME from string to wireformat. More...
 
int sldns_str2wire_tsigtime_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_TSIGTIME from string to wireformat. More...
 
int sldns_str2wire_period_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_PERIOD from string to wireformat. More...
 
static int loc_parse_cm (char *my_str, char **endstr, uint8_t *m, uint8_t *e)
 read "<digits>[.<digits>][mM]" into mantissa exponent format for LOC type
 
int sldns_str2wire_loc_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_LOC from string to wireformat. More...
 
static void ldns_tolower_str (char *s)
 
int sldns_str2wire_wks_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_WKS from string to wireformat. More...
 
int sldns_str2wire_nsap_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_NSAP from string to wireformat. More...
 
int sldns_str2wire_atma_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_ATMA from string to wireformat. More...
 
int sldns_str2wire_ipseckey_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_IPSECKEY from string to wireformat. More...
 
int sldns_str2wire_nsec3_salt_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_NSEC3_SALT from string to wireformat. More...
 
int sldns_str2wire_ilnp64_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_ILNP64 from string to wireformat. More...
 
int sldns_str2wire_eui48_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_EUI48 from string to wireformat. More...
 
int sldns_str2wire_eui64_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_EUI64 from string to wireformat. More...
 
int sldns_str2wire_tag_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_TAG from string to wireformat. More...
 
int sldns_str2wire_long_str_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_LONG_STR from string to wireformat. More...
 
int sldns_str2wire_hip_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_HIP from string to wireformat. More...
 
int sldns_str2wire_int16_data_buf (const char *str, uint8_t *rd, size_t *len)
 Convert rdf of type LDNS_RDF_TYPE_INT16_DATA from string to wireformat. More...
 

Detailed Description

str2wire.c - read txt presentation of RRs

(c) NLnet Labs, 2005-2006

See the file LICENSE for the license

Parses text to wireformat.

Function Documentation

◆ sldns_str2wire_dname_buf()

int sldns_str2wire_dname_buf ( const char *  str,
uint8_t *  buf,
size_t *  len 
)

Convert text string into dname wireformat, mallocless, with user buffer.

Parameters
strthe text string with the domain name.
bufthe result buffer, suggested size LDNS_MAX_DOMAINLEN+1
lenlength of the buffer on input, length of the result on output.
Returns
0 on success, otherwise an error.

Referenced by auth_zones_find_or_add_zone(), get_origin(), http_parse_origin(), lz_enter_override(), lz_enter_zone_tag(), q_ans_parse(), xfr_probe_lookup_host(), and xfr_transfer_lookup_host().

◆ sldns_str2wire_dname_buf_origin()

int sldns_str2wire_dname_buf_origin ( const char *  str,
uint8_t *  buf,
size_t *  len,
uint8_t *  origin,
size_t  origin_len 
)

Same as sldns_str2wire_dname_buf, but concatenates origin if the domain name is relative (does not end in '.

').

Parameters
strthe text string with the domain name.
bufthe result buffer, suggested size LDNS_MAX_DOMAINLEN+1
lenlength of the buffer on input, length of the result on output.
originthe origin to append or NULL (nothing is appended).
origin_lenlength of origin.
Returns
0 on success, otherwise an error.

◆ sldns_str2wire_dname()

uint8_t* sldns_str2wire_dname ( const char *  str,
size_t *  len 
)

Convert text string into dname wireformat.

Parameters
strthe text string with the domain name.
lenreturned length of wireformat.
Returns
wireformat dname (malloced) or NULL on failure.

Referenced by ah(), authtest_addzone(), caps_white_apply_cfg(), do_infra_rtt(), domain_limit_findcreate(), handle_origin(), make_stub_holes(), parse_id(), qlist_parse_line(), read_fwds_name(), read_names(), read_stubs_name(), setup_qinfo_edns(), and write_q().

◆ sldns_parse_rdf_token()

static int sldns_parse_rdf_token ( sldns_buffer strbuf,
char *  token,
size_t  token_len,
int *  quoted,
int *  parens,
size_t *  pre_data_pos,
const char *  delimiters,
sldns_rdf_type  rdftype,
size_t *  token_strlen 
)
static

Parse one rdf token.

Takes care of quotes and parenthesis.

References sldns_bget_token_par(), sldns_buffer_current(), sldns_buffer_position(), sldns_buffer_remaining(), and sldns_buffer_skip().

Referenced by sldns_affix_token().

◆ sldns_str2wire_rr_buf()

int sldns_str2wire_rr_buf ( const char *  str,
uint8_t *  rr,
size_t *  len,
size_t *  dname_len,
uint32_t  default_ttl,
uint8_t *  origin,
size_t  origin_len,
uint8_t *  prev,
size_t  prev_len 
)

Convert text RR to wireformat, with user buffer.

Parameters
strthe RR data in text presentation format.
rrthe buffer where the result is stored into. This buffer has the wire-dname(uncompressed), type, class, ttl, rdatalen, rdata. These values are probably not aligned, and in network format. Use the sldns_wirerr_get_xxx functions to access them safely. buffer size LDNS_RR_BUF_SIZE is suggested.
lenon input the length of the buffer, on output the amount of the buffer used for the rr.
dname_lenif non-NULL, filled with the dname length as result. Because after the dname you find the type, class, ttl, rdatalen, rdata.
default_ttlTTL used if no TTL available.
originused for origin dname (if not NULL)
origin_lenlength of origin.
prevused for prev_rr dname (if not NULL)
prev_lenlength of prev.
Returns
0 on success, an error on failure.

Referenced by check_data(), http_parse_add_rr(), http_zonefile_syntax_check(), load_rr(), local_data_find_tag_datas(), and rr_transform().

◆ sldns_str2wire_rr_question_buf()

int sldns_str2wire_rr_question_buf ( const char *  str,
uint8_t *  rr,
size_t *  len,
size_t *  dname_len,
uint8_t *  origin,
size_t  origin_len,
uint8_t *  prev,
size_t  prev_len 
)

Same as sldns_str2wire_rr_buf, but there is no rdata, it returns an RR with zero rdata and no ttl.

It has name, type, class. You can access those with the sldns_wirerr_get_type and class functions.

Parameters
strthe RR data in text presentation format.
rrthe buffer where the result is stored into.
lenon input the length of the buffer, on output the amount of the buffer used for the rr.
dname_lenif non-NULL, filled with the dname length as result. Because after the dname you find the type, class, ttl, rdatalen, rdata.
originused for origin dname (if not NULL)
origin_lenlength of origin.
prevused for prev_rr dname (if not NULL)
prev_lenlength of prev.
Returns
0 on success, an error on failure.

Referenced by do_expire_message(), and do_flush_message().

◆ sldns_wirerr_get_type()

uint16_t sldns_wirerr_get_type ( uint8_t *  rr,
size_t  len,
size_t  dname_len 
)

◆ sldns_wirerr_get_class()

uint16_t sldns_wirerr_get_class ( uint8_t *  rr,
size_t  len,
size_t  dname_len 
)

Get the class of the RR.

Parameters
rrthe RR in wire format.
lenrr length.
dname_lendname length to skip.
Returns
class in host byteorder

Referenced by anchor_store_new_rr(), az_insert_rr(), az_remove_rr(), find_add_tp(), load_rr(), and ub_packed_rrset_heap_key().

◆ sldns_wirerr_get_ttl()

uint32_t sldns_wirerr_get_ttl ( uint8_t *  rr,
size_t  len,
size_t  dname_len 
)

Get the ttl of the RR.

Parameters
rrthe RR in wire format.
lenrr length.
dname_lendname length to skip.
Returns
ttl in host byteorder

Referenced by az_insert_rr(), load_rr(), local_data_find_tag_datas(), and packed_rrset_heap_data().

◆ sldns_wirerr_get_rdatalen()

uint16_t sldns_wirerr_get_rdatalen ( uint8_t *  rr,
size_t  len,
size_t  dname_len 
)

Get the rdata length of the RR.

Parameters
rrthe RR in wire format.
lenrr length.
dname_lendname length to skip.
Returns
rdata length in host byteorder If the rdata length is larger than the rr-len allows, it is truncated. So, that it is safe to read the data length returned from this function from the rdata pointer of sldns_wirerr_get_rdata.

Referenced by anchor_store_new_rr(), az_insert_rr(), az_remove_rr(), load_rr(), local_data_find_tag_datas(), packed_rrset_heap_data(), and ta_is_dnskey_sep().

◆ sldns_wirerr_get_rdata()

uint8_t* sldns_wirerr_get_rdata ( uint8_t *  rr,
size_t  len,
size_t  dname_len 
)

Get the rdata pointer of the RR.

Parameters
rrthe RR in wire format.
lenrr length.
dname_lendname length to skip.
Returns
rdata pointer

Referenced by ta_is_dnskey_sep().

◆ sldns_wirerr_get_rdatawl()

uint8_t* sldns_wirerr_get_rdatawl ( uint8_t *  rr,
size_t  len,
size_t  dname_len 
)

Get the rdata pointer of the RR.

prefixed with rdata length.

Parameters
rrthe RR in wire format.
lenrr length.
dname_lendname length to skip.
Returns
pointer to rdatalength, followed by the rdata.

Referenced by anchor_store_new_rr(), az_insert_rr(), az_remove_rr(), load_rr(), local_data_find_tag_datas(), and packed_rrset_heap_data().

◆ sldns_get_errorstr_parse()

const char* sldns_get_errorstr_parse ( int  e)

Get reference to a constant string for the (parse) error.

Parameters
eerror return value
Returns
string.

References sldns_lookup_by_id(), and sldns_wireparse_errors.

Referenced by get_origin(), and load_rr().

◆ sldns_strip_ws()

char* sldns_strip_ws ( char *  line)

Strip whitespace from the start and the end of line.

Parameters
linemodified with 0 to shorten it.
Returns
new start with spaces skipped.

Referenced by http_parse_origin(), and http_parse_ttl().

◆ sldns_fp2wire_rr_buf()

int sldns_fp2wire_rr_buf ( FILE *  in,
uint8_t *  rr,
size_t *  len,
size_t *  dname_len,
struct sldns_file_parse_state parse_state 
)

Read one RR from zonefile with buffer for the data.

Parameters
infile that is read from (one RR, multiple lines if it spans them).
rrthis is malloced by the user and the result is stored here, if an RR is read. If no RR is read this is signalled with the return len set to 0 (for ORIGIN, TTL directives). The read line is available in the rr_buf (zero terminated), for $DIRECTIVE style elements.
lenon input, the length of the rr buffer. on output the rr len. Buffer size of 64k should be enough.
dname_lenreturns the length of the dname initial part of the rr.
parse_statepass a pointer to user-allocated struct. Contents are maintained by this function. If you pass NULL then ORIGIN and TTL directives are not honored. You can start out with a particular origin by pre-filling it. otherwise, zero the structure before passing it. lineno is incremented when a newline is passed by the parser, you should initialize it at 1 at the start of the file.
Returns
0 on success, error on failure.

References LDNS_RR_BUF_SIZE, and sldns_fget_token_l().

Referenced by anchor_read_file(), az_parse_file(), and read_root_hints().

◆ sldns_str2wire_rdf_buf()

int sldns_str2wire_rdf_buf ( const char *  str,
uint8_t *  rd,
size_t *  len,
sldns_rdf_type  rdftype 
)

Convert one rdf in rdata to wireformat and parse from string.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
rdftypethe type of the rdf.
Returns
0 on success, error on failure.

◆ sldns_str2wire_int8_buf()

int sldns_str2wire_int8_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_INT8 from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_int16_buf()

int sldns_str2wire_int16_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_INT16 from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_int32_buf()

int sldns_str2wire_int32_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_INT32 from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_a_buf()

int sldns_str2wire_a_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_A from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_aaaa_buf()

int sldns_str2wire_aaaa_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_AAAA from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_str_buf()

int sldns_str2wire_str_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_STR from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_apl_buf()

int sldns_str2wire_apl_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_APL from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_b64_buf()

int sldns_str2wire_b64_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_B64 from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_b32_ext_buf()

int sldns_str2wire_b32_ext_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_B32_EXT from string to wireformat.

And also LDNS_RDF_TYPE_NSEC3_NEXT_OWNER.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_hex_buf()

int sldns_str2wire_hex_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_HEX from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_nsec_buf()

int sldns_str2wire_nsec_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_NSEC from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_type_buf()

int sldns_str2wire_type_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_TYPE from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_class_buf()

int sldns_str2wire_class_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_CLASS from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_cert_alg_buf()

int sldns_str2wire_cert_alg_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_CERT_ALG from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_alg_buf()

int sldns_str2wire_alg_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_ALG from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_tsigerror_buf()

int sldns_str2wire_tsigerror_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_TSIGERROR from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_time_buf()

int sldns_str2wire_time_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_TIME from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_tsigtime_buf()

int sldns_str2wire_tsigtime_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_TSIGTIME from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_period_buf()

int sldns_str2wire_period_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_PERIOD from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_loc_buf()

int sldns_str2wire_loc_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_LOC from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_wks_buf()

int sldns_str2wire_wks_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_WKS from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_nsap_buf()

int sldns_str2wire_nsap_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_NSAP from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_atma_buf()

int sldns_str2wire_atma_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_ATMA from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_ipseckey_buf()

int sldns_str2wire_ipseckey_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_IPSECKEY from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_nsec3_salt_buf()

int sldns_str2wire_nsec3_salt_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_NSEC3_SALT from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_ilnp64_buf()

int sldns_str2wire_ilnp64_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_ILNP64 from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_eui48_buf()

int sldns_str2wire_eui48_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_EUI48 from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_eui64_buf()

int sldns_str2wire_eui64_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_EUI64 from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_tag_buf()

int sldns_str2wire_tag_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_TAG from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_long_str_buf()

int sldns_str2wire_long_str_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_LONG_STR from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_hip_buf()

int sldns_str2wire_hip_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_HIP from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.

◆ sldns_str2wire_int16_data_buf()

int sldns_str2wire_int16_data_buf ( const char *  str,
uint8_t *  rd,
size_t *  len 
)

Convert rdf of type LDNS_RDF_TYPE_INT16_DATA from string to wireformat.

Parameters
strthe text to convert for this rdata element.
rdrdata buffer for the wireformat.
lenlength of rd buffer on input, used length on output.
Returns
0 on success, error on failure.