ARES\_MKQUERY(3) Library Functions Manual ARES\_MKQUERY(3)

# [NAME](#NAME)

ares\_mkquery - Compose a single-question DNS query buffer

# [SYNOPSIS](#SYNOPSIS)

```
#include <ares.h>
int ares_mkquery(const char *name, int dnsclass, int type,


                 unsigned short id, int rd, unsigned char **buf,


                 int *buflen)
```

# [DESCRIPTION](#DESCRIPTION)

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

The **ares\_mkquery** 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.

Usage of [*ares\_mkquery(3)*](/man/os/c-ares/ares_mkquery.3) is deprecated, whereas the function is equivalent to [*ares\_create\_query(3)*](/man/os/c-ares/ares_create_query.3) with **max\_udp\_size** set to 0.

# [RETURN VALUES](#RETURN_VALUES)

**ares\_mkquery** 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.

# [SEE ALSO](#SEE_ALSO)

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

20 Nov 2009

---

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