Параметр | Тип данных | Описание |
---|---|---|
IP_MULTICAST_IF | struct in_addr | Интерфейс по умолчанию для исходящих многоадресных пакетов |
IP_MULTICAST_TTL | u_char | TTL для исходящих многоадресных пакетов |
IP_MULTICAST_LOOP | u_char | Включение и отключение закольцовки для исходящих многоадресных пакетов |
IPV6_MULTICAST_IF | u_int | Интерфейс по умолчанию для исходящих многоадресных пакетов |
IPV6_MULTICAST_HOPS | int | Предел количества прыжков для и сходящих многоадресных пакетов |
IPV6_MULTICAST_LOOP | u_int | Включение и отключение закольцовки для исходящих многоадресных пакетов |
Таблица 21.3. Параметры сокета, определяющие членство в группах многоадресной передачи
Параметр | Тип данных | Описание |
---|---|---|
IP_ADD_MEMBERSHIP | struct ip_mreq | Присоединение к группе многоадресной передачи |
IP_DROP_MEMBERSHIP | struct ip_mreq | Отсоединение от группы многоадресной передачи |
IP_BLOCK_SOURCE | struct ip_mreq_source | Блокирование источника из группы, к которой выполнено присоединение |
IP_UNBLOCK_SOURCE | struct ip_mreq_source | Разблокирование ранее заблокированного источника |
IP_ADD_SOURCE_MEMBERSHIP | struct ip_mreq_source | Присоединение к группе источника |
IP_DROP_SOURCE_MEMBERSHIP | struct ip_mreq_source | Отсоединение от группы источника |
IPV6_JOIN_GROUP | struct ipv6_mreq | Присоединение к группе многоадресной передачи |
IPV6_LEAVE_GROUP | struct ipv6_mreq | Отсоединение от группы многоадресной передачи |
MCAST_JOIN_GROUP | struct group_req | Присоединение к группе многоадресной передачи |
MCAST_LEAVE_GROUP | struct group_req | Отсоединение от группы многоадресной передачи |
MCAST_BLOCK_SOURCE | struct group_source_req | Блокирование источника из группы, к которой выполнено присоединение |
MCAST_UNBLOCK_SOURCE | struct group_source_req | Разблокирование ранее заблокированного источника |
MCAST_JOIN_SOURCE_GROUP | struct group_source_req | Присоединение к группе источника |
MCAST_LEAVE_SOURCE_GROUP | struct group_source_req | Отсоединение от группы источника |
Параметры IPv4 TTL и закольцовки получают аргумент типа u_char, в то время как IPv6-параметры предела транзитных узлов и закольцовки получают аргументы соответственно типа int и u_int. Распространенная ошибка программирования с параметрами многоадресной передачи IPv4 — вызов функции setsockopt с аргументом типа int для задания TTL или закольцовки (что не разрешается [128, с. 354–355]), поскольку большинство других параметров сокетов, представленных в табл. 7.1, имеют целочисленные аргументы. Изменения, внесенные в IPv6, должны уменьшить вероятность ошибок.
Теперь мы опишем каждый из девяти параметров сокетов более подробно. Обратите внимание, что эти девять параметров концептуально идентичны в IPv4 и IPv6 — различаются только их названия и типы аргументов.