Provided by: manpages-fr_4.21.0-2_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.

   Formats d'adresse
           struct sockaddr_in6 {
               sa_family_t     sin6_family;   /* AF_INET6 */
               in_port_t       sin6_port;     /* port number */
               uint32_t        sin6_flowinfo; /* IPv6 flow information */
               struct in6_addr sin6_addr;     /* IPv6 address */
               uint32_t        sin6_scope_id; /* Scope ID (new in Linux 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.

       The  address  notation  for  IPv6 is a group of 8 4-digit hexadecimal numbers, separated with a ':'. "::"
       stands for a string of 0 bits. Special addresses are ::1  for  loopback  and  ::FFFF:<IPv4  address>  for
       IPv4-mapped-on-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 re‐
              ceived 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 op‐
              tion. 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 so‐
              ckets. 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 respon‐
              sibility 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 delive‐
              ry 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 re‐
              cevoir 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 modi‐
       fiant 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  sup‐
       posent  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.

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 <tvi‐
       gnaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe  Guérard  <fe‐
       vrier@tigreraye.org>,  Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@de‐
       bian.org>,  Thomas  Huriaux  <thomas.huriaux@gmail.com>,   Nicolas   François   <nicolas.francois@centra‐
       liens.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 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 à  de‐
       bian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.03                    5 février 2023                                          ipv6(7)