IPV6_PKTINFO opção de soquete

A opção de soquete IPV6_PKTINFO permite que um aplicativo habilite ou desabilite o retorno de informações de pacote pela função LPFN_WSARECVMSG (WSARecvMsg) em um soquete IPv6..

Para consultar o status dessa opção de soquete, chame a função getsockopt. Para definir essa opção, chame a função setsockopt com os parâmetros a seguir.

Valor da opção soquete

A constante que representa essa opção de soquete é 19.

Sintaxe

int getsockopt(
  (SOCKET) s,      // descriptor identifying a socket 
  (int) IPPROTO_IPV6,   // level
  (int) IPV6_PKTINFO, // optname
  (char *) optval, // output buffer,
  (int) optlen,  // size of output buffer
);
int setsockopt(
  (SOCKET) s,      // descriptor identifying a socket 
  (int) IPPROTO_IPV6,   // level
  (int) IPV6_PKTINFO, // optname
  (char *) optval, // input buffer,
  (int) optlen,  // size of input buffer
);

Parâmetros

s [in]

Um descritor que identifica o soquete.

level [in]

O nível no qual a opção é definida. Use IPPROTO_IPV6 para esta operação.

optname [in]

A opção de soquete para a qual obter ou definir o valor. Use IPV6_PKTINFO para esta operação.

optval [out]

Um ponteiro para o buffer que contém o valor da opção a ser definida. Esse parâmetro deve apontar para buffer igual ou maior que o tamanho de um valor DWORD .

Esse valor é tratado como um valor booliano com 0 usado para indicar FALSE (desabilitado) e um valor diferente de zero para indicar TRUE (habilitado).

optlen [in, out]

Um ponteiro para o tamanho, em bytes, do buffer optval . Esse tamanho deve ser igual ou maior que o tamanho de um valor DWORD .

Valor retornado

Se a operação for concluída com êxito, a função getsockopt ou setsockopt retornará zero.

Se a operação falhar, um valor de SOCKET_ERROR será retornado e um código de erro específico poderá ser recuperado chamando WSAGetLastError.

Código do erro Significado
WSANOTINITIALISED
Uma chamada WSAStartup bem-sucedida deve ocorrer antes de usar essa função.
WSAENETDOWN
O subsistema de rede falhou.
WSAEFAULT
Um dos parâmetros optval ou optlen apontam para a memória que não está em uma parte válida do espaço de endereço do usuário. Esse erro também será retornado se o valor apontado pelo parâmetro optlen for menor que o tamanho de um valor DWORD .
WSAEINPROGRESS
Uma chamada do Windows Sockets 1.1 de bloqueio está em andamento ou o provedor de serviços ainda está processando uma função de retorno de chamada.
WSAEINVAL
Foi fornecido um argumento inválido. Esse erro será retornado se o parâmetro de nível for desconhecido ou inválido. No Windows Vista e posterior, esse erro também será retornado se o soquete estiver em um estado de transição.
WSAENOPROTOOPT
A opção é desconhecida ou sem suporte da família de protocolos indicada. Esse erro será retornado se o parâmetro de tipo do descritor de soquete passado no parâmetro s não for SOCK_DGRAM ou SOCK_RAW.
WSAENOTSOCK
O descritor não é um soquete.

 

Comentários

A função getsockopt chamada com a opção de soquete IPV6_PKTINFO permite que um aplicativo determine se as informações do pacote devem ser retornadas pela função LPFN_WSARECVMSG (WSARecvMsg)para um soquete IPv6.

A função setsockopt chamada com a opção de soquete IPV6_PKTINFO permite que um aplicativo habilite ou desabilite o retorno de informações de pacote pela função LPFN_WSARECVMSG (WSARecvMsg). A opção IPV6_PKTINFO para um soquete é desabilitada (definida como FALSE) por padrão.

Quando essa opção de soquete está habilitada em um soquete IPv6 do tipo SOCK_DGRAM ou SOCK_RAW, a função LPFN_WSARECVMSG (WSARecvMsg) retorna informações de pacote na estrutura WSAMSG apontada pelo parâmetro lpMsg . Um dos objetos de dados de controle na estrutura WSAMSG retornada conterá uma estrutura in6_pktinfo usada para armazenar informações de endereço de pacote recebidas.

Para datagramas recebidos pela função LPFN_WSARECVMSG (WSARecvMsg) sobre IPv6, o membro Control da estrutura WSAMSG recebida conterá uma estrutura WSABUF que contém uma estrutura WSACMSGHDR . O membro cmsg_level dessa estrutura WSACMSGHDR conteria IPPROTO_IPV6, o membro cmsg_type dessa estrutura conteria IPV6_PKTINFO e o membro cmsg_data conteria uma estrutura in6_pktinfo usada para armazenar informações de endereço de pacote IPv6 recebidas. O endereço IPv6 na estrutura in6_pktinfo é o endereço IPv6 do qual o pacote foi recebido.

Para um soquete de datagrama de pilha dupla, se um aplicativo exigir a função LPFN_WSARECVMSG (WSARecvMsg) para retornar informações de pacote em uma estrutura WSAMSG para datagramas recebidos por IPv4, IP_PKTINFO opção de soquete deverá ser definida como true no soquete. Se apenas a opção IPV6_PKTINFO estiver definida como true no soquete, as informações do pacote serão fornecidas para datagramas recebidos por IPv6, mas podem não ser fornecidas para datagramas recebidos por IPv4.

Observe que o arquivo de cabeçalho Ws2ipdef.h é incluído automaticamente no Ws2tcpip.h e nunca deve ser usado diretamente.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho
Ws2ipdef.h (inclua Ws2tcpip.h)

Confira também

Soquetes de pilha dupla

Getsockopt

in6_pktinfo

IP_PKTINFO

Opções de soquete IPPROTO_IPV6

Setsockopt

soquete

WSAMSG

LPFN_WSARECVMSG (WSARecvMsg)