IPPROTO_IPV6 socket, options

Les tableaux suivants décrivent les options de socket IPPROTO_IPV6 qui s’appliquent aux sockets créés pour la famille d’adresses IPv6 (AF_INET6). Veuillez consulter les pages de référence des fonctions getsockopt et setsockopt pour plus d’informations sur l’obtention et la définition des options de socket.

Pour énumérer les protocoles et découvrir les propriétés prises en charge pour chaque protocole installé, utilisez la fonction WSAEnumProtocols, WSCEnumProtocols, ou WSCEnumProtocols32.

Certaines options de socket nécessitent plus d’explications que ces tableaux ne peuvent en fournir ; ces options contiennent des liens vers des informations supplémentaires.

Options

Option get set Type d’optval Description
IP_ORIGINAL_ARRIVAL_IF Oui Oui DWORD (booléen) Indique si la fonction LPFN_WSARECVMSG (WSARecvMsg) doit renvoyer des données de contrôle facultatives contenant l’interface d’arrivée d’origine où le paquet a été reçu pour les sockets de datagramme. Cette option est utilisée avec les technologies de transition IPv6 (telles que 6to4, ISATAP et tunnels Teredo, par exemple) qui fournissent une attribution d’adresse et un tunnel automatique d’hôte à hôte pour le trafic unicast IPv6 lorsque les hôtes IPv6 doivent traverser des réseaux IP4 pour atteindre d’autres réseaux IPv6. Les paquets IPv6 sont « tunnelés » sous la forme de paquets IPv4. Cette option permet de renvoyer l’interface IPv4 d’origine où le paquet a été reçu dans la structure WSAMSG.
IPV6_ADD_IFLIST Oui DWORD (IF_INDEX) Ajoute un index d’interface à l’IFLIST associé à l’option IP_IFLIST.
IPV6_ADD_MEMBERSHIP Oui ipv6_mreq Associe le socket au groupe multicast fourni sur l’interface spécifiée. Cette option n’est valable que pour les sockets de datagramme et raw (le type de socket doit être SOCK_DGRAM ou SOCK_RAW).
IPV6_DEL_IFLIST Oui DWORD (IF_INDEX) Supprime un index d’interface de l’IFLIST associé à l’option IP_IFLIST. Les entrées ne peuvent être supprimées que par l’application, soyez donc conscient que les entrées peuvent devenir obsolètes une fois qu’une interface est supprimée.
IPV6_DROP_MEMBERSHIP Oui ipv6_mreq Quitte le groupe multicast fourni à partir de l’interface donnée. Cette option n’est valable que pour les sockets de datagramme et raw (le type de socket doit être SOCK_DGRAM ou SOCK_RAW).
IPV6_GET_IFLIST Oui DWORD[] (IF_INDEX[]) Obtient l’IFLIST actuel associé à l’option IP_IFLIST. Renvoie une erreur si IP_IFLIST n’est pas activé.
IPV6_HDRINCL Oui Oui DWORD(booléen) Indique que l’application fournit l’en-tête IPv6 sur toutes les données sortantes. Si le paramètre optval est défini sur 1 lors de l’appel à setsockopt, l’option est activée. Si optval est défini sur 0, l’option est désactivée. La valeur par défaut est désactivée. Cette option n’est valable que pour les sockets de datagramme et raw (le type de socket doit être SOCK_DGRAM ou SOCK_RAW). Un fournisseur de services TCP/IP qui prend en charge SOCK_RAW doit également prendre en charge IPV6_HDRINCL.
IPV6_HOPLIMIT Oui Oui DWORD (booléen) Indique que les informations de saut (TTL) doivent être renvoyées dans la fonction LPFN_WSARECVMSG (WSARecvMsg). Si optval est défini sur 1 lors de l’appel à setsockopt, l’option est activée. Si défini sur 0, l’option est désactivée. Cette option n’est valable que pour les sockets de datagramme et raw (le type de socket doit être SOCK_DGRAM ou SOCK_RAW).
IPV6_IFLIST Oui Oui DWORD (booléen) Obtient ou définit l’état IP_IFLIST du socket. Lorsque cette option est activée, la réception de datagrammes est limitée aux interfaces présentes dans l’IFLIST. Les datagrammes reçus sur d’autres interfaces sont ignorés. IFLIST commence vide. Utilisez IP_ADD_IFLIST et IP_DEL_IFLIST pour modifier l’IFLIST.
IPV6_JOIN_GROUP Oui ipv6_mreq Identique à IPV6_ADD_MEMBERSHIP
IPV6_LEAVE_GROUP Oui ipv6_mreq Identique à IPV6_DROP_MEMBERSHIP
IPV6_MTU Oui DWORD Obtient l’estimation du système pour le MTU du chemin. Le socket doit être connecté.
IPV6_MTU_DISCOVER Oui Oui DWORD (PMTUD_STATE) Obtient ou définit l’état de découverte du MTU du chemin pour le socket. La valeur par défaut est IP_PMTUDISC_NOT_SET. Pour les sockets de flux, IP_PMTUDISC_NOT_SET et IP_PMTUDISC_DO effectueront la découverte du MTU du chemin. IP_PMTUDISC_DONT et IP_PMTUDISC_PROBE désactiveront la découverte du MTU du chemin. Pour les sockets de datagramme, si IP_PMTUDISC_DO est défini, les tentatives d’envoi de paquets plus grands que le MTU du chemin entraîneront une erreur. Si IP_PMTUDISC_DONT est défini, les paquets seront fragmentés en fonction du MTU de l’interface. Si IP_PMTUDISC_PROBE est défini, les tentatives d’envoi de paquets plus grands que le MTU de l’interface entraîneront une erreur.
IPV6_MULTICAST_HOPS Oui Oui DWORD Obtient ou définit la valeur TTL associée au trafic multicast IPv6 sur le socket. Il est illégal de définir le TTL sur une valeur supérieure à 255. Cette option n’est valable que pour les sockets de datagramme et raw (le type de socket doit être SOCK_DGRAM ou SOCK_RAW).
IPV6_MULTICAST_IF Oui Oui DWORD Obtient ou définit l’interface de sortie pour l’envoi de trafic multicast IPv6. Cette option ne modifie pas l’interface par défaut pour la réception de trafic multicast IPv6. Cette option est importante pour les ordinateurs multihébergés. La valeur d’entrée pour définir cette option est un index d’interface de 4 octets de l’interface de sortie souhaitée en ordre d’octet hôte. La fonction GetAdaptersAddresses peut être utilisée pour obtenir les informations d’index d’interface. Si optval est défini sur NULL lors de l’appel à setsockopt, l’interface IPv6 par défaut est utilisée. Si optval est égal à zéro, l’interface par défaut pour la réception de multicast est spécifiée pour l’envoi de trafic multicast. Lors de l’obtention de cette option, optval renvoie l’index de l’interface par défaut actuel pour l’envoi de trafic multicast IPv6 en ordre d’octet hôte.
IPV6_MULTICAST_LOOP Oui Oui DWORD (booléen) Indique que les données multicast envoyées sur le socket seront renvoyées au tampon de réception du socket si elles sont également jointes au groupe multicast de destination. Si optval est défini sur 1 lors de l’appel à setsockopt, l’option est activée. Si défini sur 0, l’option est désactivée. Cette option n’est valable que pour les sockets de datagramme et raw (le type de socket doit être SOCK_DGRAM ou SOCK_RAW).
IPV6_PKTINFO Oui Oui DWORD (booléen) Indique que les informations sur le paquet doivent être renvoyées par la fonction LPFN_WSARECVMSG (WSARecvMsg).
IPV6_PROTECTION_LEVEL Oui Oui INT Permet de restreindre un socket à une portée spécifiée, telle que des adresses avec le même préfixe local de lien ou local de site. Fournit divers niveaux de restriction et paramètres par défaut. Veuillez consulter la section IPV6_PROTECTION_LEVEL pour plus d’informations.
IPV6_RECVIF Oui Oui DWORD (booléen) Indique si la pile IP doit remplir le tampon de contrôle avec des détails sur l’interface ayant reçu un paquet avec un socket de datagramme. Lorsque cette valeur est vraie, la fonction LPFN_WSARECVMSG (WSARecvMsg) renverra des données de contrôle facultatives contenant l’interface où le paquet a été reçu pour les sockets de datagramme. Cette option permet de renvoyer l’interface IPv6 où le paquet a été reçu dans la structure WSAMSG. Cette option n’est valable que pour les sockets de datagramme et raw (le type de socket doit être SOCK_DGRAM ou SOCK_RAW).
IPV6_RECVTCLASS Oui Oui DWORD (booléen) Indique si la pile IP doit remplir le tampon de contrôle avec un message contenant le champ d’en-tête de la classe de trafic IPv6 sur un datagramme reçu. Lorsque cette valeur est vraie, la fonction LPFN_WSARECVMSG (WSARecvMsg) renverra des données de contrôle facultatives contenant la valeur du champ d’en-tête de la classe de trafic IPv6 du datagramme reçu. Cette option permet de renvoyer le champ d’en-tête de la classe de trafic IPv6 du datagramme reçu dans la structure WSAMSG. Le type de message renvoyé sera IPV6_TCLASS. Tous les bits DSCP et ECN du champ de la classe de trafic seront renvoyés. Cette option n’est valable que pour les sockets de datagramme (le type de socket doit être SOCK_DGRAM).
IPV6_RECVECN Oui Oui DWORD (booléen) Indique si la pile IP doit remplir le tampon de contrôle avec un message contenant les bits ECN du champ d’en-tête de la classe de trafic IPv6 sur un datagramme reçu. Lorsque cette valeur est vraie, la fonction LPFN_WSARECVMSG (WSARecvMsg) renverra des données de contrôle facultatives contenant les bits ECN du champ d’en-tête de la classe de trafic IPv6 du datagramme reçu. Cette option permet de renvoyer les bits ECN du champ d’en-tête de la classe de trafic IPv6 du datagramme reçu dans la structure WSAMSG. Le type de message renvoyé sera IPV6_ECN. Tous les 2 bits ECN du champ de la classe de trafic seront renvoyés. Cette option n’est valable que pour les sockets de datagramme et raw (le type de socket doit être SOCK_DGRAM ou SOCK_RAW). Pour la sécurité des types, vous devez utiliser les fonctions WSAGetRecvIPEcn et WSASetRecvIPEcn au lieu d’utiliser directement l’option de socket.
IPV6_UNICAST_HOPS Oui Oui DWORD Obtient ou définit la valeur TTL actuelle associée au socket IPv6 pour le trafic unicast. Il est illégal de définir le TTL sur une valeur supérieure à 255.
IPV6_UNICAST_IF Oui Oui DWORD (IF_INDEX) Obtient ou définit l’interface de sortie pour l’envoi de trafic IPv6. Cette option ne modifie pas l’interface par défaut pour la réception de trafic IPv6. Cette option est importante pour les ordinateurs multihébergés. La valeur d’entrée pour définir cette option est un index d’interface de 4 octets de l’interface de sortie souhaitée en ordre d’octet hôte. La fonction GetAdaptersAddresses peut être utilisée pour obtenir les informations d’index d’interface. Si optval est égal à zéro, l’interface par défaut pour l’envoi de trafic IPv6 est définie sur non spécifiée. Lors de l’obtention de cette option, optval renvoie l’index de l’interface par défaut actuel pour l’envoi de trafic IPv6 en ordre d’octet hôte.
IPV6_USER_MTU Oui Oui DWORD Obtient ou définit une limite supérieure sur le MTU de la couche IP (en octets) pour le socket donné. Si la valeur est supérieure à l’estimation du système pour le MTU du chemin (que vous pouvez récupérer sur un socket connecté en interrogeant l’option de socket IPV6_MTU), alors l’option n’a aucun effet. Si la valeur est inférieure, les paquets sortants plus grands que cette valeur seront fragmentés ou ne pourront pas être envoyés, selon la valeur de IPV6_DONTFRAG. La valeur par défaut est IP_UNSPECIFIED_USER_MTU (MAXULONG). Pour la sécurité des types, vous devez utiliser les fonctions WSAGetIPUserMtu et WSASetIPUserMtu au lieu d’utiliser directement l’option de socket.
IPV6_V6ONLY Oui Oui DWORD (booléen) Indique si un socket créé pour la famille d'adresses AF_INET6 est limité uniquement aux communications IPv6. Les sockets créés pour la famille d'adresses AF_INET6 peuvent être utilisés pour les communications IPv6 et IPv4. Certaines applications peuvent restreindre leur utilisation d'un socket créé pour la famille d'adresses AF_INET6 aux seules communications IPv6. Lorsque cette valeur est différente de zéro (la valeur par défaut sous Windows), un socket créé pour la famille d’adresses AF_INET6 ne peut être utilisé que pour envoyer et recevoir des paquets IPv6. Quand cette valeur est nulle, un socket créé pour la famille d'adresses AF_INET6 peut être utilisé pour envoyer et recevoir des paquets vers et depuis une adresse IPv6 ou IPv4. Notez que pour interagir avec une adresse IPv4, l'utilisation d'adresses IPv4 mappées est requise. Cette option de socket est prise en charge sous Windows Vista ou versions ultérieures.

Prise en charge par Windows des options de socket IPPROTO_IPV6

Option Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ORIGINAL_ARRIVAL_IF Oui oui Oui
IPV6_ADD_IFLIST À partir de Windows 10, version 1803
IPV6_ADD_MEMBERSHIP Oui oui oui oui Oui
IPV6_DEL_IFLIST À partir de Windows 10, version 1803
IPV6_DROP_MEMBERSHIP Oui oui oui oui Oui
IPV6_GET_IFLIST À partir de Windows 10, version 1803
IPV6_HDRINCL Oui oui oui oui Oui
IPV6_HOPLIMIT Oui oui oui oui Oui
IPV6_IFLIST À partir de Windows 10, version 1803
IPV6_JOIN_GROUP Oui oui oui oui Oui
IPV6_LEAVE_GROUP Oui oui oui oui Oui
IPV6_MULTICAST_HOPS Oui oui oui oui Oui
IPV6_MULTICAST_IF Oui oui oui oui Oui
IPV6_MULTICAST_LOOP Oui oui oui oui Oui
IPV6_PKTINFO Oui oui oui oui Oui
IPV6_PROTECTION_LEVEL Oui oui oui oui Oui
IPV6_RECVIF Oui oui oui oui Oui
IPV6_UNICAST_HOPS Oui oui oui oui Oui
IPV6_UNICAST_IF Oui oui oui oui Oui
IPV6_V6ONLY Oui oui oui oui Oui

Option Windows Server 2003 Windows XP
IP_ORIGINAL_ARRIVAL_IF
IPV6_ADD_IFLIST
IPV6_ADD_MEMBERSHIP Oui Oui
IPV6_DEL_IFLIST
IPV6_DROP_MEMBERSHIP Oui Oui
IPV6_GET_IFLIST
IPV6_HDRINCL oui Oui
IPV6_HOPLIMIT oui Oui
IPV6_IFLIST
IPV6_JOIN_GROUP Oui Oui
IPV6_LEAVE_GROUP Oui Oui
IPV6_MULTICAST_HOPS Oui Oui
IPV6_MULTICAST_IF Oui Oui
IPV6_MULTICAST_LOOP Oui Oui
IPV6_PKTINFO Oui Oui
IPV6_PROTECTION_LEVEL Oui Oui
IPV6_RECVIF
IPV6_UNICAST_HOPS Oui Oui
IPV6_UNICAST_IF
IPV6_V6ONLY

Notes

Dans le Kit de développement logiciel (SDK) Microsoft Windows publié pour Windows Vista et versions ultérieures, l’organisation des fichiers d’en-tête a changé et le niveau IPPROTO_IPV6 est défini dans le fichier d’en-tête Ws2def.h qui est automatiquement inclus dans le fichier d’en-tête Winsock2.h. Les options de socket IPPROTO_IPV6 sont définies dans le fichier d’en-tête Ws2ipdef.h qui est automatiquement inclus dans le fichier d’en-tête Ws2tcpip.h. Les fichiers d’en-tête Ws2def.h et Ws2ipdef.h ne doivent jamais être utilisés directement.

L’option de socket IP_ORIGINAL_ARRIVAL_IF est prise en charge sur Windows Server 2008 R2 ainsi que sur Windows 7.

Spécifications

Condition requise Value
En-tête
Ws2def.h (inclure Winsock2.h) ;
Winsock2.h sur Windows Server 2003 et Windows XP