Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


HESIOD(3)                  Library Functions Manual                  HESIOD(3)

NAME
     hesiod, hesiod_init, hesiod_resolve, hesiod_free_list, hesiod_to_bind,
     hesiod_end - Hesiod name server interface library

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #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);

DESCRIPTION
     This family of functions allows you to perform lookups of Hesiod
     information, 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.
     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).

RETURN VALUES
     If successful, hesiod_init() 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.

ENVIRONMENT
     If the environment variable 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.

ERRORS
     Hesiod calls may fail because of:
     ENOMEM        Insufficient memory was available to carry out the
                   requested operation.
     ENOEXEC       hesiod_init() failed because the Hesiod configuration file
                   was invalid.
     ECONNREFUSED  hesiod_resolve() failed because no name server could be
                   contacted to answer the query.
     EMSGSIZE      hesiod_resolve() or hesiod_to_bind() failed because the
                   query or response was too big to fit into the packet
                   buffers.
     ENOENT        hesiod_resolve() 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.

SEE ALSO
     hesiod.conf(5), named(8)

     Hesiod - Project Athena Technical Plan -- Name Service.

AUTHORS
     Steve Dyer, IBM/Project Athena
     Greg Hudson, MIT Team Athena

     Copyright 1987, 1988, 1995, 1996 by the Massachusetts Institute of
     Technology.

BUGS
     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.

NetBSD 10.99                  September 16, 2001                  NetBSD 10.99