ARES\_CREATE\_QUERY(3) Library Functions Manual ARES\_CREATE\_QUERY(3)

# [NAME](#NAME)

ares\_create\_query - Compose a single-question DNS query buffer

# [SYNOPSIS](#SYNOPSIS)

```
#include <ares.h>
int ares_create_query(const char *name,


                      int dnsclass,


                      int type,


                      unsigned short id,


                      int rd,


                      unsigned char **buf,


                      int *buflen,


                      int max_udp_size)
```

# [DESCRIPTION](#DESCRIPTION)

This function is deprecated as of c-ares 1.22, please use [*ares\_dns\_record\_create(3)*](/man/os/c-ares/ares_dns_record_create.3) instead.

The [*ares\_create\_query(3)*](/man/os/c-ares/ares_create_query.3) function composes a DNS query with a single question. The parameter *name* gives the query name as a NUL-terminated C string of period-separated labels optionally ending with a period; periods and backslashes within a label must be escaped with a backlash.

The parameters *dnsclass* and *type* give the class and type of the query using the values defined in **&lt;arpa/nameser.h&gt;**.

The parameter *id* gives a 16-bit identifier for the query.

The parameter *rd* should be nonzero if recursion is desired, zero if not.

The query will be placed in an allocated buffer, a pointer to which will be stored in the variable pointed to by *buf*, and the length of which will be stored in the variable pointed to by *buflen*.

It is the caller's responsibility to free this buffer using [*ares\_free\_string(3)*](/man/os/c-ares/ares_free_string.3) when it is no longer needed. The parameter *max\_udp\_size* should be nonzero to activate EDNS. Usage of [*ares\_create\_query(3)*](/man/os/c-ares/ares_create_query.3) with *max\_udp\_size* set to zero is equivalent to using [*ares\_mkquery(3)*](/man/os/c-ares/ares_mkquery.3).

# [RETURN VALUES](#RETURN_VALUES)

**ares\_create\_query** can return any of the following values:

[**ARES\_SUCCESS**](#ARES_SUCCESS)

Construction of the DNS query succeeded.

[**ARES\_ENOTFOUND**](#ARES_ENOTFOUND)

The query name *name* refers to a *.onion* domain name. See RFC 7686.

[**ARES\_EBADNAME**](#ARES_EBADNAME)

The query name *name* could not be encoded as a domain name, either because it contained a zero-length label or because it contained a label of more than 63 characters.

[**ARES\_ENOMEM**](#ARES_ENOMEM)

Memory was exhausted.

# [AVAILABILITY](#AVAILABILITY)

Added in c-ares 1.10.0

# [SEE ALSO](#SEE_ALSO)

[**ares\_dns\_record**(3)](/man/os/c-ares/ares_dns_record.3), [**ares\_expand\_name**(3)](/man/os/c-ares/ares_expand_name.3), [**ares\_free\_string**(3)](/man/os/c-ares/ares_free_string.3), [**ares\_mkquery**(3)](/man/os/c-ares/ares_mkquery.3)

17 Aug 2012

---

Document: ares_create_query(3) from c-ares 1.34.8-r4 (Chainguard OS)
Source: https://github.com/c-ares/c-ares
