ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ IPv4 TTL ΠΈ Π·Π°ΠΊΠΎΠ»ΡΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΈΠΏΠ° u_char, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ IPv6-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠ΅Π΄Π΅Π»Π° ΡΡΠ°Π½Π·ΠΈΡΠ½ΡΡ ΡΠ·Π»ΠΎΠ² ΠΈ Π·Π°ΠΊΠΎΠ»ΡΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΈΠΏΠ° int ΠΈ u_int. Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ IPv4 β Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ setsockopt Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΈΠΏΠ° int Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ TTL ΠΈΠ»ΠΈ Π·Π°ΠΊΠΎΠ»ΡΡΠΎΠ²ΠΊΠΈ (ΡΡΠΎ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ [128, Ρ. 354β355]), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΎΠΊΠ΅ΡΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π² ΡΠ°Π±Π». 7.1, ΠΈΠΌΠ΅ΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ Π² IPv6, Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΎΠΏΠΈΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π΄Π΅Π²ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΎΠΊΠ΅ΡΠΎΠ² Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΈ Π΄Π΅Π²ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ Π² IPv4 ΠΈ IPv6 β ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΈ ΡΠΈΠΏΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
β IP_ADD_MEMBERSHIP, IPV6_JOIN_GROUP, MCAST_JOIN_GROUP. ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² β ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊ Π³ΡΡΠΏΠΏΠ΅ Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅. ΠΡ Π·Π°Π΄Π°Π΅ΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΅Π³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π°Π΄ΡΠ΅ΡΠΎΠ² Π΄Π»Ρ IPv4 ΠΈΠ»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ IPv6. Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠΈ ΡΡΡΡΠΊΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ΠΊ Π³ΡΡΠΏΠΏΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ΠΎΡ Π½Π΅Π΅:
struct ip_mreq {
struct in_addr imr_multiaddr; /* IPv4-Π°Π΄ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ
ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΊΠ»Π°ΡΡΠ° D */
struct in_addr imr_interface; /* IPv4-Π°Π΄ΡΠ΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° */
};
struct ipv6_mreq {
struct in6_addr ipv6mr_multiaddr; /* IPv6-Π°Π΄ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ
ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ */
unsigned int ipv6mr_interface; /* ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈΠ»ΠΈ 0 */
};
struct group_req {
unsigned int gr_interface; /* ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈΠ»ΠΈ 0 */
struct sockaddr_storage gr_group; /* Π°Π΄ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ
IPv4 ΠΈΠ»ΠΈ IPv6 */
};
ΠΡΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ (INADDR_ANY Π΄Π»Ρ IPv4) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ IPv6, ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠ΄ΡΠΎΠΌ.
ΠΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ, ΡΡΠΎ ΡΠ·Π΅Π» ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊ Π΄Π°Π½Π½ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅, Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΊ ΡΡΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅ Π½Π° ΡΡΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅.
Π‘ΠΎΠΊΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π³ΡΡΠΏΠΏΠ°ΠΌ, Π½ΠΎ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ ΠΈΠ»ΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΡΠ·Π»Π΅ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ΅ΡΠ΅Π²ΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ: ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΎΠΊΠ΅Ρ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π°Π΄ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ, Π½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π½Π°Π»ΠΈΡΠΈΡ ΡΠ°Π·Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΡΡΠΎΡ ΡΠΎΠΊΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ ΠΊ ΡΠ°Π·Π½ΡΠΌ Π³ΡΡΠΏΠΏΠ°ΠΌ.
ΠΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΈΠ· ΡΠ°Π±Π». 21.1, ΡΡΠΎ ΡΠ°ΡΡΡΡ Π°Π΄ΡΠ΅ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ IPv6 ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ°ΠΊ ΠΌΡ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΈ, Π°Π΄ΡΠ΅ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ IPv6, ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π»Π°ΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (network time protocol, NTP) Ρ ΠΎΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π²ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ NTP Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΡ ΠΊ Π°Π΄ΡΠ΅ΡΡ ff01:101 (Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΠ·Π»Π°), ff02:101 (Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΡΠΈ), ff05:101 (Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΠ°ΠΉΡΠ°), ff08:101 (Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ) ΠΈ ff0e:101 (Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ). ΠΡΠ΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠΎΠΊΠ΅ΡΠ΅. ΠΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΎΠΊΠ΅ΡΠ° IPV6_PKTINFO (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 22.8), ΡΡΠΎΠ±Ρ ΡΡΠ½ΠΊΡΠΈΡ recvmsg Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»Π° Π°Π΄ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΡ.
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΉ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ IP ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΎΠΊΠ΅ΡΠ° (MCAST_JOIN_GROUP) Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ IPv6 Π·Π° ΡΠ΅ΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ sockaddr_storage Π²ΠΌΠ΅ΡΡΠΎ in6_addr Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π°Π΄ΡΠ΅ΡΠ° ΡΠ΄ΡΡ. Π‘ΡΡΡΠΊΡΡΡΠ° sockaddr_storage (ΡΠΌ. Π»ΠΈΡΡΠΈΠ½Π³ 3.4) Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²Π΅Π»ΠΈΠΊΠ° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° Π»ΡΠ±ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ.
ΠΠ ΠΠΠΠ§ΠΠΠΠΠ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΠΈΡΠ»ΠΎ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅ΡΠ°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ. ΠΡΠ΅Π΄Π΅Π» ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ IP_MAX_MEMBERSHIPS (Π΄Π»Ρ ΠΠ΅ΡΠΊΠ»ΠΈ-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ 20). Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ½ΡΡΠΎ, Π² Π΄ΡΡΠ³ΠΈΡ ΠΎΠ½ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΠ΅ΡΠΊΠ»ΠΈ-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ.
ΠΠΎΠ³Π΄Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, Π½Π΅ Π·Π°Π΄Π°Π½, ΠΠ΅ΡΠΊΠ»ΠΈ-ΡΠ΄ΡΠ° ΠΈΡΡΡ Π°Π΄ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π² ΠΎΠ±ΡΡΠ½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ IP ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ [128, Ρ. 357]. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΌΠ°ΡΡΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ (ΡΠΎ Π΅ΡΡΡ ΠΌΠ°ΡΡΡΡΡ Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ 224.0.0.0/8 Π΄Π»Ρ IPv4) Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ»Ρ IPv6 ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ β ΠΏΡΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ, Π° Π½Π΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ, ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ Π² IPv4. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π° Π½Π΅Π½ΡΠΌΠ΅ΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°Ρ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠΊΠ°Ρ ΡΡΠ½Π½Π΅Π»Π΅ΠΉ.
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π² API ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ IPv6 ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° IPV6_ADD_MEMBERSHIP, Π° Π½Π΅ IPV6_JOIN_GROUP. ΠΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ. ΠΠΏΠΈΡΠ°Π½Π½Π°Ρ Π΄Π°Π»Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΡ mcast_join ΡΠΊΡΡΠ²Π°Π΅Ρ ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠΈΠ΅.
β IP_DROP_MEMBERSHIP, IPV6_LEAVE_GROUP ΠΈ MCAST_LEAVE_GROUP. ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² β Π²ΡΡ ΠΎΠ΄ ΠΈΠ· Π³ΡΡΠΏΠΏΡ Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅. Π‘ ΡΡΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΠΎΠΊΠ΅ΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠ΅ ΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ Π΄Π»Ρ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊ Π³ΡΡΠΏΠΏΠ΅. ΠΡΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π΅ Π·Π°Π΄Π°Π½ (ΡΠΎ Π΅ΡΡΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ INADDR_ANY Π΄Π»Ρ IPv4 ΠΈΠ»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ Π΄Π»Ρ IPv6), ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠ΅Π΅ Ρ ΠΈΡΠΊΠΎΠΌΡΠΌ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² Π³ΡΡΠΏΠΏΡ.
ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΡΡ ΠΊ Π³ΡΡΠΏΠΏΠ΅, Π½ΠΎ Π½Π΅ Π²ΡΡ ΠΎΠ΄ΠΈΠ» ΠΈΠ· Π³ΡΡΠΏΠΏΡ ΡΠ²Π½ΠΎ, ΡΠΎ ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΡΠΎΠΊΠ΅ΡΠ° (Π»ΠΈΠ±ΠΎ ΡΠ²Π½ΠΎΠΌ, Π»ΠΈΠ±ΠΎ ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°) Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² Π³ΡΡΠΏΠΏΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π½Π° ΡΠ·Π»Π΅ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ Π³ΡΡΠΏΠΏΠ΅, ΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ·Π΅Π» ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠ»Π΅Π½ΠΎΠΌ Π³ΡΡΠΏΠΏΡ, ΠΏΠΎΠΊΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ Π²ΡΠΉΠ΄Π΅Ρ ΠΈΠ· Π³ΡΡΠΏΠΏΡ.
ΠΠ ΠΠΠΠ§ΠΠΠΠΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π² API ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ IPv6 ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° IPV6_DROP_MEMBERSHIP, Π° Π½Π΅ IPV6_LEAVE_GROUP. ΠΠΎ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ. ΠΠΏΠΈΡΠ°Π½Π½Π°Ρ Π΄Π°Π»Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΡ mcast_leave ΡΠΊΡΡΠ²Π°Π΅Ρ ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠΈΠ΅.
β IP_BLOCK_SOURCE, MCAST_BLOCK_SOURCE. ΠΠ»ΠΎΠΊΠΈΡΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° ΡΠ΅ΡΠ΅Π· Π΄Π°Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΡΠ»ΠΈ Π²ΡΠ΅ ΡΠΎΠΊΠ΅ΡΡ, ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠ΅ ΠΊ Π³ΡΡΠΏΠΏΠ΅, Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ, ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΡ ΠΎ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠ°ΡΠΈΠΊΠ°, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ° Π² ΡΠ΅ΡΠΈ. ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΅Π³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π°Π΄ΡΠ΅ΡΠΎΠ² Π΄Π»Ρ IPv4 ΠΈΠ»ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π΄Π»Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ API. ΠΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π²Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π½ΠΈΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΡ:
struct ip_mreq_source {
struct in_addr imr_multiaddr; /* IPv4-Π°Π΄ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ
ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΊΠ»Π°ΡΡΠ° D */
struct in_addr imr_sourceaddr; /* IPv4-Π°Π΄ΡΠ΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° */
struct in_addr imr_interface; /* IPv4-Π°Π΄ΡΠ΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° */
};
struct group_source_req {
unsigned int gsr_interface; /* ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈΠ»ΠΈ 0 */
struct sockaddr_storage gsr_group; /* Π°Π΄ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ
ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ IPv4 ΠΈΠ»ΠΈ IPv6 */
struct sockaddr_storage gsr_source; /* Π°Π΄ΡΠ΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° IPv4
ΠΈΠ»ΠΈ IPv6 */
};
ΠΡΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ (INADDR_ANY Π΄Π»Ρ IPv4) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ IPv6, ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠ΄ΡΠΎΠΌ.
ΠΠ°ΠΏΡΠΎΡ Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ Π³ΡΡΠΏΠΏ, ΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠΈΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ Π±ΡΠ»ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Ρ ΠΊ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ IP_ADD_MEMBERSHIP, IPV6_JOIN_GROUP ΠΈΠ»ΠΈ MCAST_JOIN_GROUP.
β IP_UNBLOCK_SOURCE, MCAST_UNBLOCK_SOURCE. Π Π°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π½Π΅Π΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°. ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠ΅ ΠΆΠ΅, ΡΡΠΎ ΠΈ Ρ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π²ΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° IP_BLOCK_SOURCE ΠΈΠ»ΠΈ MCAST_BLOCK_SOURCE.
ΠΡΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ (INADDR_ANY Π΄Π»Ρ IPv4) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ IPv6, ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠ΄ΡΠΎΠΌ.
β IP_ADD_SOURCE_MEMBERSHIΠ , MCAST_JOIN_SOURCE_GROUP. ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊ Π³ΡΡΠΏΠΏΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅. Π‘ ΡΡΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ΅ ΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΡΡΠΎ ΠΈ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°. Π‘ΠΎΠΊΠ΅Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ ΠΊ ΡΠΎΠΉ ΠΆΠ΅ Π³ΡΡΠΏΠΏΠ΅ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° (ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ IP_ADD_MEMBERSHIP, IPV6_JOIN_GROUP, MCAST_JOIN_GROUP).
ΠΡΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ (INADDR_ANY Π΄Π»Ρ IPv4) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ IPv6, ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΡΠ΄ΡΠΎΠΌ.
β IP_DROP_SOURCE_MEMBERSHIP, MCAST_LEAVE_SOURCE_GROUP. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Π³ΡΡΠΏΠΏΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ΅ ΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΡΡΠΎ ΠΈ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΠΎΠΊΠ΅ΡΠΎΠ². ΠΡΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ INADDR_ANY Π΄Π»Ρ IPv4 ΠΈΠ»ΠΈ 0 Π΄Π»Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ³ΠΎ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ API), ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²Π°Ρ Π³ΡΡΠΏΠΏΠ°, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠ°Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ.