Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       getnameinfo  -  Traduction  d'adresse  en  nom de facon independante du
       protocole

SYNOPSIS

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

       int getnameinfo(const struct sockaddr *sa, socklen_t salen,
                       char *host, size_t hostlen,
                       char *serv, size_t servlen, int flags);

   Exigences de macros de test de fonctionnalites  pour  la  glibc  (consultez
   feature_test_macros(7)) :

       getnameinfo() : _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE

DESCRIPTION

       La  fonction  getnameinfo()  est la reciproque de getaddrinfo(3) : elle
       convertit  une  adresse  de  socket  en   un   hote   et   un   service
       correspondants,  de  facon  independante du protocole. Elle combine les
       fonctionnalites   de   gethostbyaddr(3)   et   getservbyport(3)    mais
       contrairement  a ces fonctions, getaddrinfo(3) est reentrante et permet
       aux programmes de supprimer les dependances IPv4/IPv6.

       Le parametre sa est un  pointeur  vers  l'adresse  d'une  structure  de
       socket  generique (de type sockaddr_in ou sockaddr_in6) de taille salen
       qui contient l'adresse IP d'entree et le numero de port. Les parametres
       host et serv sont des pointeurs vers des tampons alloues par l'appelant
       (de tailles respectives hostlen et servlen) dans lesquels getnameinfo()
       place  des chaines de caracteres, terminees par un octet nul, contenant
       respectivement les noms d'hote et de service.

       L'appelant peut preciser  qu'aucun  nom  d'hote  (ou  qu'aucun  nom  de
       service)  n'est necessaire en fournissant NULL comme parametre host (ou
       serv) ou bien en passant un parametre hostlen (ou servlen) valant zero.
       Quoi  qu'il  en  soit, au moins un nom d'hote ou un nom de service doit
       etre demande.

       Le parametre flags  modifie  le  comportement  de  getnameinfo()  comme
       indique ci-dessous :

       NI_NAMEREQD
              S'il  est defini, une erreur se produira si le nom de l'hote n'a
              pas pu etre determine.

       NI_DGRAM
              Indique que le service est plutot base sur des datagrammes (UDP)
              que  sur  un flux connecte (TCP). Ce drapeau est necessaire pour
              les quelques ports (512-514) qui  ont  des  services  differents
              selon le protocole utilise : UDP ou TCP.

       NI_NOFQDN
              renvoie   seulement   la   partie   nom   de   l'hote   du  FQDN
              (Fully-Qualified Domain Name) pour les hotes locaux.

       NI_NUMERICHOST
              La forme numerique du nom de l'hote est renvoyee.  (Meme  si  ce
              drapeau  n'est  pas leve, cela arrivera egalement lorsque le nom
              du noeud ne pourra pas etre determine.)

       NI_NUMERICSERV
              Si cet attribut est defini, la forme numerique  du  service  est
              renvoyee.  (S'il n'est pas defini, cela arrivera egalement si le
              nom du service n'a pas pu etre determine.)

   Extensions de getaddrinfo() pour les noms de domaines internationalis'es
       Depuis la glibc 2.3.4, getnameinfo() a ete modifie  pour  selectivement
       permettre  que  les noms de domaines soient convertis vers ou depuis le
       format des noms  de  domaines  internationalises  (IDN).  Consultez  la
       RFC 3490,  Internationalizing Domain Names in Applications (IDNA).Trois
       nouveaux attributs ont ete ajoutes :

       NI_IDN Si cet attribut est utilise, alors le  nom  trouve  lors  de  la
              resolution  des  noms  est converti depuis le format IDN vers la
              locale du systeme si necessaire. Les noms  au  format  ASCII  ne
              sont pas affectes 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  caracteres
              Unicode   non   assignes)   et   << IDNA_USE_STD3_ASCII_RULES >>
              (verifier la sortie pour etre sur que le nom d'hote est conforme
              a STD3) utilises dans la gestion de l'IDNA.

VALEUR RENVOY'EE

       En  cas  de  succes,  0 est renvoye et les noms du noeud et du service,
       s'ils sont demandes, sont renseignes sous forme  de  chaines  terminees
       par  un  caractere  nul, eventuellement tronquees afin de s'adapter aux
       tailles des tampons specifies. En cas d'erreur, un des  codes  d'erreur
       suivants est renvoye :

       EAI_AGAIN
              Le nom ne peut etre resolu a cet instant. Reessayer plus tard.

       EAI_BADFLAGS
              Le parametre flags n'est pas valide.

       EAI_FAIL
              Une erreur irrecuperable est survenue.

       EAI_FAMILY
              La  famille d'adresse n'a pas ete reconnue, ou bien la taille de
              l'adresse etait invalide pour la famille specifiee.

       EAI_MEMORY
              Plus de memoire disponible.

       EAI_NONAME
              Le  nom  ne  peut  etre  resolu  avec  les  parametres  fournis.
              NI_NAMEREQD  est  specifie  et  le  nom  de  l'hote ne peut etre
              localise, ou, on n'a demande ni un  nom  d'hote  ni  un  nom  de
              service.

       EAI_OVERFLOW
              Le tampon pointe par host ou serv est trop petit.

       EAI_SYSTEM
              Une erreur systeme a eu lieu. Le code d'erreur peut etre lu dans
              errno.

       La fonction gai_strerror(3) traduit ces codes d'erreur en une chaine de
       caracteres comprehensible, utilisable pour rendre compte du probleme.

FICHIERS

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

VERSIONS

       getnameinfo() est fournie par la glibc depuis la version 2.1.

CONFORMIT'E

       RFC 2553, POSIX.1-2001.

NOTES

       Afin  d'aider  les programmeurs a choisir des tailles raisonnables pour
       les tampons fournis, <netdb.h> definit les constantes

           #define NI_MAXHOST      1025
           #define NI_MAXSERV      32

       Depuis la glibc 2.8, ces definitions sont exposees seulement  si  l'une
       des  macros  de  test  de fonctionnalites _BSD_SOURCE, _SVID_SOURCE, ou
       _GNU_SOURCE est definie.

       La premiere est  la  constante  MAXDNAME  presente  dans  les  versions
       recentes  du  fichier  d'en-tetes <arpa/nameser.h> de BIND. La deuxieme
       est determinee en se basant sur les services repertories  dans  la  RFC
       << Assigned numbers >>.

EXEMPLE

       Le  code  suivant essaie d'obtenir le nom de l'hote ainsi que le nom du
       service sous forme numerique, et ce, pour une adresse de socket donnee.
       Remarquez  qu'il  n'y  a  aucune  reference  a  une  quelconque famille
       d'adresse codee en dur.

           struct sockaddr *sa;    /* input */
           socklen_t len;         /* input */
           char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];

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

       La version suivante verifie si l'adresse de  la  socket  peut  se  voir
       associer un nom.

           struct sockaddr *sa;    /* input */
           socklen_t len;         /* input */
           char hbuf[NI_MAXHOST];

           if (getnameinfo(sa, len, 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 etre trouve 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 et W. Stevens, Basic Socket Interface
       Extensions for IPv6, RFC 2553, mars 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 :  conference  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  3.27  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      etre       trouvees       a       l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis  2010,  cette  traduction est maintenue a l'aide de l'outil po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone        au        sein        du       projet       perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Stephan          Rafin          (2002),          Alain           Portal
       <URL:http://manpagesfr.free.fr/> (2006).   Florentin Duneau et l'equipe
       francophone de traduction de Debian (2006-2009).

       Veuillez  signaler  toute  erreur   de   traduction   en   ecrivant   a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir acces a la version anglaise de  ce  document
       en utilisant la commande << man -L C <section> <page_de_man> >>.

GNU                             3 decembre 2009                 GETNAMEINFO(3)