Provided by: manpages-fr_3.32d0.2p4-1_all bug

NOM

       ipv6, AF_INET6 - 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.  Ceci
       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  ayant une portée liaison, 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   16 nombres
       hexadécimaux  sur  2 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   fixées   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étermine l'appartenance aux groupes multicast.  L'argument  est
              un pointeur sur une structure struct ipv6_mreq.

       IPV6_MTU
              Fixe  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  par  chemin  sur  la  socket.
              Consultez  l'option  IP_MTU_DISCOVER  dans  ip(7)  pour  plus de
              précisions.

       IPV6_MULTICAST_HOPS
              Fixe 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
              Fixe  le  périphérique 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 numéro d'interface
              (consultez netdevice(7)) dans un entier.

       IPV6_MULTICAST_LOOP
              Détermine 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_PKTINFO
              Fixe la distribution des messages de contrôle  IPV6_PKTINFO  des
              datagrammes  entrants.  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  Fixe 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 fixées 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
              Commande   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
              Fixe 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é).

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 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      être       trouvées       à       l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis  2010,  cette  traduction est maintenue à l'aide de l'outil po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'équipe   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'é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> ».