Параметры сокета IPPROTO_IPV6

В следующих таблицах описаны IPPROTO_IPV6 параметры сокетов, которые применяются к сокетам, созданным для семейства адресов IPv6 (AF_INET6). Дополнительные сведения о получении и настройке параметров сокета см. на справочных страницах функций getsockopt и setsockopt .

Для перечисления протоколов и обнаружения поддерживаемых свойств для каждого установленного протокола используйте функцию WSAEnumProtocols, WSCEnumProtocols или WSCEnumProtocols32 .

Для некоторых параметров сокета требуется больше объяснений, чем эти таблицы могут передать; такие параметры содержат ссылки на дополнительные сведения.

Параметры

Параметр get set Тип Optval Описание
IP_ORIGINAL_ARRIVAL_IF да да DWORD (логическое значение) Указывает, должна ли функция LPFN_WSARECVMSG (WSARecvMsg) возвращать необязательные управляющие данные, содержащие исходный интерфейс поступления, в котором был получен пакет для сокетов датаграмм. Этот параметр используется с технологиями перехода IPv6 (например, 6to4, ISATAP и Teredo), которые обеспечивают назначение адресов и автоматическое туннелирование между узлами для одноадресного трафика IPv6, когда узлы IPv6 должны проходить через сети IP4, чтобы достичь других сетей IPv6. Пакеты IPv6 отправляются c туннелированием в пакетах IPv4. Этот параметр позволяет вернуть исходный интерфейс IPv4, в котором был получен пакет, в структуре WSAMSG .
IPV6_ADD_IFLIST да DWORD (IF_INDEX) Добавляет индекс интерфейса в параметр IFLIST, связанный с параметром IP_IFLIST .
IPV6_ADD_MEMBERSHIP да ipv6_mreq Присоединение сокета к предоставленной группе многоадресной рассылки в указанном интерфейсе. Этот параметр действителен только для сокетов датаграмм и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IPV6_DEL_IFLIST да DWORD (IF_INDEX) Удаляет индекс интерфейса из списка IFLIST, связанного с параметром IP_IFLIST . Записи могут быть удалены только приложением, поэтому имейте в виду, что после удаления интерфейса записи могут устареть.
IPV6_DROP_MEMBERSHIP да ipv6_mreq Оставьте предоставленную группу многоадресной рассылки из заданного интерфейса. Этот параметр действителен только для сокетов датаграмм и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IPV6_GET_IFLIST да DWORD[] (IF_INDEX[]) Возвращает текущий параметр IFLIST, связанный с параметром IP_IFLIST . Возвращает ошибку , если IP_IFLIST не включен.
IPV6_HDRINCL да да DWORD(boolean) Указывает, что приложение предоставляет заголовок IPv6 для всех исходящих данных. Если параметр optval имеет значение 1 при вызове setsockopt, параметр включен. Если параметр optval имеет значение 0, параметр отключается. По умолчанию эта политика отключена. Этот параметр допустим только для сокетов датаграмм и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). Поставщик служб TCP/IP, поддерживающий SOCK_RAW, также должен поддерживать IPV6_HDRINCL.
IPV6_HOPLIMIT да да DWORD (логическое значение) Указывает, что сведения о прыжке (TTL) должны возвращаться в функции LPFN_WSARECVMSG (WSARecvMsg). Если параметр optval имеет значение 1 при вызове setsockopt, параметр включен. Если задано значение 0, параметр отключен. Этот параметр допустим только для сокетов датаграмм и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IPV6_IFLIST да да DWORD (логическое значение) Возвращает или задает состояние IP_IFLIST сокета. Если для этого параметра задано значение true, прием датаграмм ограничивается интерфейсами, которые находятся в IFLIST. Датаграммы, полученные в других интерфейсах, игнорируются. ЕСЛИLIST запускается пустым. Используйте IP_ADD_IFLIST и IP_DEL_IFLIST для изменения списка 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_SET и IP_PMTUDISC_DO будут выполнять обнаружение MTU пути. IP_PMTUDISC_DONT и IP_PMTUDISC_PROBE отключают обнаружение MTU пути. Если для сокетов датаграмм задано значение IP_PMTUDISC_DO , попытка отправить пакеты, превышающие MTU пути, приведет к ошибке. Если задано значение IP_PMTUDISC_DONT, пакеты будут фрагментированы в соответствии с MTU интерфейса. Если задано значение IP_PMTUDISC_PROBE, попытки отправить пакеты, превышающие MTU интерфейса, приведут к ошибке.
IPV6_MULTICAST_HOPS да да DWORD Возвращает или задает значение срока жизни, связанное с многоадресным трафиком IPv6 в сокете. Недопустимо устанавливать для срока жизни значение больше 255. Этот параметр допустим только для datagram и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IPV6_MULTICAST_IF да да DWORD Возвращает или задает исходящий интерфейс для отправки многоадресного трафика IPv6. Этот параметр не изменяет интерфейс по умолчанию для получения многоадресного трафика IPv6. Этот параметр важен для компьютеров с несколькими адресами. Входным значением для установки этого параметра является 4-байтовый индекс интерфейса требуемого исходящего интерфейса в порядке байтов узла. Для получения сведений об индексе интерфейса можно использовать функцию GetAdaptersAddresses . Если параметр optval имеет значение NULL при вызове метода setsockopt, используется интерфейс IPv6 по умолчанию. Если optval равно нулю, для отправки многоадресного трафика указывается интерфейс по умолчанию для получения многоадресной рассылки. При получении этого параметра optval возвращает текущий индекс интерфейса по умолчанию для отправки многоадресного трафика IPv6 в порядке байтов узла.
IPV6_MULTICAST_LOOP да да DWORD (логическое значение) Указывает, что данные многоадресной рассылки, отправленные в сокет, будут передаваться в буфер получения сокетов, если они также присоединены к целевой группе многоадресной рассылки. Если параметр optval имеет значение 1 при вызове метода setsockopt, параметр включен. Если задано значение 0, параметр отключен. Этот параметр допустим только для datagram и необработанных сокетов (тип сокета должен быть 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 . Этот параметр допустим только для datagram и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW).
IPV6_RECVTCLASS да да DWORD (логическое значение) Указывает, должен ли стек IP заполнить буфер элемента управления сообщением, содержащим поле заголовка IPv6 класса трафика на полученной датаграмме. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные управляющие данные, содержащие значение поля заголовка IPv6 класса трафика полученной датаграммы. Этот параметр позволяет возвращать поле заголовка IPv6 класса трафика полученной датаграммы в структуре WSAMSG . Возвращаемый тип сообщения будет IPV6_TCLASS. Будут возвращены все биты DSCP и ECN поля Класс трафика. Этот параметр действителен только для сокетов датаграмм (тип сокета должен быть SOCK_DGRAM).
IPV6_UNICAST_HOPS да да DWORD Возвращает или задает текущее значение срока жизни, связанное с сокетом IPv6 для одноадресного трафика. Недопустимо устанавливать для срока жизни значение больше 255.
IPV6_UNICAST_IF да да DWORD (IF_INDEX) Возвращает или задает исходящий интерфейс для отправки трафика IPv6. Этот параметр не изменяет интерфейс по умолчанию для получения трафика IPv6. Этот параметр важен для компьютеров с несколькими адресами. Входным значением для установки этого параметра является 4-байтовый индекс интерфейса требуемого исходящего интерфейса в порядке байтов узла. Для получения сведений об индексе интерфейса можно использовать функцию GetAdaptersAddresses . Если optval равно нулю, для интерфейса по умолчанию для отправки трафика IPv6 задано значение unspecified. При получении этого параметра optval возвращает текущий индекс интерфейса по умолчанию для отправки трафика IPv6 в порядке байтов узла.
IPV6_USER_MTU да да DWORD Возвращает или задает верхнюю границу MTU уровня IP (в байтах) для заданного сокета. Если значение выше, чем оценка системой пути 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 и более поздних версиях.

Поддержка Windows параметров сокета IPPROTO_IPV6

Параметр Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ORIGINAL_ARRIVAL_IF x x x
IPV6_ADD_IFLIST Начиная с Windows 10 версии 1803
IPV6_ADD_MEMBERSHIP x x x x x
IPV6_DEL_IFLIST Начиная с Windows 10 версии 1803
IPV6_DROP_MEMBERSHIP x x x x x
IPV6_GET_IFLIST Начиная с Windows 10 версии 1803
IPV6_HDRINCL x x x x x
IPV6_HOPLIMIT x x x x x
IPV6_IFLIST Начиная с Windows 10 версии 1803
IPV6_JOIN_GROUP x x x x x
IPV6_LEAVE_GROUP x x x x x
IPV6_MULTICAST_HOPS x x x x x
IPV6_MULTICAST_IF x x x x x
IPV6_MULTICAST_LOOP x x x x x
IPV6_PKTINFO x x x x x
IPV6_PROTECTION_LEVEL x x x x x
IPV6_RECVIF x x x x x
IPV6_UNICAST_HOPS x x x x x
IPV6_UNICAST_IF x x x x x
IPV6_V6ONLY x x x x x

Параметр Windows Server 2003 Windows XP
IP_ORIGINAL_ARRIVAL_IF
IPV6_ADD_IFLIST
IPV6_ADD_MEMBERSHIP x x
IPV6_DEL_IFLIST
IPV6_DROP_MEMBERSHIP x x
IPV6_GET_IFLIST
IPV6_HDRINCL x x
IPV6_HOPLIMIT x x
IPV6_IFLIST
IPV6_JOIN_GROUP x x
IPV6_LEAVE_GROUP x x
IPV6_MULTICAST_HOPS x x
IPV6_MULTICAST_IF x x
IPV6_MULTICAST_LOOP x x
IPV6_PKTINFO x x
IPV6_PROTECTION_LEVEL x x
IPV6_RECVIF
IPV6_UNICAST_HOPS x x
IPV6_UNICAST_IF
IPV6_V6ONLY

Комментарии

В пакете SDK microsoft Windows, выпущенном для Windows Vista и более поздних версий, организация файлов заголовков изменилась, и уровень IPPROTO_IPV6 определяется в файле заголовка Ws2def.h , который автоматически включается в файл заголовка Winsock2.h . Параметры IPPROTO_IPV6 сокета определяются в файле заголовка Ws2ipdef.h , который автоматически включается в файл заголовка Ws2tcpip.h . Файлы заголовков Ws2def.h и Ws2ipdef.h никогда не следует использовать напрямую.

Параметр сокета IP_ORIGINAL_ARRIVAL_IF поддерживается в Windows Server 2008 R2, а также в Windows 7.

Требования

Требование Значение
Заголовок
Ws2def.h (включая Winsock2.h);
Winsock2.h в Windows Server 2003 и Windows XP