oracular (7) ipv6.7.gz

Provided by: manpages-fr_4.23.1-1_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, 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 un 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. C’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
       un socket IPv6, son adresse source sera projetée en v6.

   Formats 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 (nouveau dans 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 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 8 nombres hexadécimaux sur 4 chiffres, séparés par  un
       deux-points  « : ».  Un  « :: »  représente une chaîne de bits 0. 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 un socket AF_INET6 en un 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és et
              attachés à une adresse v4-sur-v6. L'argument est un pointeur sur un entier contenant AF_INET. Cela
              est  utile  pour  passer des sockets projetés 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() :  récupérer  la  MTU  du  chemin  actuellement  déterminée  pour  le socket. Valable
              seulement quand le socket a été connecté. Renvoie un entier.

              setsockopt() : définir le MTU à  utiliser  pour  le  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 le 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 du socket. 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 du 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  le  socket  voit  les  paquets  multicast qu'il a lui-même émis. L'argument est un
              pointeur sur une valeur booléenne.

       IPV6_RECVPKTINFO (depuis Linux 2.6.14)
              Définir la distribution des messages de contrôle IPV6_PKTINFO des datagrammes entrants. Ce type de
              messages  de  contrôle  contient  une  struct  in6_pktinfo, conformément à la RFC 3542. 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
              Définir  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  définies
              pour  les  paquets sortants en mettant le message de contrôle approprié dans le tampon de contrôle
              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
              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
              Passer sur ce 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é au socket. Un entier négatif désactive la délivrance de packets
              avec des options d'alerte du routeur à ce socket.

       IPV6_UNICAST_HOPS
              Définir la limite du nombre de sauts (hops) unicast pour le socket. 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 le socket est limité à 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 le 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 et d'autres options de socket SOL_* sont  des  variantes  non  portables  de
       IPPROTO_*. Voir aussi 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
       <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>,    David     Prévot
       <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

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