IPPROTO_IP socket, options
Les tableaux suivants décrivent les options de socket IPPROTO_IP qui s’appliquent aux sockets créés pour la famille d’adresses IPv4 (AF_INET). 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 ce que ces tableaux peuvent fournir ; ces options contiennent des liens vers des pages supplémentaires.
Options
Option | Get | Définir | Type d’optval | Description |
---|---|---|---|---|
IP_ADD_IFLIST | Oui | DWORD (IF_INDEX) | Ajoute un index d’interface à l’IFLIST associé à l’option IP_IFLIST. | |
IP_ADD_MEMBERSHIP | Oui | ip_mreq | Associe le socket au groupe multicast fourni sur l’interface spécifiée. | |
IP_ADD_SOURCE_MEMBERSHIP | Oui | ip_mreq_source | Rejoindre le groupe multicast fourni sur l’interface donnée et accepter les données provenant de l’adresse source fournie. | |
IP_BLOCK_SOURCE | Oui | ip_mreq_source | Supprime la source donnée en tant qu’expéditeur pour le groupe multicast et l’interface fournis. | |
IP_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. | |
IP_DONTFRAGMENT | Oui | Oui | DWORD (booléen) | Indique que les données ne doivent pas être fragmentées, quel que soit le MTU local. Valide uniquement pour les protocoles orientés messages. Les fournisseurs TCP/IP de Microsoft respectent cette option pour UDP et ICMP. |
IP_DROP_MEMBERSHIP | Oui | ip_mreq | Quitte le groupe multicast spécifié sur l’interface spécifiée. Les fournisseurs de services doivent prendre en charge cette option lorsque le multicast est pris en charge. La prise en charge est indiquée dans la structure WSAPROTOCOL_INFO renvoyée par un appel de fonction WSAEnumProtocols avec les éléments suivants : XPI_SUPPORT_MULTIPOINT=1, XP1_MULTIPOINT_CONTROL_PLANE=0, XP1_MULTIPOINT_DATA_PLANE=0. | |
IP_DROP_SOURCE_MEMBERSHIP | Oui | ip_mreq_source | Abandonne l’appartenance au groupe multicast donné, à l’interface et à l’adresse source. | |
IP_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é. | |
IP_HDRINCL | Oui | Oui | DWORD (booléen) | Lorsqu’il est défini sur TRUE, cela indique que l’application fournit l’en-tête IP. S’applique uniquement aux sockets SOCK_RAW. Le fournisseur de services TCP/IP peut définir le champ ID, si la valeur fournie par l’application est zéro. L’option IP_HDRINCL est appliquée uniquement au type de protocole SOCK_RAW. Un fournisseur de services TCP/IP qui prend en charge SOCK_RAW doit également prendre en charge IP_HDRINCL. |
IP_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. |
IP_MTU | Oui | DWORD | Obtient l’estimation du système pour le MTU du chemin. Le socket doit être connecté. | |
IP_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, IP_PMTUDISC_DO forcera tous les paquets sortants à avoir le bit DF défini et une tentative d’envoi de paquets plus gros que le MTU du chemin entraînera une erreur. IP_PMTUDISC_DONT forcera tous les paquets sortants à ne pas avoir le bit DF défini, et les paquets seront fragmentés selon le MTU de l’interface. IP_PMTUDISC_PROBE forcera tous les paquets sortants à avoir le bit DF défini, et une tentative d’envoi de paquets plus gros que le MTU de l’interface entraînera une erreur. |
IP_MULTICAST_IF | Oui | Oui | DWORD | Obtient ou définit l’interface de sortie pour l’envoi de trafic multicast IPv4. Cette option ne modifie pas l’interface par défaut pour la réception de trafic multicast IPv4. La valeur d’entrée pour la définition de cette option est une adresse IPv4 de 4 octets en ordre d’octets réseau. Ce paramètre DWORD peut également être un index d’interface en ordre d’octets réseau. Toute adresse IP dans le bloc 0.x.x.x (premier octet de 0) sauf l’adresse IPv4 0.0.0.0 est traitée comme un index d’interface. Un index d’interface est un nombre de 24 bits, et le bloc d’adresses IPv4 0.0.0.0/8 n’est pas utilisé (cette plage est réservée). L’index d’interface peut être utilisé pour spécifier l’interface par défaut pour le trafic multicast pour IPv4. 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, le optval renvoie l’index de l’interface par défaut actuel pour l’envoi de trafic multicast IPv4 en ordre d’octet hôte. |
IP_MULTICAST_LOOP | Oui | Oui | DWORD (booléen) | Pour un socket qui est joint à un ou plusieurs groupes multicast, cela contrôle s’il recevra une copie des paquets sortants envoyés à ces groupes multicast via l’interface multicast sélectionnée. Par défaut, IP_MULTICAST_LOOP est activé (valeur 1/TRUE), donc les sockets recevront les paquets multicast correspondants envoyés par la machine actuelle. Désactiver cette option (en la réglant à 0/FALSE) signifie que ce socket ne recevra pas les multicasts envoyés depuis la machine locale, même si le socket est ouvert sur l’interface de loopback. Cela n’est pas compatible avec la version POSIX de IP_MULTICAST_LOOP — l’option doit être définie sur le socket récepteur ; tandis que l’option POSIX doit être définie sur le socket d’envoi. |
IP_MULTICAST_TTL | Oui | Oui | DWORD | Définit/obtient la valeur TTL associée au trafic multicast IP sur le socket. |
IP_OPTIONS | Oui | Oui | char [] | Spécifie les options IP à insérer dans les paquets sortants. Définir de nouvelles options écrase toutes les options précédemment spécifiées. Définir optval à zéro supprime toutes les options précédemment spécifiées. Le support des options IP_OPTIONS n’est pas requis ; pour vérifier si IP_OPTIONS est pris en charge, utilisez getsockopt pour obtenir les options actuelles. Si getsockopt échoue, IP_OPTIONS n’est pas pris en charge. |
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 où le paquet a été reçu pour les sockets de datagramme. Cette option permet de renvoyer l’interface IPv4 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). |
IP_PKTINFO | Oui | Oui | DWORD | Indique que les informations sur le paquet doivent être renvoyées par la fonction WSARecvMsg. |
IP_RECEIVE_BROADCAST | Oui | Oui | DWORD (booléen) | Autorise ou bloque la réception de diffusion. |
IP_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 IPv4 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). |
IP_RECVTOS | Oui | Oui | DWORD (booléen) | Indique si la pile IP doit remplir le tampon de contrôle avec un message contenant le champ Type of Service (TOS) de l’en-tête IPv4 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 IPv4 TOS du datagramme reçu. Cette option permet de renvoyer le champ d’en-tête IPv4 TOS du datagramme reçu dans la structure WSAMSG. Le type de message renvoyé sera IP_TOS. Tous les bits DSCP et ECN du champ TOS seront renvoyés. Cette option n’est valable que pour les sockets de datagramme (le type de socket doit être SOCK_DGRAM). |
IP_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 Type of Service (TOS) de l’en-tête IPv4 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 IPv4 TOS du datagramme reçu. Cette option permet de renvoyer les bits ECN du champ d’en-tête IPv4 TOS du datagramme reçu dans la structure WSAMSG. Le type de message renvoyé sera IP_ECN. Tous les 2 bits ECN du champ TOS 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. |
IP_RECVTTL | 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). |
IP_TOS | Oui | Oui | DWORD (booléen) | Ne pas utiliser. Les paramètres Type of Service (TOS) doivent uniquement être définis à l’aide de l’API Quality of Service. Veuillez consulter la section Différenciation des services dans la section Quality du service du de la plateforme SDK pour plus d’informations. |
IP_TTL | Oui | Oui | DWORD (booléen) | Modifie la valeur par défaut définie par le fournisseur de services TCP/IP dans le champ TTL de l’en-tête IP dans les datagrammes sortants. Le support de IP_TTL n’est pas requis ; pour vérifier si IP_TTL est pris en charge, utilisez getsockopt pour obtenir les options actuelles. Si getsockopt échoue, IP_TTL n’est pas pris en charge. |
IP_UNBLOCK_SOURCE | Oui | ip_mreq_source | Ajoute la source donnée en tant qu’expéditeur au groupe multicast et à l’interface fournis. | |
IP_UNICAST_IF | Oui | Oui | DWORD (IF_INDEX) | Obtient ou définit l’interface de sortie pour l’envoi de trafic IPv4. Cette option ne modifie pas l’interface par défaut pour la réception de trafic IPv4. Cette option est importante pour les ordinateurs multihébergés. La valeur d’entrée pour la définition de cette option est une adresse IPv4 de 4 octets en ordre d’octets réseau. Ce paramètre DWORD doit être un index d’interface en ordre d’octets réseau. Toute adresse IP dans le bloc 0.x.x.x (premier octet de 0) sauf l’adresse IPv4 0.0.0.0 est traitée comme un index d’interface. Un index d’interface est un nombre de 24 bits, et le bloc d’adresses IPv4 0.0.0.0/8 n’est pas utilisé (cette plage est réservée). L’index d’interface peut être utilisé pour spécifier l’interface par défaut pour l’envoi de trafic pour IPv4. La fonction GetAdaptersAddresses peut être utilisée pour obtenir les informations d’index d’interface. Si optval est zéro, l’interface par défaut pour l’envoi de trafic est définie sur non spécifiée. Lors de l’obtention de cette option, le optval renvoie l’index de l’interface par défaut actuel pour l’envoi de trafic IPv4 en ordre d’octet hôte. |
IP_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 du MTU du chemin (que vous pouvez récupérer sur un socket connecté en interrogeant l’option de socket IP_MTU), alors l’option n’a aucun effet. Si la valeur est inférieure, les paquets sortants plus grands que cela seront fragmentés, ou échoueront à l’envoi, selon la valeur de IP_DONTFRAGMENT. 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. |
IP_WFP_REDIRECT_CONTEXT | Oui | Oui | WSACMSGHDR avec données de contrôle | Un type de données auxiliaires de socket de datagramme (cmsg_type) pour indiquer le contexte de redirection pour un socket UDP utilisé par un service de redirection Windows Filtering Platform (WFP) en mode utilisateur. |
IP_WFP_REDIRECT_RECORDS | Oui | Oui | WSACMSGHDR avec données de contrôle | Un type de données auxiliaires de socket de datagramme (cmsg_type) pour indiquer l’enregistrement de redirection pour un socket UDP utilisé par un service de redirection Windows Filtering Platform (WFP) en mode utilisateur. |
Prise en charge des options IP_PROTO par Windows
Option | Windows 10 | Windows 8 | Windows Server 2012 | Windows 7 | Windows Server 2008 | Windows Vista |
---|---|---|---|---|---|---|
IP_ADD_IFLIST | À partir de Windows 10, version 1803 | |||||
IP_ADD_MEMBERSHIP | Oui | oui | oui | oui | oui | Oui |
IP_ADD_SOURCE_MEMBERSHIP | Oui | oui | oui | oui | oui | Oui |
IP_BLOCK_SOURCE | Oui | oui | oui | oui | oui | Oui |
IP_DEL_IFLIST | À partir de Windows 10, version 1803 | |||||
IP_DONTFRAGMENT | Oui | oui | oui | oui | oui | Oui |
IP_DROP_MEMBERSHIP | Oui | oui | oui | oui | oui | Oui |
IP_DROP_SOURCE_MEMBERSHIP | Oui | oui | oui | oui | oui | Oui |
IP_GET_IFLIST | À partir de Windows 10, version 1803 | |||||
IP_HDRINCL | Oui | oui | oui | oui | oui | Oui |
IP_IFLIST | À partir de Windows 10, version 1803 | |||||
IP_MULTICAST_IF | Oui | oui | oui | oui | oui | Oui |
IP_MULTICAST_LOOP | Oui | oui | oui | oui | oui | Oui |
IP_MULTICAST_TTL | Oui | oui | oui | oui | oui | Oui |
IP_OPTIONS | Oui | oui | oui | oui | oui | Oui |
IP_ORIGINAL_ARRIVAL_IF | Oui | oui | oui | Oui | ||
IP_PKTINFO | Oui | oui | oui | oui | oui | Oui |
IP_RECEIVE_BROADCAST | Oui | oui | oui | oui | oui | Oui |
IP_RECVIF | À partir de Windows 10, version 1703 | Oui | oui | oui | oui | Oui |
IP_RECVTTL | Oui | |||||
IP_TOS | Oui | oui | Oui | |||
IP_TTL | Oui | oui | oui | oui | oui | Oui |
IP_UNBLOCK_SOURCE | Oui | oui | oui | oui | oui | Oui |
IP_UNICAST_IF | Oui | oui | oui | oui | oui | Oui |
IP_WFP_REDIRECT_CONTEXT | Oui | oui | Oui | |||
IP_WFP_REDIRECT_RECORDS | Oui | oui | Oui |
Option | Windows Server 2003 | Windows XP |
---|---|---|
IP_ADD_IFLIST | ||
IP_ADD_MEMBERSHIP | Oui | Oui |
IP_ADD_SOURCE_MEMBERSHIP | Oui | Oui |
IP_BLOCK_SOURCE | Oui | Oui |
IP_DEL_IFLIST | ||
IP_DONTFRAGMENT | Oui | Oui |
IP_DROP_MEMBERSHIP | Oui | Oui |
IP_DROP_SOURCE_MEMBERSHIP | Oui | Oui |
IP_GET_IFLIST | ||
IP_HDRINCL | Oui | Oui |
IP_IFLIST | ||
IP_MULTICAST_IF | Oui | Oui |
IP_MULTICAST_LOOP | Oui | Oui |
IP_MULTICAST_TTL | Oui | Oui |
IP_OPTIONS | Oui | Oui |
IP_ORIGINAL_ARRIVAL_IF | ||
IP_PKTINFO | Oui | Oui |
IP_RECEIVE_BROADCAST | Oui | Oui |
IP_RECVIF | ||
IP_RECVTTL | ||
IP_TOS | ||
IP_TTL | Oui | Oui |
IP_UNBLOCK_SOURCE | Oui | Oui |
IP_UNICAST_IF | ||
IP_WFP_REDIRECT_CONTEXT | ||
IP_WFP_REDIRECT_RECORDS |
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_IP 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. Certaines des options de socket IPPROTO_IP sont définies dans le fichier d’en-tête Ws2ipdef.h qui est automatiquement inclus par le fichier d’en-tête Ws2tcpip.h. Les autres options de socket IPPROTO_IP sont définies dans le fichier d’en-tête Wsipv6ok.h qui est automatiquement inclus par le fichier d’en-tête Winsock2.h. Les fichiers d’en-tête Ws2def.h, Ws2ipdef.h, et Wsipv6ok.h ne doivent jamais être utilisés directement.
Dans le SDK Platform publié pour Windows Server 2003 et Windows XP, le niveau IPPROTO_IP est défini dans le fichier d’en-tête Winsock2.h. Certaines des options de socket IPPROTO_IP sont définies dans le fichier d’en-tête Ws2tcpip.h. Les autres options de socket IPPROTO_IP sont définies dans le fichier d’en-tête Wsipv6ok.h qui est automatiquement inclus par le fichier d’en-tête Winsock2.h. Le fichier d’en-tête Wsipv6ok.h ne doit jamais être utilisé directement.
Spécifications
Condition requise | Value |
---|---|
En-tête |
|