ARES_DNS_MAPPINGS(3)
π ARES_DNS_MAPPINGS(3) π
okay so bestie, welcome to the Library Functions Manual, section 3 π«Ά this page is literally the translator station for DNS record identifiers β turning them from numbers to names and back, plus figuring out what datatype each thing actually is. no cap. β¨
πΈ NAME πΈ
ares_dns_class_fromstr, ares_dns_class_tostr, ares_dns_datatype_t, ares_dns_opcode_tostr, ares_dns_opt_datatype_t, ares_dns_opt_get_datatype, ares_dns_opt_get_name, ares_dns_rcode_tostr, ares_dns_rec_type_fromstr, ares_dns_rr_get_keys, ares_dns_rr_key_datatype, ares_dns_rr_key_to_rec_type, ares_dns_rr_key_tostr, ares_dns_section_tostr, ares_opt_param_t, ares_svcb_param_t β Helper functions for converting dns record identifiers to and from their respective types, as well identifying datatypes for various records.
β¨ SYNOPSIS β¨
#include <ares.h>
const char *ares_dns_rec_type_tostr(ares_dns_rec_type_t type);
const char *ares_dns_class_tostr(ares_dns_class_t qclass);
const char *ares_dns_opcode_tostr(ares_dns_opcode_t opcode);
const char *ares_dns_rr_key_tostr(ares_dns_rr_key_t key);
const char *ares_dns_section_tostr(ares_dns_section_t section);
const char *ares_dns_rcode_tostr(ares_dns_rcode_t rcode);
ares_bool_t ares_dns_class_fromstr(ares_dns_class_t *qclass, const char *str);
ares_bool_t ares_dns_rec_type_fromstr(ares_dns_rec_type_t *qtype,
const char *str);
const ares_dns_rr_key_t *ares_dns_rr_get_keys(ares_dns_rec_type_t type,
size_t *cnt);
ares_dns_datatype_t ares_dns_rr_key_datatype(ares_dns_rr_key_t key);
ares_dns_rec_type_t ares_dns_rr_key_to_rec_type(ares_dns_rr_key_t key);
ares_dns_opt_datatype_t ares_dns_opt_get_datatype(ares_dns_rr_key_t key,
unsigned short opt);
const char *ares_dns_opt_get_name(ares_dns_rr_key_t key, unsigned short opt);
π ENUMERATIONS π
ares_dns_datatype_t β data types that vibe with ares_dns_rr_key_t
ARES_DATATYPE_INADDRβ IPv4 address asstruct in_addr *. Useares_dns_rr_set_addr(3)to set andares_dns_rr_get_addr(3)to get.ARES_DATATYPE_INADDR6β IPv6 address asstruct ares_in6_addr *. Useares_dns_rr_set_addr6(3)to set andares_dns_rr_get_addr6(3)to get.ARES_DATATYPE_U8β 8bit unsigned integer. Useares_dns_rr_set_u8(3)to set andares_dns_rr_get_u8(3)to get.ARES_DATATYPE_U16β 16bit unsigned integer. Useares_dns_rr_set_u16(3)to set andares_dns_rr_get_u16(3)to get.ARES_DATATYPE_U32β 32bit unsigned integer. Useares_dns_rr_set_u32(3)to set andares_dns_rr_get_u32(3)to get.ARES_DATATYPE_NAMEβ Null-terminated string of a domain name (series of labels). Useares_dns_rr_set_str(3)to set andares_dns_rr_get_str(3)to get.ARES_DATATYPE_STRβ Null-terminated string. Useares_dns_rr_set_str(3)to set andares_dns_rr_get_str(3)to get.ARES_DATATYPE_BINβ Binary Data. Useares_dns_rr_set_bin(3)to set andares_dns_rr_get_bin(3)to get.ARES_DATATYPE_BINPβ Officially defined as binary data, but likely printable. Guaranteed to have aNULLterminator for convenience (not included in length). Useares_dns_rr_set_bin(3)to set andares_dns_rr_get_bin(3)to get.ARES_DATATYPE_OPTβ Array of options. 16bit identifier, Binary data. Useares_dns_rr_set_opt(3)to set andares_dns_rr_get_opt(3)to get.ARES_DATATYPE_ABINPβ Array of binary data, but likely printable. Guaranteed to have aNULLterminator for convenience (not included in length). Useares_dns_rr_add_abin(3)to set andares_dns_rr_get_abin(3)to get. Can also useares_dns_rr_set_bin(3)andares_dns_rr_get_bin(3)if only concatenated strings are desired.
ares_dns_opt_datatype_t β data types that hang out with ARES_DATATYPE_OPT parameters, if we know them, as handed back by ares_dns_opt_get_datatype(3)
ARES_OPT_DATATYPE_NONEβ No value allowed for this parameterARES_OPT_DATATYPE_STR_LISTβ List of strings, each prefixed with a single octet representing the length as defined by RFC 1035. Can useares_expand_string(3)until buffer is consumed.ARES_OPT_DATATYPE_U8_LISTβ List of 8bit unsigned integers, concatenatedARES_OPT_DATATYPE_U16β 16bit unsigned integer in network byte orderARES_OPT_DATATYPE_U16_LISTβ list of 16bit unsigned integers in network byte order, concatenated.ARES_OPT_DATATYPE_U32β 32bit unsigned integer in network byte orderARES_OPT_DATATYPE_U32_LISTβ list of 16bit unsigned integers in network byte order, concatenated.ARES_OPT_DATATYPE_INADDR4_LISTβ List of ipv4 addresses in network byte order, concatenatedARES_OPT_DATATYPE_INADDR6_LISTβ List of ipv6 addresses in network byte order, concatenatedARES_OPT_DATATYPE_BINβ Binary DataARES_OPT_DATATYPE_NAMEβ DNS Domain Name binary format as defined in RFC1035, can useares_expand_name(3)
ares_svcb_param_t β SVCB (and HTTPS) RR known parameters, as returned by ares_dns_opt_get_datatype(3) with ARES_RR_SVCB_PARAMS or ARES_RR_HTTPS_PARAMS
ARES_SVCB_PARAM_MANDATORYβ Mandatory keys in this RR (RFC 9460 Section 8). Datatype:ARES_OPT_DATATYPE_U16_LISTARES_SVCB_PARAM_ALPNβ Additional supported protocols (RFC 9460 Section 7.1). Datatype:ARES_OPT_DATATYPE_STR_LISTARES_SVCB_PARAM_NO_DEFAULT_ALPNβ No support for default protocol (RFC 9460 Section 7.1). Datatype:ARES_OPT_DATATYPE_NONEARES_SVCB_PARAM_PORTβ Port for alternative endpoint (RFC 9460 Section 7.2). Datatype:ARES_OPT_DATATYPE_U16ARES_SVCB_PARAM_IPV4HINTβ IPv4 address hints (RFC 9460 Section 7.3). Datatype:ARES_OPT_DATATYPE_INADDR4_LISTARES_SVCB_PARAM_ECHβ RESERVED (held for Encrypted ClientHello)ARES_SVCB_PARAM_IPV6HINTβ IPv6 address hints (RFC 9460 Section 7.3). Datatype:ARES_OPT_DATATYPE_INADDR6_LIST
ares_opt_param_t β OPT RR known parameters, as returned by ares_dns_opt_get_datatype(3) with ARES_RR_OPT_OPTIONS
ARES_OPT_PARAM_LLQβ RFC 8764. Apple's DNS Long-Lived Queries Protocol. Datatype:ARES_OPT_DATATYPE_BINARES_OPT_PARAM_ULβhttp://files.dns-sd.org/draft-sekar-dns-ul.txt: Update Lease. Datatype:ARES_OPT_DATATYPE_U32ARES_OPT_PARAM_NSIDβ RFC 5001. Name Server Identification. Datatype:ARES_OPT_DATATYPE_BINARES_OPT_PARAM_DAUβ RFC 6975. DNSSEC Algorithm Understood. Datatype:ARES_OPT_DATATYPE_U8_LISTARES_OPT_PARAM_DHUβ RFC 6975. DS Hash Understood. Datatype:ARES_OPT_DATATYPE_U8_LISTARES_OPT_PARAM_N3Uβ RFC 6975. NSEC3 Hash Understood. Datatype:ARES_OPT_DATATYPE_U8_LISTARES_OPT_PARAM_EDNS_CLIENT_SUBNETβ RFC 7871. Client Subnet. Datatype:ARES_OPT_DATATYPE_BINARES_OPT_PARAM_EDNS_EXPIREβ RFC 7314. Expire Timer. Datatype:ARES_OPT_DATATYPE_U32ARES_OPT_PARAM_COOKIEβ RFC 7873. Client and Server Cookies. Datatype:ARES_OPT_DATATYPE_BINARES_OPT_PARAM_EDNS_TCP_KEEPALIVEβ RFC 7828. TCP Keepalive timeout. Datatype:ARES_OPT_DATATYPE_U16ARES_OPT_PARAM_PADDINGβ RFC 7830. Padding. Datatype:ARES_OPT_DATATYPE_BINARES_OPT_PARAM_CHAINβ RFC 7901. Chain query requests. Datatype:ARES_OPT_DATATYPE_NAMEARES_OPT_PARAM_EDNS_KEY_TAGβ RFC 8145. Signaling Trust Anchor Knowledge in DNSSEC. Datatype:ARES_OPT_DATATYPE_U16_LISTARES_OPT_PARAM_EXTENDED_DNS_ERRORβ RFC 8914. Extended ERROR code and message. Datatype:ARES_OPT_DATATYPE_BIN
π¦ DESCRIPTION π¦
okay so here's the rundown of every single one of these besties, one by one π
The ares_dns_rec_type_tostr(3) function outputs a human readable DNS record type from its numeric form passed in type.
The ares_dns_class_tostr(3) function outputs a human readable DNS class from its numeric form passed in qclass.
The ares_dns_opcode_tostr(3) function outputs a human readable DNS opcode from its numeric form in opcode.
The ares_dns_rr_key_tostr(3) function outputs a human readable DNS Resource Record parameter name from its numeric form in key.
The ares_dns_section_tostr(3) function outputs a human readable DNS message section from its numeric form in section.
The ares_dns_rcode_tostr(3) function outputs a human readable DNS response code from its numeric form in rcode.
The ares_dns_class_fromstr(3) function outputs the DNS class in numeric from from its string representation in str. The result is stored into the variable pointed to by qclass.
The ares_dns_rec_type_fromstr(3) function outputs the DNS record type in numeric from from its string representation in str. The result is stored into the variable pointed to by qtype.
The ares_dns_rr_get_keys(3) function retrieves a list of parameters that may be set or retrieved for the provided type. The count of returned keys is stored into the variable pointed to by cnt.
The ares_dns_rr_key_datatype(3) function retrieves the associated datatype for an RR parameter specified by key.
The ares_dns_rr_key_to_rec_type(3) function dereferences the provided RR parameter specified by key to the DNS Record Type it belongs.
The ares_dns_opt_get_datatype(3) function is used in association with ares_dns_rr_set_opt(3) and ares_dns_rr_get_opt(3) to retrieve the datatype of an option record contained within an RR as specified in key if it is known. The raw option record identifier is provided by opt.
The ares_dns_opt_get_name(3) function is used in association with ares_dns_rr_set_opt(3) and ares_dns_rr_get_opt(3) to retrieve human readable parameter name of an option record contained within an RR as specified in key if it is known. The raw option record identifier is provided by opt.
π₯ RETURN VALUES π₯
ares_dns_rec_type_tostr(3), ares_dns_class_tostr(3), ares_dns_opcode_tostr(3), ares_dns_rr_key_tostr(3), ares_dns_section_tostr(3), ares_dns_rcode_tostr(3), and ares_dns_opt_get_name(3) all return a human printable ASCII string, or NULL on error.
ares_dns_class_fromstr(3) and ares_dns_rec_type_fromstr(3) return ARES_TRUE on successful conversion, otherwise ARES_FALSE.
ares_dns_rr_get_keys(3) returns an array of keys or NULL on failure.
ares_dns_rr_key_datatype(3), ares_dns_rr_key_to_rec_type(3), and ares_dns_opt_get_datatype(3) return their respective integer values, or 0 on failure.
π AVAILABILITY π
These functions were first introduced in c-ares version 1.22.0.
π SEE ALSO π
ares_dns_record(3), ares_dns_rr(3), ares_init(3)
and that's the whole page bestie!! π this one came out of the c-ares world, dated 12 November 2023, and it lives at ARES_DNS_MAPPINGS(3) in the Library Functions Manual β go forth and map those DNS identifiers, you absolute icon πβ¨π¦
π¦ where this page comes from
- alpine 3.22: c-ares-doc 1.34.9-r0 Β· MIT
- alpine 3.23: c-ares-doc 1.34.9-r0 Β· MIT
- alpine 3.24: c-ares-doc 1.34.9-r0 Β· MIT
- arch rolling: c-ares 1.34.9-1 Β· MIT
- centos-stream 10: c-ares-devel 1.34.9-1.el10 Β· MIT
- debian trixie: libc-ares-dev 1.34.5-1+deb13u1 Β· MIT
- fedora 43: c-ares-devel 1.34.5-2.fc43 Β· MIT
- fedora 43: c-ares-devel 1.34.5-2.fc43 Β· MIT
- fedora 43: c-ares-devel 1.34.8-1.fc43 Β· MIT
- fedora 43: c-ares-devel 1.34.8-1.fc43 Β· MIT
- fedora 44: c-ares-devel 1.34.6-3.fc44 Β· MIT
- fedora 44: c-ares-devel 1.34.6-3.fc44 Β· MIT
- fedora 44: c-ares-devel 1.34.8-1.fc44 Β· MIT
- fedora 44: c-ares-devel 1.34.8-1.fc44 Β· MIT
- nixos 26.05: c-ares 1.34.9
- nixpkgs unstable: c-ares 1.34.8
- opensuse-leap 16.0: c-ares-devel 1.34.8-160000.1.1 Β· MIT
- opensuse-leap 16.0: c-ares-devel 1.34.8-160000.1.1 Β· MIT
- opensuse-leap 16.0: c-ares-devel 1.34.8-160000.1.1 Β· MIT
- opensuse-leap 16.0: c-ares-devel 1.34.8-160000.1.1 Β· MIT
- ubuntu questing: libc-ares-dev 1.34.5-1
- ubuntu questing: libc-ares-dev 1.34.5-1ubuntu0.1
- ubuntu resolute: libc-ares-dev 1.34.6-1 Β· MIT
- ubuntu resolute: libc-ares-dev 1.34.6-1ubuntu0.1
- ubuntu resolute: libc-ares-dev 1.34.6-1ubuntu0.2 Β· MIT
- ubuntu stonking: libc-ares-dev 1.34.8-1 Β· MIT
- π the page's license: MIT
- Copyright (C) 2023 The c-ares project and its contributors
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms