| .\" Copyright (C) 2023 The c-ares project and its contributors. |
| .\" SPDX-License-Identifier: MIT |
| .\" |
| .TH ARES_DNS_RR 3 "12 November 2023" |
| .SH NAME |
| ares_dns_record_rr_add, ares_dns_record_rr_cnt, ares_dns_record_rr_del, |
| ares_dns_record_rr_get, ares_dns_rr_get_addr, ares_dns_rr_get_addr6, |
| ares_dns_rr_get_bin, ares_dns_rr_get_class, ares_dns_rr_get_name, |
| ares_dns_rr_get_opt, ares_dns_rr_get_opt_byid, ares_dns_rr_get_opt_cnt, |
| ares_dns_rr_get_str, ares_dns_rr_get_ttl, ares_dns_rr_get_type, |
| ares_dns_rr_get_u16, ares_dns_rr_get_u32, ares_dns_rr_get_u8, ares_dns_rr_key_t, |
| ares_dns_rr_set_addr, ares_dns_rr_set_addr6, ares_dns_rr_set_bin, |
| ares_dns_rr_set_opt, ares_dns_rr_set_str, ares_dns_rr_set_u16, |
| ares_dns_rr_set_u32, ares_dns_rr_set_u8, ares_dns_section_t, ares_tlsa_match_t, |
| ares_tlsa_selector_t, ares_tlsa_usage_t \- |
| DNS Resource Record creating, reading, and writing functions. |
| .SH SYNOPSIS |
| .nf |
| #include <ares.h> |
| |
| size_t ares_dns_record_rr_cnt(const ares_dns_record_t *dnsrec, |
| ares_dns_section_t sect); |
| |
| ares_status_t ares_dns_record_rr_add(ares_dns_rr_t **rr_out, |
| ares_dns_record_t *dnsrec, |
| ares_dns_section_t sect, |
| const char *name, |
| ares_dns_rec_type_t type, |
| ares_dns_class_t rclass, |
| unsigned int ttl); |
| |
| ares_dns_rr_t *ares_dns_record_rr_get(ares_dns_record_t *dnsrec, |
| ares_dns_section_t sect, |
| size_t idx); |
| |
| ares_status_t ares_dns_record_rr_del(ares_dns_record_t *dnsrec, |
| ares_dns_section_t sect, |
| size_t idx); |
| |
| const char *ares_dns_rr_get_name(const ares_dns_rr_t *rr); |
| |
| ares_dns_rec_type_t ares_dns_rr_get_type(const ares_dns_rr_t *rr); |
| |
| ares_dns_class_t ares_dns_rr_get_class(const ares_dns_rr_t *rr); |
| |
| unsigned int ares_dns_rr_get_ttl(const ares_dns_rr_t *rr); |
| |
| ares_status_t ares_dns_rr_set_addr(ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key, |
| const struct in_addr *addr); |
| |
| ares_status_t ares_dns_rr_set_addr6(ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key, |
| const struct ares_in6_addr *addr); |
| |
| ares_status_t ares_dns_rr_set_str(ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key, |
| const char *val); |
| |
| ares_status_t ares_dns_rr_set_u8(ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key, |
| unsigned char val); |
| |
| ares_status_t ares_dns_rr_set_u16(ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key, |
| unsigned short val); |
| |
| ares_status_t ares_dns_rr_set_u32(ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key, |
| unsigned int val); |
| |
| ares_status_t ares_dns_rr_set_bin(ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key, |
| const unsigned char *val, |
| size_t len); |
| |
| ares_status_t ares_dns_rr_set_opt(ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key, |
| unsigned short opt, |
| const unsigned char *val, |
| size_t val_len); |
| |
| const struct in_addr *ares_dns_rr_get_addr(const ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key); |
| |
| const struct ares_in6_addr *ares_dns_rr_get_addr6(const ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key); |
| |
| const char *ares_dns_rr_get_str(const ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key); |
| |
| unsigned char ares_dns_rr_get_u8(const ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key); |
| |
| unsigned short ares_dns_rr_get_u16(const ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key); |
| |
| unsigned int ares_dns_rr_get_u32(const ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key); |
| |
| const unsigned char *ares_dns_rr_get_bin(const ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key, |
| size_t *len); |
| |
| size_t ares_dns_rr_get_opt_cnt(const ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key); |
| |
| unsigned short ares_dns_rr_get_opt(const ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key, |
| size_t idx, |
| const unsigned char **val, |
| size_t *val_len); |
| |
| ares_bool_t ares_dns_rr_get_opt_byid(const ares_dns_rr_t *dns_rr, |
| ares_dns_rr_key_t key, |
| unsigned short opt, |
| const unsigned char **val, |
| size_t *val_len); |
| |
| .fi |
| .SH ENUMERATIONS |
| |
| .B ares_dns_section_t - |
| DNS RR section types: |
| .RS 4 |
| .B ARES_SECTION_ANSWER |
| - Answer section |
| .br |
| .B ARES_SECTION_AUTHORITY |
| - Authority section |
| .br |
| .B ARES_SECTION_ADDITIONAL |
| - Additional Information section |
| .br |
| .RE |
| |
| .B ares_dns_rr_key_t - |
| Keys used for handling RR record parameters: |
| .RS 4 |
| .B ARES_RR_A_ADDR |
| - A Record. Address. Datatype: \fIARES_DATATYPE_INADDR\fP |
| .br |
| .B ARES_RR_NS_NSDNAME |
| - NS Record. Name. Datatype: \fIARES_DATATYPE_NAME\fP |
| .br |
| .B ARES_RR_CNAME_CNAME |
| - CNAME Record. CName. Datatype: \fIARES_DATATYPE_NAME\fP |
| .br |
| .B ARES_RR_SOA_MNAME |
| - SOA Record. MNAME, Primary Source of Data. Datatype: \fIARES_DATATYPE_NAME\fP |
| .br |
| .B ARES_RR_SOA_RNAME |
| - SOA Record. RNAME, Mailbox of person responsible. Datatype: \fIARES_DATATYPE_NAME\fP |
| .br |
| .B ARES_RR_SOA_SERIAL |
| - SOA Record. Serial, version. Datatype: \fIARES_DATATYPE_U32\fP |
| .br |
| .B ARES_RR_SOA_REFRESH |
| - SOA Record. Refresh, zone refersh interval. Datatype: \fIARES_DATATYPE_U32\fP |
| .br |
| .B ARES_RR_SOA_RETRY |
| - SOA Record. Retry, failed refresh retry interval. Datatype: \fIARES_DATATYPE_U32\fP |
| .br |
| .B ARES_RR_SOA_EXPIRE |
| - SOA Record. Expire, upper limit on authority. Datatype: \fIARES_DATATYPE_U32\fP |
| .br |
| .B ARES_RR_SOA_MINIMUM |
| - SOA Record. Minimum, RR TTL. Datatype: \fIARES_DATATYPE_U32\fP |
| .br |
| .B ARES_RR_PTR_DNAME |
| - PTR Record. DNAME, pointer domain. Datatype: \fIARES_DATATYPE_NAME\fP |
| .br |
| .B ARES_RR_HINFO_CPU |
| - HINFO Record. CPU. Datatype: \fIARES_DATATYPE_STR\fP |
| .br |
| .B ARES_RR_HINFO_OS |
| - HINFO Record. OS. Datatype: \fIARES_DATATYPE_STR\fP |
| .br |
| .B ARES_RR_MX_PREFERENCE |
| - MX Record. Preference. Datatype: \fIARES_DATATYPE_U16\fP |
| .br |
| .B ARES_RR_MX_EXCHANGE |
| - MX Record. Exchange, domain. Datatype: \fIARES_DATATYPE_NAME\fP |
| .br |
| .B ARES_RR_TXT_DATA |
| - TXT Record. Data. Datatype: \fIARES_DATATYPE_BINP\fP |
| .br |
| .B ARES_RR_AAAA_ADDR |
| - AAAA Record. Address. Datatype: \fIARES_DATATYPE_INADDR6\fP |
| .br |
| .B ARES_RR_SRV_PRIORITY |
| - SRV Record. Priority. Datatype: \fIARES_DATATYPE_U16\fP |
| .br |
| .B ARES_RR_SRV_WEIGHT |
| - SRV Record. Weight. Datatype: \fIARES_DATATYPE_U16\fP |
| .br |
| .B ARES_RR_SRV_PORT |
| - SRV Record. Port. Datatype: \fIARES_DATATYPE_U16\fP |
| .br |
| .B ARES_RR_SRV_TARGET |
| - SRV Record. Target domain. Datatype: \fIARES_DATATYPE_NAME\fP |
| .br |
| .B ARES_RR_NAPTR_ORDER |
| - NAPTR Record. Order. Datatype: \fIARES_DATATYPE_U16\fP |
| .br |
| .B ARES_RR_NAPTR_PREFERENCE |
| - NAPTR Record. Preference. Datatype: \fIARES_DATATYPE_U16\fP |
| .br |
| .B ARES_RR_NAPTR_FLAGS |
| - NAPTR Record. Flags. Datatype: \fIARES_DATATYPE_STR\fP |
| .br |
| .B ARES_RR_NAPTR_SERVICES |
| - NAPTR Record. Services. Datatype: \fIARES_DATATYPE_STR\fP |
| .br |
| .B ARES_RR_NAPTR_REGEXP |
| - NAPTR Record. Regexp. Datatype: \fIARES_DATATYPE_STR\fP |
| .br |
| .B ARES_RR_NAPTR_REPLACEMENT |
| - NAPTR Record. Replacement. Datatype: \fIARES_DATATYPE_NAME\fP |
| .br |
| .B ARES_RR_OPT_UDP_SIZE |
| - OPT Record. UDP Size. Datatype: \fIARES_DATATYPE_U16\fP |
| .br |
| .B ARES_RR_OPT_VERSION |
| - OPT Record. Version. Datatype: \fIARES_DATATYPE_U8\fP |
| .br |
| .B ARES_RR_OPT_FLAGS |
| - OPT Record. Flags. Datatype: \fIARES_DATATYPE_U16\fP |
| .br |
| .B ARES_RR_OPT_OPTIONS |
| - OPT Record. Options. See \fIares_opt_param_t\fP. Datatype: \fIARES_DATATYPE_OPT\fP |
| .br |
| .B ARES_RR_TLSA_CERT_USAGE |
| - TLSA Record. Certificate Usage. See \fIares_tlsa_usage_t\fP. Datatype: \fIARES_DATATYPE_U8\fP |
| .br |
| .B ARES_RR_TLSA_SELECTOR |
| - TLSA Record. Selector. See \fIares_tlsa_selector_t\fP. Datatype: \fIARES_DATATYPE_U8\fP |
| .br |
| .B ARES_RR_TLSA_MATCH |
| - TLSA Record. Matching Type. See \fIares_tlsa_match_t\fP. Datatype: \fIARES_DATATYPE_U8\fP |
| .br |
| .B ARES_RR_TLSA_DATA |
| - TLSA Record. Certificate Association Data. Datatype: \fIARES_DATATYPE_BIN\fP |
| .br |
| .B ARES_RR_SVCB_PRIORITY |
| - SVCB Record. SvcPriority. Datatype: \fIARES_DATATYPE_U16\fP |
| .br |
| .B ARES_RR_SVCB_TARGET |
| - SVCB Record. TargetName. Datatype: \fIARES_DATATYPE_NAME\fP |
| .br |
| .B ARES_RR_SVCB_PARAMS |
| - SVCB Record. SvcParams. See \fIares_svcb_param_t\fP. Datatype: \fIARES_DATATYPE_OPT\fP |
| .br |
| .B ARES_RR_HTTPS_PRIORITY |
| - HTTPS Record. SvcPriority. Datatype: \fIARES_DATATYPE_U16\fP |
| .br |
| .B ARES_RR_HTTPS_TARGET |
| - HTTPS Record. TargetName. Datatype: \fIARES_DATATYPE_NAME\fP |
| .br |
| .B ARES_RR_HTTPS_PARAMS |
| - HTTPS Record. SvcParams. See \fIares_svcb_param_t\fP. Datatype: \fIARES_DATATYPE_OPT\fP |
| .br |
| .B ARES_RR_URI_PRIORITY |
| - URI Record. Priority. Datatype: \fIARES_DATATYPE_U16\fP |
| .br |
| .B ARES_RR_URI_WEIGHT |
| - URI Record. Weight. Datatype: \fIARES_DATATYPE_U16\fP |
| .br |
| .B ARES_RR_URI_TARGET |
| - URI Record. Target domain. Datatype: \fIARES_DATATYPE_NAME\fP |
| .br |
| .B ARES_RR_CAA_CRITICAL |
| - CAA Record. Critical flag. Datatype: \fIARES_DATATYPE_U8\fP |
| .br |
| .B ARES_RR_CAA_TAG |
| - CAA Record. Tag/Property. Datatype: \fIARES_DATATYPE_STR\fP |
| .br |
| .B ARES_RR_CAA_VALUE |
| - CAA Record. Value. Datatype: \fIARES_DATATYPE_BINP\fP |
| .br |
| .B ARES_RR_RAW_RR_TYPE |
| - RAW Record. RR Type. Datatype: \fIARES_DATATYPE_U16\fP |
| .br |
| .B ARES_RR_RAW_RR_DATA |
| - RAW Record. RR Data. Datatype: \fIARES_DATATYPE_BIN\fP |
| .br |
| .RE |
| |
| .B ares_tlsa_usage_t - |
| TLSA Record \fIARES_RR_TLSA_CERT_USAGE\fP known values |
| .RS 4 |
| .B ARES_TLSA_USAGE_CA |
| - Certificate Usage 0. CA Constraint |
| .br |
| .B ARES_TLSA_USAGE_SERVICE |
| - Certificate Usage 1. Service Certificate Constraint |
| .br |
| .B ARES_TLSA_USAGE_TRUSTANCHOR |
| - Certificate Usage 2. Trust Anchor Assertion |
| .br |
| .B ARES_TLSA_USAGE_DOMAIN |
| - Certificate Usage 3. Domain-issued certificate |
| .br |
| .RE |
| |
| .B ares_tlsa_selector_t - |
| TLSA Record \fIARES_RR_TLSA_SELECTOR\fP known values: |
| .RS 4 |
| .B ARES_TLSA_SELECTOR_FULL |
| - Full Certificate |
| .br |
| .B ARES_TLSA_SELECTOR_SUBJPUBKEYINFO |
| - DER-encoded SubjectPublicKeyInfo |
| .br |
| .RE |
| |
| .B ares_tlsa_match_t - |
| TLSA Record \fIARES_RR_TLSA_MATCH\fP known values: |
| .RS 4 |
| .B ARES_TLSA_MATCH_EXACT |
| - Exact match |
| .br |
| .B ARES_TLSA_MATCH_SHA256 |
| - Sha256 match |
| .br |
| .B ARES_TLSA_MATCH_SHA512 |
| - Sha512 match |
| .br |
| .RE |
| |
| |
| .SH DESCRIPTION |
| |
| The \fIares_dns_record_rr_cnt(3)\fP function returns the number of resource |
| records in the DNS record provided by the |
| .IR dnsrec |
| parameter for the section provided in the |
| .IR sect |
| parameter. |
| |
| The \fIares_dns_record_rr_add(3)\fP function adds a new resource record entry |
| the the DNS record provided by the |
| .IR dnsrec |
| parameter. The resulting resource record is stored into the variable pointed to by |
| .IR rr_out. |
| The DNS section the resource record belongs to is specified by the |
| .IR sect |
| parameter. The domain name associated with the resource record is specified by the |
| .IR name |
| parameter, which can not be NULL but may be an empty string, or ".". The resource |
| record type is specified in the |
| .IR type |
| parameter, along with the DNS record class in the |
| .IR rclass |
| parameter, and the Time To Live (TTL) in the |
| .IR ttl |
| parameter. |
| |
| |
| The \fIares_dns_record_rr_get(3)\fP function is used to retrieve the resource |
| record pointer from the DNS record provided in the |
| .IR dnsrec |
| parameter, for the resource record section provided in the |
| .IR sect |
| parameter, for the specified index in the |
| .IR idx |
| parameter. The index must be less than \fIares_dns_record_rr_cnt(3)\fP. |
| |
| |
| The \fIares_dns_record_rr_del(3)\fP is used to delete a resource record from |
| the DNS record specified in the |
| .IR dnsrec |
| parameter. Its primary use is to remove a \fIARES_REC_TYPE_OPT\fP record when |
| needing to retry a query without EDNS support. The DNS RR section is specified |
| via the |
| .IR sect |
| parameter, and the index to remove is specified in the |
| .IR idx |
| parameter. The index must be less than \fIares_dns_record_rr_cnt(3)\fP. |
| |
| |
| The \fIares_dns_rr_get_name(3)\fP function is used to retrieve the resource |
| record domain name from the Resource Record pointer provided in the |
| .IR rr |
| parameter. |
| |
| The \fIares_dns_rr_get_type(3)\fP function is used to retrieve the resource |
| record type from the Resource Record pointer provided in the |
| .IR rr |
| parameter. |
| |
| The \fIares_dns_rr_get_class(3)\fP function is used to retrieve the resource |
| record class from the Resource Record pointer provided in the |
| .IR rr |
| parameter. |
| |
| The \fIares_dns_rr_get_ttl(3)\fP function is used to retrieve the resource |
| record class Time to Live (TTL) from the Resource Record pointer provided in the |
| .IR rr |
| parameter. |
| |
| The \fIares_dns_rr_set_addr(3)\fP function is used to set an IPv4 address for the |
| associated resource record key/parameter when the datatype is \fIARES_DATATYPE_INADDR\fP. |
| The resource record to be modified is provided in the |
| .IR dns_rr |
| parameter, the key/parameter is provided in the |
| .IR key |
| parameter, and the value is provided in the |
| .IR addr |
| parameter. |
| |
| The \fIares_dns_rr_set_addr6(3)\fP function is used to set an IPv6 address for the |
| associated resource record key/parameter when the datatype is \fIARES_DATATYPE_INADDR6\fP. |
| The resource record to be modified is provided in the |
| .IR dns_rr |
| parameter, the key/parameter is provided in the |
| .IR key |
| parameter, and the value is provided in the |
| .IR addr |
| parameter. |
| |
| The \fIares_dns_rr_set_str(3)\fP function is used to set a string for the |
| associated resource record key/parameter when the datatype is \fIARES_DATATYPE_STR\fP |
| or \fIARES_DATATYPE_NAME\fP. Most strings are limited to 255 bytes, |
| however some records, such as a TXT record may allow longer as they are output |
| as multiple strings. The resource record to be modified is |
| provided in the |
| .IR dns_rr |
| parameter, the key/parameter is provided in the |
| .IR key |
| parameter, and the value is provided in the |
| .IR val |
| parameter. |
| |
| The \fIares_dns_rr_set_u8(3)\fP function is used to set an 8bit unsigned value for the |
| associated resource record key/parameter when the datatype is \fIARES_DATATYPE_U8\fP. |
| The resource record to be modified is provided in the |
| .IR dns_rr |
| parameter, the key/parameter is provided in the |
| .IR key |
| parameter, and the value is provided in the |
| .IR val |
| parameter. |
| |
| The \fIares_dns_rr_set_u16(3)\fP function is used to set an 16bit unsigned value for the |
| associated resource record key/parameter when the datatype is \fIARES_DATATYPE_U16\fP. |
| The resource record to be modified is provided in the |
| .IR dns_rr |
| parameter, the key/parameter is provided in the |
| .IR key |
| parameter, and the value is provided in the |
| .IR val |
| parameter. |
| |
| The \fIares_dns_rr_set_u32(3)\fP function is used to set an 32bit unsigned value for the |
| associated resource record key/parameter when the datatype is \fIARES_DATATYPE_U32\fP. |
| The resource record to be modified is provided in the |
| .IR dns_rr |
| parameter, the key/parameter is provided in the |
| .IR key |
| parameter, and the value is provided in the |
| .IR val |
| parameter. |
| |
| The \fIares_dns_rr_set_bin(3)\fP function is used to set an binary value for the |
| associated resource record key/parameter when the datatype is \fIARES_DATATYPE_BIN\fP |
| or \fIARES_DATATYPE_BINP\fP. |
| The resource record to be modified is provided in the |
| .IR dns_rr |
| parameter, the key/parameter is provided in the |
| .IR key |
| parameter, and the value is provided in the |
| .IR val |
| parameter. And the associated value length is provided in the |
| .IR len |
| parameter. |
| |
| The \fIares_dns_rr_set_opt(3)\fP function is used to set option/parameter keys and |
| values for the resource record when the datatype if \fIARES_DATATYPE_OPT\fP. The |
| resource record to be modified is provided in the |
| .IR dns_rr |
| parameter. They key/parameter is provided in the |
| .IR key |
| parameter. The option/parameter value specific to the resource record is provided |
| in the |
| .IR opt |
| parameter, and this is left to the user to determine the appropriate value to |
| use. Some known values may be provided by \fIares_svcb_param_t\fP and \fIares_opt_param_t\fP |
| enumerations. The value for the option is always provided in binary form in |
| .IR val |
| with length provided in |
| .IR val_len. |
| |
| The \fIares_dns_rr_get_addr(3)\fP function is used to retrieve the IPv4 address |
| from the resource record when the datatype is \fIARES_DATATYPE_INADDR\fP. The |
| resource record is provided in the |
| .IR dns_rr |
| parameter and the key/parameter to retrieve is provided in the |
| .IR key |
| parameter. |
| |
| The \fIares_dns_rr_get_addr6(3)\fP function is used to retrieve the IPv6 address |
| from the resource record when the datatype is \fIARES_DATATYPE_INADDR6\fP. The |
| resource record is provided in the |
| .IR dns_rr |
| parameter and the key/parameter to retrieve is provided in the |
| .IR key |
| parameter. |
| |
| The \fIares_dns_rr_get_str(3)\fP function is used to retrieve a string |
| from the resource record when the datatype is \fIARES_DATATYPE_STR\fP or |
| \fIARES_DATATYPE_NAME\fP. The resource record is provided in the |
| .IR dns_rr |
| parameter and the key/parameter to retrieve is provided in the |
| .IR key |
| parameter. |
| |
| The \fIares_dns_rr_get_u8(3)\fP function is used to retrieve an 8bit integer |
| from the resource record when the datatype is \fIARES_DATATYPE_U8\fP. |
| The resource record is provided in the |
| .IR dns_rr |
| parameter and the key/parameter to retrieve is provided in the |
| .IR key |
| parameter. |
| |
| The \fIares_dns_rr_get_u16(3)\fP function is used to retrieve a 16bit integer |
| from the resource record when the datatype is \fIARES_DATATYPE_U16\fP. |
| The resource record is provided in the |
| .IR dns_rr |
| parameter and the key/parameter to retrieve is provided in the |
| .IR key |
| parameter. |
| |
| The \fIares_dns_rr_get_u32(3)\fP function is used to retrieve a 32bit integer |
| from the resource record when the datatype is \fIARES_DATATYPE_U32\fP. |
| The resource record is provided in the |
| .IR dns_rr |
| parameter and the key/parameter to retrieve is provided in the |
| .IR key |
| parameter. |
| |
| The \fIares_dns_rr_get_bin(3)\fP function is used to retrieve binary data |
| from the resource record when the datatype is \fIARES_DATATYPE_BIN\fP or |
| \fIARES_DATATYPE_BINP\fP. |
| The resource record is provided in the |
| .IR dns_rr |
| parameter and the key/parameter to retrieve is provided in the |
| .IR key |
| parameter, and length is stored into the variable pointed to by |
| .IR len. |
| |
| The \fIares_dns_rr_get_opt_cnt(3)\fP function is used to retrieve the count |
| of options/parameters associated with the resource record when the datatype |
| is \fIARES_DATATYPE_OPT\fP. |
| The resource record is provided in the |
| .IR dns_rr |
| parameter and the key/parameter to retrieve is provided in the |
| .IR key. |
| |
| The \fIares_dns_rr_get_opt(3)\fP function is used to retrieve binary option data |
| from the resource record when the datatype is \fIARES_DATATYPE_OPT\fP for the |
| specified index. |
| The resource record is provided in the |
| .IR dns_rr |
| parameter and the key/parameter to retrieve is provided in the |
| .IR key |
| parameter, the index to retrieve the option data from is provided in the |
| .IR idx |
| parameter. The value is stored into the variable pointed to by |
| .IR val |
| and length is stored into the variable pointed to by |
| .IR val_len. |
| |
| The \fIares_dns_rr_get_opt_byid(3)\fP function is used to retrieve binary option data |
| from the resource record when the datatype is \fIARES_DATATYPE_OPT\fP for the |
| specified option identifier, if it exists. |
| The resource record is provided in the |
| .IR dns_rr |
| parameter and the key/parameter to retrieve is provided in the |
| .IR key |
| parameter, the identifier to retrieve the option data from is provided in the |
| .IR opt |
| parameter. The value is stored into the variable pointed to by |
| .IR val |
| and length is stored into the variable pointed to by |
| .IR val_len. |
| |
| |
| .SH RETURN VALUES |
| |
| \fIares_dns_record_rr_cnt(3)\fP and \fIares_dns_rr_get_opt_cnt(3)\fP return the |
| respective counts. |
| |
| \fIares_dns_record_rr_add(3)\fP, \fIares_dns_record_rr_del(3)\fP, |
| \fIares_dns_rr_set_addr(3)\fP, \fIares_dns_rr_set_addr6(3)\fP, |
| \fIares_dns_rr_set_str(3)\fP, \fIares_dns_rr_set_u8(3)\fP, |
| \fIares_dns_rr_set_u16(3)\fP, \fIares_dns_rr_set_u32(3)\fP, |
| \fIares_dns_rr_set_bin(3)\fP, and \fIares_dns_rr_set_opt(3)\fP all |
| return an \fIares_status_t\fP error code. |
| .B ARES_SUCCESS |
| is returned on success, |
| .B ARES_ENOMEM |
| is returned on out of memory, |
| .B ARES_EFORMERR |
| is returned on misuse. |
| |
| |
| \fIares_dns_rr_get_name(3)\fP, \fIares_dns_rr_get_type(3)\fP, |
| \fIares_dns_rr_get_class(3)\fP, \fIares_dns_rr_get_ttl(3)\fP, |
| \fIares_dns_rr_get_addr(3)\fP, \fIares_dns_rr_get_addr6(3)\fP, |
| \fIares_dns_rr_get_str(3)\fP, \fIares_dns_rr_get_u8(3)\fP, |
| \fIares_dns_rr_get_u16(3)\fP, \fIares_dns_rr_get_u32(3)\fP, |
| \fIares_dns_rr_get_bin(3)\fP, \fIares_dns_rr_get_opt(3)\fP all return their |
| prescribed datatype values and in general can't fail except for misuse cases, |
| in which a 0 (or NULL) may be returned, however 0 can also be a valid return |
| value for most of these functions. |
| |
| \fIares_dns_record_rr_get(3)\fP will return the requested resource record |
| pointer or NULL on failure (misuse). |
| |
| \fIares_dns_rr_get_opt_byid(3)\fP will return ARES_TRUE if the option was |
| found, otherwise ARES_FALSE if not found (or misuse). |
| |
| .SH AVAILABILITY |
| These functions were first introduced in c-ares version 1.22.0. |
| .SH SEE ALSO |
| .BR ares_dns_mapping (3), |
| .BR ares_dns_record (3), |
| .BR ares_free_string (3) |
| .SH AUTHOR |
| Copyright (C) 2023 The c-ares project and its members. |