---
name: "ares_expand_name"
section: "3"
platform: "linux"
package: "c-ares"
version: "1.34.9-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ares_expand_name"
---

# ares\_expand\_name(3)

Expand a DNS-encoded domain name

## NAME

ares\_expand\_name - Expand a DNS-encoded domain name

## SYNOPSIS

```
#include <ares.h>
int ares_expand_name(const unsigned char *encoded,
                     const unsigned char *abuf, int alen,
                     char **s, long *enclen)
```

## DESCRIPTION

The **ares\_expand\_name** function converts a DNS-encoded domain name to a dot-separated C string.  The argument *encoded* gives the beginning of the encoded domain name, and the arguments *abuf* and *alen* give the containing message buffer (necessary for the processing of indirection pointers within the encoded domain name).  The result is placed in a NUL-terminated allocated buffer, a pointer to which is stored in the variable pointed to by *s*. The length of the encoded name is stored in the variable pointed to by *enclen* so that the caller can advance past the encoded domain name to read further data in the message.

Use *[ares\_free\_string(3)](/ares_free_string/3.md)* to free the allocated hostname.

## RETURN VALUES

**ares\_expand\_name** can return any of the following values:

- **ARES\_SUCCESS**

  Expansion of the encoded name succeeded.

- **ARES\_EBADNAME**

  The encoded domain name was malformed and could not be expanded.

- **ARES\_ENOMEM**

  Memory was exhausted.

## SEE ALSO

[**ares\_mkquery**(3)](/ares_mkquery/3.md), [**ares\_free\_string**(3)](/ares_free_string/3.md)
