Loading

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);

       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.

              Voir  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, voir 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.23 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

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
       francophone de traduction de Debian.

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