Provided by: manpages-fr-dev_3.65d1p1-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.65 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> ».