Opzioni socket IPPROTO_IPV6

Le tabelle seguenti descrivono IPPROTO_IPV6 opzioni socket applicabili ai socket creati per la famiglia di indirizzi IPv6 (AF_INET6). Per altre informazioni su come ottenere e impostare le opzioni socket, vedere le pagine di riferimento della funzione getsockopt e setsockopt .

Per enumerare i protocolli e individuare le proprietà supportate per ogni protocollo installato, usare la funzione WSAEnumProtocols, WSCEnumProtocols o WSCEnumProtocols32 .

Alcune opzioni socket richiedono più spiegazioni di quelle che queste tabelle possono trasmettere; tali opzioni contengono collegamenti a informazioni aggiuntive.

Opzioni

Opzione get set Tipo Optval Descrizione
IP_ORIGINAL_ARRIVAL_IF DWORD (booleano) Indica se la funzione LPFN_WSARECVMSG (WSARecvMsg) deve restituire dati di controllo facoltativi contenenti l'interfaccia di arrivo originale in cui è stato ricevuto il pacchetto per i socket del datagram. Questa opzione viene usata con tecnologie di transizione IPv6 (6to4, ISATAP e tunnel Teredo, ad esempio) che forniscono l'assegnazione degli indirizzi e il tunneling automatico da host a host per il traffico IPv6 unicast quando gli host IPv6 devono attraversare le reti IP4 per raggiungere altre reti IPv6. I pacchetti IPv6 vengono inviati tramite tunnel come pacchetti IPv4. Questa opzione consente di restituire l'interfaccia IPv4 originale in cui è stato ricevuto il pacchetto nella struttura WSAMSG .
IPV6_ADD_IFLIST DWORD (IF_INDEX) Aggiunge un indice di interfaccia all'opzione IFLIST associata all'opzione IP_IFLIST .
IPV6_ADD_MEMBERSHIP ipv6_mreq Unire il socket al gruppo multicast fornito nell'interfaccia specificata. Questa opzione è valida solo per datagrammi e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW).
IPV6_DEL_IFLIST DWORD (IF_INDEX) Rimuove un indice di interfaccia dall'opzione IFLIST associata all'opzione IP_IFLIST . Le voci possono essere rimosse solo dall'applicazione, quindi tenere presente che le voci potrebbero non essere aggiornate dopo la rimozione di un'interfaccia.
IPV6_DROP_MEMBERSHIP ipv6_mreq Lasciare il gruppo multicast fornito dall'interfaccia specificata. Questa opzione è valida solo per datagrammi e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW).
IPV6_GET_IFLIST DWORD[] (IF_INDEX[]) Ottiene l'opzione IFLIST corrente associata all'opzione IP_IFLIST . Restituisce l'errore se IP_IFLIST non è abilitato.
IPV6_HDRINCL DWORD(boolean) Indica che l'applicazione fornisce l'intestazione IPv6 in tutti i dati in uscita. Se il parametro optval è impostato su 1 nella chiamata a setsockopt, l'opzione è abilitata. Se optval è impostato su 0, l'opzione è disabilitata. Il valore predefinito è Disattivata. Questa opzione è valida solo per datagrammi e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW). Anche un provider di servizi TCP/IP che supporta SOCK_RAW deve supportare IPV6_HDRINCL.
IPV6_HOPLIMIT DWORD (booleano) Indica che le informazioni sull'hop (TTL) devono essere restituite nella funzione LPFN_WSARECVMSG (WSARecvMsg). Se optval è impostato su 1 nella chiamata a setsockopt, l'opzione è abilitata. Se impostato su 0, l'opzione è disabilitata. Questa opzione è valida solo per datagrammi e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW).
IPV6_IFLIST DWORD (booleano) Ottiene o imposta lo stato IP_IFLIST del socket. Quando questa opzione è impostata su true, la ricezione dell'oggetto Datagram è limitata alle interfacce incluse in IFLIST. I datagrammi ricevuti in qualsiasi altra interfaccia vengono ignorati. IFLIST inizia vuoto. Usare IP_ADD_IFLIST e IP_DEL_IFLIST per modificare IFLIST.
IPV6_JOIN_GROUP ipv6_mreq Uguale a IPV6_ADD_MEMBERSHIP
IPV6_LEAVE_GROUP ipv6_mreq Uguale a IPV6_DROP_MEMBERSHIP
IPV6_MTU DWORD Ottiene la stima del percorso MTU del sistema. Il socket deve essere connesso.
IPV6_MTU_DISCOVER DWORD (PMTUD_STATE) Ottiene o imposta lo stato di individuazione MTU del percorso per il socket. Il valore predefinito è IP_PMTUDISC_NOT_SET. Per i socket di flusso, IP_PMTUDISC_NOT_SET e IP_PMTUDISC_DO eseguiranno l'individuazione MTU del percorso. IP_PMTUDISC_DONT e IP_PMTUDISC_PROBE disattivano l'individuazione MTU del percorso. Per i socket di datagrammi, se impostato su IP_PMTUDISC_DO , i tentativi di inviare pacchetti di dimensioni maggiori del percorso MTU genereranno un errore. Se impostato su IP_PMTUDISC_DONT, i pacchetti verranno frammentati in base all'interfaccia MTU. Se impostato su IP_PMTUDISC_PROBE, i tentativi di invio di pacchetti di dimensioni maggiori di MTU dell'interfaccia genereranno un errore.
IPV6_MULTICAST_HOPS DWORD Ottiene o imposta il valore TTL associato al traffico multicast IPv6 nel socket. Non è consentito impostare il TTL su un valore maggiore di 255. Questa opzione è valida solo per datagram e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW).
IPV6_MULTICAST_IF DWORD Ottiene o imposta l'interfaccia in uscita per l'invio del traffico multicast IPv6. Questa opzione non modifica l'interfaccia predefinita per la ricezione del traffico multicast IPv6. Questa opzione è importante per i computer multihomed. Il valore di input per l'impostazione di questa opzione è un indice dell'interfaccia a 4 byte desiderato nell'ordine di byte host. La funzione GetAdaptersAddresses può essere usata per ottenere le informazioni sull'indice dell'interfaccia. Se optval è impostato su NULL per la chiamata a setockopt, viene usata l'interfaccia IPv6 predefinita. Se optval è zero, l'interfaccia predefinita per la ricezione di multicast viene specificata per l'invio di traffico multicast. Quando si ottiene questa opzione, il valore optval restituisce l'indice dell'interfaccia predefinito corrente per l'invio del traffico IPv6 multicast nell'ordine di byte host.
IPV6_MULTICAST_LOOP DWORD (booleano) Indica che i dati multicast inviati nel socket verranno replicati al buffer di ricezione socket se viene aggiunto anche al gruppo multicast di destinazione. Se optval è impostato su 1 nella chiamata a setockopt, l'opzione è abilitata. Se impostato su 0, l'opzione è disabilitata. Questa opzione è valida solo per datagram e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW).
IPV6_PKTINFO DWORD (booleano) Indica che le informazioni sui pacchetti devono essere restituite dalla funzione LPFN_WSARECVMSG (WSARecvMsg).
IPV6_PROTECTION_LEVEL INT Abilita la restrizione di un socket a un ambito specificato, ad esempio gli indirizzi con lo stesso prefisso locale o locale del sito. Fornisce vari livelli di restrizione e impostazioni predefinite. Per altre informazioni , vedere IPV6_PROTECTION_LEVEL .
IPV6_RECVIF DWORD (booleano) Indica se lo stack IP deve popolare il buffer di controllo con informazioni dettagliate su quale interfaccia ha ricevuto un pacchetto con un socket di datagram. Quando questo valore è true, la funzione LPFN_WSARECVMSG (WSARecvMsg) restituirà i dati di controllo facoltativi contenenti l'interfaccia in cui è stato ricevuto il pacchetto per i socket datagram. Questa opzione consente all'interfaccia IPv6 in cui il pacchetto è stato ricevuto di essere restituito nella struttura WSAMSG . Questa opzione è valida solo per datagram e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW).
IPV6_RECVTCLASS DWORD (booleano) Indica se lo stack IP deve popolare il buffer di controllo con un messaggio contenente il campo intestazione IPv6 della classe di traffico in un datagramma ricevuto. Quando questo valore è true, la funzione LPFN_WSARECVMSG (WSARecvMsg) restituirà i dati di controllo facoltativi contenenti il valore del campo intestazione IPv6 della classe di traffico del datagram ricevuto. Questa opzione consente di restituire il campo intestazione IPv6 della classe di traffico del datagram ricevuto nella struttura WSAMSG . Il tipo di messaggio restituito sarà IPV6_TCLASS. Tutti i bit DSCP e ECN del campo Classe di traffico verranno restituiti. Questa opzione è valida solo nei socket datagram (il tipo di socket deve essere SOCK_DGRAM).
IPV6_UNICAST_HOPS DWORD Ottiene o imposta il valore TTL corrente associato al socket IPv6 per il traffico unicast. Non è consentito impostare il TTL su un valore maggiore di 255.
IPV6_UNICAST_IF DWORD (IF_INDEX) Ottiene o imposta l'interfaccia in uscita per l'invio del traffico IPv6. Questa opzione non modifica l'interfaccia predefinita per la ricezione del traffico IPv6. Questa opzione è importante per i computer multihomed. Il valore di input per l'impostazione di questa opzione è un indice dell'interfaccia a 4 byte desiderato nell'ordine di byte host. La funzione GetAdaptersAddresses può essere usata per ottenere le informazioni sull'indice dell'interfaccia. Se optval è zero, l'interfaccia predefinita per l'invio del traffico IPv6 è impostata su non specificato. Quando si ottiene questa opzione, il valore optval restituisce l'indice dell'interfaccia predefinito corrente per l'invio del traffico IPv6 nell'ordine di byte host.
IPV6_USER_MTU DWORD Ottiene o imposta un limite superiore sul livello IP MTU (in byte) per il socket specificato. Se il valore è superiore alla stima del percorso MTU (che è possibile recuperare su un socket connesso eseguendo una query sull'opzione socket IPV6_MTU ), l'opzione non ha alcun effetto. Se il valore è inferiore, i pacchetti in uscita più grandi di questo verranno frammentati o non verranno inviati, a seconda del valore di IPV6_DONTFRAG. Il valore predefinito è IP_UNSPECIFIED_USER_MTU (MAXULONG). Per la sicurezza dei tipi, è consigliabile usare le funzioni WSAGetIPUserMtu e WSASetIPUserMtu anziché usare direttamente l'opzione socket.
IPV6_V6ONLY DWORD (booleano) Indica se un socket creato per la famiglia di indirizzi AF_INET6 è limitato solo alle comunicazioni IPv6. I socket creati per la famiglia di indirizzi AF_INET6 possono essere usati per le comunicazioni IPv6 e IPv4. È possibile che in alcune applicazioni sia necessario limitare l'uso di un socket creato per la famiglia di indirizzi AF_INET6 alle sole comunicazioni IPv6. Quando questo valore è diverso da zero (impostazione predefinita in Windows), un socket creato per la famiglia di indirizzi AF_INET6 può essere usato solo per inviare e ricevere pacchetti IPv6. Quando questo valore è uguale a zero, un socket creato per la famiglia di indirizzi AF_INET6 può essere usato per inviare e ricevere pacchetti a e da un indirizzo IPv6 o IPv4. Si noti che la possibilità di interagire con un indirizzo IPv4 richiede l'uso di indirizzi IPv4 mappati. Questa opzione socket è supportata in Windows Vista o versioni successive.

Supporto di Windows per le opzioni del socket IPPROTO_IPV6

Opzione Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ORIGINAL_ARRIVAL_IF x x x
IPV6_ADD_IFLIST A partire da Windows 10, versione 1803
IPV6_ADD_MEMBERSHIP x x x x x
IPV6_DEL_IFLIST A partire da Windows 10, versione 1803
IPV6_DROP_MEMBERSHIP x x x x x
IPV6_GET_IFLIST A partire da Windows 10, versione 1803
IPV6_HDRINCL x x x x x
IPV6_HOPLIMIT x x x x x
IPV6_IFLIST A partire da Windows 10, versione 1803
IPV6_JOIN_GROUP x x x x x
IPV6_LEAVE_GROUP x x x x x
IPV6_MULTICAST_HOPS x x x x x
IPV6_MULTICAST_IF x x x x x
IPV6_MULTICAST_LOOP x x x x x
IPV6_PKTINFO x x x x x
IPV6_PROTECTION_LEVEL x x x x x
IPV6_RECVIF x x x x x
IPV6_UNICAST_HOPS x x x x x
IPV6_UNICAST_IF x x x x x
IPV6_V6ONLY x x x x x

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

Commenti

In Microsoft Windows Software Development Kit (SDK) rilasciato per Windows Vista e versioni successive, l'organizzazione dei file di intestazione è stata modificata e IPPROTO_IPV6 livello è definito nel file di intestazione Ws2def.h che viene automaticamente incluso nel file di intestazione Winsock2.h . Le opzioni socket IPPROTO_IPV6 sono definite nel file di intestazione Ws2ipdef.h , incluso automaticamente nel file di intestazione Ws2tcpip.h . I file di intestazione Ws2def.h e Ws2ipdef.h non devono mai essere usati direttamente.

L'opzione socket IP_ORIGINAL_ARRIVAL_IF è supportata in Windows Server 2008 R2 e in Windows 7.

Requisiti

Requisito Valore
Intestazione
Ws2def.h (include Winsock2.h);
Winsock2.h in Windows Server 2003 e Windows XP