int
hesiod_init(
void **context
)
char
**hesiod_resolve(
void *context
, const char *name
, const char *type
)
void
hesiod_free_list(
void *context
, char **list
)
char
*hesiod_to_bind(
void *context
, const char *name
, const char *type
)
void
hesiod_end(
void *context
)
context
,
an opaque object which stores information used internally by the
library between calls.
hesiod_init(
)
initializes a context, storing a pointer to the context in the
location pointed to by the
context
argument.
hesiod_end(
)
frees the resources used by a context.
hesiod_resolve()
is the primary interface to the library. If successful, it returns a
list of one or more strings giving the records matching
name
and
type
.
The last element of the list is followed by a
NULL
pointer. It is the caller's responsibility to call
hesiod_free_list()
to free the resources used by the returned list.
hesiod_to_bind()
converts
name
and
type
into the DNS name used by
hesiod_resolve().
It is the caller's responsibility to free the returned string using
free(3).
)
returns 0; otherwise it returns -1 and sets
errno
to indicate the error. On failure,
hesiod_resolve(
)
and
hesiod_to_bind(
)
return
NULL
and set the global variable
errno
to indicate the error.
HES_DOMAIN
is set, it will override the domain in the Hesiod configuration file.
If the environment variable
HESIOD_CONFIG
is set, it specifies the location of the Hesiod configuration file.
ENOMEM
ENOEXEC
)
failed because the Hesiod configuration file was invalid.
ECONNREFUSED
)
failed because no name server could be contacted to answer the query.
EMSGSIZE
)
or
hesiod_to_bind(
)
failed because the query or response was too big to fit into the
packet buffers.
ENOENT
)
failed because the name server had no text records matching
name
and
type
,
or
hesiod_to_bind(
)
failed because the
name
argument had a domain extension which could not be resolved with type
``rhs-extension''
in the local Hesiod domain.
errno
values set by the Hesiod functions are not particularly indicative of
what went wrong, especially for
ENOEXEC
and
ENOENT
.