Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
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 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.
Les familles d'adresses suivantes sont des a present supportees :
AF_INET
src pointe sur une chaine de caractere contenant une adresse
reseau IPv4 au format decimal pointe ddd.ddd.ddd.ddd, ou ddd est
un nombre decimal, contenant jusqu'a trois chiffres, dans
l'intervalle 0 a 255. L'adresse est alors convertie en une
structure struct in_addr et copiee dans dst, qui doit donc
contenir au minimum sizeof(struct in_addr) (4) octets (32 bits).
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 :
1. 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).
2. 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 ::.
3. 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 RENVOY'EE
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.
CONFORMIT'E
POSIX.1-2001.
NOTES
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).
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.
EXEMPLE
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 <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.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Florentin
Duneau et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.