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 |
---|---|
Uma chamada WSAStartup bem-sucedida deve ocorrer antes de usar essa função. |
|
O subsistema de rede falhou. |
|
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 . |
|
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. |
|
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. |
|
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. |
|
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 |
|
Confira também