|
|||||||
|
|
IPV6Section: Manuel de l'administrateur Linux (7)Updated: 25 juillet 2003 Index Return to Main Contents NOMipv6, PF_INET6 - Implémentation Linux du protocole IPv6SYNOPSIS#include <sys/socket.h>#include <netinet/in.h>
tcp6_socket = socket(PF_INET6, SOCK_STREAM, 0);
DESCRIPTIONLinux 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. Voir socket(7).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
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. L'espace des ports de l'IPv6 est partagé avec l'IPv4. OPTIONS DES SOCKETSIPv6 supporte quelques options des sockets spécifiques du protocole, qui peuvent être fixées 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.
VERSIONSL'ancienne implémentation IPv6 pour Linux basée sur libinet6 de la LibC5 n'est pas décrite ici, et peut être légèrement différente.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 buffer d'adresse plus long et vérifient ensuite la longueur de l'adresse renvoyée peuvent échouer. NOTES DE PORTABILITÉ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.BOGUESL'API IPv6 étendue, telle que dans la RFC 2292, n'est encore que partiellement implémentée. Bien que les noyaux 2.2 ont un support pratiquement complet pour les options de réception, les macros déclarant les options IPv6 manquent dans la GlibC 2.1.Le support IPSec pour les en-têtes EH et AH est manquant. 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 AUSSIip(7), cmsg(3)RFC2553: API IPv6 de base, avec laquelle Linux essaye d'être compatible. TRADUCTIONChristophe Blaess, 2001-2003.
Index
| ||||||
|
|
|
Home :: Copyright :: Privacy :: Credits :: Get a free Linuxinfor Email Account Document on this page is part of "Linuxinfor Man Pages in HTML Format: man7". See Index Page for more info about Authorship and Copyright. 1999-2008 Linuxinfor.com. No rights reserved. |