Provided by: manpages-fr_4.15.0-9_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, protocol);
       udp6_socket = socket(AF_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. 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.

       IPv4 connections can be handled with the v6 API by using the v4-mapped-on-v6 address type;
       thus a program needs to support only this API type to  support  both  protocols.  This  is
       handled transparently by the address handling functions in the C library.

       IPv4  and IPv6 share the local port space. When you get an IPv4 connection or packet to an
       IPv6 socket, its source address will be mapped to v6 and it will be mapped to 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  supports  several  address  types:  unicast  to  address a single host, multicast to
       address a group of hosts, anycast to address the nearest member of a group of  hosts  (not
       implemented  in  Linux),  IPv4-on-IPv6 to address an IPv4 host, and other reserved address
       types.

       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 socket
       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(): Retrieve the current known path MTU of the current socket. Valid only
              when the socket has been connected. Returns an integer.

              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)
              Set delivery of the  IPV6_PKTINFO  control  message  on  incoming  datagrams.  Such
              control  messages  contain  a struct in6_pktinfo, as per RFC 3542. Allowed only for
              SOCK_DGRAM or SOCK_RAW sockets. Argument is a pointer to  a  boolean  value  in  an
              integer.

       IPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPTS, IPV6_HOPOPTS, IPV6_FLOWINFO,
              IPV6_HOPLIMIT  Set  delivery  of control messages for incoming datagrams containing
              extension headers from the received packet. IPV6_RTHDR delivers the routing header,
              IPV6_AUTHHDR   delivers   the  authentication  header,  IPV6_DSTOPTS  delivers  the
              destination options, IPV6_HOPOPTS delivers the hop options, IPV6_FLOWINFO  delivers
              an integer containing the flow ID, IPV6_HOPLIMIT delivers an integer containing the
              hop count of the packet. The control messages have the  same  type  as  the  socket
              option.  All  these  header options can also be set for outgoing packets by putting
              the appropriate control message into the control buffer of sendmsg(2). Allowed only
              for SOCK_DGRAM or SOCK_RAW sockets. Argument is a pointer to a boolean value.

       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
              Pass forwarded packets containing a router alert hop-by-hop option to this  socket.
              Allowed  only  for  SOCK_RAW  sockets.  The tapped packets are not forwarded by the
              kernel, it is the user's responsibility to send  them  out  again.  Argument  is  a
              pointer  to an integer. A positive integer indicates a router alert option value to
              intercept. Packets carrying a router alert option with  a  value  field  containing
              this  integer will be delivered to the socket. A negative integer disables delivery
              of packets with router alert options to this 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

       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.

       SOL_IP,  SOL_IPV6,  SOL_ICMPV6, and other SOL_* socket options are nonportable variants of
       IPPROTO_*. See also ip(7).

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 5.13 du projet man-pages Linux. Une description
       du projet et des instructions pour signaler des anomalies et la dernière version de  cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.