HESIOD(3)
HOME ||
NAME
LIBRARY
SYNOPSIS
DESCRIPTION
RETURN VALUES
ENVIRONMENT
SEE ALSO
ERRORS
AUTHORS
BUGS
hesiod, hesiod_init, hesiod_resolve, hesiod_free_list, hesiod_to_bind,
hesiod_end -- Hesiod name server interface library
Standard C Library (libc, -lc)
#include <hesiod.h>
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);
This family of functions allows you to perform lookups of Hesiod informa-
tion, which is stored as text records in the Domain Name Service. To
perform lookups, you must first initialize a context, an opaque object
which stores information used internally by the library between calls.
The hesiod_init() function initializes a context, storing a pointer to
the context in the location pointed to by the context argument. The
hesiod_end() function frees the resources used by a context.
The hesiod_resolve() function 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.
The hesiod_to_bind() function 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().
The hesiod_init() function returns the value 0 if successful; otherwise
the value -1 is returned and the global variable errno is set 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 If the environment variable HES_DOMAIN is set, it will
override the domain in the Hesiod configuration file.
HESIOD_CONFIG If the environment variable HESIOD_CONFIG is set, it spec-
ifies the location of the Hesiod configuration file.
hesiod.conf(5), named(8)
Hesiod - Project Athena Technical Plan -- Name Service.
Hesiod calls may fail because of:
[ENOMEM] Insufficient memory was available to carry out the
requested operation.
[ENOEXEC] The hesiod_init() function failed because the Hesiod
configuration file was invalid.
[ECONNREFUSED] The hesiod_resolve() function failed because no name
server could be contacted to answer the query.
[EMSGSIZE] The hesiod_resolve() or hesiod_to_bind() function
failed because the query or response was too big to
fit into the packet buffers.
[ENOENT] The hesiod_resolve() function 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.
Steve Dyer, IBM/Project Athena
Greg Hudson, MIT Team Athena
Copyright 1987, 1988, 1995, 1996 by the Massachusetts Institute of Tech-
nology.
The strings corresponding to the errno values set by the Hesiod functions
are not particularly indicative of what went wrong, especially for
ENOEXEC and ENOENT.