Provided by: manpages-fr-dev_3.57d1p1-1_all bug

NOM

       inet_pton - Convertir des adresses IPv4 et IPv6 sous forme texte en forme binaire

SYNOPSIS

       #include <arpa/inet.h>

       int inet_pton(int af, const char *src, void *dst);

DESCRIPTION

       Cette  fonction convertit la chaîne de caractères src en une structure d'adresse réseau de la famille af,
       puis copie cette structure dans dst .L'argument af doit être soit AF_INET soit AF_INET6.

       Les familles d'adresses suivantes sont dès à présent supportées :

       AF_INET
              src pointe sur une chaîne de caractère contenant une adresse réseau IPv4 au format décimal  pointé
              ddd.ddd.ddd.ddd, où ddd est un nombre décimal, contenant jusqu'à trois chiffres, dans l'intervalle
              0 à 255. L'adresse est alors convertie en une structure struct in_addr et  copiée  dans  dst,  qui
              doit donc contenir au minimum sizeof(struct in_addr) (4) octets (32 bits).

       AF_INET6
              src pointe sur une chaîne de caractères contenant une adresse réseau IPv6. L'adresse est convertie
              en une structure struct in6_addr et copiée dans dst, qui doit donc contenir au moins sizeof(struct
              in6_addr)  (16)  octets  (128 bits).  Les  formats  d'adresse  IPv6  autorisés  suivent les règles
              suivantes :

              1. Le format préféré est x:x:x:x:x:x:x:x. Cette forme consiste en 8 nombres  hexadécimaux,  chacun
                 d'entre eux exprimant une valeur sur 16 bits (c'est-à-dire que chaque x peut contenir jusqu'à 4
                 symboles hexadécimaux).

              2. Une série de zéros contigus dans la forme préférée peut être abrégée en ::. Une seule  instance
                 de  ::  peut apparaître dans une adresse. Par exemple, l'adresse de boucle 0:0:0:0:0:0:0:1 peut
                 être abrégée en ::1. L'adresse joker, constituée uniquement de zéros, peut  être  écrite  comme
                 ::.

              3. Un  autre  format  utile  pour  exprimer  des  adresses  IPv4  projetées dans l'espace IPv6 est
                 x:x:x:x:x:x:d.d.d.d, où les six x de tête sont des valeurs hexadécimales qui définissent les  6
                 mots  16 bits  de poids fort de l'adresse (c'est-à-dire 96 bits), et les d expriment une valeur
                 en notation décimale pointée définissant les 32 bits de poids faible de l'adresse.  Un  exemple
                 d'une telle adresse est ::FFFF:204.152.189.116.

              Consultez la RFC 2373 pour plus de détails sur la représentation des adresses IPv6.

VALEUR RENVOYÉE

       inet_pton()  renvoie  1  si elle réussit (l'adresse réseau a été convertie avec succès). Elle renvoie une
       valeur nulle si src ne contient pas une adresse réseau  valable  pour  la  famille  indiquée.  Si  af  ne
       contient pas de famille d'adresse valable, -1 est renvoyé et errno contient EAFNOSUPPORT.

CONFORMITÉ

       POSIX.1-2001.

NOTES

       Contrairement  à  inet_aton(3)  et  inet_addr(3),  inet_pton()  gère  les adresses IPv6. D'un autre coté,
       inet_pton() n'accepte que les adresses IPv4 en  notation  décimale  pointée  alors  que  inet_aton(3)  et
       inet_addr(3)  autorisent  la  notation  plus générale numérique pointée (formats à nombre hexadécimaux et
       octaux, de même que les formats n'exigeant pas que les 4 octets soient explicitement  écrits).  Pour  une
       interface gérant les adresses IPv6 et IPv4 en notation numérique pointée, consultez getaddrinfo(3).

BOGUES

       AF_INET6  ne  reconnaît  pas  les  adresses  IPv4.  Il faut dans ce cas fournir dans src une adresse IPv4
       projetée dans l'espace IPv6.

EXEMPLE

       Le programme suivant montre une utilisation de  inet_pton()  et  inet_ntop(3).  Voici  quelques  exemples
       d'exécution :

           $ ./a.out i6 0:0:0:0:0:0:0:0
           ::
           $ ./a.out i6 1:0:0:0:0:0:0:8
           1::8
           $ ./a.out i6 0:0:0:0:0:FFFF:204.152.189.116
           ::ffff:204.152.189.116

   Source du programme

       #include <arpa/inet.h>
       #include <stdio.h>
       #include <stdlib.h>
       #include <string.h>

       int
       main(int argc, char *argv[])
       {
           unsigned char buf[sizeof(struct in6_addr)];
           int domain, s;
           char str[INET6_ADDRSTRLEN];

           if (argc != 3) {
               fprintf(stderr, "Usage: %s {i4|i6|<num>} string\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           domain = (strcmp(argv[1], "i4") == 0) ? AF_INET :
                    (strcmp(argv[1], "i6") == 0) ? AF_INET6 : atoi(argv[1]);

           s = inet_pton(domain, argv[2], buf);
           if (s <= 0) {
               if (s == 0)
                   fprintf(stderr, "Not in presentation format");
               else
                   perror("inet_pton");
               exit(EXIT_FAILURE);
           }

           if (inet_ntop(domain, buf, str, INET6_ADDRSTRLEN) == NULL) {
               perror("inet_ntop");
               exit(EXIT_FAILURE);
           }

           printf("%s\n", str);

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       getaddrinfo(3), inet(3), inet_ntop(3)

COLOPHON

       Cette page fait partie de la publication 3.57 du projet man-pages Linux. Une description du projet et des
       instructions    pour    signaler    des    anomalies    peuvent     être     trouvées     à     l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

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

       Christophe      Blaess      <http://www.blaess.fr/christophe/>      (1996-2003),       Alain       Portal
       <http://manpagesfr.free.fr/>  (2003-2006).  Florentin  Duneau  et  l'équipe  francophone de traduction de
       Debian (2006-2009).

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

       Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
       <section> <page_de_man> ».