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 |
---|---|
Debe producirse una llamada de WSAStartup correcta antes de usar esta función. |
|
Error en el subsistema de red. |
|
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 . |
|
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. |
|
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. |
|
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. |
|
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 |
|
Consulte también