IPV6_PKTINFO Socketoption

Mit der Option IPV6_PKTINFO Sockets kann eine Anwendung die Rückgabe von Paketinformationen durch die LPFN_WSARECVMSG -Funktion (WSARecvMsg) in einem IPv6-Socket aktivieren oder deaktivieren.

Rufen Sie die funktion getsockopt auf, um die status dieser Socketoption abzufragen. Um diese Option festzulegen, rufen Sie die setockopt-Funktion mit den folgenden Parametern auf.

Wert der Socketoption

Die Konstante, die diese Socketoption darstellt, ist 19.

Syntax

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

Parameter

s [in]

Ein Deskriptor, der den Socket identifiziert.

Level [in]

Die Ebene, auf der die Option definiert ist. Verwenden Sie für diesen Vorgang IPPROTO_IPV6 .

optname [in]

Die Socketoption, für die der Wert abgerufen oder festgelegt werden soll. Verwenden Sie für diesen Vorgang IPV6_PKTINFO.

optval [out]

Ein Zeiger auf den Puffer, der den Wert für die festzulegende Option enthält. Dieser Parameter sollte auf einen Puffer zeigen, der der Größe eines DWORD-Werts entspricht oder größer ist.

Dieser Wert wird als boolescher Wert behandelt, wobei 0 verwendet wird, um FALSE (deaktiviert) anzugeben, und ein Wert ungleich null, um TRUE (aktiviert) anzugeben.

optlen [in, out]

Ein Zeiger auf die Größe des optval-Puffers in Bytes. Diese Größe muss gleich oder größer als die Größe eines DWORD-Werts sein.

Rückgabewert

Wenn der Vorgang erfolgreich abgeschlossen wird, gibt die Funktion getsockopt oder setsockopt null zurück.

Wenn der Vorgang fehlschlägt, wird der Wert SOCKET_ERROR zurückgegeben, und ein bestimmter Fehlercode kann durch Aufrufen von WSAGetLastError abgerufen werden.

Fehlercode Bedeutung
WSANOTINITIALISED
Vor der Verwendung dieser Funktion muss ein erfolgreicher WSAStartup-Aufruf erfolgen.
WSAENETDOWN
Fehler beim Netzwerksubsystem.
WSAEFAULT
Einer der optval - oder optlen-Parameter verweist auf arbeitsspeicher, der sich nicht in einem gültigen Teil des Benutzeradressraums befindet. Dieser Fehler wird auch zurückgegeben, wenn der Wert, auf den der optlen-Parameter verweist, kleiner als die Größe eines DWORD-Werts ist.
WSAEINPROGRESS
Ein blockierter Windows Sockets 1.1-Aufruf wird ausgeführt, oder der Dienstanbieter verarbeitet noch eine Rückruffunktion.
WSAEINVAL
Ein ungültiges Argument wurde angegeben. Dieser Fehler wird zurückgegeben, wenn der level-Parameter unbekannt oder ungültig ist. Unter Windows Vista und höher wird dieser Fehler auch zurückgegeben, wenn sich der Socket in einem Übergangszustand befand.
WSAENOPROTOOPT
Die Option ist unbekannt oder wird von der angegebenen Protokollfamilie nicht unterstützt. Dieser Fehler wird zurückgegeben, wenn der Typparameter für den Socketdeskriptor, der im s-Parameter übergeben wurde, nicht SOCK_DGRAM oder SOCK_RAW wurde.
WSAENOTSOCK
Der Deskriptor ist kein Socket.

 

Bemerkungen

Mit der getockopt-Funktion , die mit der Option IPV6_PKTINFO Socket aufgerufen wird, kann eine Anwendung ermitteln, ob Paketinformationen von der LPFN_WSARECVMSG (WSARecvMsg)-Funktion für einen IPv6-Socket zurückgegeben werden sollen.

Die setockopt-Funktion , die mit der Option IPV6_PKTINFO Socket aufgerufen wird, ermöglicht es einer Anwendung, die Rückgabe von Paketinformationen durch die funktion LPFN_WSARECVMSG (WSARecvMsg) zu aktivieren oder zu deaktivieren. Die option IPV6_PKTINFO für einen Socket ist standardmäßig deaktiviert (auf FALSE festgelegt).

Wenn diese Socketoption für einen IPv6-Socket vom Typ SOCK_DGRAM oder SOCK_RAW aktiviert ist, gibt die funktion LPFN_WSARECVMSG (WSARecvMsg) Paketinformationen in der WSAMSG-Struktur zurück, auf die der parameter lpMsg verweist. Eines der Steuerelementdatenobjekte in der zurückgegebenen WSAMSG-Struktur enthält eine in6_pktinfo Struktur, die zum Speichern empfangener Paketadresseninformationen verwendet wird.

Für Datagramme, die von der funktion LPFN_WSARECVMSG (WSARecvMsg) über IPv6 empfangen werden, enthält das Control-Element der empfangenen WSAMSG-Struktur eine WSABUF-Struktur , die eine WSACMSGHDR-Struktur enthält. Der cmsg_level Member dieser WSACMSGHDR-Struktur würde IPPROTO_IPV6 enthalten, das cmsg_type-Element dieser Struktur würde IPV6_PKTINFO und das cmsg_data-Element eine in6_pktinfo-Struktur enthalten, die zum Speichern empfangener IPv6-Paketadresseninformationen verwendet wird. Die IPv6-Adresse in der in6_pktinfo-Struktur ist die IPv6-Adresse, von der das Paket empfangen wurde.

Wenn eine Anwendung bei einem Dual-Stack-Datagrammsocket die funktion LPFN_WSARECVMSG (WSARecvMsg) benötigt, um Paketinformationen in einer WSAMSG-Struktur für Datagramme zurückzugeben, die über IPv4 empfangen wurden, muss IP_PKTINFO Socketoption für den Socket auf true festgelegt werden. Wenn nur die Option IPV6_PKTINFO für den Socket auf true festgelegt ist, werden Paketinformationen für Datagramme bereitgestellt, die über IPv6 empfangen wurden, aber möglicherweise nicht für Datagramme, die über IPv4 empfangen wurden.

Beachten Sie, dass die Ws2ipdef.h-Headerdatei automatisch in Ws2tcpip.h enthalten ist und niemals direkt verwendet werden sollte.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows Server 2003 [nur Desktop-Apps]
Header
Ws2ipdef.h (include Ws2tcpip.h)

Weitere Informationen

Dual-Stack-Sockets

getsockopt

in6_pktinfo

IP_PKTINFO

IPPROTO_IPV6 Socketoptionen

setsockopt

Socket

WSAMSG

LPFN_WSARECVMSG (WSARecvMsg)