Provided by: manpages-fr-dev_4.23.1-1_all bug

NOM

       gethostbyname,   gethostbyaddr,   sethostent,  gethostent,  endhostent,  h_errno,  herror,
       hstrerror,    gethostbyaddr_r,    gethostbyname2,    gethostbyname2_r,    gethostbyname_r,
       gethostent_r - Obtenir des informations concernant le réseau

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <netdb.h>

       void sethostent(int stayopen);
       void endhostent(void);

       [[obsolète]] extern int h_errno;

       [[obsolète]] struct hostent *gethostbyname(const char *name);
       [[obsolète]] struct hostent *gethostbyaddr(const void addr[.len],
                                                    socklen_t len, int type);

       [[obsolète]] void herror(const char *s);
       [[obsolète]] const char *hstrerror(int err);

       /* Extension System V/POSIX */
       struct hostent *gethostent(void);

       /* Extensions GNU */
       [[obsolète]]
       struct hostent *gethostbyname2(const char *name, int af);

       int gethostent_r(struct hostent *restrict ret,
                        char buf[restrict .buflen], size_t buflen,
                        struct hostent **restrict result,
                        int *restrict h_errnop);

       [[obsolète]]
       int gethostbyaddr_r(const void addr[restrict .len], socklen_t len,
                        int type,
                        struct hostent *restrict ret,
                        char buf[restrict .buflen], size_t buflen,
                        struct hostent **restrict result,
                        int *restrict h_errnop);
       [[obsolète]]
       int gethostbyname_r(const char *restrict name,
                        struct hostent *restrict ret,
                        char buf[restrict .buflen], size_t buflen,
                        struct hostent **restrict result,
                        int *restrict h_errnop);
       [[obsolète]]
       int gethostbyname2_r(const char *restrict name, int af,
                        struct hostent *restrict ret,
                        char buf[restrict .buflen], size_t buflen,
                        struct hostent **restrict result,
                        int *restrict h_errnop);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consulter
   feature_test_macros(7)) :

       gethostbyname2(),       gethostent_r(),       gethostbyaddr_r(),        gethostbyname_r(),
       gethostbyname2_r() :
           Depuis la glibc 2.19 :
               _DEFAULT_SOURCE
           glibc <= 2.19:
               _BSD_SOURCE || _SVID_SOURCE

       herror(), hstrerror() :
           Depuis la glibc 2.19 :
               _DEFAULT_SOURCE
           De la glibc 2.8 à la glibc 2.19 :
               _BSD_SOURCE || _SVID_SOURCE
           Avant la glibc 2.8 :
               aucun

       h_errno :
           Depuis la glibc 2.19 :
               _DEFAULT_SOURCE || _POSIX_C_SOURCE < 200809L
           De la glibc 2.12 à la glibc 2.19 :
               _BSD_SOURCE || _SVID_SOURCE || _POSIX_C_SOURCE < 200809L
           Avant la glibc 2.12 :
               aucun

DESCRIPTION

       gethostbyname*(),  gethostbyaddr*(),  herror()  et  hstrerror()  sont  déconseillées.  Les
       applications devraient utiliser getaddrinfo(3), getnameinfo(3)  et  gai_strerror(3)  à  la
       place.

       La fonction sethostent() indique, si stayopen est vrai (vaut 1), qu'un socket TCP connecté
       doit être utilisé 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 le socket TCP connecté utilisé pour interroger  le  serveur
       de noms.

       La  fonction  gethostbyname()  renvoie  une structure de type hostent pour l'hôte name. La
       chaîne name est soit un nom d'hôte, soit une adresse IPv4  en  notation  pointée  standard
       (comme  pour  inet_addr(3)). Si name est une adresse IPv4, aucune recherche supplémentaire
       n'a lieu et gethostbyname() copie simplement la chaîne name dans le  champ  h_name  et  le
       champ  équivalent  struct  in_addr  dans  le  champ h_addr_list[0] de la structure hostent
       renvoyée. Si name ne se termine pas  par  un  point  et  si  la  variable  d'environnement
       HOSTALIASES  est  configurée,  le  fichier  d'alias  pointé  par  HOSTALIASES sera d'abord
       parcouru à la recherche de name (consultez hostname(7) pour  le  format  du  fichier).  Le
       domaine courant et ses parents sont parcourus à moins que name se termine par un point.

       La  fonction  gethostbyaddr()  renvoie une structure du type hostent pour l'hôte d'adresse
       addr. Cette adresse est de longueur len et du type type. Les types d'adresse valables sont
       AF_INET  et  AF_INET6  (définis  dans <sys/socket.h>). L'argument adresse de l'hôte est un
       pointeur vers une structure de type dépendant du type de  l'adresse,  par  exemple  struct
       in_addr  *  (probablement  obtenu  à l’aide d’un appel à inet_addr(3)) pour une adresse de
       type AF_INET.

       La fonction (obsolète) herror()  affiche  le  message  d'erreur  associé  avec  la  valeur
       courante de h_errno sur la sortie standard stderr.

       La  fonction  (obsolète)  hstrerror()  reçoit  un numéro d'erreur en argument (typiquement
       h_errno) et renvoie la chaîne de message d'erreur.

       Les recherches de noms  de  domaine  effectuées  par  gethostbyname()  et  gethostbyaddr()
       dépendent   des   sources   configurées   de   service   de   noms  (Name  Service  Switch
       — nsswitch.conf(5)) ou d'un serveur de noms local (named(8)). L'action par défaut  est  de
       chercher  dans  les  sources  du  service  de  noms configuré (nsswitch.conf(5), et en cas
       d'échec, dans un serveur de noms local (named(8)).

   Historique
       Le fichier nsswitch.conf(5) est un moyen moderne pour  contrôler  l'ordre  des  recherches
       d'hôte.

       Dans la glibc 2.4 et antérieure, le mot clé order était utilisé pour contrôler l'ordre des
       recherches d'hôte comme il est défini dans /etc/host.conf (host.conf(5)).

       La structure hostent est définie ainsi dans <netdb.h> :

           struct hostent {
               char  *h_name;            /* Nom officiel de l'hôte */
               char **h_aliases;         /* Liste d'alias */
               int    h_addrtype;        /* Type d'adresse de l'hôte */
               int    h_length;          /* Longueur de l'adresse */
               char **h_addr_list;       /* Liste d'adresses */
           }
           #define h_addr h_addr_list[0] /* for backward compatibility */

       Les membres de la structure hostent sont :

       h_name Nom officiel de l'hôte.

       h_aliases
              Un tableau, terminé par un pointeur NULL, d'alternatives au nom officiel de l'hôte.

       h_addrtype
              Le type d'adresse : actuellement toujours AF_INET ou AF_INET6.

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

       h_addr_list
              Un tableau, terminé par un pointeur  NULL,  d'adresses  réseau  pour  l'hôte,  avec
              l'ordre des octets du réseau.

       h_addr La première adresse dans h_addr_list pour respecter la compatibilité ascendante.

VALEUR RENVOYÉE

       Les  fonctions  gethostbyname() et gethostbyaddr() renvoient un pointeur vers la structure
       hostent, ou un pointeur NULL si une erreur se produit, auquel cas h_errno contient le code
       d'erreur.  Lorsqu'elle  n'est  pas  NULL,  la valeur de retour peut pointer sur une donnée
       statique. Consultez les notes plus loin.

ERREURS

       La variable h_errno peut prendre les valeurs suivantes :

       HOST_NOT_FOUND
              L'hôte indiqué est inconnu.

       NO_DATA
              Le nom de la requête est valable, mais ne possède pas d'adresse IP. Un  autre  type
              de  requête  au  serveur  de  noms  pour  ce  domaine peut renvoyer une réponse. La
              constante NO_ADDRESS est un synonyme de NO_DATA.

       NO_RECOVERY
              Une erreur fatale du serveur de noms est survenue.

       TRY_AGAIN
              Une erreur temporaire d'un serveur de noms faisant autorité est  survenue,  essayez
              un peu plus tard.

FICHIERS

       /etc/host.conf
              fichier de configuration de resolver (résolution de noms)

       /etc/hosts
              Base de données des hôtes.

       /etc/nsswitch.conf
              Configuration du service de noms.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌──────────────────────┬──────────────────────┬───────────────────────────────────────────┐
       │InterfaceAttributValeur                                    │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │gethostbyname()       │ Sécurité des threads │ MT-Unsafe race:hostbyname env locale      │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │gethostbyaddr()       │ Sécurité des threads │ MT-Unsafe race:hostbyaddr env locale      │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │sethostent(),         │ Sécurité des threads │ MT-Unsafe race:hostent env locale         │
       │endhostent(),         │                      │                                           │
       │gethostent_r()        │                      │                                           │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │herror(), hstrerror() │ Sécurité des threads │ MT-Safe                                   │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │gethostent()          │ Sécurité des threads │ MT-Unsafe race:hostent race:hostentbuf    │
       │                      │                      │ env locale                                │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │gethostbyname2()      │ Sécurité des threads │ MT-Unsafe race:hostbyname2 env locale     │
       ├──────────────────────┼──────────────────────┼───────────────────────────────────────────┤
       │gethostbyaddr_r(),    │ Sécurité des threads │ MT-Safe env locale                        │
       │gethostbyname_r(),    │                      │                                           │
       │gethostbyname2_r()    │                      │                                           │
       └──────────────────────┴──────────────────────┴───────────────────────────────────────────┘
       Dans la table ci-dessus, hostent dans race:hostent  signifie  que  si  une  des  fonctions
       sethostent(),  gethostent(), gethostent_r() ou endhostent() est utilisée en parallèle dans
       différents threads d'un programme, des situations de concurrence  de  données  peuvent  se
       produire.

STANDARDS

       sethostent()
       endhostent()
       gethostent()
              POSIX.1-2008.

       gethostent_r()
              GNU.

       Autres :
              Aucune

HISTORIQUE

       sethostent()
       endhostent()
       gethostent()
              POSIX.1-2001.

       gethostbyname()
       gethostbyaddr()
       h_errno
              Marquée  comme obsolète dans POSIX.1-2001. Retirée dans POSIX.1-2008 qui recommande
              l'utilisation de getaddrinfo(3) et getnameinfo(3) à la place.

NOTES

       Les fonctions gethostbyname() et gethostbyaddr() peuvent renvoyer des  pointeurs  sur  des
       données  statiques  susceptibles d'être écrasées d'un appel à l'autre. Copier la structure
       struct hostent ne suffit pas car elle contient  elle-même  des  pointeurs.  Une  copie  en
       profondeur est indispensable.

       Dans  l'implémentation  BSD originale, l'argument len de gethostbyname() était un int. Les
       spécifications SUS-v2 sont défectueuses et déclarent le paramètre len  de  gethostbyaddr()
       comme  étant  de type size_t (c’est erroné car il doit obligatoirement être un int, ce que
       size_t n'est pas toujours.  POSIX.1-2001  le  déclare  socklen_t,  ce  qui  est  correct).
       Consultez également accept(2).

       Le prototype BSD pour gethostbyaddr() utilise const char * comme premier argument.

   Extension System V/POSIX
       POSIX réclame l'appel gethostent(), qui devrait renvoyer la prochaine entrée de la base de
       données des hôtes. Avec DNS/BIND,  cela  n'a  pas  plus  de  sens,  mais  cela  peut  être
       raisonnable  si  la  base  de  données des hôtes est un fichier qui peut être lu ligne par
       ligne. Sur beaucoup de systèmes, une routine de ce nom lit  le  fichier  /etc/hosts.  Elle
       n'est  disponible  que  lorsque  la  bibliothèque  est  construite  sans  la  gestion DNS.
       L'équivalent de la glibc ignore les entrées IPv6. Cette  fonction  n'est  pas  réentrante,
       mais la glibc propose une version réentrante, gethostent_r().

   Extensions GNU
       La  glibc2 propose aussi une fonction gethostbyname2() qui agit comme gethostbyname(), qui
       permet de préciser la famille à laquelle l'adresse doit appartenir.

       La glibc2  propose  aussi  les  versions  réentrantes  gethostent_r(),  gethostbyaddr_r(),
       gethostbyname_r() et gethostbyname2_r(). L'appelant fournit une structure hostent à l’aide
       de ret qui sera remplie en cas de succès et un tampon de travail temporaire buf de  taille
       buflen.  Après l'appel, result pointera vers le résultat en cas de succès. En cas d'erreur
       ou si aucune entrée n'a été trouvée, result vaudra NULL Les fonctions renvoient 0  en  cas
       de  succès  et une valeur non nulle en cas d'erreur. En plus des erreurs renvoyées par ces
       fonctions réentrantes, si buf est trop petit, les fonctions renvoient  ERANGE  et  l'appel
       devra  être effectué par la suite avec un tampon plus grand. La variable h_errno n'est pas
       modifiée, mais l'adresse d'une variable où est stocké le code d'erreur est transmise  dans
       h_errnop.

BOGUES

       gethostbyname()  ne  reconnaît  pas les éléments d'une adresse IPv4 en notation pointée si
       ces éléments sont exprimés en hexadécimal.

VOIR AUSSI

       getaddrinfo(3),  getnameinfo(3),   inet(3),   inet_ntop(3),   inet_pton(3),   resolver(3),
       hosts(5), nsswitch.conf(5), hostname(7), named(8)

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier <barbier@debian.org>,  David  Prévot  <david@tilapin.org>  et  Jean-Pierre  Giraud
       <jean-pierregiraud@neuf.fr>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.