dwww Home | Manual pages | Find package

getnameinfo(3)             Library Functions Manual             getnameinfo(3)

NOM
       getnameinfo - Traduction d'adresse en nom de façon indépendante du pro-
       tocole

BIBLIOTHÈQUE
       Bibliothèque C standard (libc, -lc)

SYNOPSIS
       #include <sys/socket.h>
       #include <netdb.h>

       int getnameinfo(const struct sockaddr *restrict addr, socklen_t addrlen,
                       char host[_Nullable restrict .hostlen],
                       socklen_t hostlen,
                       char serv[_Nullable restrict .servlen],
                       socklen_t servlen,
                       int flags);

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

       getnameinfo():
           Since glibc 2.22:
               _POSIX_C_SOURCE >= 200112L
           glibc 2.21 and earlier:
               _POSIX_C_SOURCE

DESCRIPTION
       La  fonction  getnameinfo()  est la réciproque de getaddrinfo(3) : elle
       convertit une adresse de socket en un hôte  et  un  service  correspon-
       dants, de façon indépendante du protocole. Elle combine les fonctionna-
       lités de gethostbyaddr(3) et getservbyport(3) mais contrairement à  ces
       fonctions,  getnameinfo()  est  réentrante  et permet aux programmes de
       supprimer les dépendances IPv4/IPv6.

       The addr argument is a pointer to a generic  socket  address  structure
       (of  type  sockaddr_in or sockaddr_in6)  of size addrlen that holds the
       input IP address and port number. The arguments host and serv are poin-
       ters to caller-allocated buffers (of size hostlen and servlen respecti-
       vely) into which getnameinfo()  places null-terminated strings  contai-
       ning the host and service names respectively.

       L'appelant  peut  préciser qu'aucun nom d'hôte (ou qu'aucun nom de ser-
       vice) n'est nécessaire en fournissant NULL  comme  paramètre  host  (ou
       serv) ou bien en passant un paramètre hostlen (ou servlen) valant zéro.
       Quoi qu'il en soit, au moins un nom d'hôte ou un nom  de  service  doit
       être demandé.

       Le paramètre flags modifie le comportement de getnameinfo() comme indi-
       qué ci-dessous :

       NI_NAMEREQD
              S'il est défini, une erreur se produira si le nom de l'hôte  n'a
              pas pu être déterminé.

       NI_DGRAM
              If  set,  then  the  service is datagram (UDP) based rather than
              stream (TCP) based. This is required for the few ports (512–514)
              that have different services for UDP and TCP.

       NI_NOFQDN
              renvoie  seulement la partie nom de l'hôte du FQDN (Fully-Quali-
              fied Domain Name) pour les hôtes locaux.

       NI_NUMERICHOST
              La forme numérique du nom de l'hôte est renvoyée.  (Même  si  ce
              drapeau  n'est  pas levé, cela arrivera également lorsque le nom
              du nœud ne pourra pas être déterminé.)

       NI_NUMERICSERV
              Si cet attribut est défini, la forme numérique  du  service  est
              renvoyée.  (S'il n'est pas défini, cela arrivera également si le
              nom du service n'a pas pu être déterminé.)

   Extensions de getnameinfo() pour les noms de domaines internationalisés
       Depuis la glibc 2.3.4, getnameinfo() a été modifié  pour  sélectivement
       permettre  que  les noms de domaines soient convertis vers ou depuis le
       format des noms  de  domaines  internationalisés  (IDN).  Consultez  la
       RFC 3490,  Internationalizing Domain Names in Applications (IDNA).Trois
       nouveaux attributs ont été ajoutés :

       NI_IDN Si cet attribut est utilisé, alors le nom trouvé lors de la  ré-
              solution  des noms est converti depuis le format IDN vers la lo-
              cale du système si nécessaire. Les noms au format ASCII ne  sont
              pas  affectés par cette conversion, ce qui permet d'utiliser cet
              attribut dans des programmes et des environnements existants.

       NI_IDN_ALLOW_UNASSIGNED, NI_IDN_USE_STD3_ASCII_RULES
              Utiliser ces attributs permet d'activer respectivement  les  at-
              tributs « IDNA_ALLOW_UNASSIGNED » (permettre des caractères Uni-
              code non assignés) et « IDNA_USE_STD3_ASCII_RULES » (vérifier la
              sortie pour être sûr que le nom d'hôte est conforme à STD3) uti-
              lisés dans la gestion de l'IDNA.

VALEUR RENVOYÉE
       On success, 0 is returned, and node and service  names,  if  requested,
       are  filled with null-terminated strings, possibly truncated to fit the
       specified buffer lengths. On error, one of the following nonzero  error
       codes is returned:

       EAI_AGAIN
              Le nom ne peut être résolu à cet instant. Réessayer plus tard.

       EAI_BADFLAGS
              Le paramètre flags n'est pas valable.

       EAI_FAIL
              Une erreur irrécupérable est survenue.

       EAI_FAMILY
              La  famille d'adresse n'a pas été reconnue, ou bien la taille de
              l'adresse était incorrecte pour la famille indiquée.

       EAI_MEMORY
              Plus assez de mémoire.

       EAI_NONAME
              Le nom ne peut être résolu avec les paramètres fournis. NI_NAME-
              REQD  est  indiqué et le nom de l'hôte ne peut être localisé, ou
              ni un nom d'hôte ni un nom de service n’a été demandé.

       EAI_OVERFLOW
              Le tampon pointé par host ou serv est trop petit.

       EAI_SYSTEM
              Une erreur système a eu lieu. Le code d'erreur peut être lu dans
              errno.

       La fonction gai_strerror(3) traduit ces codes d'erreur en une chaîne de
       caractères compréhensible, utilisable pour rendre compte du problème.

FICHIERS
       /etc/hosts
       /etc/nsswitch.conf
       /etc/resolv.conf

VERSIONS
       getnameinfo()  is provided since glibc 2.1.

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

       ┌──────────────────────────┬──────────────────────┬────────────────────┐
       │InterfaceAttributValeur             │
       ├──────────────────────────┼──────────────────────┼────────────────────┤
       │getnameinfo()             │ Sécurité des threads │ MT-Safe env locale │
       └──────────────────────────┴──────────────────────┴────────────────────┘

STANDARDS
       POSIX.1-2001, POSIX.1-2008, RFC 2553.

NOTES
       Afin  d'aider  les programmeurs à choisir des tailles raisonnables pour
       les tampons fournis, <netdb.h> définit les constantes

           #define NI_MAXHOST      1025
           #define NI_MAXSERV      32

       Since glibc 2.8, these definitions are exposed only if suitable feature
       test  macros  are  defined, namely: _GNU_SOURCE, _DEFAULT_SOURCE (since
       glibc  2.19),  or  (in  glibc  versions  up  to  and  including   2.19)
       _BSD_SOURCE or _SVID_SOURCE.

       La  première  est  la constante MAXDNAME présente dans les versions ré-
       centes du fichier d'en-têtes <arpa/nameser.h> de BIND. La deuxième  est
       déterminée  en se basant sur les services répertoriés dans la RFC « As-
       signed numbers ».

       Before glibc 2.2, the hostlen  and  servlen  arguments  were  typed  as
       size_t.

EXEMPLES
       Le  code  suivant essaie d'obtenir le nom de l'hôte ainsi que le nom du
       service sous forme numérique, et ce, pour une adresse de socket donnée.
       Remarquez  qu'il  n'y  a  aucune  référence  à  une  quelconque famille
       d'adresse codée en dur.

           struct sockaddr *addr;     /* input */
           socklen_t addrlen;         /* input */
           char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];

           if (getnameinfo(addr, addrlen, hbuf, sizeof(hbuf), sbuf,
                       sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0)
               printf("host=%s, serv=%s\n", hbuf, sbuf);

       La version suivante vérifie si l'adresse de la socket peut se voir  as-
       socier un nom.

           struct sockaddr *addr;     /* input */
           socklen_t addrlen;         /* input */
           char hbuf[NI_MAXHOST];

           if (getnameinfo(addr, addrlen, hbuf, sizeof(hbuf),
                       NULL, 0, NI_NAMEREQD))
               printf("could not resolve hostname");
           else
               printf("host=%s\n", hbuf);

       Un  programme  d'exemple utilisant getnameinfo()  peut être trouvé dans
       getaddrinfo(3).

VOIR AUSSI
       accept(2), getpeername(2), getsockname(2), recvfrom(2), socket(2),  ge-
       taddrinfo(3),   gethostbyaddr(3),  getservbyname(3),  getservbyport(3),
       inet_ntop(3), hosts(5), services(5), hostname(7), named(8)

       R. Gilligan, S. Thomson, J. Bound and W. Stevens, Basic  Socket  Inter-
       face Extensions for IPv6, RFC 2553, March 1999.

       Tatsuya  Jinmei et Atsushi Onoe, An Extension of Format for IPv6 Scoped
       Addresses,  internet  draft,  travail  en   cours   ⟨ftp://ftp.ietf.org
       /internet-drafts/draft-ietf-ipngwg-scopedaddr-format-02.txt⟩.

       Craig  Metz,  Protocol Independence Using the Sockets API, compte rendu
       du sujet freenix : conférence technique annuelle USENIX 2000, juin 2000
       ⟨http://www.usenix.org/publications/library/proceedings/usenix2000
       /freenix/metzprotocol.html⟩.

TRADUCTION
       La traduction française de cette page de manuel a été créée par Chris-
       tophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.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.cou-
       lon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centra-
       liens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@de-
       bian.org> et David Prévot <david@tilapin.org>

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

Pages du manuel de Linux 6.03   5 février 2023                  getnameinfo(3)

Generated by dwww version 1.15 on Sat Jun 29 01:49:31 CEST 2024.