ipv6

IPV6(7)                    Manuel du programmeur Linux                   IPV6(7)



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.11 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 ⟨⟩.




Linux                             22 mars 2021                           IPV6(7)