IPPROTO_IPV6 ソケット オプション

次の表では、IPv6 アドレス ファミリ (AF_INET6) 用に作成されたソケットに適用される IPPROTO_IPV6 ソケット オプションについて説明しています。 ソケット オプションの取得と設定の詳細については、getsockopt 関数および setsockopt 関数のリファレンス ページを参照してください。

プロトコルを列挙し、インストールされている各プロトコルでサポートされているプロパティを検出するには、WSAEnumProtocols 関数、 WSCEnumProtocols 関数、または WSCEnumProtocols32 関数を使用します。

一部のソケット オプションについては、この表の内容以上の説明が必要です。その場合は、追加情報へのリンクが含まれています。

Options

オプション get set Optval 型 説明
IP_ORIGINAL_ARRIVAL_IF はい はい DWORD (ブール値) LPFN_WSARECVMSG (WSARecvMsg) 関数から、データグラム ソケットのパケットを受信した元の到着インターフェイスを含むオプションの制御データを返すかどうかを示します。 このオプションは、IPv6 移行テクノロジ (6to4、ISATAP、Teredo トンネルなど) で使用されます。これらのテクノロジは、IPv6 ホストが他の IPv6 ネットワークに到達するために IPv4 ネットワークを経由する必要があるときに、ユニキャスト IPv6 トラフィックに対するアドレス割り当てとホスト間の自動トンネリングを提供します。 IPv6 パケットは、IPv4 パケットとしてトンネリングされて送信されます。 このオプションを使用すると、パケットを受信した元の IPv4 インターフェイスを WSAMSG 構造体で返すことができます。
IPV6_ADD_IFLIST はい DWORD (IF_INDEX) IP_IFLIST オプションに関連付けられている IFLIST にインターフェイス インデックスを追加します。
IPV6_ADD_MEMBERSHIP はい ipv6_mreq 指定されたインターフェイスの指定されたマルチキャスト グループにソケットを参加させます。 このオプションは、データグラム ソケットと raw ソケットでのみ有効です (ソケットの種類が SOCK_DGRAM または SOCK_RAW である必要があります)。
IPV6_DEL_IFLIST はい DWORD (IF_INDEX) IP_IFLIST オプションに関連付けられている IFLIST からインターフェイス インデックスを削除します。 エントリはアプリケーションによってのみ削除できるため、インターフェイスが削除されるとエントリが古くなる可能性があることに注意してください。
IPV6_DROP_MEMBERSHIP はい ipv6_mreq 指定されたインターフェイスの指定されたマルチキャスト グループへの参加を解除します。 このオプションは、データグラム ソケットと raw ソケットでのみ有効です (ソケットの種類が SOCK_DGRAM または SOCK_RAW である必要があります)。
IPV6_GET_IFLIST はい DWORD[] (IF_INDEX[]) IP_IFLIST オプションに関連付けられている現在の IFLIST を取得します。 IP_IFLIST が有効になっていない場合はエラーを返します。
IPV6_HDRINCL はい はい DWORD (ブール値) アプリケーションがすべての送信データに IPv6 ヘッダーを提供することを示します。 setsockopt の呼び出し時に optval パラメーターが 1 に設定されている場合、このオプションは有効になります。 optval0 に設定されている場合、このオプションは無効になります。 既定値は無効です。 このオプションは、データグラム ソケットと raw ソケットに対してのみ有効です (ソケットの種類が SOCK_DGRAM または SOCK_RAW である必要があります)。 SOCK_RAW をサポートする TCP/IP サービス プロバイダーは、IPV6_HDRINCL もサポートする必要があります。
IPV6_HOPLIMIT はい はい DWORD (ブール値) LPFN_WSARECVMSG (WSARecvMsg) 関数でホップ (TTL) 情報を返す必要があることを示します。 setsockopt の呼び出し時に optval1 に設定されている場合、このオプションは有効になります。 0 に設定されている場合、このオプションは無効になります。 このオプションは、データグラム ソケットと raw ソケットに対してのみ有効です (ソケットの種類が SOCK_DGRAM または SOCK_RAW である必要があります)。
IPV6_IFLIST はい はい DWORD (ブール値) ソケットの IP_IFLIST 状態を取得または設定します。 このオプションが true に設定されている場合、データグラム受信は IFLIST 内のインターフェイスに制限されます。 他のインターフェイスで受信したデータグラムは無視されます。 IFLIST の初期値は空です。 IFLIST を編集するには、IP_ADD_IFLIST および IP_DEL_IFLIST を使用します。
IPV6_JOIN_GROUP はい ipv6_mreq IPV6_ADD_MEMBERSHIP と同じ
IPV6_LEAVE_GROUP はい ipv6_mreq IPV6_DROP_MEMBERSHIP と同じ
IPV6_MTU はい DWORD パス MTU のシステム推定値を取得します。 ソケットが接続されている必要があります。
IPV6_MTU_DISCOVER はい はい DWORD (PMTUD_STATE) ソケットのパス MTU の検出状態を取得または設定します。 既定値は IP_PMTUDISC_NOT_SET です。 ストリーム ソケットで IP_PMTUDISC_NOT_SETIP_PMTUDISC_DO が設定されている場合は、パス MTU の検出が実行されます。 IP_PMTUDISC_DONTIP_PMTUDISC_PROBE の場合は、パス MTU の検出がオフになります。 データグラム ソケットで、IP_PMTUDISC_DO に設定されている場合、パス MTU より大きいパケットを送信しようとするとエラーが発生します。 IP_PMTUDISC_DONT に設定されている場合、パケットはインターフェイス MTU に従ってフラグメント化されます。 IP_PMTUDISC_PROBE に設定されている場合、インターフェイス MTU より大きいパケットを送信しようとすると、エラーが発生します。
IPV6_MULTICAST_HOPS はい はい DWORD ソケット上の IPv6 マルチキャスト トラフィックに関連付けられている TTL 値を取得または設定します。 TTL を 255 より大きい値に設定することはできません。 このオプションは、データグラム ソケットと raw ソケットに対してのみ有効です (ソケットの種類が SOCK_DGRAM または SOCK_RAW である必要があります)。
IPV6_MULTICAST_IF はい はい DWORD IPv6 マルチキャスト トラフィックを送信するための送信インターフェイスを取得または設定します。 このオプションでは、IPv6 マルチキャスト トラフィックを受信するための既定のインターフェイスは変更されません。 このオプションは、マルチホーム コンピューターの場合に重要です。 このオプションを設定するための入力値は、ホスト バイト オーダーで、目的の送信インターフェイスの 4 バイト インターフェイス インデックスです。 インターフェイス インデックスの情報は、GetAdaptersAddresses 関数を使用して取得できます。 setsockopt の呼び出し時に optvalNULL に設定されている場合は、既定の IPv6 インターフェイスが使用されます。 optval がゼロの場合、マルチキャスト トラフィックの送信にはマルチキャストを受信するための既定のインターフェイスが指定されます。 このオプションを取得すると、optval は、マルチキャスト IPv6 トラフィックをホスト バイト オーダーで送信するために、現在の既定のインターフェイス インデックスを返します。
IPV6_MULTICAST_LOOP はい はい DWORD (ブール値) ソケットが宛先マルチキャスト グループにも参加している場合、ソケットで送信されたマルチキャスト データが、ソケット受信バッファーにエコーされることを示します。 setsockopt の呼び出し時に optval1 に設定されている場合、このオプションは有効になります。 0 に設定されている場合、このオプションは無効になります。 このオプションは、データグラム ソケットと raw ソケットに対してのみ有効です (ソケットの種類が SOCK_DGRAM または SOCK_RAW である必要があります)。
IPV6_PKTINFO はい はい DWORD (ブール値) パケット情報を LPFN_WSARECVMSG (WSARecvMsg) 関数で返す必要があることを示します。
IPV6_PROTECTION_LEVEL はい はい INT ソケットを特定のスコープ (同じリンク ローカルまたはサイト ローカル プレフィックスを持つアドレスなど) に制限できます。 さまざまな制限レベルと既定の設定を提供します。 詳細については、「IPV6_PROTECTION_LEVEL」を参照してください。
IPV6_RECVIF はい はい DWORD (ブール値) どのインターフェイスがデータグラム ソケットを使用してパケットを受信したかに関する詳細を、IP スタックが制御バッファーに設定する必要があるかどうかを示します。 この値が true の場合、LPFN_WSARECVMSG (WSARecvMsg) 関数は、データグラム ソケットのパケットを受信したインターフェイスを含むオプションの制御データを返します。 このオプションを使用すると、パケットを受信した IPv6 インターフェイスを WSAMSG 構造体で返すことができます。 このオプションは、データグラム ソケットと raw ソケットに対してのみ有効です (ソケットの種類が SOCK_DGRAM または SOCK_RAW である必要があります)。
IPV6_RECVTCLASS はい はい DWORD (ブール値) IP スタックで、受信したデータグラムの "トラフィック クラス" IPv6 ヘッダー フィールドを含むメッセージを制御バッファーに設定するかどうかを示します。 この値が true の場合、LPFN_WSARECVMSG (WSARecvMsg) 関数は、受信したデータグラムの "トラフィック クラス" IPv6 ヘッダー フィールド値を含む、オプションの制御データを返します。 このオプションを使用すると、受信したデータグラムの "トラフィック クラス" IPv6 ヘッダー フィールドを WSAMSG 構造体で返すことができます。 返されるメッセージ タイプは IPV6_TCLASS になります。 "トラフィック クラス" フィールドのすべての DSCP ビットおよび ECN ビットが返されます。 このオプションは、データグラム ソケットでのみ有効です (ソケット タイプが SOCK_DGRAM である必要があります)。
IPV6_RECVECN はい はい DWORD (ブール値) IP スタックで、受信したデータグラムの "トラフィック クラス" IPv6 ヘッダー フィールドの ECN ビットを含むメッセージを制御バッファーに設定するかどうかを示します。 この値が true の場合、LPFN_WSARECVMSG (WSARecvMsg) 関数は、受信したデータグラムの "トラフィック クラス" IPv6 ヘッダー フィールド値の ECN ビットを含む、オプションの制御データを返します。 このオプションを使用すると、受信したデータグラムの "トラフィック クラス" IPv6 ヘッダー フィールドの ECN ビットを WSAMSG 構造体で返すことができます。 返されるメッセージの種類は IPV6_ECN になります。 "トラフィック クラス" フィールドの ECN ビットが 2 ビットとも返されます。 このオプションは、データグラム ソケットと raw ソケットでのみ有効です (ソケットの種類が SOCK_DGRAM または SOCK_RAW である必要があります)。 型安全性を確保するには、ソケット オプションを直接使用するのではなく、WSAGetRecvIPEcn 関数および WSASetRecvIPEcn 関数を使用する必要があります。
IPV6_UNICAST_HOPS はい はい DWORD ユニキャスト トラフィック用に IPv6 ソケットに関連付けられている現在の TTL 値を取得または設定します。 TTL を 255 より大きい値に設定することはできません。
IPV6_UNICAST_IF はい はい DWORD (IF_INDEX) IPv6 トラフィックを送信するための送信インターフェイスを取得または設定します。 このオプションでは、IPv6 トラフィックを受信するための既定のインターフェイスは変更されません。 このオプションは、マルチホーム コンピューターの場合に重要です。 このオプションを設定するための入力値は、ホスト バイト オーダーで、目的の送信インターフェイスの 4 バイト インターフェイス インデックスです。 インターフェイス インデックスの情報は、GetAdaptersAddresses 関数を使用して取得できます。 optval の値がゼロの場合、IPv6 トラフィックを送信するための既定のインターフェイスは未指定に設定されます。 このオプションを取得すると、optval は、IPv6 トラフィックをホスト バイト オーダーで送信するために、現在の既定のインターフェイス インデックスを返します。
IPV6_USER_MTU はい はい DWORD 指定されたソケットの IP 層 MTU の上限 (バイト単位) を取得または設定します。 この値が、システムのパス MTU の推定値 (IPV6_MTU ソケット オプションを照会することで接続されたソケットで取得できます) よりも大きい場合、このオプションに効力はありません。 この値の方が小さい場合は、IPV6_DONTFRAG の値に応じて、これより大きい送信パケットが断片化されるか、送信が失敗となります。 既定値は、IP_UNSPECIFIED_USER_MTU (MAXULONG) です。 型安全性を確保するには、ソケット オプションを直接使用するのではなく、WSAGetIPUserMtu 関数および WSASetIPUserMtu 関数を使用する必要があります。
IPV6_V6ONLY はい はい DWORD (ブール値) AF_INET6 アドレス ファミリ用に作成されたソケットが IPv6 通信のみに制限されるかどうかを示します。 AF_INET6 アドレス ファミリ用に作成されたソケットは、IPv6 通信と IPv4 通信の両方に使用できます。 アプリケーションによっては、AF_INET6 アドレス ファミリ用に作成されたソケットの使用を IPv6 通信のみに制限する必要があります。 この値がゼロ以外の場合 (Windows での既定値)、AF_INET6 アドレス ファミリ用に作成されたソケットは IPv6 パケットの送受信のみに使用できます。 この値がゼロの場合、AF_INET6 アドレス ファミリ用に作成されたソケットは、IPv6 アドレスまたは IPv4 アドレスとのパケットの送受信に使用できます。 IPv4 アドレスとやり取りできるようにするには、IPv4 でマップされたアドレスを使用する必要があります。 このソケット オプションは、Windows Vista 以降でサポートされています。

IPPROTO_IPV6 ソケット オプションの Windows サポート

オプション Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ORIGINAL_ARRIVAL_IF はい はい はい
IPV6_ADD_IFLIST Windows 10 バージョン 1803 以降
IPV6_ADD_MEMBERSHIP はい はい はい はい はい
IPV6_DEL_IFLIST Windows 10 バージョン 1803 以降
IPV6_DROP_MEMBERSHIP はい はい はい はい はい
IPV6_GET_IFLIST Windows 10 バージョン 1803 以降
IPV6_HDRINCL はい はい はい はい はい
IPV6_HOPLIMIT はい はい はい はい はい
IPV6_IFLIST Windows 10 バージョン 1803 以降
IPV6_JOIN_GROUP はい はい はい はい はい
IPV6_LEAVE_GROUP はい はい はい はい はい
IPV6_MULTICAST_HOPS はい はい はい はい はい
IPV6_MULTICAST_IF はい はい はい はい はい
IPV6_MULTICAST_LOOP はい はい はい はい はい
IPV6_PKTINFO はい はい はい はい はい
IPV6_PROTECTION_LEVEL はい はい はい はい はい
IPV6_RECVIF はい はい はい はい はい
IPV6_UNICAST_HOPS はい はい はい はい はい
IPV6_UNICAST_IF はい はい はい はい はい
IPV6_V6ONLY はい はい はい はい はい

オプション Windows Server 2003 Windows XP
IP_ORIGINAL_ARRIVAL_IF
IPV6_ADD_IFLIST
IPV6_ADD_MEMBERSHIP はい はい
IPV6_DEL_IFLIST
IPV6_DROP_MEMBERSHIP はい はい
IPV6_GET_IFLIST
IPV6_HDRINCLはい はい
IPV6_HOPLIMITはい はい
IPV6_IFLIST
IPV6_JOIN_GROUP はい はい
IPV6_LEAVE_GROUP はい はい
IPV6_MULTICAST_HOPS はい はい
IPV6_MULTICAST_IF はい はい
IPV6_MULTICAST_LOOP はい はい
IPV6_PKTINFO はい はい
IPV6_PROTECTION_LEVEL はい はい
IPV6_RECVIF
IPV6_UNICAST_HOPS はい はい
IPV6_UNICAST_IF
IPV6_V6ONLY

解説

Windows Vista 以降向けにリリースされた Microsoft Windows ソフトウェア開発キット (SDK) では、ヘッダー ファイルの編成が変更されており、IPPROTO_IPV6 レベルは、Winsock2.h ヘッダー ファイルに自動的に含まれる Ws2def.h ヘッダー ファイルで定義されています。 IPPROTO_IPV6 ソケット オプションは、Ws2tcpip.h ヘッダー ファイルに自動的に含まれる Ws2ipdef.h ヘッダー ファイルで定義されています。 Ws2def.h および Ws2ipdef.h ヘッダー ファイルは、直接使用しないでください。

IP_ORIGINAL_ARRIVAL_IF ソケット オプションは、Windows Server 2008 R2 および Windows 7 でサポートされています。

要件

要件 Value
ヘッダー
Ws2def.h (Winsock2.h をインクルード)、
Winsock2.h (Windows Server 2003、Windows XP)