inet_pton(3) Library Functions Manual inet_pton(3) NOM inet_pton - Convertir des adresses IPv4 et IPv6 sous forme texte en forme binaire BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int inet_pton(int af, const char *restrict src, void *restrict dst); DESCRIPTION Cette fonction convertit la chaine de caracteres src en une structure d'adresse reseau de la famille af, puis copie cette structure dans dst. L'argument af doit etre soit AF_INET soit AF_INET6. dst est ecrit dans l'ordre d'octets du reseau. Les familles d'adresses suivantes sont des a present supportees : AF_INET src points to a character string containing an IPv4 network address in dotted-decimal format, "ddd.ddd.ddd.ddd", where ddd is a decimal number of up to three digits in the range 0 to 255. The address is converted to a struct in_addr and copied to dst, which must be sizeof(struct in_addr) (4) bytes (32 bits) long. AF_INET6 src pointe sur une chaine de caracteres contenant une adresse reseau IPv6. L'adresse est convertie en une structure struct in6_addr et copiee dans dst, qui doit donc contenir au moins sizeof(struct in6_addr) (16) octets (128 bits). Les formats d'adresse IPv6 autorises suivent les regles suivantes : - Le format prefere est x:x:x:x:x:x:x:x. Cette forme consiste en 8 nombres hexadecimaux, chacun d'entre eux exprimant une valeur sur 16 bits (c'est-a-dire que chaque x peut contenir jusqu'a 4 symboles hexadecimaux). - Une serie de zeros contigus dans la forme preferee peut etre abregee en ::. Une seule instance de :: peut apparaitre dans une adresse. Par exemple, l'adresse de boucle 0:0:0:0:0:0:0:1 peut etre abregee en ::1. L'adresse joker, constituee uniquement de zeros, peut etre ecrite comme ::. - Un autre format utile pour exprimer des adresses IPv4 projetees dans l'espace IPv6 est x:x:x:x:x:x:d.d.d.d, ou les six x de tete sont des valeurs hexadecimales qui definissent les 6 mots 16 bits de poids fort de l'adresse (c'est-a-dire 96 bits), et les d expriment une valeur en notation decimale pointee definissant 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 details sur la representation des adresses IPv6. VALEUR RENVOYEE inet_pton() renvoie 1 si elle reussit (l'adresse reseau a ete convertie avec succes). Elle renvoie une valeur nulle si src ne contient pas une adresse reseau valable pour la famille indiquee. Si af ne contient pas de famille d'adresse valable, -1 est renvoye et errno contient EAFNOSUPPORT. ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +--------------------------+--------------------------+----------------+ |Interface | Attribut | Valeur | +--------------------------+--------------------------+----------------+ |inet_pton(). | Securite des threads | MT-Safe locale | +--------------------------+--------------------------+----------------+ VERSIONS Contrairement a inet_aton(3) et inet_addr(3), inet_pton() gere les adresses IPv6. D'un autre cote, inet_pton() n'accepte que les adresses IPv4 en notation decimale pointee alors que inet_aton(3) et inet_addr(3) autorisent la notation plus generale numerique pointee (formats a nombre hexadecimaux et octaux, de meme que les formats n'exigeant pas que les 4 octets soient explicitement ecrits). Pour une interface gerant les adresses IPv6 et IPv4 en notation numerique pointee, consultez getaddrinfo(3). NORMES POSIX.1-2008. HISTORIQUE POSIX.1-2001. BOGUES AF_INET6 ne reconnait pas les adresses IPv4. Il faut dans ce cas fournir dans src une adresse IPv4 projetee dans l'espace IPv6. EXEMPLES Le programme suivant montre une utilisation de inet_pton() et inet_ntop(3). Voici quelques exemples d'execution : $ ./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 #include #include #include 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, "Utilisation : %s chaine {i4|i6|}\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, "Pas en format de presentation"); 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 francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.17 8 fevrier 2026 inet_pton(3)