ARES\_GET\_SERVERS(3) Library Functions Manual ARES\_GET\_SERVERS(3)

# [NAME](#NAME)

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

# [SYNOPSIS](#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](#DESCRIPTION)

The [**ares\_get\_servers(3)**](/man/os/c-ares/ares_get_servers.3) 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)**](/man/os/c-ares/ares_get_servers_ports.3) 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)**](/man/os/c-ares/ares_set_servers.3) / [**ares\_set\_servers\_ports(3)**](/man/os/c-ares/ares_set_servers_ports.3) 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)**](/man/os/c-ares/ares_free_data.3) , 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)**](/man/os/c-ares/ares_save_options.3) with optmask **ARES\_OPT\_SERVERS** functionally obsolete except for IPv4-only name server usage.

# [RETURN VALUES](#RETURN_VALUES)

This function may return any of the following values:

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

The name servers configuration was successfully retrieved

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

The memory was exhausted

[**ARES\_ENODATA**](#ARES_ENODATA)

The channel data identified by *channel* was invalid.

# [SEE ALSO](#SEE_ALSO)

[**ares\_set\_servers**(3)](/man/os/c-ares/ares_set_servers.3), [**ares\_init\_options**(3)](/man/os/c-ares/ares_init_options.3), [**ares\_save\_options(3)**](/man/os/c-ares/ares_save_options.3)

# [AVAILABILITY](#AVAILABILITY)

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

# [NOTES](#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)**](/man/os/c-ares/ares_get_servers_csv.3).

5 March 2010

---

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