Compartilhar via


Opções de soquete IPPROTO_IPV6

As tabelas a seguir descrevem as opções de soquete IPPROTO_IPV6 que se aplicam aos soquetes criados para a família de endereços IPv6 (AF_INET6). Consulte as páginas de referência das funções getsockopt e setsockopt para obter mais informações sobre como obter e definir opções de soquete.

Para enumerar protocolos e descobrir propriedades com suporte para cada protocolo instalado, use a função WSAEnumProtocols, WSCEnumProtocols ou WSCEnumProtocols32.

Algumas opções de soquete exigem mais explicações do que essas tabelas podem transmitir e contêm links para informações adicionais.

Opções

Opção get set Tipo Optval Descrição
IP_ORIGINAL_ARRIVAL_IF sim sim DWORD (booleano) Indica se a função LPFN_WSARECVMSG (WSARecvMsg) deve retornar dados de controle opcionais contendo a interface de chegada original onde o pacote foi recebido para soquetes de datagrama. Essa opção é usada com tecnologias de transição de IPv6 (túneis 6to4, ISATAP e Teredo, por exemplo) que fornecem atribuição de endereço e tunelamento automático de host para host para tráfego IPv6 unicast quando os hosts IPv6 precisam atravessar redes IP4 para alcançar outras redes IPv6. Os pacotes IPv6 são enviados em túnel como pacotes IPv4. Essa opção permite que a interface IPv4 original em que o pacote foi recebido seja retornada na estrutura WSAMSG.
IPV6_ADD_IFLIST sim DWORD (IF_INDEX) Adiciona um índice de interface ao IFLIST associado à opção IP_IFLIST.
IPV6_ADD_MEMBERSHIP sim ipv6_mreq Junte o soquete ao grupo multicast fornecido na interface especificada. Essa opção só é válida em soquetes de datagrama e raw (o tipo de soquete deve ser SOCK_DGRAM ou SOCK_RAW).
IPV6_DEL_IFLIST sim DWORD (IF_INDEX) Remove um índice de interface do IFLIST associado à opção IP_IFLIST. As entradas podem ser removidas somente pelo aplicativo, portanto, esteja ciente de que as entradas podem ficar obsoletas quando uma interface for removida.
IPV6_DROP_MEMBERSHIP sim ipv6_mreq Deixa o grupo multicast fornecido a partir da interface fornecida. Essa opção só é válida em soquetes de datagrama e raw (o tipo de soquete deve ser SOCK_DGRAM ou SOCK_RAW).
IPV6_GET_IFLIST sim DWORD[] (IF_INDEX[]) Obtém o IFLIST atual associado à opção IP_IFLIST. Retorna um erro se IP_IFLIST não estiver habilitado.
IPV6_HDRINCL sim sim DWORD (booleano) Indica que o aplicativo fornece o cabeçalho IPv6 em todos os dados de saída. Se o parâmetro optval for definido como 1 na chamada para setsockopt, a opção será habilitada. Se optval for definido como 0, a opção será desabilitada. O valor padrão é desabilitado. Essa opção só é válida para soquetes de datagrama e raw (o tipo de soquete deve ser SOCK_DGRAM ou SOCK_RAW). Um provedor de serviços TCP/IP que ofereça suporte a SOCK_RAW também deve oferecer suporte a IPV6_HDRINCL.
IPV6_HOPLIMIT sim sim DWORD (booleano) Indica que as informações de salto (TTL) devem ser retornadas na função LPFN_WSARECVMSG (WSARecvMsg). Se optval for definido como 1 na chamada para setsockopt, a opção será habilitada. Se definida como 0, a opção é desabilitada. Essa opção só é válida para soquetes de datagrama e raw (o tipo de soquete deve ser SOCK_DGRAM ou SOCK_RAW).
IPV6_IFLIST sim sim DWORD (booleano) Obtém ou define o estado IP_IFLIST do soquete. Quando essa opção é definida como true, a recepção de datagrama é restrita para as interfaces que estão no IFLIST. Os datagramas recebidos em qualquer outra interface são ignorados. IFLIST começa vazio. Use IP_ADD_IFLIST e IP_DEL_IFLIST para editar o IFLIST.
IPV6_JOIN_GROUP sim ipv6_mreq Igual a IPV6_ADD_MEMBERSHIP
IPV6_LEAVE_GROUP sim ipv6_mreq Igual a IPV6_DROP_MEMBERSHIP
IPV6_MTU sim DWORD Obtém a estimativa do sistema de MTU do caminho. O soquete deve estar conectado.
IPV6_MTU_DISCOVER sim sim DWORD (PMTUD_STATE) Obtém ou define o estado de descoberta de MTU do caminho para o soquete. O valor padrão é IP_PMTUDISC_NOT_SET. Para os soquetes de fluxo, IP_PMTUDISC_NOT_SET e IP_PMTUDISC_DO executarão a descoberta de MTU do caminho. IP_PMTUDISC_DONT e IP_PMTUDISC_PROBE desativarão a descoberta de MTU do caminho. Para soquetes de datagrama, se definido como IP_PMTUDISC_DO , as tentativas de enviar pacotes maiores que o MTU do caminho resultarão em um erro. se definido como IP_PMTUDISC_DONT, os pacotes serão fragmentados de acordo com a MTU da interface. Se definido como IP_PMTUDISC_PROBE, as tentativas de enviar pacotes maiores que o MTU da interface resultarão em um erro.
IPV6_MULTICAST_HOPS sim sim DWORD Obtém ou define o valor TTL associado ao tráfego multicast IPv6 no soquete. É ilegal definir o TTL como um valor maior que 255. Essa opção só é válida para soquetes de datagrama e raw (o tipo de soquete deve ser SOCK_DGRAM ou SOCK_RAW).
IPV6_MULTICAST_IF sim sim DWORD Obtém ou define a interface de saída para o envio de tráfego multicast IPv6. Essa opção não altera a interface padrão para receber tráfego multicast IPv6. Essa opção é importante para computadores com hospedagem múltipla. O valor de entrada para a configuração dessa opção é um índice de interface de 4 bytes da interface de saída desejada na ordem de bytes do host. A função GetAdaptersAddresses pode ser usada para obter as informações de índice da interface. Se optval for definido como NULL na chamada para setsockopt, a interface IPv6 padrão será usada. Se optval for zero, a interface padrão para receber multicast será especificada para enviar tráfego multicast. Ao obter essa opção, o optval retorna o índice da interface padrão atual para o envio de tráfego IPv6 multicast na ordem de bytes do host.
IPV6_MULTICAST_LOOP sim sim DWORD (booleano) Indica que os dados multicast enviados no soquete serão ecoados no buffer de recepção do soquete se ele também estiver associado ao grupo multicast de destino. Se optval for definido como 1 na chamada para setsockopt, a opção será habilitada. Se definida como 0, a opção é desabilitada. Essa opção só é válida para soquetes de datagrama e raw (o tipo de soquete deve ser SOCK_DGRAM ou SOCK_RAW).
IPV6_PKTINFO sim sim DWORD (booleano) Indica que as informações do pacote devem ser retornadas pela função LPFN_WSARECVMSG (WSARecvMsg).
IPV6_PROTECTION_LEVEL sim sim INT Habilita a restrição de um soquete a um escopo especificado, como endereços com o mesmo prefixo de link local ou site local. Fornece vários níveis de restrição e configurações padrão. Consulte IPV6_PROTECTION_LEVEL para obter mais informações.
IPV6_RECVIF sim sim DWORD (booleano) Indica se a pilha IP deve preencher o buffer de controle com detalhes sobre qual interface recebeu um pacote com um soquete de datagrama. Quando esse valor for true, a função LPFN_WSARECVMSG (WSARecvMsg) retornará dados de controle opcionais contendo a interface em que o pacote foi recebido para soquetes de datagrama. Essa opção permite que a interface IPv6 em que o pacote foi recebido seja retornada na estrutura WSAMSG. Essa opção só é válida para soquetes de datagrama e raw (o tipo de soquete deve ser SOCK_DGRAM ou SOCK_RAW).
IPV6_RECVTCLASS sim sim DWORD (booleano) Indica se a pilha IP deve preencher o buffer de controle com uma mensagem que contenha o campo de cabeçalho de classe de tráfego IPv6 em um datagrama recebido. Quando esse valor for true, a função LPFN_WSARECVMSG (WSARecvMsg) retornará dados de controle opcionais contendo o valor do campo de cabeçalho IPv6 da classe de tráfego do datagrama recebido. Essa opção permite que o campo de cabeçalho IPv6 da classe de tráfego do datagrama recebido seja retornado na estrutura WSAMSG. O tipo de mensagem retornado será IPV6_TCLASS. Todos os bits DSCP e ECN do campo classe de tráfego serão retornados. Essa opção só é válida em soquetes de datagrama (o tipo de soquete deve ser SOCK_DGRAM).
IPV6_RECVECN sim sim DWORD (booleano) Indica se a pilha IP deve preencher o buffer de controle com uma mensagem contendo os bits ECN do campo de cabeçalho IPv6 de classe de tráfego em um datagrama recebido. Quando esse valor for true, a função LPFN_WSARECVMSG (WSARecvMsg) retornará dados de controle opcionais contendo os bits ECN do valor do campo do cabeçalho IPv6 da classe de tráfego do datagrama recebido. Essa opção permite que os bits ECN do campo de cabeçalho IPv6 da classe de tráfego do datagrama recebido sejam retornados na estrutura WSAMSG. O tipo de mensagem retornado será IPV6_ECN. Todos os 2 bits ECN do campo classe de tráfego serão retornados. Essa opção só é válida em soquetes de datagrama e raw (o tipo de soquete deve ser SOCK_DGRAM ou SOCK_RAW). Para segurança de tipo, você deve usar as funções WSAGetRecvIPEcn e WSASetRecvIPEcn em vez de usar a opção de soquete diretamente.
IPV6_UNICAST_HOPS sim sim DWORD Obtém ou define o valor TTL atual associado ao soquete IPv6 para tráfego unicast. É ilegal definir o TTL como um valor maior que 255.
IPV6_UNICAST_IF sim sim DWORD (IF_INDEX) Obtém ou define a interface de saída para o envio de tráfego IPv6. Essa opção não altera a interface padrão para receber tráfego IPv6. Essa opção é importante para computadores com hospedagem múltipla. O valor de entrada para a configuração dessa opção é um índice de interface de 4 bytes da interface de saída desejada na ordem de bytes do host. A função GetAdaptersAddresses pode ser usada para obter as informações de índice da interface. Se optval for zero, a interface padrão para envio de tráfego IPv6 é definida como não especificada. Ao obter essa opção, o optval retorna o índice da interface padrão atual para o envio de tráfego IPv6 na ordem de bytes do host.
IPV6_USER_MTU sim sim DWORD Obtém ou define um limite superior na MTU da camada IP (em bytes) para o soquete fornecido. Se o valor for maior do que a estimativa do sistema de MTU do caminho (que você pode recuperar em um soquete conectado consultando a opção de soquete IPV6_MTU ), a opção não terá efeito. Se o valor for menor, os pacotes de saída maiores que esse valor serão fragmentados ou não serão enviados, dependendo do valor de IPV6_DONTFRAG. O valor padrão é IP_UNSPECIFIED_USER_MTU (MAXULONG). Para segurança de tipo, você deve usar as funções WSAGetIPUserMtu e WSASetIPUserMtu em vez de usar a opção de soquete diretamente.
IPV6_V6ONLY sim sim DWORD (booleano) Indica se um soquete criado para a família de endereços AF_INET6 é restrito a apenas comunicações IPv6. Soquetes criados para a família de endereços AF_INET6 podem ser usados para comunicações IPv6 e IPv4. Alguns aplicativos podem querer restringir o uso de um soquete criado para a família de endereço AF_INET6 a apenas comunicações IPv6. Quando esse valor é diferente de zero (o padrão no Windows), um soquete criado para a família de endereços AF_INET6 pode ser usado para enviar e receber somente pacotes IPv6. Quando esse valor é zero, um soquete criado para a família de endereço AF_INET6 pode ser usado para enviar e receber pacotes para e de um endereço IPv6 ou um endereço IPv4. Observe que a capacidade de interagir com endereços IPv4 requer o uso dos endereços IPv4 mapeados. Essa opção de soquete tem suporte no Windows Vista ou posterior.

Suporte do Windows para opções de soquete IPPROTO_IPV6

Opção Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ORIGINAL_ARRIVAL_IF sim sim sim
IPV6_ADD_IFLIST A partir do Windows 10, versão 1803
IPV6_ADD_MEMBERSHIP sim sim sim sim sim
IPV6_DEL_IFLIST A partir do Windows 10, versão 1803
IPV6_DROP_MEMBERSHIP sim sim sim sim sim
IPV6_GET_IFLIST A partir do Windows 10, versão 1803
IPV6_HDRINCL sim sim sim sim sim
IPV6_HOPLIMIT sim sim sim sim sim
IPV6_IFLIST A partir do Windows 10, versão 1803
IPV6_JOIN_GROUP sim sim sim sim sim
IPV6_LEAVE_GROUP sim sim sim sim sim
IPV6_MULTICAST_HOPS sim sim sim sim sim
IPV6_MULTICAST_IF sim sim sim sim sim
IPV6_MULTICAST_LOOP sim sim sim sim sim
IPV6_PKTINFO sim sim sim sim sim
IPV6_PROTECTION_LEVEL sim sim sim sim sim
IPV6_RECVIF sim sim sim sim sim
IPV6_UNICAST_HOPS sim sim sim sim sim
IPV6_UNICAST_IF sim sim sim sim sim
IPV6_V6ONLY sim sim sim sim sim

Opção Windows Server 2003 Windows XP
IP_ORIGINAL_ARRIVAL_IF
IPV6_ADD_IFLIST
IPV6_ADD_MEMBERSHIP sim sim
IPV6_DEL_IFLIST
IPV6_DROP_MEMBERSHIP sim sim
IPV6_GET_IFLIST
IPV6_HDRINCL sim sim
IPV6_HOPLIMIT sim sim
IPV6_IFLIST
IPV6_JOIN_GROUP sim sim
IPV6_LEAVE_GROUP sim sim
IPV6_MULTICAST_HOPS sim sim
IPV6_MULTICAST_IF sim sim
IPV6_MULTICAST_LOOP sim sim
IPV6_PKTINFO sim sim
IPV6_PROTECTION_LEVEL sim sim
IPV6_RECVIF
IPV6_UNICAST_HOPS sim sim
IPV6_UNICAST_IF
IPV6_V6ONLY

Comentários

No SDK (Kit de Desenvolvimento de Software) do Microsoft Windows lançado para Windows Vista e posterior, a organização dos arquivos de cabeçalho foi alterada e o nível IPPROTO_IPV6 é definido como o arquivo de cabeçalho Ws2def.h que é automaticamente incluído no arquivo de cabeçalho Winsock2.h. As opções de soquete IPPROTO_IPV6 são definidas no arquivo de cabeçalho Ws2ipdef.h que é automaticamente incluído no arquivo de cabeçalho Ws2tcpip.h. Os arquivos de cabeçalho Ws2def.h e Ws2ipdef.h nunca devem ser usados diretamente.

A opção de soquete IP_ORIGINAL_ARRIVAL_IF é suportada no Windows Server 2008 R2, bem como no Windows 7.

Requisitos

Requisito Valor
Cabeçalho
Ws2def.h (incluir Winsock2.h);
Winsock2.h no Windows Server 2003 e Windows XP