getnameinfo

GETNAMEINFO(3)             Manuel du programmeur Linux            GETNAMEINFO(3)



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

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

       int getnameinfo(const struct sockaddr *addr, socklen_t addrlen,
                       char *host, socklen_t hostlen,
                       char *serv, 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 >= 201112L
           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 correspondants,
       de façon indépendante du protocole. Elle combine les fonctionnalité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 pointers to
       caller-allocated buffers (of size hostlen and servlen respectively) into
       which getnameinfo()  places null-terminated strings containing the host
       and service names respectively.

       L'appelant peut préciser qu'aucun nom d'hôte (ou qu'aucun nom de service)
       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 indiqué
       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-Qualified
              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
              locale 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
              attributs « IDNA_ALLOW_UNASSIGNED » (permettre des caractères
              Unicode 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)
              utilisé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_NAMEREQD 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() est fournie par la glibc depuis la version 2.1.

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

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

CONFORMITÉ
       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
       « Assigned numbers ».

       Dans les versions 2.2 et antérieures de la glibc, les paramètres hostlen
       et servlen étaient de type 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
       associer 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),
       getaddrinfo(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 Interface
       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⟩.

COLOPHON
       Cette page fait partie de la publication 5.08 du projet man-pages Linux.
       Une description du projet et des instructions pour signaler des anomalies
       et la dernière version de cette page, peuvent être trouvées à l'adresse
       https://www.kernel.org/doc/man-pages/.


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> et David Prévot <david@tilapin.org>

       Cette traduction est une documentation libre ; veuillez vous reporter à
       la GNU General Public License version 3 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>.



GNU                                9 juin 2020                    GETNAMEINFO(3)