IPV6_PKTINFO opción de socket

La opción de socket IPV6_PKTINFO permite que una aplicación habilite o deshabilite la devolución de información de paquetes por la función LPFN_WSARECVMSG (WSARecvMsg) en un socket IPv6.

Para consultar el estado de esta opción de socket, llame a la función getsockopt . Para establecer esta opción, llame a la función setsockopt con los parámetros siguientes.

Valor de opción de socket

La constante que representa esta opción de socket es 19.

Sintaxis

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]

Descriptor que identifica el socket.

level [in]

Nivel en el que se define la opción. Use IPPROTO_IPV6 para esta operación.

optname [in]

Opción de socket para la que se va a obtener o establecer el valor. Use IPV6_PKTINFO para esta operación.

optval [out]

Puntero al búfer que contiene el valor de la opción que se va a establecer. Este parámetro debe apuntar al búfer igual o mayor que el tamaño de un valor DWORD .

Este valor se trata como un valor booleano con 0 que se usa para indicar FALSE (deshabilitado) y un valor distinto de cero para indicar TRUE (habilitado).

optlen [in, out]

Puntero al tamaño, en bytes, del búfer optval . Este tamaño debe ser igual o mayor que el tamaño de un valor DWORD .

Valor devuelto

Si la operación se completa correctamente, la función getsockopt o setsockopt devuelve cero.

Si se produce un error en la operación, se devuelve un valor de SOCKET_ERROR y se puede recuperar un código de error específico llamando a WSAGetLastError.

Código de error Significado
WSANOTINITIALISED
Debe producirse una llamada de WSAStartup correcta antes de usar esta función.
WSAENETDOWN
Error en el subsistema de red.
WSAEFAULT
Uno de los parámetros optval o optlen apunta a la memoria que no está en una parte válida del espacio de direcciones del usuario. Este error también se devuelve si el valor al que apunta el parámetro optlen es menor que el tamaño de un valor DWORD .
WSAEINPROGRESS
Una llamada de Bloqueo de Windows Sockets 1.1 está en curso o el proveedor de servicios sigue procesando una función de devolución de llamada.
WSAEINVAL
Se proporcionó un argumento no válido. Este error se devuelve si el parámetro level es desconocido o no válido. En Windows Vista y versiones posteriores, este error también se devuelve si el socket estaba en un estado transitorio.
WSAENOPROTOOPT
La opción es desconocida o no admitida por la familia de protocolos indicada. Este error se devuelve si el parámetro de tipo para el descriptor de socket pasado en el parámetro s no se SOCK_DGRAM ni SOCK_RAW.
WSAENOTSOCK
El descriptor no es un socket.

 

Comentarios

La función getockopt llamada con la opción de socket IPV6_PKTINFO permite a una aplicación determinar si la función LPFN_WSARECVMSG (WSARecvMsg) devuelve información de paquetes para un socket IPv6.

La función setsockopt llamada con la opción de socket IPV6_PKTINFO permite que una aplicación habilite o deshabilite la devolución de información de paquetes mediante la función LPFN_WSARECVMSG (WSARecvMsg). La opción IPV6_PKTINFO para un socket está deshabilitada (establecida en FALSE) de forma predeterminada.

Cuando esta opción de socket está habilitada en un socket IPv6 de tipo SOCK_DGRAM o SOCK_RAW, la función LPFN_WSARECVMSG (WSARecvMsg) devuelve información de paquetes en la estructura WSAMSG a la que apunta el parámetro lpMsg . Uno de los objetos de datos de control de la estructura WSAMSG devuelta contendrá una estructura de in6_pktinfo utilizada para almacenar la información de dirección de paquete recibida.

Para los datagramas recibidos por la función LPFN_WSARECVMSG (WSARecvMsg) a través de IPv6, el miembro Control de la estructura WSAMSG recibida contendrá una estructura WSABUF que contiene una estructura WSACMSGHDR . El miembro cmsg_level de esta estructura WSACMSGHDR contendrá IPPROTO_IPV6, el cmsg_type miembro de esta estructura contendrá IPV6_PKTINFO y el miembro cmsg_data contendrá una estructura de in6_pktinfo utilizada para almacenar la información de dirección de paquete IPv6 recibida. La dirección IPv6 de la estructura in6_pktinfo es la dirección IPv6 desde la que se recibió el paquete.

Para un socket de datagrama de doble pila, si una aplicación requiere la función LPFN_WSARECVMSG (WSARecvMsg) para devolver información de paquetes en una estructura WSAMSG para datagramas recibidos a través de IPv4, IP_PKTINFO opción de socket debe establecerse en true en el socket. Si solo la opción IPV6_PKTINFO está establecida en true en el socket, se proporcionará información de paquetes para datagramas recibidos a través de IPv6, pero no se puede proporcionar para datagramas recibidos a través de IPv4.

Tenga en cuenta que el archivo de encabezado Ws2ipdef.h se incluye automáticamente en Ws2tcpip.h y nunca debe usarse directamente.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado
Ws2ipdef.h (incluya Ws2tcpip.h)

Consulte también

Sockets de doble pila

getsockopt

in6_pktinfo

IP_PKTINFO

Opciones de socket de IPPROTO_IPV6

setsockopt

socket

WSAMSG

LPFN_WSARECVMSG (WSARecvMsg)