Provided by:
manpages-fr_3.32d0.2p4-1_all 
NOM
ipv6, AF_INET6 - Implementation Linux du protocole IPv6
SYNOPSIS
#include <sys/socket.h>
#include <netinet/in.h>
tcp6_socket = socket(AF_INET6, SOCK_STREAM, 0);
raw6_socket = socket(AF_INET6, SOCK_RAW, protocole);
udp6_socket = socket(AF_INET6, SOCK_DGRAM, protocole);
DESCRIPTION
Linux 2.2 implemente en option le protocole internet version 6 (IPv6).
Cette page de manuel contient la description de l'API IPv6 de base,
telle qu'implementee dans le noyau Linux et la glibc 2.1 L'interface
est basee sur l'interface des sockets BSD. Consultez socket(7).
L'API IPv6 est concue pour etre essentiellement compatible avec l'API
IPv4 (consultez ip(7)). Seules les differences sont decrites dans cette
page de manuel.
Pour attacher une socket AF_INET6, l'adresse locale doit etre copiee
dans une variable in6addr_any qui a le type in6_addr. Dans les
initialisations statiques, IN6ADDR_ANY_INIT peut servir aussi et se
developpe en une expression constante. Toutes les valeurs sont dans
l'ordre des octets du reseau.
L'adresse de boucle IPv6 (::1) est disponible dans la variable globale
in6addr_loopback. Pour les initialisations, on doit utiliser
IN6ADDR_LOOPBACK_INIT.
Les connexions IPv4 peuvent etre traitees avec l'API v6 en utilisant le
type d'adresse v4-projete-dans-v6. Ainsi un programme n'a qu'un seul
type d'API a utiliser pour prendre en charge les deux protocoles. Ceci
est gere de maniere transparente par les fonctions d'adressage de la
bibliotheque C.
IPv4 et IPv6 partagent l'espace des ports locaux. Lorsqu'une connexion
ou un paquet IPv4 est obtenu sur une socket IPv6, son adresse source
sera projetee en v6.
Format d'adresse
struct sockaddr_in6 {
sa_family_t sin6_family; /* AF_INET6 */
in_port_t sin6_port; /* numero de port */
uint32_t sin6_flowinfo; /* information de flux IPv6 */
struct in6_addr sin6_addr; /* adresse IPv6 */
uint32_t sin6_scope_id; /* Scope ID (nouveaute 2.4) */
};
struct in6_addr {
unsigned char s6_addr[16]; /* adresse IPv6 */
};
sin6_family est toujours rempli avec AF_INET6 ; sin6_port est le port
du protocole (consultez sin_port dans ip(7)) ; sin6_flowinfo est
l'identificateur de flux IPv6, sin6_addr est l'adresse IPv6 sur
128 bits. sin6_scope_id est un identificateur qui depend de la portee
de l'adresse. C'est une nouveaute Linux 2.4. Linux ne le prend en
charge que pour les adresses ayant une portee liaison, dans ce cas
sin6_scope_id contient le numero d'interface (consultez netdevice(7)).
IPv6 prend en charge plusieurs types d'adresses : unicast pour
representer un hote unique, multicast pour un groupe d'hotes, anycast
pour indiquer le membre le plus proche d'un groupe d'hotes (non
implemente sous Linux), IPv4-on-IPv6 pour un hote IPv4, et d'autres
types d'adresse reserves.
La notation d'adresse pour l'IPv6 est un groupe de 16 nombres
hexadecimaux sur 2 chiffres, separes par un deux-points << : >>. Un
<< :: >> represente une chaine de zeros. Les adresses speciales
sont ::1 pour le bouclage loopback et ::FFFF:<adresse IPv4> pour les
projections d'adresses IPv4 sur l'IPv6.
L'espace des ports de l'IPv6 est partage avec l'IPv4.
Options de sockets
IPv6 accepte quelques options des sockets specifiques du protocole, qui
peuvent etre fixees avec setsockopt(2) et consultees avec
getsockopt(2). Le niveau d'option de socket pour l'IPv6 est
IPPROTO_IPV6. Un entier booleen est faux quand il est nul et vrai
sinon.
IPV6_ADDRFORM
Transformer une socket AF_INET6 en une socket d'une famille
d'adresse differente. Seul AF_INET est actuellement pris en
charge pour cela. Cela n'est autorise que pour les sockets IPv6
connectees et attachees a une adresse v4-sur-v6. L'argument est
un pointeur sur un entier contenant AF_INET. Cela est utile pour
passer des sockets projetees en v4 comme descripteurs a des
programmes ne sachant pas manipuler l'API IPv6.
IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP
Determine l'appartenance aux groupes multicast. L'argument est
un pointeur sur une structure struct ipv6_mreq.
IPV6_MTU
Fixe le MTU a utiliser pour la socket. Le MTU est limite par
celui du peripherique ou celui du chemin lorsque la recherche du
MTU par chemin est activee. L'argument est un pointeur sur un
entier.
IPV6_MTU_DISCOVER
Commander la recherche du MTU par chemin sur la socket.
Consultez l'option IP_MTU_DISCOVER dans ip(7) pour plus de
precisions.
IPV6_MULTICAST_HOPS
Fixe la limite du nombre de sauts (hops) multicast. L'argument
est un pointeur sur un entier. La valeur -1 correspond a la
valeur par defaut de routage, sinon il doit s'agir d'un entier
entre 0 et 255.
IPV6_MULTICAST_IF
Fixe le peripherique pour les paquets multicast sortants de la
socket. Ceci n'est permis que pour les sockets SOCK_DGRAM et
SOCK_RAW. L'argument est un pointeur sur un numero d'interface
(consultez netdevice(7)) dans un entier.
IPV6_MULTICAST_LOOP
Determine si la socket voit les paquets multicast qu'elle a
elle-meme emis. L'argument est un pointeur sur une valeur
booleenne.
IPV6_PKTINFO
Fixe la distribution des messages de controle IPV6_PKTINFO des
datagrammes entrants. Uniquement autorise pour les sockets
SOCK_DGRAM ou SOCK_RAW. L'argument est un pointeur sur une
valeur booleenne dans un entier.
IPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPTS, IPV6_HOPOPTS, IPV6_FLOWINFO,
IPV6_HOPLIMIT Fixe la distribution des messages de contr^ole des
datagrammes entrants contenant les en-t^etes d'extensions du
paquet re,cu. IPV6_RTHDR d'elivre l'en-t^ete de routage,
IPV6_AUTHHDR d'elivre l'en-t^ete d'authentification, IPV6_DSTOPTS
d'elivre les options de destination, IPV6_HOPOPTS d'elivre les
options de saut, IPV6_FLOWINFO d'elivre un entier contenant
l'identificateur de flux, IPV6_HOPLIMIT d'elivre un entier
contenant le nombre de sauts du paquet. Les messages de contr^ole
ont le m^eme type que l'option de socket. Toutes ces options
d'en-t^ete peuvent aussi ^etre fix'ees pour les paquets sortants en
mettant le message de contr^ole appropri'e dans le tampon de
sendmsg(2). Uniquement autoris'e pour les sockets SOCK_DGRAM ou
SOCK_RAW. L'argument est un pointeur sur une valeur bool'eenne.
IPV6_RECVERR
Commande la reception des erreurs asynchrones. Consultez
IP_RECVERR dans ip(7) pour plus de precisions. L'argument est un
pointeur sur un booleen.
IPV6_ROUTER_ALERT
Passer sur cette socket tous les paquets rediriges (forwarded)
contenant une option << hop-by-hop >> d'alerte du routeur.
Uniquement autorise pour les sockets SOCK_RAW. Les paquets
exploites ne sont pas rediriges par le noyau, il est de la
responsabilite de l'utilisateur de les renvoyer. L'argument est
un pointeur vers un entier. Un entier positif indique une valeur
option d'alerte du routeur a intercepter. Les paquets portant
une option d'alerte du routeur avec un champ de valeur contenant
cet entier sera delivre a la socket. Un entier negatif desactive
la delivrance de packets avec des options d'alerte du routeur a
cette socket.
IPV6_UNICAST_HOPS
Fixe la limite du nombre de sauts (hops) unicast. L'argument est
un pointeur sur un entier. La valeur -1 correspond a la valeur
par defaut de routage, sinon il doit s'agir d'un entier entre 0
et 255.
IPV6_V6ONLY (depuis Linux 2.4.21 et 2.6)
Quand cet attribut est positionne (different de zero), alors la
socket est limitee a l'emission et la reception de paquets IPv6.
Dans ce cas, une application IPv4 et IPv6 peuvent s'associer a
un meme port en meme temps.
Si cet attribut n'est pas positionne (zero), alors la socket
peut etre utilise pour emettre ou recevoir des paquets depuis et
vers une adresse IPv6 ou une projections d'adresse IPv4 sur
IPv6.
Le parametre est un pointeur vers un booleen dans un entier.
La valeur par defaut de cet attribut est defini par le contenu
du fichier /proc/sys/net/ipv6/bindv6only. La valeur par defaut
de ce fichier est 0 (desactive).
VERSIONS
L'ancienne implementation IPv6 pour Linux basee sur libinet6 de la
LibC5 n'est pas decrite ici, et peut etre legerement differente.
Linux 2.4 rompt la compatibilite binaire pour la structure sockaddr_in6
des hotes sur 64 bits, en modifiant l'alignement de in6_addr et en
ajoutant un champ sin6_scope_id supplementaire. Les interfaces du noyau
restent compatible, mais un programme contenant des sockaddr_in6 ou des
in6_addr dans d'autres structures ne l'est peut etre pas. Ce n'est pas
un probleme pour les hotes sur 32 bits comme les i386.
Le champ sin6_flowinfo est une nouveaute Linux 2.4. Il est ecrit/lu de
maniere transparente par le noyau quand la longueur de l'adresse passee
le contient. Certains programmes qui passent un tampon d'adresse plus
long et verifient ensuite la longueur de l'adresse renvoyee peuvent
echouer.
NOTES
La structure sockaddr_in6 est plus grande que la structure sockaddr
generique. Les programmes qui supposent que tous les types d'adresses
peuvent etre stockes dans une struct sockaddr doivent etre modifies
pour utiliser struct sockaddr_storage a la place.
BOGUES
L'API IPv6 etendue, telle que dans la RFC 2292, n'est encore que
partiellement implementee. Bien que les noyaux 2.2 ont une prise en
charge pratiquement complete des options de reception, les macros
declarant les options IPv6 manquent dans la glibc 2.1.
La prise en charge IPSec pour les en-tetes EH et AH manque.
La gestion des etiquettes de flux n'est pas complete, ni documentee
ici.
Cette page de manuel n'est pas complete.
VOIR AUSSI
cmsg(3), ip(7)
RFC 2553: API IPv6 de base, avec laquelle Linux essaye d'etre
compatible.
RFC 2460: Specifications IPv6.
COLOPHON
Cette page fait partie de la publication 3.32 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). Julien
Cristau 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> >>.
Linux 28 fevrier 2009 IPV6(7)