ipv6 | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 initialisation, on doit utiliser IN6ADDR_LOOPBACK_INIT.
Les connexions IPv4 peuvent être traitée 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 IPv4 ou un paquet est obtenu sur une socket IPv6, son adresse source sera projetée en v6.
Format d'adresse | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
struct sockaddr_in6 { uint16_t sin6_family; /* AF_INET6 */ uint16_t sin6_port; /* numéro port */ uint32_t sin6_flowinfo; /* information 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 adresse 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.
Options des sockets | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
VERSIONS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
BOGUES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Le support IPSec pour les entêtes EH et AH est manquant.
La gestion des étiquettes de flux n'est pas complète, ni documentée ici.
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
RFC 2553 : API IPv6 de base, avec laquelle Linux essaye d'être compatible.
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 11 juin 2001 et révisée le 8 janvier 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 7 ipv6 ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP | Options des sockets |
IPV6_ADDRFORM | Options des sockets |
IPV6_MTU | Options des sockets |
IPV6_MTU_DISCOVER | Options des sockets |
IPV6_MULTICAST_HOPS | Options des sockets |
IPV6_MULTICAST_IF | Options des sockets |
IPV6_MULTICAST_LOOP | Options des sockets |
IPV6_PKTINFO | Options des sockets |
IPV6_RECVERR | Options des sockets |
IPV6_ROUTER_ALERT | Options des sockets |
IPV6_UNICAST_HOPS | Options des sockets |