gethostbyname, gethostbyaddr, sethostent, endhostent, herror
     - get network host entry


     #include <netdb.h>
     extern int h_errno;

     struct hostent *gethostbyname(const char *name));

     #include <sys/socket.h>        /* for AF_INET
     struct hostent *gethostbyaddr(const char *addr, int len, int type

     void sethostent(int stayopen));

     void endhostent(void);

     void herror(const char *s);


     The gethostbyname() function returns  a  structure  of  type
     hostent for the given host name.  Here name is either a host
     name, or an IPv4 address in standard  dot  notation,  or  an
     IPv6  address in colon (and possibly dot) notation. (See RFC
     1884 for the description of IPv6 addresses.)  If name is  an
     IPv4  or  IPv6  address, no lookup is performed and gethost-
     byname() simply copies name into the h_name  field  and  its
     struct  in_addr  equivalent into the h_addr_list[0] field of
     the returned hostent structure.  If name doesn't  end  in  a
     dot  and  the  environment  variable HOSTALIASES is set, the
     alias file pointed to by HOSTALIASES will first be  searched
     for  name.   (See  hostname(7)  for  the  file format.)  The
     current domain and its parents are searched unless name ends
     in a dot.

     The gethostbyaddr() function returns  a  structure  of  type
     hostent  for  the  given host address addr of length len and
     address type type.  The only valid address type is currently

     The sethostent() function specifies,  if  stayopen  is  true
     (1), that a connected TCP socket should be used for the name
     server queries and that the connection  should  remain  open
     during  successive  queries.  Otherwise, name server queries
     will use UDP datagrams.

     The endhostent() function ends the use of a  TCP  connection
     for name server queries.

     The herror() function prints the  error  message  associated
     with the current value of h_errno on stderr.

     The domain name queries carried out by  gethostbyname()  and
     gethostbyaddr()  use a combination of any or all of the name
     server named(8), a broken out line from /etc/hosts, and  the
     Network  Information Service (NIS or YP), depending upon the
     contents  of  the  order  line  in   /etc/host.conf.    (See
     resolv+(8)).   The default action is to query named(8), fol-
     lowed by /etc/hosts.

     The hostent structure is defined in <netdb.h> as follows:

          struct hostent {
                  char    *h_name;        /* official name of host */
                  char    **h_aliases;    /* alias list */
                  int     h_addrtype;     /* host address type */
                  int     h_length;       /* length of address */
                  char    **h_addr_list;  /* list of addresses */
          #define h_addr  h_addr_list[0]  /* for backward compatibility */

     The members of the hostent structure are:

          The official name of the host.

          A zero-terminated array of alternative  names  for  the

          The type of address; always AF_INET at present.

          The length of the address in bytes.

          A zero-terminated array of network  addresses  for  the
          host in network byte order.

          The first address in h_addr_list for backward  compati-


     The gethostbyname() and gethostbyaddr() functions return the
     hostent  structure or a NULL pointer if an error occurs.  On
     error, the h_errno variable holds an error number.


     The variable h_errno can have the following values:

          The specified host is unknown.

          The requested name is valid but does  not  have  an  IP

          A non-recoverable name server error occurred.

          A temporary error occurred  on  an  authoritative  name
          server.  Try again later.


          resolver configuration file

          host database file


     BSD 4.3


     resolver(3), hosts(5), hostname(7), resolv+(8), named(8)