9 gr2000.k2c.wide.ad.jp (2001:200:0:8002::2000:1)
416.581 ms 422.430 ms 427.692 ms
10 2001:200:0:4819:203:47ff:fea5:3085 (2001:200:0:4819:203:47ff:fea5:3085)
417.169 ms 434.674 ms 424.037 ms
28.7. ΠΠ΅ΠΌΠΎΠ½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ICMP
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ICMP Π½Π° ΡΠΎΠΊΠ΅Ρ UDP Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ»ΠΎ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π―Π΄ΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ ICMP, Π½ΠΎ ΠΎΠ½ΠΈ ΡΠ΅Π΄ΠΊΠΎ Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎ Π½ΠΈΡ Π·Π½Π°ΡΡ. ΠΡ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² API ΡΠΎΠΊΠ΅ΡΠΎΠ² ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΠ° UDP ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ IP-Π°Π΄ΡΠ΅ΡΡ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 8.11). ΠΡΠΈΡΠΈΠ½Π° ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ recvfrom, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ errno, Π° Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π°Π΄ΡΠ΅ΡΠ°ΠΌ, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ·ΡΠ²Π°Π΅Ρ recvfrom, ΡΠΎ Π΄Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊΠ°Ρ ΠΈΠ· Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌ Π²ΡΠ·Π²Π°Π»Π° ΠΎΡΠΈΠ±ΠΊΡ.
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π½Π΅ ΡΡΠ΅Π±ΡΡΡΠ΅Π΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΠ΄ΡΠ΅. ΠΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π΄Π΅ΠΌΠΎΠ½ ICMP-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ icmpd, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Ρ ICMPv4 ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Ρ ICMPv6 ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅ ICMP-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΊ Π½ΠΈΠΌ ΡΠ΄ΡΠΎΠΌ. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΡΠΉ ΡΠΎΠΊΠ΅Ρ Π΄ΠΎΠΌΠ΅Π½Π° Unix, ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ (ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ bind) Ρ ΠΏΠΎΠ»Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ /tmp/icmpd ΠΈ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π΅Ρ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ (ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ connect) ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Ρ ΡΡΠΈΠΌ ΡΠΎΠΊΠ΅ΡΠΎΠΌ. Π‘Ρ Π΅ΠΌΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° Π½Π° ΡΠΈΡ. 28.7.
Π ΠΈΡ. 28.7. ΠΠ΅ΠΌΠΎΠ½ icmpd: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΠΎΠ²
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ UDP (ΡΠ²Π»ΡΡΡΠ΅Π΅ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½Π°) ΡΠ½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΎΠΊΠ΅Ρ UDP, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½ΠΎ Ρ ΠΎΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°ΡΡ (ΡΡΠ½ΠΊΡΠΈΡ bind) Ρ ΡΡΠΈΠΌ ΡΠΎΠΊΠ΅ΡΠΎΠΌ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Π·Π½Π°ΡΠ°Π΅ΠΌΡΠΉ ΠΏΠΎΡΡ; Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ, Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠ½Π΅Π½ΠΎ Π΄Π°Π»Π΅Π΅. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄ΠΎΠΌΠ΅Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ Unix ΠΈ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΡΡΡ (ΡΡΠ½ΠΊΡΠΈΡ connect) ΠΊ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ»Π½ΠΎΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° Π΄Π΅ΠΌΠΎΠ½Π°. ΠΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΈΡ. 28.8.
Π ΠΈΡ. 28.8. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ²ΠΎΠΉ ΡΠΎΠΊΠ΅Ρ UDP ΠΈ Π΄ΠΎΠΌΠ΅Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ Unix
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΒ» ΡΠ²ΠΎΠΉ UDP-ΡΠΎΠΊΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½Ρ ΡΠ΅ΡΠ΅Π· ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Π° Unix, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ², ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 15.7. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠΏΠΈΡ ΡΠΎΠΊΠ΅ΡΠ°, ΡΠ°ΠΊ ΡΡΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ getsockname ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΡΠΎΠΊΠ΅ΡΠΎΠΌ. ΠΠ° ΡΠΈΡ. 28.9 ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΡΠΎΠΊΠ΅ΡΠ°.
Π ΠΈΡ. 28.9. ΠΠ΅ΡΠ΅ΡΡΠ»ΠΊΠ° ΡΠΎΠΊΠ΅ΡΠ° UDP Π΄Π΅ΠΌΠΎΠ½Ρ ΡΠ΅ΡΠ΅Π· Π΄ΠΎΠΌΠ΅Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ Unix
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ UDP-ΡΠΎΠΊΠ΅ΡΠΎΠΌ, ΠΎΠ½ Π·Π°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠ²ΠΎΡ ΠΊΠΎΠΏΠΈΡ ΡΠΎΠΊΠ΅ΡΠ°, ΠΈ ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΡΡ Π΅ΠΌΠ΅, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½Π° ΡΠΈΡ. 28.8.
ΠΠ ΠΠΠΠ§ΠΠΠΠΠΡΠ»ΠΈ ΡΠ·Π΅Π» ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΠΈΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 15.8), ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ»Π°ΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π΄Π΅ΠΌΠΎΠ½Ρ. ΠΠ°ΡΠ΅ΠΌ Π΄Π΅ΠΌΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ.
Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π»ΡΠ±ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ICMP, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ Π² ΠΎΡΠ²Π΅Ρ Π½Π° UDP-Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΡΠ»Π°Π½Π½ΡΡ Ρ ΠΏΠΎΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²ΡΠ·Π°Π½ Ρ UDP-ΡΠΎΠΊΠ΅ΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΄Π΅ΠΌΠΎΠ½ ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ (ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΡΡΡ Π½ΠΈΠΆΠ΅) ΡΠ΅ΡΠ΅Π· Π΄ΠΎΠΌΠ΅Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ Unix. Π’ΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ select ΠΈΠ»ΠΈ poll, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ±ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π»ΠΈΠ±ΠΎ Π½Π° UDP-ΡΠΎΠΊΠ΅Ρ, Π»ΠΈΠ±ΠΎ Π½Π° Π΄ΠΎΠΌΠ΅Π½Π½ΡΠΉ ΡΠΎΠΊΠ΅Ρ Unix.
Π‘Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ Π΄Π°Π½Π½ΡΠΉ Π΄Π΅ΠΌΠΎΠ½, Π° Π·Π°ΡΠ΅ΠΌ ΠΈ ΡΠ°ΠΌ Π΄Π΅ΠΌΠΎΠ½. Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 28.20 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠΉ ΠΈ ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ ΠΊ Π΄Π΅ΠΌΠΎΠ½Ρ.
ΠΠΈΡΡΠΈΠ½Π³ 28.20. ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» unpicmpd.h
//icmpd/unpicmpd.h
1 #ifndef __unpicmp_h
2 #define __unpicmp_h
3 #include "unp.h"
4 #define ICMPD_PATH "/tmp/icmpd" /* ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ° */
5 struct icmpd_err {
6 int icmpd_errno; /* EHOSTUNREACH, EMSGSIZE, ECONNREFUSED */
7 char icmpd_type; /* ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΏ ICMPv[46] */
8 char icmpd_code; /* ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ ICMPv[46] */
9 socklen_t icmpd_len; /* Π΄Π»ΠΈΠ½Π° ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΡ sockaddr{} */
10 struct sockaddr_storage icmpd_dest; /* ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ°
sockaddr_storage */
11 };
12 #endif /* __unpicmp_h */
4-11 ΠΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΡΡΡΡΠΊΡΡΡΠ° icmpd_err, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠ°Ρ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ°Π·Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ ICMP-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
6-8 ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΈΠΏΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ICMPv4 ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΡΠΈΡΠ»Π΅Π½Π½ΠΎ (Π° ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ) ΠΎΡ ΡΠΈΠΏΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ICMPv6 (ΡΠΌ. ΡΠ°Π±Π». Π.5 ΠΈ Π.6). ΠΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° (type) ΠΈ ΠΊΠΎΠ΄Π° (code), Π½ΠΎ ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ errno (icmpd_errno), Π²Π·ΡΡΡΠ΅ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΡΠΎΠ»Π±ΡΠ° ΡΠ°Π±Π». Π.5 ΠΈ Π.6. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ Π·Π°Π²ΠΈΡΡΡΠΈΡ ΠΎΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ICMPv4 ΠΈ ICMPv6. Π ΡΠ°Π±Π». 28.1 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ICMP ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ errno.
Π’Π°Π±Π»ΠΈΡΠ° 28.1. ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ icmpd_errno, ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ICMPv4 ΠΈ ICMPv6
icmpd_errno ΠΡΠΈΠ±ΠΊΠ° ICMPv4 ΠΡΠΈΠ±ΠΊΠ° ICMPv6 ECONNREFUSED Port unreachable (ΠΠΎΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½) Port unreachable (ΠΠΎΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½) EMSGSIZE Fragmentation needed but DF bit set (ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, Π½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π±ΠΈΡ DF) Packet too big (Π‘Π»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ) EHOSTUNREACH Time exceeded (ΠΡΠ΅Π²ΡΡΠ΅Π½ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ) Time exceeded (ΠΡΠ΅Π²ΡΡΠ΅Π½ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ) EHOSTUNREACH Source quench (ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ) EHOSTUNREACH ΠΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ (Destination unreachable) ΠΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ (Destination unreachable)ΠΠ΅ΠΌΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΡΡ ΡΠΈΠΏΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ ICMP:
1. Β«Port unreachableΒ» (ΠΠΎΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½) ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠΎΠΊΠ΅Ρ Π½Π΅ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΏΠΎΡΡΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π½Π° IP-Π°Π΄ΡΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ.
2. Β«Packet too bigΒ» (Π‘Π»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΎΠΉ MTU. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ API, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ UDP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΎΠΉ MTU. ΠΡΠ»ΠΈ ΡΠ΄ΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΎΠΉ MTU Π΄Π»Ρ UDP, ΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ICMP Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΡΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΎΠΉ MTU Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΄ΡΠ°, Π½ΠΎ UDP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠ»Π°Π²ΡΠ΅Π΅ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΡ, Π½Π΅ ΠΈΠ·Π²Π΅ΡΠ°Π΅ΡΡΡ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°ΠΉΠΌ-Π°ΡΡΠ° ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΠΎΡΠ»Π°ΡΡ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΡ, ΠΈ ΡΠΎΠ³Π΄Π° ΡΠ΄ΡΠΎ Π½Π°ΠΉΠ΄Π΅Ρ Π½ΠΎΠ²ΠΎΠ΅ (ΠΌΠ΅Π½ΡΡΠ΅Π΅) Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ MTU Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈΡΡΠ΅Ρ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΡ. ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΅ΠΌΡ ΡΡΠΊΠΎΡΠΈΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΡ, ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎΡΡΠ»Π°Π΅ΠΌΠΎΠΉ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΡ.
3. ΠΡΠΈΠ±ΠΊΠ° Β«Time exceededΒ» (ΠΡΠ΅Π²ΡΡΠ΅Π½ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ) ΠΎΠ±ΡΡΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Ρ ΠΊΠΎΠ΄ΠΎΠΌ 0 ΠΈ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π»ΠΈΠ±ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ TTL (Π² ΡΠ»ΡΡΠ°Π΅ IPv4), Π»ΠΈΠ±ΠΎ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ°Π½Π·ΠΈΡΠ½ΡΡ ΡΠ·Π»ΠΎΠ² (Π² ΡΠ»ΡΡΠ°Π΅ IPv6) Π΄ΠΎΡΡΠΈΠ³Π»ΠΎ Π½ΡΠ»Ρ. ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΠ΅Ρ ΠΎ Π·Π°ΡΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΠΈ ΠΌΠ°ΡΡΡΡΡΠ°, ΡΡΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ.
4. ΠΡΠΈΠ±ΠΊΠ° Β«Source quenchΒ» (ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ) ICMPv4 Ρ ΠΎΡΡ ΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π² RFC 1812 [6] ΠΊΠ°ΠΊ ΡΡΡΠ°ΡΠ΅Π²ΡΠ°Ρ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΡΠ»Π°Π½Π° ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠ°ΠΌΠΈ (ΠΈΠ»ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ·Π»Π°ΠΌΠΈ, Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΡ). Π’Π°ΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΠ·Π½Π°ΡΠ°ΡΡ, ΡΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ ΠΎΡΠ±ΡΠΎΡΠ΅Π½, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ. Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² Π²Π΅ΡΡΠΈΠΈ IPv6 Π½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ.
5. ΠΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ (Destination unreachble) ΠΎΠ·Π½Π°ΡΠ°ΡΡ, ΡΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ ΡΠ±ΡΠΎΡΠ΅Π½.
10 ΠΠ»Π΅ΠΌΠ΅Π½Ρ icmpd_dest ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ° ΡΠΎΠΊΠ΅ΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ IP-Π°Π΄ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΈ ΠΏΠΎΡΡΠ° Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΡ, ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π²ΡΠ΅ΠΉ ICMP-ΠΎΡΠΈΠ±ΠΊΡ. ΠΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΎΠΉ sockaddr_in Π΄Π»Ρ ICMPv4 Π»ΠΈΠ±ΠΎ ΡΡΡΡΠΊΡΡΡΠΎΠΉ sockaddr_in6 Π΄Π»Ρ ICMPv6. ΠΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π΄Π΅ΠΉΡΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π°Π΄ΡΠ΅ΡΠ°ΠΌ, ΠΎΠ½ΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΡΠΎΠΊΠ΅ΡΠ° Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π°Π΄ΡΠ΅Ρ. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Ρ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΡΡΡΠΊΡΡΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΡΠΎΠΊΠ΅ΡΠ°, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°Π²Π½ΠΈΡΡ Π΅Π΅ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·Π²Π°Π»Π° ΠΎΡΠΈΠ±ΠΊΡ. Π’ΠΈΠΏ sockaddr_storage ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π² ΡΡΡΡΠΊΡΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π°Π΄ΡΠ΅ΡΠ° Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ.
ΠΡ ΠΎ-ΠΊΠ»ΠΈΠ΅Π½Ρ UDP, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Π΄Π΅ΠΌΠΎΠ½ icmpd
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌ Π½Π°Ρ ΡΡ ΠΎ-ΠΊΠ»ΠΈΠ΅Π½Ρ UDP (ΡΡΠ½ΠΊΡΠΈΡ dg_cli) Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ Π΄Π΅ΠΌΠΎΠ½Π° icmpd. Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 28.21 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΏΠ΅ΡΠ²Π°Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠΈΡΡΠΈΠ½Π³ 28.21. ΠΠ΅ΡΠ²Π°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ dg_cli
//icmpd/dgcli01.c
1 #include "unpicmpd.h"