mirror of https://github.com/c-ares/c-ares.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
622 lines
21 KiB
622 lines
21 KiB
1 year ago
|
.\" Copyright (C) 2023 The c-ares project and its contributors.
|
||
|
.\" SPDX-License-Identifier: MIT
|
||
|
.\"
|
||
|
.TH ARES_DNS_RR 3 "12 November 2023"
|
||
|
.SH NAME
|
||
|
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 Assertation
|
||
|
.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 withe 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_by_id(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.
|