res_init()

Updated: April 19, 2023

Initialize the Internet domain name resolver routines

Synopsis:

#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>

int res_init( void );

Library:

libsocket

Use the -l socket option to qcc to link against this library.

Description:

The resolver routines are used for making, sending, and interpreting query and reply messages with Internet domain name servers.

The res_init() routine reads the resolver configuration file (if one is present; see /etc/resolv.conf in the Utilities Reference) to get the default domain name, search list, and Internet address of the local name servers. If no server is configured, the host running the resolver is tried. If not specified in the configuration file, the current domain name is defined by the hostname; the domain name can be overridden by the environment variable LOCALDOMAIN. Initialization normally occurs on the first call to one of the resolver routines.

Resolver configuration

Global configuration and state information used by these routines is kept in the __res_state structure _res, which is defined in <resolv.h>. Since most of the values have reasonable defaults, you can generally ignore them.

The _res.options member is a simple bit mask that contains the bitwise OR of the enabled options. The following options are defined in <resolv.h>:

RES_DEBUG
Print debugging messages.
RES_DEFNAMES
If this option is set, res_search() appends the default domain name to single-component names (those that don't contain a dot). This option is enabled by default.
RES_DNSRCH
If this option is set, res_search() searches for hostnames in the current domain and in parent domains. This is used by the standard host lookup routine, gethostbyname(). This option is enabled by default.
RES_INIT
True if the initial name server address and default domain name are initialized (i.e., res_init() has been called).
RES_RECURSE
Set the recursion-desired bit in queries. This is the default. Note that res_send() doesn't do iterative queries; it expects the name server to handle recursion.
RES_STAYOPEN
Used with RES_USEVC to keep the TCP connection open between queries. This is useful only in programs that regularly do many queries. UDP should be the mode you normally use.
RES_USEVC
Instead of UDP datagrams, use TCP connections for queries.

Based on:

RFC 974, RFC 1032, RFC 1033, RFC 1034, RFC 1035

Returns:

0
Success.
Nonzero
An error occurred.

Errors:

See herror().

Files:

/etc/resolv.conf
Resolver configuration file.

Environment variables:

LOCALDOMAIN
When set, LOCALDOMAIN contains a domain name that overrides the current domain name.

Classification:

Unix

Safety:  
Cancellation point Yes
Interrupt handler No
Signal handler No
Thread No