Go to the source code of this file.
Data Structures | |
struct | ldns_struct_edns_option |
The struct that stores an ordered EDNS option. More... | |
struct | ldns_struct_edns_option_list |
Typedefs | |
typedef enum ldns_enum_edns_option | ldns_edns_option_code |
typedef enum ldns_edns_enum_ede_code | ldns_edns_ede_code |
typedef struct ldns_struct_edns_option | ldns_edns_option |
typedef struct ldns_struct_edns_option_list | ldns_edns_option_list |
Functions | |
size_t | ldns_edns_get_size (const ldns_edns_option *edns) |
returns the size of the EDNS data. More... | |
ldns_edns_option_code | ldns_edns_get_code (const ldns_edns_option *edns) |
returns the option code of the EDNS data. More... | |
uint8_t * | ldns_edns_get_data (const ldns_edns_option *edns) |
returns the EDNS option data. More... | |
ldns_status | ldns_edns_ede_get_code (const ldns_edns_option *edns, uint16_t *ede_code) |
extract the RFC 8914 extended error code value. More... | |
ldns_status | ldns_edns_ede_get_text (const ldns_edns_option *edns, char **ede_text) |
extract the optional RFC 8914 extended error code text. More... | |
ldns_buffer * | ldns_edns_get_wireformat_buffer (const ldns_edns_option *edns) |
serialise the EDNS option into wireformat. More... | |
ldns_edns_option * | ldns_edns_new (ldns_edns_option_code code, size_t size, void *data) |
allocates a new EDNS structure and fills it. More... | |
ldns_edns_option * | ldns_edns_new_from_data (ldns_edns_option_code code, size_t size, const void *data) |
allocates a new EDNS structure and fills it. More... | |
ldns_edns_option * | ldns_edns_clone (ldns_edns_option *edns) |
clone an EDNS option More... | |
void | ldns_edns_deep_free (ldns_edns_option *edns) |
free the EDNS option. More... | |
void | ldns_edns_free (ldns_edns_option *edns) |
ldns_edns_option_list * | ldns_edns_option_list_new (void) |
allocates space for a new list of EDNS options More... | |
ldns_edns_option_list * | ldns_edns_option_list_clone (ldns_edns_option_list *options_list) |
clone the EDNS options list and it's contents More... | |
void | ldns_edns_option_list_free (ldns_edns_option_list *options_list) |
free the EDNS option list. More... | |
void | ldns_edns_option_list_deep_free (ldns_edns_option_list *options_list) |
size_t | ldns_edns_option_list_get_count (const ldns_edns_option_list *options_list) |
returns the number of options in the EDNS options list. More... | |
ldns_edns_option * | ldns_edns_option_list_get_option (const ldns_edns_option_list *options_list, size_t index) |
returns the EDNS option as the specified index in the list of EDNS options. More... | |
size_t | ldns_edns_option_list_get_options_size (const ldns_edns_option_list *options_list) |
returns the total size of all the individual EDNS options in the EDNS list. More... | |
ldns_edns_option * | ldns_edns_option_list_set_option (ldns_edns_option_list *options_list, ldns_edns_option *option, size_t index) |
adds an EDNS option to the list of options at the specified index. More... | |
signed char | ldns_edns_option_list_push (ldns_edns_option_list *options_list, ldns_edns_option *option) |
adds an EDNS option at the end of the list of options. More... | |
ldns_edns_option * | ldns_edns_option_list_pop (ldns_edns_option_list *options_list) |
removes and returns the EDNS option at the end of the list of options. More... | |
ldns_buffer * | ldns_edns_option_list2wireformat_buffer (const ldns_edns_option_list *option_list) |
serializes all the EDNS options into a single wireformat buffer More... | |
typedef enum ldns_enum_edns_option ldns_edns_option_code |
typedef enum ldns_edns_enum_ede_code ldns_edns_ede_code |
typedef struct ldns_struct_edns_option ldns_edns_option |
typedef struct ldns_struct_edns_option_list ldns_edns_option_list |
Extended DNS Error (RFC 8914) codes.
size_t ldns_edns_get_size | ( | const ldns_edns_option * | edns | ) |
returns the size of the EDNS data.
[in] | *edns | the EDNS struct to read from |
Definition at line 25 of file edns.c.
References ldns_struct_edns_option::_size.
ldns_edns_option_code ldns_edns_get_code | ( | const ldns_edns_option * | edns | ) |
returns the option code of the EDNS data.
[in] | *edns | the EDNS struct to read from |
Definition at line 32 of file edns.c.
References ldns_struct_edns_option::_code.
uint8_t* ldns_edns_get_data | ( | const ldns_edns_option * | edns | ) |
returns the EDNS option data.
[in] | *edns | the EDNS option to read from |
Definition at line 39 of file edns.c.
References ldns_struct_edns_option::_data.
ldns_status ldns_edns_ede_get_code | ( | const ldns_edns_option * | edns, |
uint16_t * | ede_code | ||
) |
extract the RFC 8914 extended error code value.
[in] | *edns | the EDNS option to extract the extended error code from |
[in,out] | *ede_code | pointer to an uint16_t in which to store the extended error code |
Definition at line 46 of file edns.c.
References ldns_struct_edns_option::_code, ldns_struct_edns_option::_data, ldns_struct_edns_option::_size, LDNS_EDNS_EDE, LDNS_STATUS_EDE_OPTION_MALFORMED, LDNS_STATUS_NOT_EDE, and LDNS_STATUS_OK.
ldns_status ldns_edns_ede_get_text | ( | const ldns_edns_option * | edns, |
char ** | ede_text | ||
) |
extract the optional RFC 8914 extended error code text.
[in] | *edns | the EDNS option to extract the extended error code from |
[in,out] | **ede_text | pointer to a char* in which to store the extended error text; allocated buffer must be freed by the caller, assigns NULL if no text was provided in the EDNS option |
Definition at line 61 of file edns.c.
References ldns_struct_edns_option::_code, ldns_struct_edns_option::_data, ldns_struct_edns_option::_size, LDNS_EDNS_EDE, LDNS_STATUS_EDE_OPTION_MALFORMED, LDNS_STATUS_NOT_EDE, and LDNS_STATUS_OK.
ldns_buffer* ldns_edns_get_wireformat_buffer | ( | const ldns_edns_option * | edns | ) |
serialise the EDNS option into wireformat.
[in] | *edns | the EDNS option to read from |
Definition at line 84 of file edns.c.
References ldns_buffer_new(), ldns_edns_get_code(), ldns_edns_get_data(), and ldns_edns_get_size().
ldns_edns_option* ldns_edns_new | ( | ldns_edns_option_code | code, |
size_t | size, | ||
void * | data | ||
) |
allocates a new EDNS structure and fills it.
This function DOES NOT copy the contents from the data parameter.
[in] | code | the EDNS code |
[in] | size | size of the buffer |
[in] | data | pointer to the buffer to be assigned |
Definition at line 139 of file edns.c.
References LDNS_MALLOC.
ldns_edns_option* ldns_edns_new_from_data | ( | ldns_edns_option_code | code, |
size_t | size, | ||
const void * | data | ||
) |
allocates a new EDNS structure and fills it.
This function DOES copy the contents from the data parameter.
[in] | code | the EDNS code |
[in] | size | size of the buffer |
[in] | data | pointer to the buffer to be assigned |
Definition at line 154 of file edns.c.
References ldns_struct_edns_option::_data, LDNS_FREE, LDNS_MALLOC, and LDNS_XMALLOC.
ldns_edns_option* ldns_edns_clone | ( | ldns_edns_option * | edns | ) |
clone an EDNS option
[in] | edns | the EDNS option |
Definition at line 176 of file edns.c.
References ldns_edns_get_code(), ldns_edns_get_data(), ldns_edns_get_size(), and ldns_edns_new_from_data().
void ldns_edns_deep_free | ( | ldns_edns_option * | edns | ) |
free the EDNS option.
Use deep_free if the _data member is allocated.
[in] | edns | the EDNS option to free |
Definition at line 190 of file edns.c.
References ldns_struct_edns_option::_data, and LDNS_FREE.
void ldns_edns_free | ( | ldns_edns_option * | edns | ) |
ldns_edns_option_list* ldns_edns_option_list_new | ( | void | ) |
allocates space for a new list of EDNS options
Definition at line 209 of file edns.c.
References ldns_struct_edns_option_list::_option_capacity, ldns_struct_edns_option_list::_option_count, ldns_struct_edns_option_list::_options, ldns_struct_edns_option_list::_options_size, and LDNS_MALLOC.
ldns_edns_option_list* ldns_edns_option_list_clone | ( | ldns_edns_option_list * | options_list | ) |
clone the EDNS options list and it's contents
[in] | options_list | the EDNS options_list to read from |
Definition at line 224 of file edns.c.
References ldns_struct_edns_option_list::_option_count, ldns_edns_clone(), ldns_edns_deep_free(), ldns_edns_option_list_deep_free(), ldns_edns_option_list_get_option(), ldns_edns_option_list_new(), and ldns_edns_option_list_push().
void ldns_edns_option_list_free | ( | ldns_edns_option_list * | options_list | ) |
free the EDNS option list.
Use deep_free to free the options options in the list as well.
[in] | options_list | the EDNS option to free |
Definition at line 255 of file edns.c.
References ldns_struct_edns_option_list::_options, and LDNS_FREE.
void ldns_edns_option_list_deep_free | ( | ldns_edns_option_list * | options_list | ) |
Definition at line 264 of file edns.c.
References ldns_edns_deep_free(), ldns_edns_option_list_free(), ldns_edns_option_list_get_count(), and ldns_edns_option_list_get_option().
size_t ldns_edns_option_list_get_count | ( | const ldns_edns_option_list * | options_list | ) |
returns the number of options in the EDNS options list.
[in] | options_list | the EDNS options_list to read from |
Definition at line 277 of file edns.c.
References ldns_struct_edns_option_list::_option_count.
ldns_edns_option* ldns_edns_option_list_get_option | ( | const ldns_edns_option_list * | options_list, |
size_t | index | ||
) |
returns the EDNS option as the specified index in the list of EDNS options.
[in] | options_list | the EDNS options_list to read from |
[in] | index | the location of the EDNS option to get in the list |
Definition at line 287 of file edns.c.
References ldns_struct_edns_option_list::_options, and ldns_edns_option_list_get_count().
size_t ldns_edns_option_list_get_options_size | ( | const ldns_edns_option_list * | options_list | ) |
returns the total size of all the individual EDNS options in the EDNS list.
[in] | options_list | the EDNS options_list to read from |
Definition at line 298 of file edns.c.
References ldns_struct_edns_option_list::_options_size.
ldns_edns_option* ldns_edns_option_list_set_option | ( | ldns_edns_option_list * | options_list, |
ldns_edns_option * | option, | ||
size_t | index | ||
) |
adds an EDNS option to the list of options at the specified index.
Also returns the option that was previously at that index.
[in] | options_list | the EDNS options_list to add to |
[in] | option | the EDNS option to add to the list |
[in] | index | the index in the list where to set the option |
Definition at line 309 of file edns.c.
References ldns_struct_edns_option_list::_options, ldns_struct_edns_option_list::_options_size, ldns_edns_get_size(), ldns_edns_option_list_get_count(), and ldns_edns_option_list_get_option().
signed char ldns_edns_option_list_push | ( | ldns_edns_option_list * | options_list, |
ldns_edns_option * | option | ||
) |
adds an EDNS option at the end of the list of options.
[in] | options_list | the EDNS options_list to add to |
[in] | option | the (non-NULL) EDNS option to add to the list |
Definition at line 338 of file edns.c.
References ldns_struct_edns_option_list::_option_capacity, ldns_struct_edns_option_list::_option_count, ldns_struct_edns_option_list::_options, ldns_edns_option_list_get_count(), ldns_edns_option_list_set_option(), LDNS_OPTIONLIST_INIT, and LDNS_XREALLOC.
ldns_edns_option* ldns_edns_option_list_pop | ( | ldns_edns_option_list * | options_list | ) |
removes and returns the EDNS option at the end of the list of options.
[in] | options_list | the EDNS options_list to add to |
Definition at line 384 of file edns.c.
References ldns_struct_edns_option_list::_option_capacity, ldns_struct_edns_option_list::_option_count, ldns_struct_edns_option_list::_options, ldns_struct_edns_option_list::_options_size, ldns_edns_get_size(), ldns_edns_option_list_get_count(), ldns_edns_option_list_get_option(), LDNS_OPTIONLIST_INIT, and LDNS_XREALLOC.
ldns_buffer* ldns_edns_option_list2wireformat_buffer | ( | const ldns_edns_option_list * | option_list | ) |
serializes all the EDNS options into a single wireformat buffer
[in] | option_list | the EDNS options_list to combine into one wireformat |
Definition at line 426 of file edns.c.
References ldns_buffer_new(), ldns_edns_get_code(), ldns_edns_get_data(), ldns_edns_get_size(), ldns_edns_option_list_get_count(), ldns_edns_option_list_get_option(), and ldns_edns_option_list_get_options_size().