---
name: "ares_get_servers"
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_get_servers"
---

# ares\_get\_servers(3)

Retrieve name servers from an initialized ares\_channel (deprecated)

## NAME

ares\_get\_servers, ares\_get\_servers\_ports - Retrieve name servers from an initialized ares\_channel (deprecated)

## SYNOPSIS

```
#include <ares.h>
int ares_get_servers(const ares_channel_t *channel,
                     struct ares_addr_node **servers)
int ares_get_servers_ports(const ares_channel_t *channel,
                           struct ares_addr_port_node **servers)
```

## DESCRIPTION

The **[ares\_get\_servers(3)](/ares_get_servers/3.md)** function retrieves name servers configuration from the channel data identified by *channel*, as a linked list of ares\_addr\_node structs storing a pointer to the first node at the address specified by *servers*.

The **[ares\_get\_servers\_ports(3)](/ares_get_servers_ports/3.md)** function also retrieves any per-server port information that may have been previously configured, returning a linked list of ares\_addr\_port structures.

Function caller may traverse the returned name server linked list, or may use it directly as suitable input for the **[ares\_set\_servers(3)](/ares_set_servers/3.md)** / **[ares\_set\_servers\_ports(3)](/ares_set_servers_ports/3.md)** functions, but shall not shrink or extend the list on its own.

Each node of the name server linked list is stored in memory dynamically allocated and managed by c-ares. It is the caller's responsibility to free the resulting linked list, using **[ares\_free\_data(3)](/ares_free_data/3.md)** , once the caller does not need it any longer.

This function is capable of handling IPv4 and IPv6 name server addresses simultaneously, rendering **[ares\_save\_options(3)](/ares_save_options/3.md)** with optmask **ARES\_OPT\_SERVERS** functionally obsolete except for IPv4-only name server usage.

## RETURN VALUES

This function may return any of the following values:

- **ARES\_SUCCESS**

  The name servers configuration was successfully retrieved

- **ARES\_ENOMEM**

  The memory was exhausted

- **ARES\_ENODATA**

  The channel data identified by *channel* was invalid.

## SEE ALSO

[**ares\_set\_servers**(3)](/ares_set_servers/3.md), [**ares\_init\_options**(3)](/ares_init_options/3.md), **[ares\_save\_options(3)](/ares_save_options/3.md)**

## AVAILABILITY

**[ares\_get\_servers(3)](/ares_get_servers/3.md)** was added in c-ares 1.7.1; **[ares\_get\_servers\_ports(3)](/ares_get_servers_ports/3.md)** was added in c-ares 1.11.0.

## NOTES

As of c-ares 1.24, these functions are deprecated due to their lack of ability to store the entire server configuration.  Use **[ares\_get\_servers\_csv(3)](/ares_get_servers_csv/3.md)**.
