dwww Home | Manual pages | Find package

inet_pton(3)               Library Functions Manual               inet_pton(3)

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

BIBLIOTHÈQUE
       Bibliothèque C standard (libc, -lc)

SYNOPSIS
       #include <arpa/inet.h>

       int inet_pton(int af, const char *restrict src, void *restrict 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. dst est écrit  dans
       l'ordre d'octets du réseau.

       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'in-
              tervalle 0 à 255. L'adresse est alors convertie en une structure
              struct in_addr et copiée dans dst, qui doit donc contenir au mi-
              nimum 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 si-
              zeof(struct   in6_addr)  (16)  octets  (128 bits).  Les  formats
              d'adresse IPv6 autorisés suivent les règles suivantes :

              •  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).

              •  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 unique-
                 ment de zéros, peut être écrite comme ::.

              •  Un  autre format utile pour exprimer des adresses IPv4 proje-
                 té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 EAFNO-
       SUPPORT.

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

       ┌──────────────────────────────┬──────────────────────┬────────────────┐
       │InterfaceAttributValeur         │
       ├──────────────────────────────┼──────────────────────┼────────────────┤
       │inet_pton().                  │ Sécurité des threads │ MT-Safe locale │
       └──────────────────────────────┴──────────────────────┴────────────────┘

STANDARDS
       POSIX.1-2001, POSIX.1-2008.

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_ad-
       dr(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  four-
       nir dans src une adresse IPv4 projetée dans l'espace IPv6.

EXEMPLES
       Le  programme  suivant  montre  une  utilisation  de inet_pton() et in-
       et_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)

TRADUCTION
       La traduction française de cette page de manuel a été créée par  Chris-
       tophe  Blaess  <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.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.cou-
       lon@wanadoo.fr>,  Julien  Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François  <nicolas.francois@centra-
       liens.net>,  Florentin  Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier    <barbier@de-
       bian.org> et David Prévot <david@tilapin.org>

       Cette traduction est une documentation libre ; veuillez vous reporter à
       la       GNU       General       Public        License        version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.

Pages du manuel de Linux 6.03   5 février 2023                    inet_pton(3)

Generated by dwww version 1.15 on Sat Jun 29 01:38:56 CEST 2024.