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 quanto queste tabelle possano trasmettere; tali opzioni contengono collegamenti a informazioni aggiuntive.

Opzioni

Opzione get set Tipo Optval Descrizione
IP_ORIGINAL_ARRIVAL_IF yes yes 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 (tunnel 6to4, ISATAP e 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 yes DWORD (IF_INDEX) Aggiunge un indice di interfaccia all'opzione IFLIST associata all'opzione IP_IFLIST .
IPV6_ADD_MEMBERSHIP yes 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 yes 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 yes 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 yes DWORD[] (IF_INDEX[]) Ottiene l'ifLIST corrente associato all'opzione IP_IFLIST . Restituisce un errore se IP_IFLIST non è abilitato.
IPV6_HDRINCL yes yes 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 è disabilitato. Questa opzione è valida solo per datagrammi e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW). Un provider di servizi TCP/IP che supporta SOCK_RAW deve supportare anche IPV6_HDRINCL.
IPV6_HOPLIMIT yes yes 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 yes yes DWORD (booleano) Ottiene o imposta lo stato IP_IFLIST del socket. Quando questa opzione è impostata su true, la ricezione di Datagram è limitata alle interfacce che si trovano in IFLIST. I datagrammi ricevuti in qualsiasi altra interfaccia vengono ignorati. IFLIST avvia vuoto. Usare IP_ADD_IFLIST e IP_DEL_IFLIST per modificare IFLIST.
IPV6_JOIN_GROUP yes ipv6_mreq Uguale a IPV6_ADD_MEMBERSHIP
IPV6_LEAVE_GROUP yes ipv6_mreq Uguale a IPV6_DROP_MEMBERSHIP
IPV6_MTU yes DWORD Ottiene la stima del percorso MTU del sistema. Il socket deve essere connesso.
IPV6_MTU_DISCOVER yes yes 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 invio di 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 superiori a MTU dell'interfaccia genereranno un errore.
IPV6_MULTICAST_HOPS yes yes DWORD Ottiene o imposta il valore TTL associato al traffico multicast IPv6 nel socket. Non è consentito impostare la durata (TTL) su un valore maggiore di 255. Questa opzione è valida solo per datagrammi e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW).
IPV6_MULTICAST_IF yes yes 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 di interfaccia a 4 byte dell'interfaccia in uscita desiderata nell'ordine dei byte host. La funzione GetAdaptersAddresses può essere usata per ottenere le informazioni sull'indice dell'interfaccia. Se optval è impostato su NULL alla chiamata a setsockopt, viene usata l'interfaccia IPv6 predefinita. Se optval è zero , viene specificata l'interfaccia predefinita per la ricezione del multicast per l'invio di traffico multicast. Quando si ottiene questa opzione, optval restituisce l'indice di interfaccia predefinito corrente per l'invio del traffico IPv6 multicast nell'ordine dei byte host.
IPV6_MULTICAST_LOOP yes yes DWORD (booleano) Indica che i dati multicast inviati sul socket verranno restituiti al buffer di ricezione dei socket se viene aggiunto anche al gruppo multicast di destinazione. 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_PKTINFO yes yes DWORD (booleano) Indica che le informazioni sui pacchetti devono essere restituite dalla funzione LPFN_WSARECVMSG (WSARecvMsg).
IPV6_PROTECTION_LEVEL yes yes INT Abilita la restrizione di un socket a un ambito specificato, ad esempio 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 yes yes DWORD (booleano) Indica se lo stack IP deve popolare il buffer di controllo con informazioni dettagliate sull'interfaccia che ha ricevuto un pacchetto con un socket di datagrammi. Quando questo valore è true, la funzione LPFN_WSARECVMSG (WSARecvMsg) restituirà dati di controllo facoltativi contenenti l'interfaccia in cui è stato ricevuto il pacchetto per i socket del datagram. Questa opzione consente la restituzione del pacchetto nell'interfaccia IPv6 nella struttura WSAMSG. Questa opzione è valida solo per datagrammi e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW).
IPV6_RECVTCLASS yes yes 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à dati di controllo facoltativi contenenti il valore del campo di intestazione IPv6 della classe di traffico del datagramma ricevuto. Questa opzione consente di restituire il campo intestazione IPv6 della classe di traffico del datagramma ricevuto nella struttura WSAMSG. Il tipo di messaggio restituito verrà IPV6_TCLASS. Verranno restituiti tutti i bit DSCP e ECN del campo Classe traffico. Questa opzione è valida solo nei socket del datagramma (il tipo di socket deve essere SOCK_DGRAM).
IPV6_RECVECN yes yes DWORD (booleano) Indica se lo stack IP deve popolare il buffer di controllo con un messaggio contenente i bit ECN del 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 i bit ECN del valore del campo intestazione IPv6 della classe di traffico del datagramma ricevuto. Questa opzione consente di restituire i bit ECN del campo intestazione IPv6 della classe traffico del datagramma ricevuto nella struttura WSAMSG. Il tipo di messaggio restituito verrà IPV6_ECN. Verranno restituiti tutti i 2 bit ECN del campo Classe traffico. Questa opzione è valida solo per datagrammi e socket non elaborati (il tipo di socket deve essere SOCK_DGRAM o SOCK_RAW). Per la sicurezza dei tipi, è consigliabile usare le funzioni WSAGetRecvIPEcn e WSASetRecvIPEcn anziché usare direttamente l'opzione socket.
IPV6_UNICAST_HOPS yes yes DWORD Ottiene o imposta il valore TTL corrente associato al socket IPv6 per il traffico unicast. Non è consentito impostare la durata (TTL) su un valore maggiore di 255.
IPV6_UNICAST_IF yes yes 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 di interfaccia a 4 byte dell'interfaccia in uscita desiderata nell'ordine dei 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 specificata. Quando si ottiene questa opzione, optval restituisce l'indice di interfaccia predefinito corrente per l'invio del traffico IPv6 nell'ordine dei byte host.
IPV6_USER_MTU yes yes DWORD Ottiene o imposta un limite superiore sul MTU del livello IP (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 maggiori 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 yes yes 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 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

Osservazioni:

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 , incluso automaticamente 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