Defines ldns_rdf and functions to manipulate those. More...
Go to the source code of this file.
Data Structures | |
struct | ldns_struct_rdf |
Resource record data field. More... | |
Macros | |
#define | LDNS_MAX_RDFLEN 65535 |
#define | LDNS_RDF_SIZE_BYTE 1 |
#define | LDNS_RDF_SIZE_WORD 2 |
#define | LDNS_RDF_SIZE_DOUBLEWORD 4 |
#define | LDNS_RDF_SIZE_6BYTES 6 |
#define | LDNS_RDF_SIZE_8BYTES 8 |
#define | LDNS_RDF_SIZE_16BYTES 16 |
#define | LDNS_NSEC3_VARS_OPTOUT_MASK 0x01 |
Typedefs | |
typedef enum ldns_enum_rdf_type | ldns_rdf_type |
typedef enum ldns_enum_cert_algorithm | ldns_cert_algorithm |
typedef enum ldns_enum_svcparam_key | ldns_svcparam_key |
typedef struct ldns_struct_rdf | ldns_rdf |
Functions | |
void | ldns_rdf_set_size (ldns_rdf *rd, size_t size) |
sets the size of the rdf. More... | |
void | ldns_rdf_set_type (ldns_rdf *rd, ldns_rdf_type type) |
sets the size of the rdf. More... | |
void | ldns_rdf_set_data (ldns_rdf *rd, void *data) |
sets the size of the rdf. More... | |
size_t | ldns_rdf_size (const ldns_rdf *rd) |
returns the size of the rdf. More... | |
ldns_rdf_type | ldns_rdf_get_type (const ldns_rdf *rd) |
returns the type of the rdf. More... | |
uint8_t * | ldns_rdf_data (const ldns_rdf *rd) |
returns the data of the rdf. More... | |
ldns_rdf * | ldns_rdf_new (ldns_rdf_type type, size_t size, void *data) |
allocates a new rdf structure and fills it. More... | |
ldns_rdf * | ldns_rdf_new_frm_data (ldns_rdf_type type, size_t size, const void *data) |
allocates a new rdf structure and fills it. More... | |
ldns_rdf * | ldns_rdf_new_frm_str (ldns_rdf_type type, const char *str) |
creates a new rdf from a string. More... | |
ldns_status | ldns_rdf_new_frm_fp (ldns_rdf **r, ldns_rdf_type type, FILE *fp) |
creates a new rdf from a file containing a string. More... | |
ldns_status | ldns_rdf_new_frm_fp_l (ldns_rdf **r, ldns_rdf_type type, FILE *fp, int *line_nr) |
creates a new rdf from a file containing a string. More... | |
void | ldns_rdf_free (ldns_rdf *rd) |
frees a rdf structure, leaving the data pointer intact. More... | |
void | ldns_rdf_deep_free (ldns_rdf *rd) |
frees a rdf structure and frees the data. More... | |
ldns_rdf * | ldns_native2rdf_int8 (ldns_rdf_type type, uint8_t value) |
returns the rdf containing the native uint8_t repr. More... | |
ldns_rdf * | ldns_native2rdf_int16 (ldns_rdf_type type, uint16_t value) |
returns the rdf containing the native uint16_t representation. More... | |
ldns_rdf * | ldns_native2rdf_int32 (ldns_rdf_type type, uint32_t value) |
returns an rdf that contains the given int32 value. More... | |
ldns_rdf * | ldns_native2rdf_int16_data (size_t size, uint8_t *data) |
returns an int16_data rdf that contains the data in the given array, preceded by an int16 specifying the length. More... | |
ldns_rdf * | ldns_rdf_address_reverse (const ldns_rdf *rd) |
reverses an rdf, only actually useful for AAAA and A records. More... | |
uint8_t | ldns_rdf2native_int8 (const ldns_rdf *rd) |
returns the native uint8_t representation from the rdf. More... | |
uint16_t | ldns_rdf2native_int16 (const ldns_rdf *rd) |
returns the native uint16_t representation from the rdf. More... | |
uint32_t | ldns_rdf2native_int32 (const ldns_rdf *rd) |
returns the native uint32_t representation from the rdf. More... | |
time_t | ldns_rdf2native_time_t (const ldns_rdf *rd) |
returns the native time_t representation from the rdf. More... | |
uint32_t | ldns_str2period (const char *nptr, const char **endptr) |
converts a ttl value (like 5d2h) to a long. More... | |
ldns_status | ldns_octet (char *word, size_t *length) |
removes \DDD, \[space] and other escapes from the input. More... | |
ldns_rdf * | ldns_rdf_clone (const ldns_rdf *rd) |
clones a rdf structure. More... | |
int | ldns_rdf_compare (const ldns_rdf *rd1, const ldns_rdf *rd2) |
compares two rdf's on their wire formats. More... | |
ldns_status | ldns_rdf_hip_get_alg_hit_pk (ldns_rdf *rdf, uint8_t *alg, uint8_t *hit_size, uint8_t **hit, uint16_t *pk_size, uint8_t **pk) |
Gets the algorithm value, the HIT and Public Key data from the rdf with type LDNS_RDF_TYPE_HIP. More... | |
ldns_status | ldns_rdf_hip_new_frm_alg_hit_pk (ldns_rdf **rdf, uint8_t alg, uint8_t hit_size, uint8_t *hit, uint16_t pk_size, uint8_t *pk) |
Creates a new LDNS_RDF_TYPE_HIP rdf from given data. More... | |
Defines ldns_rdf and functions to manipulate those.
Definition in file rdata.h.
typedef enum ldns_enum_rdf_type ldns_rdf_type |
typedef enum ldns_enum_cert_algorithm ldns_cert_algorithm |
typedef enum ldns_enum_svcparam_key ldns_svcparam_key |
typedef struct ldns_struct_rdf ldns_rdf |
enum ldns_enum_rdf_type |
The different types of RDATA fields.
keys types in SVCPARAMS rdata fields
void ldns_rdf_set_size | ( | ldns_rdf * | rd, |
size_t | size | ||
) |
sets the size of the rdf.
[in] | *rd | the rdf to operate on |
[in] | size | the new size |
Definition at line 46 of file rdata.c.
References ldns_struct_rdf::_size.
void ldns_rdf_set_type | ( | ldns_rdf * | rd, |
ldns_rdf_type | type | ||
) |
sets the size of the rdf.
[in] | *rd | the rdf to operate on |
[in] | type | the new type |
Definition at line 53 of file rdata.c.
References ldns_struct_rdf::_type.
void ldns_rdf_set_data | ( | ldns_rdf * | rd, |
void * | data | ||
) |
sets the size of the rdf.
[in] | *rd | the rdf to operate on |
[in] | *data | pointer to the new data |
Definition at line 60 of file rdata.c.
References ldns_struct_rdf::_data.
size_t ldns_rdf_size | ( | const ldns_rdf * | rd | ) |
returns the size of the rdf.
[in] | *rd | the rdf to read from |
Definition at line 24 of file rdata.c.
References ldns_struct_rdf::_size.
ldns_rdf_type ldns_rdf_get_type | ( | const ldns_rdf * | rd | ) |
returns the type of the rdf.
We need to insert get here to prevent conflict the the rdf_type TYPE.
[in] | *rd | the rdf to read from |
Definition at line 31 of file rdata.c.
References ldns_struct_rdf::_type.
uint8_t* ldns_rdf_data | ( | const ldns_rdf * | rd | ) |
returns the data of the rdf.
[in] | *rd | the rdf to read from |
Definition at line 38 of file rdata.c.
References ldns_struct_rdf::_data.
ldns_rdf* ldns_rdf_new | ( | ldns_rdf_type | type, |
size_t | size, | ||
void * | data | ||
) |
allocates a new rdf structure and fills it.
This function DOES NOT copy the contents from the buffer, unlike ldns_rdf_new_frm_data()
[in] | type | type of the rdf |
[in] | size | size of the buffer |
[in] | data | pointer to the buffer to be copied |
Definition at line 179 of file rdata.c.
References LDNS_MALLOC, ldns_rdf_set_data(), ldns_rdf_set_size(), and ldns_rdf_set_type().
ldns_rdf* ldns_rdf_new_frm_data | ( | ldns_rdf_type | type, |
size_t | size, | ||
const void * | data | ||
) |
allocates a new rdf structure and fills it.
This function does copy the contents from the buffer, unlike ldns_rdf_new()
[in] | type | type of the rdf |
[in] | size | size of the buffer |
[in] | data | pointer to the buffer to be copied |
Definition at line 193 of file rdata.c.
References ldns_struct_rdf::_data, LDNS_FREE, LDNS_MALLOC, LDNS_MAX_RDFLEN, ldns_rdf_set_size(), ldns_rdf_set_type(), and LDNS_XMALLOC.
ldns_rdf* ldns_rdf_new_frm_str | ( | ldns_rdf_type | type, |
const char * | str | ||
) |
creates a new rdf from a string.
[in] | type | type to use |
[in] | str | string to use |
Definition at line 249 of file rdata.c.
References LDNS_FREE, ldns_rdf_set_type(), LDNS_RDF_TYPE_A, LDNS_RDF_TYPE_AAAA, LDNS_RDF_TYPE_ALG, LDNS_RDF_TYPE_AMTRELAY, LDNS_RDF_TYPE_APL, LDNS_RDF_TYPE_ATMA, LDNS_RDF_TYPE_B32_EXT, LDNS_RDF_TYPE_B64, LDNS_RDF_TYPE_CERT_ALG, LDNS_RDF_TYPE_CERTIFICATE_USAGE, LDNS_RDF_TYPE_CLASS, LDNS_RDF_TYPE_DNAME, LDNS_RDF_TYPE_EUI48, LDNS_RDF_TYPE_EUI64, LDNS_RDF_TYPE_HEX, LDNS_RDF_TYPE_HIP, LDNS_RDF_TYPE_ILNP64, LDNS_RDF_TYPE_INT16, LDNS_RDF_TYPE_INT32, LDNS_RDF_TYPE_INT8, LDNS_RDF_TYPE_IPSECKEY, LDNS_RDF_TYPE_LOC, LDNS_RDF_TYPE_LONG_STR, LDNS_RDF_TYPE_MATCHING_TYPE, LDNS_RDF_TYPE_NONE, LDNS_RDF_TYPE_NSAP, LDNS_RDF_TYPE_NSEC, LDNS_RDF_TYPE_NSEC3_NEXT_OWNER, LDNS_RDF_TYPE_NSEC3_SALT, LDNS_RDF_TYPE_PERIOD, LDNS_RDF_TYPE_SELECTOR, LDNS_RDF_TYPE_SERVICE, LDNS_RDF_TYPE_STR, LDNS_RDF_TYPE_SVCPARAMS, LDNS_RDF_TYPE_TAG, LDNS_RDF_TYPE_TIME, LDNS_RDF_TYPE_TYPE, LDNS_RDF_TYPE_UNKNOWN, LDNS_RDF_TYPE_WKS, LDNS_STATUS_ERR, LDNS_STATUS_OK, ldns_str2rdf_a(), ldns_str2rdf_aaaa(), ldns_str2rdf_alg(), ldns_str2rdf_amtrelay(), ldns_str2rdf_apl(), ldns_str2rdf_atma(), ldns_str2rdf_b32_ext(), ldns_str2rdf_b64(), ldns_str2rdf_cert_alg(), ldns_str2rdf_certificate_usage(), ldns_str2rdf_class(), ldns_str2rdf_dname(), ldns_str2rdf_eui48(), ldns_str2rdf_eui64(), ldns_str2rdf_hex(), ldns_str2rdf_hip(), ldns_str2rdf_ilnp64(), ldns_str2rdf_int16(), ldns_str2rdf_int32(), ldns_str2rdf_int8(), ldns_str2rdf_ipseckey(), ldns_str2rdf_loc(), ldns_str2rdf_long_str(), ldns_str2rdf_matching_type(), ldns_str2rdf_nsap(), ldns_str2rdf_nsec(), ldns_str2rdf_nsec3_salt(), ldns_str2rdf_period(), ldns_str2rdf_selector(), ldns_str2rdf_service(), ldns_str2rdf_str(), ldns_str2rdf_svcparams(), ldns_str2rdf_tag(), ldns_str2rdf_time(), ldns_str2rdf_type(), ldns_str2rdf_unknown(), and ldns_str2rdf_wks().
ldns_status ldns_rdf_new_frm_fp | ( | ldns_rdf ** | r, |
ldns_rdf_type | type, | ||
FILE * | fp | ||
) |
creates a new rdf from a file containing a string.
[out] | r | the new rdf |
[in] | type | type to use |
[in] | fp | the file pointer to use |
Definition at line 386 of file rdata.c.
References ldns_rdf_new_frm_fp_l().
ldns_status ldns_rdf_new_frm_fp_l | ( | ldns_rdf ** | r, |
ldns_rdf_type | type, | ||
FILE * | fp, | ||
int * | line_nr | ||
) |
creates a new rdf from a file containing a string.
[out] | r | the new rdf |
[in] | type | type to use |
[in] | fp | the file pointer to use |
[in] | line_nr | pointer to an integer containing the current line number (for debugging purposes) |
Definition at line 392 of file rdata.c.
References ldns_fget_token_l(), LDNS_FREE, LDNS_MAX_LINELEN, LDNS_PARSE_SKIP_SPACE, ldns_rdf_new_frm_str(), LDNS_STATUS_MEM_ERR, LDNS_STATUS_NULL, LDNS_STATUS_OK, LDNS_STATUS_SYNTAX_RDATA_ERR, and LDNS_XMALLOC.
void ldns_rdf_free | ( | ldns_rdf * | rd | ) |
void ldns_rdf_deep_free | ( | ldns_rdf * | rd | ) |
frees a rdf structure and frees the data.
rdf should be created with _new_frm_data
[in] | rd | the rdf structure to be freed |
Definition at line 230 of file rdata.c.
References ldns_struct_rdf::_data, and LDNS_FREE.
ldns_rdf* ldns_native2rdf_int8 | ( | ldns_rdf_type | type, |
uint8_t | value | ||
) |
returns the rdf containing the native uint8_t repr.
[in] | type | the ldns_rdf type to use |
[in] | value | the uint8_t to use |
Definition at line 126 of file rdata.c.
References ldns_rdf_new_frm_data(), and LDNS_RDF_SIZE_BYTE.
ldns_rdf* ldns_native2rdf_int16 | ( | ldns_rdf_type | type, |
uint16_t | value | ||
) |
returns the rdf containing the native uint16_t representation.
[in] | type | the ldns_rdf type to use |
[in] | value | the uint16_t to use |
Definition at line 132 of file rdata.c.
References LDNS_XMALLOC.
ldns_rdf* ldns_native2rdf_int32 | ( | ldns_rdf_type | type, |
uint32_t | value | ||
) |
returns an rdf that contains the given int32 value.
Because multiple rdf types can contain an int32, the type must be specified
[in] | type | the ldns_rdf type to use |
[in] | value | the uint32_t to use |
Definition at line 147 of file rdata.c.
References LDNS_XMALLOC.
ldns_rdf* ldns_native2rdf_int16_data | ( | size_t | size, |
uint8_t * | data | ||
) |
returns an int16_data rdf that contains the data in the given array, preceded by an int16 specifying the length.
The memory is copied, and an LDNS_RDF_TYPE_INT16DATA is returned
[in] | size | the size of the data |
[in] | *data | pointer to the actual data |
Definition at line 162 of file rdata.c.
References LDNS_XMALLOC.
reverses an rdf, only actually useful for AAAA and A records.
The returned rdf has the type LDNS_RDF_TYPE_DNAME!
[in] | *rd | rdf to be reversed |
Definition at line 419 of file rdata.c.
References ldns_dname_cat_clone(), ldns_dname_new_frm_str(), LDNS_FREE, ldns_int_to_hexdigit(), LDNS_IP4ADDRLEN, LDNS_IP6ADDRLEN, ldns_rdf2str(), ldns_rdf_data(), ldns_rdf_deep_free(), ldns_rdf_get_type(), ldns_rdf_new_frm_data(), LDNS_RDF_TYPE_A, LDNS_RDF_TYPE_AAAA, and LDNS_XMALLOC.
uint8_t ldns_rdf2native_int8 | ( | const ldns_rdf * | rd | ) |
returns the native uint8_t representation from the rdf.
[in] | rd | the ldns_rdf to operate on |
Definition at line 70 of file rdata.c.
References ldns_rdf_data(), ldns_rdf_size(), and LDNS_RDF_SIZE_BYTE.
uint16_t ldns_rdf2native_int16 | ( | const ldns_rdf * | rd | ) |
returns the native uint16_t representation from the rdf.
[in] | rd | the ldns_rdf to operate on |
Definition at line 84 of file rdata.c.
References ldns_rdf_data(), ldns_rdf_size(), and LDNS_RDF_SIZE_WORD.
uint32_t ldns_rdf2native_int32 | ( | const ldns_rdf * | rd | ) |
returns the native uint32_t representation from the rdf.
[in] | rd | the ldns_rdf to operate on |
Definition at line 98 of file rdata.c.
References ldns_rdf_data(), ldns_rdf_size(), and LDNS_RDF_SIZE_DOUBLEWORD.
time_t ldns_rdf2native_time_t | ( | const ldns_rdf * | rd | ) |
returns the native time_t representation from the rdf.
[in] | rd | the ldns_rdf to operate on |
Definition at line 112 of file rdata.c.
References ldns_rdf_data(), ldns_rdf_get_type(), ldns_rdf_size(), LDNS_RDF_SIZE_DOUBLEWORD, and LDNS_RDF_TYPE_TIME.
uint32_t ldns_str2period | ( | const char * | nptr, |
const char ** | endptr | ||
) |
ldns_status ldns_octet | ( | char * | word, |
size_t * | length | ||
) |
removes \DDD, \[space] and other escapes from the input.
See RFC 1035, section 5.1.
[in] | word | what to check |
[in] | length | the string |
Definition at line 595 of file rdata.c.
References LDNS_STATUS_DDD_OVERFLOW, LDNS_STATUS_EMPTY_LABEL, and LDNS_STATUS_OK.
clones a rdf structure.
The data is copied.
[in] | rd | rdf to be copied |
Definition at line 222 of file rdata.c.
References ldns_rdf_data(), ldns_rdf_get_type(), ldns_rdf_new_frm_data(), and ldns_rdf_size().
compares two rdf's on their wire formats.
(To order dnames according to rfc4034, use ldns_dname_compare)
[in] | rd1 | the first one |
[in] | rd2 | the second one |
Definition at line 657 of file rdata.c.
References ldns_rdf_data(), and ldns_rdf_size().
ldns_status ldns_rdf_hip_get_alg_hit_pk | ( | ldns_rdf * | rdf, |
uint8_t * | alg, | ||
uint8_t * | hit_size, | ||
uint8_t ** | hit, | ||
uint16_t * | pk_size, | ||
uint8_t ** | pk | ||
) |
Gets the algorithm value, the HIT and Public Key data from the rdf with type LDNS_RDF_TYPE_HIP.
[in] | rdf | the rdf with type LDNS_RDF_TYPE_HIP |
[out] | alg | the algorithm |
[out] | hit_size | the size of the HIT data |
[out] | hit | the hit data |
[out] | pk_size | the size of the Public Key data |
[out] | pk | the Public Key data |
Definition at line 537 of file rdata.c.
References ldns_rdf_data(), ldns_rdf_get_type(), ldns_rdf_size(), LDNS_RDF_TYPE_HIP, LDNS_STATUS_INVALID_POINTER, LDNS_STATUS_INVALID_RDF_TYPE, and LDNS_STATUS_WIRE_RDATA_ERR.
ldns_status ldns_rdf_hip_new_frm_alg_hit_pk | ( | ldns_rdf ** | rdf, |
uint8_t | alg, | ||
uint8_t | hit_size, | ||
uint8_t * | hit, | ||
uint16_t | pk_size, | ||
uint8_t * | pk | ||
) |
Creates a new LDNS_RDF_TYPE_HIP rdf from given data.
[out] | rdf | the newly created LDNS_RDF_TYPE_HIP rdf |
[in] | alg | the algorithm |
[in] | hit_size | the size of the HIT data |
[in] | hit | the hit data |
[in] | pk_size | the size of the Public Key data |
[in] | pk | the Public Key data |
Definition at line 565 of file rdata.c.
References LDNS_MAX_RDFLEN, LDNS_STATUS_INVALID_POINTER, LDNS_STATUS_MEM_ERR, LDNS_STATUS_RDATA_OVERFLOW, and LDNS_XMALLOC.