Provided by: manpages-fr_3.57d1p1-1_all bug

NOM

       ipv6 - Implémentation 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  implémente  en  option  le  protocole  internet version 6 (IPv6). Cette page de
       manuel contient la description de l'API IPv6 de base, telle qu'implémentée dans  le  noyau
       Linux  et  la  glibc 2.1  L'interface est basée sur l'interface des sockets BSD. Consultez
       socket(7).

       L'API IPv6 est conçue pour être essentiellement  compatible  avec  l'API  IPv4  (consultez
       ip(7)). Seules les différences sont décrites dans cette page de manuel.

       Pour  attacher  une  socket  AF_INET6, l'adresse locale doit être copiée dans une variable
       in6addr_any qui a le type in6_addr. Dans les initialisations  statiques,  IN6ADDR_ANY_INIT
       peut  servir  aussi  et  se développe en une expression constante. Toutes les valeurs sont
       dans l'ordre des octets du réseau.

       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  être traitées avec l'API v6 en utilisant le type d'adresse
       v4-projeté-dans-v6. Ainsi un programme n'a qu'un seul type d'API à utiliser  pour  prendre
       en  charge  les  deux  protocoles.  C’est  géré  de manière transparente par les fonctions
       d'adressage de la bibliothèque 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 projetée en v6.

   Format d'adresse
           struct sockaddr_in6 {
               sa_family_t     sin6_family;   /* AF_INET6 */
               in_port_t       sin6_port;     /* numéro de port */
               uint32_t        sin6_flowinfo; /* information de flux IPv6 */
               struct in6_addr sin6_addr;     /* adresse IPv6 */
               uint32_t        sin6_scope_id; /* Scope ID (nouveauté 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 dépend
       de la portée de l'adresse. C'est une nouveauté Linux 2.4. Linux ne le prend en charge  que
       pour  les  adresses locales lien, dans ce cas sin6_scope_id contient le numéro d'interface
       (consultez netdevice(7)).

       IPv6 prend en charge plusieurs types d'adresses : unicast pour représenter un hôte unique,
       multicast  pour  un  groupe  d'hôtes,  anycast pour indiquer le membre le plus proche d'un
       groupe d'hôtes (non implémenté sous Linux), IPv4-on-IPv6 pour un hôte  IPv4,  et  d'autres
       types d'adresse réservés.

       La  notation d'adresse pour l'IPv6 est un groupe de 8 nombres hexadécimaux sur 4 chiffres,
       séparés par un deux-points « : ». Un « :: » représente une chaîne de zéros.  Les  adresses
       spéciales 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 partagé avec l'IPv4.

   Options de sockets
       IPv6 accepte quelques options des sockets  spécifiques  du  protocole,  qui  peuvent  être
       définies avec setsockopt(2) et consultées avec getsockopt(2). Le niveau d'option de socket
       pour l'IPv6 est IPPROTO_IPV6. Un entier booléen est faux quand il est nul et vrai sinon.

       IPV6_ADDRFORM
              Transformer une socket AF_INET6 en une socket d'une famille  d'adresse  différente.
              Seul  AF_INET  est  actuellement  pris en charge pour cela. Cela n'est autorisé que
              pour les sockets IPv6 connectées et attachées à une adresse  v4-sur-v6.  L'argument
              est  un  pointeur  sur  un entier contenant AF_INET. Cela est utile pour passer des
              sockets projetées en  v4  comme  descripteurs  à  des  programmes  ne  sachant  pas
              manipuler l'API IPv6.

       IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP
              Déterminer l'appartenance aux groupes multicast. L'argument est un pointeur sur une
              structure struct ipv6_mreq.

       IPV6_MTU
              getsockopt() : récupérer la MTU du chemin actuellement déterminée pour  la  socket.
              Valable seulement quand la socket a été connectée. Renvoie un entier.

              setsockopt() :  définir  le  MTU  à  utiliser pour la socket. Le MTU est limité par
              celui du périphérique ou celui du chemin lorsque la recherche du MTU par chemin est
              activée. L'argument est un pointeur sur un entier.

       IPV6_MTU_DISCOVER
              Commander  la  recherche  du  MTU  du  chemin  sur  la  socket.  Consultez l'option
              IP_MTU_DISCOVER dans ip(7) pour plus de précisions.

       IPV6_MULTICAST_HOPS
              Définir la limite du nombre de sauts (hops) multicast. L'argument est  un  pointeur
              sur  un entier. La valeur -1 correspond à la valeur par défaut de routage, sinon il
              doit s'agir d'un entier entre 0 et 255.

       IPV6_MULTICAST_IF
              Définir le périphérique pour les paquets multicast sortants de la socket. Ce  n'est
              permis  que pour les sockets SOCK_DGRAM et SOCK_RAW. L'argument est un pointeur sur
              un numéro d'interface (consultez netdevice(7)) dans un entier.

       IPV6_MULTICAST_LOOP
              Déterminer si la socket voit  les  paquets  multicast  qu'elle  a  elle-même  émis.
              L'argument est un pointeur sur une valeur booléenne.

       IPV6_RECVPKTINFO (depuis Linux 2.6.14)
              Définir  la  distribution  des  messages  de  contrôle IPV6_PKTINFO des datagrammes
              entrants. Ce  type  de  messages  de  contrôle  contient  une  struct  in6_pktinfo,
              conformément  à  la  RFC 3542.  Uniquement  autorisé pour les sockets SOCK_DGRAM ou
              SOCK_RAW. L'argument est un pointeur sur une valeur booléenne dans un entier.

       IPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPTS, IPV6_HOPOPTS, IPV6_FLOWINFO,
              IPV6_HOPLIMIT Définir la distribution des  messages  de  contrôle  des  datagrammes
              entrants  contenant  les  en-têtes  d'extensions du paquet reçu. IPV6_RTHDR délivre
              l'en-tête  de   routage,   IPV6_AUTHHDR   délivre   l'en-tête   d'authentification,
              IPV6_DSTOPTS  délivre  les options de destination, IPV6_HOPOPTS délivre les options
              de saut, IPV6_FLOWINFO  délivre  un  entier  contenant  l'identificateur  de  flux,
              IPV6_HOPLIMIT  délivre  un  entier  contenant  le  nombre  de  sauts du paquet. Les
              messages de contrôle ont le même type que l'option de socket.  Toutes  ces  options
              d'en-tête  peuvent  aussi  être  définies  pour  les paquets sortants en mettant le
              message de contrôle approprié dans le tampon  de  sendmsg(2).  Uniquement  autorisé
              pour  les sockets SOCK_DGRAM ou SOCK_RAW. L'argument est un pointeur sur une valeur
              booléenne.

       IPV6_RECVERR
              Commander la réception des erreurs asynchrones.  Consultez  IP_RECVERR  dans  ip(7)
              pour plus de précisions. L'argument est un pointeur sur un booléen.

       IPV6_ROUTER_ALERT
              Passer sur cette socket tous les paquets redirigés (forwarded) contenant une option
              « hop-by-hop » d'alerte du routeur. Uniquement autorisé pour les sockets  SOCK_RAW.
              Les  paquets  exploités  ne  sont  pas  redirigés  par  le  noyau,  il  est  de  la
              responsabilité 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 à
              intercepter. Les paquets portant une option d'alerte du routeur avec  un  champ  de
              valeur  contenant  cet entier sera délivré à la socket. Un entier négatif désactive
              la délivrance de packets avec des options d'alerte du routeur à cette socket.

       IPV6_UNICAST_HOPS
              Définir la limite du nombre de sauts (hops) unicast. L'argument est un pointeur sur
              un entier. La valeur -1 correspond à la valeur par défaut 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 positionné (différent de zéro), alors la socket est  limitée
              à  l'émission et la réception de paquets IPv6. Dans ce cas, une application IPv4 et
              IPv6 peuvent s'associer à un même port en même temps.

              Si cet attribut n'est pas positionné (zéro), alors la socket peut être utilisé pour
              émettre  ou recevoir des paquets depuis et vers une adresse IPv6 ou une projections
              d'adresse IPv4 sur IPv6.

              Le paramètre est un pointeur vers un booléen dans un entier.

              La valeur par défaut  de  cet  attribut  est  défini  par  le  contenu  du  fichier
              /proc/sys/net/ipv6/bindv6only.   La   valeur   par  défaut  de  ce  fichier  est  0
              (désactivé).

ERREURS

       ENODEV L'utilisateur a essayé de lier avec bind(2) sur une adresse locale lien IPv6,  mais
              le  sin6_scope_id  de  la  structure  sockaddr_in6  fournie  n'est  pas  un  numéro
              d'interface valable.

VERSIONS

       L'ancienne implémentation IPv6 pour Linux basée sur libinet6 de la LibC5 n'est pas décrite
       ici, et peut être légèrement différente.

       Linux 2.4  rompt  la  compatibilité  binaire  pour la structure sockaddr_in6 des hôtes sur
       64 bits, en modifiant l'alignement de in6_addr  et  en  ajoutant  un  champ  sin6_scope_id
       supplémentaire.  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 être pas. Ce n'est
       pas un problème pour les hôtes sur 32 bits comme les i386.

       Le   champ  sin6_flowinfo  est  une  nouveauté  Linux 2.4.  Il  est  écrit/lu  de  manière
       transparente par le noyau quand la longueur de  l'adresse  passée  le  contient.  Certains
       programmes  qui  passent un tampon d'adresse plus long et vérifient ensuite la longueur de
       l'adresse renvoyée peuvent échouer.

NOTES

       La structure sockaddr_in6 est  plus  grande  que  la  structure  sockaddr  générique.  Les
       programmes  qui  supposent  que  tous  les  types d'adresses peuvent être stockés dans une
       struct sockaddr doivent être modifiés pour utiliser struct sockaddr_storage à la place.

BOGUES

       L'API  IPv6  étendue,  telle  que  dans  la  RFC 2292,  n'est  encore  que   partiellement
       implémentée.  Bien  que  les noyaux 2.2 ont une prise  en charge pratiquement complète des
       options de réception, les macros déclarant les options IPv6 manquent dans la glibc 2.1.

       La prise en charge IPSec pour les en-têtes EH et AH manque.

       La gestion des étiquettes de flux n'est pas complète, ni documentée ici.

       Cette page de manuel n'est pas complète.

VOIR AUSSI

       cmsg(3), ip(7)

       RFC 2553 : API IPv6 de base, avec laquelle  Linux  essaye  d'être  compatible.  RFC 2460 :
       spécifications d'IPv6.

COLOPHON

       Cette  page  fait partie de la publication 3.57 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).  Julien  Cristau  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> ».