Параметры сокета IPPROTO_IPV6
В следующих таблицах описаны параметры сокета IPPROTO_IPV6 , которые применяются к сокетам, созданным для семейства адресов IPv6 (AF_INET6). Дополнительные сведения о получении и настройке параметров сокета см. на справочных страницах функций gets и setsockopt.
Чтобы перечислить протоколы и обнаружить поддерживаемые свойства для каждого установленного протокола, используйте функцию WSAEnumProtocols, WSCEnumProtocols или WSCEnumProtocols32.
Для некоторых вариантов сокета требуется больше объяснения, чем эти таблицы могут передаваться; такие параметры содержат ссылки на дополнительные сведения.
Параметры
Вариант | get | set | Тип Optval | Description |
---|---|---|---|---|
IP_ORIGINAL_ARRIVAL_IF | yes | yes | DWORD (логический) | Указывает, должна ли функция LPFN_WSARECVMSG (WSARecvMsg) возвращать необязательные данные управления, содержащие исходный интерфейс прибытия, в котором пакет был получен для сокетов диаграммы данных. Этот параметр используется с технологиями перехода IPv6 (6to4, ISATAP и Teredo туннелями, например), которые обеспечивают автоматическое туннелирование адресов и автоматическое туннелирование узлов iPv6 для одноадресного трафика IPv6, когда узлы IPv6 должны проходить через ip4-сети для достижения других сетей IPv6. Пакеты IPv6 отправляются c туннелированием в пакетах IPv4. Этот параметр позволяет исходному интерфейсу IPv4, в котором был получен пакет в структуре WSAMSG. |
IPV6_ADD_IFLIST | yes | DWORD (IF_INDEX) | Добавляет индекс интерфейса в IFLIST, связанный с параметром IP_IFLIST . | |
IPV6_ADD_MEMBERSHIP | yes | ipv6_mreq | Присоединяйте сокет к предоставленной группе многоадресной рассылки в указанном интерфейсе. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). | |
IPV6_DEL_IFLIST | yes | DWORD (IF_INDEX) | Удаляет индекс интерфейса из IFLIST, связанного с параметром IP_IFLIST . Записи можно удалить только приложением, поэтому помните, что записи могут устареть после удаления интерфейса. | |
IPV6_DROP_MEMBERSHIP | yes | ipv6_mreq | Оставьте предоставленную группу многоадресной рассылки из данного интерфейса. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). | |
IPV6_GET_IFLIST | yes | DWORD[] (IF_INDEX[]) | Возвращает текущий параметр IFLIST, связанный с параметром IP_IFLIST . Возвращает ошибку, если IP_IFLIST не включена. | |
IPV6_HDRINCL | yes | yes | DWORD(boolean) | Указывает, что приложение предоставляет заголовок IPv6 для всех исходящих данных. Если параметр optval имеет значение 1 для вызова setockopt, параметр включен. Если для параметра optval задано значение 0, параметр отключен. Значение по умолчанию отключено. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). Поставщик служб TCP/IP, поддерживающий SOCK_RAW, также должен поддерживать IPV6_HDRINCL. |
IPV6_HOPLIMIT | yes | yes | DWORD (логический) | Указывает, что сведения о прыжке (TTL) должны быть возвращены в функции LPFN_WSARECVMSG (WSARecvMsg). Если для вызова setockopt задано значение 1, параметр включен. Если задано значение 0, параметр отключен. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). |
IPV6_IFLIST | yes | yes | DWORD (логический) | Возвращает или задает состояние IP_IFLIST сокета. Если для этого параметра задано значение true, прием datagram ограничен интерфейсами, которые находятся в IFLIST. Диаграммы данных, полученные на любых других интерфейсах, игнорируются. IFLIST запускается пусто. Используйте IP_ADD_IFLIST и IP_DEL_IFLIST для редактирования IFLIST. |
IPV6_JOIN_GROUP | yes | ipv6_mreq | То же, что и IPV6_ADD_MEMBERSHIP | |
IPV6_LEAVE_GROUP | yes | ipv6_mreq | То же, что и IPV6_DROP_MEMBERSHIP | |
IPV6_MTU | yes | DWORD | Возвращает оценку MTU пути системы. Сокет должен быть подключен. | |
IPV6_MTU_DISCOVER | yes | yes | 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 | yes | yes | DWORD | Возвращает или задает значение TTL, связанное с трафиком многоадресной рассылки IPv6 в сокете. Недопустимо задать значение TTL больше 255. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). |
IPV6_MULTICAST_IF | yes | yes | DWORD | Возвращает или задает исходящий интерфейс для отправки трафика многоадресной рассылки IPv6. Этот параметр не изменяет интерфейс по умолчанию для получения многоадресного трафика IPv6. Этот параметр важен для многодомных компьютеров. Входное значение для настройки этого параметра — это 4-байтовый индекс интерфейса требуемого исходящего интерфейса в порядке байтов узла. Функцию GetAdaptersAddresses можно использовать для получения сведений об индексе интерфейса. Если для вызова setockopt задано значение NULL, используется интерфейс IPv6 по умолчанию. Если значение optval равно нулю, интерфейс по умолчанию для получения многоадресной рассылки указывается для отправки многоадресного трафика. При получении этого параметра optval возвращает текущий индекс интерфейса по умолчанию для отправки трафика IPv6 многоадресной рассылки в порядке байтов узла. |
IPV6_MULTICAST_LOOP | yes | yes | DWORD (логический) | Указывает, что данные многоадресной рассылки, отправляемые на сокеты, будут переданы в буфер получения сокетов, если он также присоединен к целевой группе многоадресной рассылки. Если для вызова setockopt задано значение 1, параметр включен. Если задано значение 0, параметр отключен. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). |
IPV6_PKTINFO | yes | yes | DWORD (логический) | Указывает, что сведения о пакете должны возвращаться функцией LPFN_WSARECVMSG (WSARecvMsg). |
IPV6_PROTECTION_LEVEL | yes | yes | INT | Включает ограничение сокета в указанную область, например адреса с тем же локальным или локальным префиксом сайта. Предоставляет различные уровни ограничений и параметры по умолчанию. Дополнительные сведения см . в IPV6_PROTECTION_LEVEL . |
IPV6_RECVIF | yes | yes | DWORD (логический) | Указывает, должен ли стек IP заполнять буфер элемента управления сведениями о том, какой интерфейс получил пакет с сокетом диаграммы данных. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные данные управления, содержащие интерфейс, в котором был получен пакет для сокетов диаграммы данных. Этот параметр позволяет интерфейсу IPv6, в котором был получен пакет в структуре WSAMSG. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). |
IPV6_RECVTCLASS | yes | yes | DWORD (логический) | Указывает, должен ли стек IP заполнять буфер управления сообщением, содержащим поле заголовка класса IPv6 трафика на полученной диаграмме данных. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные данные управления, содержащие значение поля заголовка класса IPv6 класса трафика полученной диаграммы данных. Этот параметр позволяет возвращать поле заголовка класса IPv6 класса трафика полученной диаграммы данных в структуре WSAMSG. Возвращаемый тип сообщения будет IPV6_TCLASS. Будут возвращены все биты DSCP и ECN поля класса трафика. Этот параметр действителен только для сокетов диаграммы данных (тип сокета должен быть SOCK_DGRAM). |
IPV6_RECVECN | yes | yes | DWORD (логический) | Указывает, должен ли стек IP заполнять буфер управления сообщением, содержащим биты ECN поля заголовка IPv6 класса трафика на полученной диаграмме данных. Если это значение равно true, функция LPFN_WSARECVMSG (WSARecvMsg) вернет необязательные данные управления, содержащие биты ECN поля поля заголовка класса IPv6 класса трафика полученной диаграммы данных. Этот параметр позволяет возвращать биты ECN поля заголовка класса IPv6 класса трафика полученной диаграммы данных в структуре WSAMSG. Возвращаемый тип сообщения будет IPV6_ECN. Будут возвращены все 2 биты ECN поля класса трафика. Этот параметр действителен только для диаграммы данных и необработанных сокетов (тип сокета должен быть SOCK_DGRAM или SOCK_RAW). Для обеспечения безопасности типов следует использовать функции WSAGetRecvIPEcn и WSASetRecvIPEcn вместо использования параметра сокета напрямую. |
IPV6_UNICAST_HOPS | yes | yes | DWORD | Возвращает или задает текущее значение TTL, связанное с сокетом IPv6 для одноадресного трафика. Недопустимо задать значение TTL больше 255. |
IPV6_UNICAST_IF | yes | yes | DWORD (IF_INDEX) | Возвращает или задает исходящий интерфейс для отправки трафика IPv6. Этот параметр не изменяет интерфейс по умолчанию для получения трафика IPv6. Этот параметр важен для многодомных компьютеров. Входное значение для настройки этого параметра — это 4-байтовый индекс интерфейса требуемого исходящего интерфейса в порядке байтов узла. Функцию GetAdaptersAddresses можно использовать для получения сведений об индексе интерфейса. Если значение optval равно нулю, интерфейс по умолчанию для отправки трафика IPv6 имеет значение unspecified. При получении этого параметра optval возвращает текущий индекс интерфейса по умолчанию для отправки трафика IPv6 в порядке байтов узла. |
IPV6_USER_MTU | yes | yes | DWORD | Получает или задает верхнюю границу на уровне IP MTU (в байтах) для заданного сокета. Если значение выше, чем оценка MTU системы (которую можно получить на подключенном сокете, запросив параметр сокета IPV6_MTU ), то этот параметр не действует. Если значение меньше, исходящие пакеты больше, чем это, будут фрагментированы или не будут отправляться в зависимости от значения IPV6_DONTFRAG. Значение по умолчанию — IP_UNSPECIFIED_USER_MTU (MAXULONG). Для обеспечения безопасности типов следует использовать функции WSAGetIPUserMtu и WSASetIPUserMtu вместо прямого использования параметра сокета. |
IPV6_V6ONLY | yes | yes | 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 |
Замечания
В пакете СРЕДСТВ разработки программного обеспечения Microsoft Windows (SDK), выпущенном для 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.
Требования
Требование | Значение |
---|---|
Верхний колонтитул |
|