Login
Login
Sign Up
Password Lost
Sign In:
[Actualités]
Test Bridge Constructor Studio (PS5) - Construisez des ponts désormais sans bud...
[Actualités]
Mario Tennis Fever : Rendez-vous sur le court le 12 février sur Switch 2
[Actualités]
Finies les photos de nus non désirées. La Grande-Bretagne transfère la respon...
[Actualités]
Présentation du mini PC Acer Veriton RA100 SFF
[Actualités]
Les premiers routeurs Wi-Fi 8 ont été dévoilés au CES 2026.
[Actualités]
Corsair a dévoilé un clavier doté d'un Stream Deck intégré.
[Actualités]
Razer a lancé un PC dédié au travail avec l'IA.
[Actualités]
"South Park : Les créations de Chaos" débarque dans Fortnite !
[Actualités]
Voici la première batterie à semi-conducteurs : elle promet de révolutionner ...
[Actualités]
L'Iran coupe internet. Les manifestants se retrouvent sans moyen de communication.
[Articles]
Avatar: Frontiers of Pandora - D'entre les Cendres
[Articles]
Bridge Constructor Studio
[Articles]
Le Loup des Cordeliers
[Articles]
Immortal Hounds tome 7
[Articles]
Dungeons & Dragons: Dragonshard
[Articles]
Le Sympathisant
[Articles]
One Piece Odyssey
[Articles]
L'oubliée du radeau de la Méduse
[Articles]
Truck Driver: The Dutch Connection
[Articles]
School of Villains tome 2
News
Newsletter
Send a news
Archives
News
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Lasts Comments
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Latest Topics
Informatique
Fun
Divers
Logithèque
Blogs
Misc
About
Publishers
Contact
Search
RSS
Edit an Article
Title
Keywords
Text
[size=18] [b]Nom[/b] [/size] ipv6, PF_INET6 - Implémentation Linux du protocole IPv6 [size=18] [b]Résumé[/b] [/size] [b]#include
[/b] [b][/b] [b]#include
[/b] [b][i]tcp6_socket = socket(PF_INET6, SOCK_STREAM, 0);[/i][/b] [b][/b] [b][i]raw6_socket = socket(PF_INET6, SOCK_RAW, protocol );[/i][/b] [b][/b] [b][i]udp6_socket = socket(PF_INET6, SOCK_DGRAM, protocol );[/i][/b] [size=18] [b]Description[/b] [/size] 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. Voir [b]socket (7). [/b] L'API IPv6 est conçue pour être essentiellement compatible avec l'API [b]ip (7) [/b] v4. Seules les différences sont décrites dans cette page de manuel. pour attacher une socket [b]AF_INET6 ,[/b] l'adresse locale doit être copiée dans une variable [b]in6addr_any[/b] qui a le type [b]in6_addr .[/b] Dans les initialisations statiques, [b]IN6ADDR_ANY_INIT[/b] 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 [b]in6addr_loopback .[/b] Pour les initialisation, on doit utiliser [b]IN6ADDR_LOOPBACK_INIT .[/b] 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. [size=18] [b]Format dadresse[/b] [/size] [table][row][col] [/col][col] .nf .ta 4n 5n 20n struct sockaddr_in6 { u_int16_t sin6_family; /* AF_INET6 */ u_int16_t sin6_port; /* numéro port */ u_int32_t sin6_flowinfo; /* information flux IPv6 */ struct in6_addr sin6_addr; /* adresse IPv6 */ u_int32_t sin6_scope_id; /* Scope id (nouveauté 2.4) */ }; struct in6_addr { unsigned char s6_addr[16]; /* adresse IPv6 */ }; .ta .fi[/col][/row][/table] [b]sin6_family [/b] est toujours rempli avec [b]AF_INET6 ;[/b] [b]sin6_port [/b] est le port du protocole (voir [b]sin_port[/b] dans [b]ip (7));[/b] [b]sin6_flowinfo[/b] est l'identificateur de flux IPv6, [b]sin6_addr[/b] est l'adresse IPv6 sur 128 bits. [b]sin6_scope_id [/b] 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 [i]sin6_scope_id[/i] contient le numéro d'interface (voir [b]netdevice (7))[/b] 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:
pour les projections d'adresses IPv4 sur l'IPv6. L'espace des ports de l'IPv6 est partagé avec l'IPv4. [size=18] [b]Options[/b] [/size] IPv6 supporte quelques options des sockets spécifiques du protocole, qui peuvent être fixées avec [b]setsockopt (2)[/b] et consultées avec [b]getsockopt (2).[/b] Le niveau d'option de socket pour l'IPv6 est [b]IPPROTO_IPV6 .[/b] Un entier booléen est faux quand il est nul et vrai sinon. [b]IPV6_UNICAST_HOPS[/b] [table][row][col] [/col][col]Fixe 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.[/col][/row][/table] [b]IPV6_MULTICAST_HOPS[/b] [table][row][col] [/col][col]Fixe 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.[/col][/row][/table] [b]IPV6_MULTICAST_IF[/b] [table][row][col] [/col][col]Fixe le périphérique pour les paquets multicasts sortants de la socket. Ceci n'est permis que pour les sockets [i]SOCK_DGRAM[/i] et [b]SOCK_RAW .[/b] L'argument est un pointeur sur un numéro d'interface (voir [b]netdevice (7))[/b] dans un entier.[/col][/row][/table] [b]IPV6_ADDRFORM[/b] [table][row][col] [/col][col]Transformer une socket [i]AF_INET6[/i] en une socket d'une famille d'adresse différente. Seul [i]AF_INET[/i] est actuellement supporté 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 [b]AF_INET. [/b] Cela est utile pour passer des sockets projetées en v4 comme descripteurs à des programmes ne sachant pas manipuler l'API IPv6.[/col][/row][/table] [b]IPV6_PKTINFO[/b] [table][row][col] [/col][col]Fixe la distribution des messages de contrôle [b]IPV6_PKTINFO [/b] des datagrammes entrants. Uniquement autorisé pour les sockets [b]SOCK_DGRAM[/b] ou [b]SOCK_RAW .[/b] L'argument est un pointeur sur une valeur booléenne dans un entier.[/col][/row][/table] [table][row][col] [/col][col].nh [b]IPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPS, IPV6_HOPOPTS, IPV6_FLOWINFO, IPV6_HOPLIMIT[/b] .hy Fixe la distribution des messages de contrôle des datagrammes entrants contenant les en-têtes d'extensions. [i]IPV6_RTHDR[/i] délivre l'en-tête de routage, [i]IPV6_AUTHHDR[/i] délivre l'en-tête d'authentification, [i]IPV6_DSTOPTS[/i] délivre les options de destination, [i]IPV6_HOPOPTS[/i] délivre les options de saut, [i]IPV6_FLOWINFO[/i] délivre un entier contenant l'identificateur de flux, [i]IPV6_HOPLIMIT[/i] 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 fixées pour les paquets sortants en mettant le message de contrôle approprié dans le buffer de [b]sendmsg (2).[/b] Uniquement autorisé pour les sockets [b]SOCK_DGRAM[/b] ou [b]SOCK_RAW[/b] L'argument est un pointeur sur une valeur booléenne.[/col][/row][/table] [b]IPV6_MULTICAST_LOOP[/b] [table][row][col] [/col][col]Détermine si la socket voit les paquets multicast qu'elle a elle-même émis. L'argument est un pointeur sur une valeur booléenne.[/col][/row][/table] [b]IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP[/b] [table][row][col] [/col][col]Détermine l'appartenance aux groupes multicast. L'argument est un pointeur sur une structure [b]struct ipv6_mreq .[/b][/col][/row][/table] [b]IPV6_MTU[/b] [table][row][col] [/col][col]Fixe 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.[/col][/row][/table] [b]IPV6_MTU_DISCOVER[/b] [table][row][col] [/col][col]Commander la recherche du MTU par chemin sur la socket. Voir l'option [i]IP_MTU_DISCOVER[/i] dans [b]ip (7)[/b] pour plus de précisions.[/col][/row][/table] [b]IPV6_RECVERR[/b] [table][row][col] [/col][col]Commande la réception des erreurs asynchrones. Voir [i]IP_RECVERR[/i] dans [b]ip (7)[/b] pour plus de précisions. L'argument est un pointeur sur un booléen.[/col][/row][/table] [b]IPV6_ROUTER_ALERT[/b] [table][row][col] [/col][col]Passer sur cette socket tous les paquets redirigés (forwarded) contenant une option d'alerte du routeur. Uniquement autorisé pour les sockets datagrammes, et pour root. L'argument est un pointeur vers un booléen.[/col][/row][/table] [size=18] [b]Versions[/b] [/size] L'ancienne implémentation IPv6 pour Linux basée sur [i]libinet6[/i] 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 [i]in6_addr [/i] et en ajoutant un champ [i]sin6_scope_id[/i] 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 [b]sin6_flowinfo[/b] 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. [size=18] [b]Notes[/b] [/size] La structure [b]sockaddr_in6[/b] est plus grande que la structure [b]sockaddr[/b] générique. Les programmes qui supposent que tous les types d'adresses peuvent être stockés dans une [b]struct sockaddr[/b] doivent être modifiés pour utiliser [b]struct sockaddr_storage[/b] à la place. [size=18] [b]Bugs[/b] [/size] 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 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. [size=18] [b]Voir aussi[/b] [/size] [b]ip (7),[/b] [b]cmsg (3)[/b] RFC2553: API IPv6 de base, avec laquelle Linux essaye d'être compatible. RFC2460: Spécifications IPv6 [size=18] [b]Traduction[/b] [/size] Christophe Blaess, 2001-2003.
File
Forum
-
Latest Topics
No element available
News
-
Archives
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2026
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?