Provided by: manpages-fr_2.80.1-1_all bug

NOM

       ipv6, PF_INET6 - Implémentation Linux du protocole IPv6

SYNOPSIS

       #include <sys/socket.h>
       #include <netinet/in.h>

       tcp6_socket = socket(PF_INET6, SOCK_STREAM, 0);
       raw6_socket = socket(PF_INET6, SOCK_RAW, protocol);
       udp6_socket = socket(PF_INET6, SOCK_DGRAM, protocol);

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. Voir socket(7).

       L’API IPv6 est conçue pour être essentiellement compatible  avec  l’API
       ip(7)  v4.  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 supporter les deux protocoles. Ceci est géré
       de manière transparente par les fonctions d’adressage de la libc.

       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 dadresse
           struct sockaddr_in6 {
               uint16_t        sin6_family;   /* AF_INET6 */
               uint16_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  (voir   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 supporte que pour
       les adresses ayant  une  portée  liaison,  dans  ce  cas  sin6_scope_id
       contient le numéro d’interface (voir netdevice(7)).

       IPv6  supporte 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 supporte 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 supporté
              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.  Voir
              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 multicasts 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
              (voir 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_DSTOPS, IPV6_HOPOPTS, IPV6_FLOWINFO,
              IPV6_HOPLIMIT Fixe la distribution des messages de contrôle  des
              datagrammes  entrants  contenant  les  en-têtes  dextensions du
              paquet  reçu.   IPV6_RTHDR   délivre   len-tête   de   routage,
              IPV6_AUTHHDR  délivre len-tête dauthentification, IPV6_DSTOPTS
              délivre les options de  destination,  IPV6_HOPOPTS  délivre  les
              options  de  saut,  IPV6_FLOWINFO  délivre  un  entier contenant
              lidentificateur  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 loption  de  socket.  Toutes  ces  options
              den-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. Largument est un pointeur sur une valeur booléenne.

       IPV6_RECVERR
              Commande la réception des erreurs asynchrones.  Voir  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.

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 un support
       pratiquement  complet  pour  les  options  de  réception,  les   macros
       déclarant les options IPv6 manquent dans la GlibC 2.1.

       Le support IPSec pour les en-têtes EH et AH est manquant.

       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 2.80 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

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

       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> ».