GETHOSTBYNAME(3)

NOM
gethostbyname, gethostbyaddr, sethostent, endhostent, herror - Obtenir des informations concernant le reseau.

SYNOPSIS
#include <netdb.h>
extern int h_errno;

struct hostent *gethostbyname (const char *name);

struct hostent *gethostbyaddr (const char *addr, int len, int type);

void sethostent (int stayopen);

void endhostent (void);

void herror (const char *s);

DESCRIPTION
La fonction gethostbyname() renvoie une structure de type hostent pour l'hote name. La chaine name est soit un nom d'hote, soit une adresse IPv4 en notation pointee standard, soit une adresse IPv6 avec la notation points-virgules et points (Cf RFC 1884 pour la description des adresses IPv6). Si name ne se termine pas par un point, et si la variable d'environnement HOSTALIASES est configuree, le fichier d'alias indique par HOSTALIASES sera d'abord parcouru a la recherche de name.

La fonction gethostbyaddr() renvoie une structure du type hostent pour l'hote d'adresse addr. Cette adresse est de longueur len et du type donne. Le seul type d'adresse valide est actuellement AF_INET.

La fonction sethostent() indique, si stayopen est vrai (vaut 1), qu'une socket TCP connectee doit etre utilisee pour interroger le serveur de noms et que la connexion doit rester ouverte durant les demandes successives. Sinon l'interrogation utilisera des datagrammes UDP.

La fonction endhostent() ferme la socket TCP connecte utilisee pour interroger le serveur de noms du domaine.

la fonction herror() affiche le message d'erreur associe avec la valeur courante de h_errno sur la sortie standard stderr.

Les interrogations du serveur de noms effectuees par gethostbyname() et gethostbyaddr() utilisent les elements suivants : le serveur de noms named(8), les lignes de /etc/hosts, et l'annuaire Network Information Service (NIS ou YP), suivant le contenu de la ligne order du fichier /etc/host.conf. (Voir resolv+(8)). L'action par defaut consiste a interroger named(8), puis /etc/hosts.

La structure hostent est definie ainsi dans <netdb.h> :

    struct hostent {
       char    *h_name;       /* Nom officiel de l'hote.   */
       char   **h_aliases;    /* Liste d'alias.            */
       int      h_addrtype;   /* Type d'adresse de l'hote. */
       int      h_length;     /* Longueur de l'adresse.    */
       char   **h_addr_list;  /* Liste d'adresses.         */
    }
    #define h_addr  h_addr_list[0] /* pour compatibilite.  */

Les membres de la structure hostent sont :

h_name
    Nom officiel de l'hote.

h_aliases
    Une table, terminee par zero, d'alternatives au nom officiel de l'hote.

h_addrtype
    Le type d'adresse (actuellement, toujours AF_INET).

h_length
    La longueur, en octets, de l'adresse.

h_addr_list
    Une table, terminee par zero, d'adresses reseau pour l'hote, avec l'ordre des octets du reseau.

h_addr
    La premiere adresse dans h_addr_list pour respecter la compatibilite ascendante.

VALEUR RENVOYEE
Les fonctions gethostbyname() et gethostbyaddr() renvoient un pointeur sur la structure hostent, ou bien un pointeur NULL si une erreur se produit, auquel cas h_errno contient le code d'erreur.

ERREURS

HOST_NOT_FOUND
    L'hote indique est inconnu.

NO_ADDRESS
    Le nom est valide mais ne possede pas d'adresse IP.

NO_RECOVERY
    Une erreur fatale du serveur de noms est apparue.

TRY_AGAIN
    Une erreur temporaire du serveur de noms est apparue, essayez un peu plus tard.

FICHIERS

/etc/host.conf
    Fichier de configuration de la resolution de noms.

/etc/hosts
    Base de donnees des hotes.

CONFORME A
BSD 4.3

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