Partager via


option de socket IPV6_PKTINFO

L’option de socket IPV6_PKTINFO permet à une application d’activer ou de désactiver le retour d’informations sur les paquets par la fonction LPFN_WSARECVMSG (WSARecvMsg) sur un socket IPv6.

Pour interroger la status de cette option de socket, appelez la fonction getsockopt. Pour définir cette option, appelez la fonction setsockopt avec les paramètres suivants.

Valeur d’option de socket

La constante qui représente cette option de socket est 19.

Syntaxe

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
);

Paramètres

s [in]

Descripteur identifiant le socket.

level [in]

Niveau auquel l’option est définie. Utilisez IPPROTO_IPV6 pour cette opération.

optname [in]

Option de socket pour laquelle obtenir ou définir la valeur. Utilisez IPV6_PKTINFO pour cette opération.

optval [out]

Pointeur vers la mémoire tampon contenant la valeur de l’option à définir. Ce paramètre doit pointer vers la mémoire tampon égale ou supérieure à la taille d’une valeur DWORD .

Cette valeur est traitée comme une valeur booléenne avec 0 utilisé pour indiquer FALSE (désactivé) et une valeur différente de zéro pour indiquer TRUE (activé).

optlen [in, out]

Pointeur vers la taille, en octets, de la mémoire tampon optval . Cette taille doit être égale ou supérieure à la taille d’une valeur DWORD .

Valeur retournée

Si l’opération se termine correctement, la fonction getsockopt ou setsockopt retourne zéro.

Si l’opération échoue, une valeur de SOCKET_ERROR est retournée et un code d’erreur spécifique peut être récupéré en appelant WSAGetLastError.

Code d'erreur Signification
WSANOTINITIALISED
Un appel WSAStartup réussi doit se produire avant d’utiliser cette fonction.
WSAENETDOWN
Le sous-système réseau a échoué.
WSAEFAULT
L’un des paramètres optval ou optlen pointe vers la mémoire qui n’est pas dans une partie valide de l’espace d’adressage utilisateur. Cette erreur est également retournée si la valeur pointée par le paramètre optlen est inférieure à la taille d’une valeur DWORD .
WSAEINPROGRESS
Un appel Windows Sockets 1.1 bloquant est en cours ou le fournisseur de services traite toujours une fonction de rappel.
WSAEINVAL
Argument non valide fourni. Cette erreur est retournée si le paramètre level est inconnu ou non valide. Sur Windows Vista et versions ultérieures, cette erreur est également retournée si le socket était dans un état de transition.
WSAENOPROTOOPT
L’option est inconnue ou non prise en charge par la famille de protocoles indiquée. Cette erreur est retournée si le paramètre de type pour le descripteur de socket passé dans le paramètre s n’était pas SOCK_DGRAM ou SOCK_RAW.
WSAENOTSOCK
Le descripteur n’est pas un socket.

 

Notes

La fonction getsockopt appelée avec l’option de socket IPV6_PKTINFO permet à une application de déterminer si les informations de paquet doivent être retournées par la fonction LPFN_WSARECVMSG (WSARecvMsg) pour un socket IPv6.

La fonction setsockopt appelée avec l’option de socket IPV6_PKTINFO permet à une application d’activer ou de désactiver le retour d’informations de paquet par la fonction LPFN_WSARECVMSG (WSARecvMsg). L’option IPV6_PKTINFO pour un socket est désactivée (définie sur FALSE) par défaut.

Lorsque cette option de socket est activée sur un socket IPv6 de type SOCK_DGRAM ou SOCK_RAW, la fonction LPFN_WSARECVMSG (WSARecvMsg) retourne des informations sur les paquets dans la structure WSAMSG pointée par le paramètre lpMsg . L’un des objets de données de contrôle dans la structure WSAMSG retournée contient une structure in6_pktinfo utilisée pour stocker les informations d’adresse de paquet reçues.

Pour les datagrammes reçus par la fonction LPFN_WSARECVMSG (WSARecvMsg) sur IPv6, le membre Control de la structure WSAMSG reçue contient une structure WSABUF qui contient une structure WSACMSGHDR . Le membre cmsg_level de cette structure WSACMSGHDRcontiendrait IPPROTO_IPV6, le membre cmsg_type de cette structure contiendrait IPV6_PKTINFO et le membre cmsg_data contiendrait une structure de in6_pktinfo utilisée pour stocker les informations d’adresse de paquet IPv6 reçues. L’adresse IPv6 dans la structure in6_pktinfo est l’adresse IPv6 à partir de laquelle le paquet a été reçu.

Pour un socket de datagramme à double pile, si une application nécessite la fonction LPFN_WSARECVMSG (WSARecvMsg) pour retourner les informations de paquet dans une structure WSAMSG pour les datagrammes reçus via IPv4, IP_PKTINFO option de socket doit être définie sur true sur le socket. Si seule l’option IPV6_PKTINFO est définie sur true sur le socket, les informations sur les paquets sont fournies pour les datagrammes reçus via IPv6, mais peuvent ne pas l’être pour les datagrammes reçus via IPv4.

Notez que le fichier d’en-tête Ws2ipdef.h est automatiquement inclus dans Ws2tcpip.h et ne doit jamais être utilisé directement.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2003 [applications de bureau uniquement]
En-tête
Ws2ipdef.h (inclure Ws2tcpip.h)

Voir aussi

Sockets à double pile

getsockopt

in6_pktinfo

IP_PKTINFO

IPPROTO_IPV6 Socket Options

setsockopt

socket

WSAMSG

LPFN_WSARECVMSG (WSARecvMsg)