36 allocations. 0 bytes
added at Thu Jun 5 21:01:31 2003, first used at Thu Jun 5 21:15:07 2003
Source address: 127.0.0.1/128 (IP proto 255)
Dest address: 127.0.0.1/128 (IP proto 255)
Authentication key. 160 bits: 0x0123456789abcdef0123456789abcdef01234567
ΠΠ· ΡΡΠΎΠ³ΠΎ Π΄Π°ΠΌΠΏΠ° Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠ΄ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Ρ 0 Π½Π° 255. ΠΡΠΎ Π°ΡΡΠ΅ΡΠ°ΠΊΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π° Π½Π΅ ΠΎΠ±ΡΠ΅Π΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΡΠΎΠΊΠ΅ΡΠΎΠ² PF_KEY. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ΄ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎ Π΄Π»ΠΈΠ½Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° Ρ 32 Π½Π° 128. ΠΡΠΎ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌΠΈ IPv4 ΠΈ IPv6. Π―Π΄ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ (Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ 19), ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΄Π°ΠΌΠΏΠ°. ΠΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ (ΠΈΡ Π΄Π»ΠΈΠ½Π° ΠΈΠΌΠ΅Π΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ ΠΏΠΎΠ»Π΅). ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ (Π»ΠΈΡΡΠΈΠ½Π³ 19.7), ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
ΠΠΈΡΡΠΈΠ½Π³ 19.7. Π‘ΡΡΡΠΊΡΡΡΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ
struct sadb_lifetime {
u_int16_t sadb_lifetime_len; /* Π΄Π»ΠΈΠ½Π° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ / 8 */
u_int16_t sadb_lifetime_exttype; /* SADB_EXT_LIFETIME_{SOFT,HARD,CURRENT} */
u_int32_t sadb_lifetime_allocations; /* ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ, ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ
ΡΠΎΡΠ΅ΠΊ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² */
u_int64_t sadb_lifetime_bytes; /* ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡΠΎΠ² */
u_int64_t sadb_lifetime_addtime; /* Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π»ΠΈΠ±ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
Π΄ΠΎ ΡΡΡΠ°ΡΠ΅Π²Π°Π½ΠΈΡ */
u_int64_t sadb_lifetime_usetime; /* Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΡ ΠΎΡ
ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎ ΡΡΡΠ°ΡΠ΅Π²Π°Π½ΠΈΡ */
};
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ Π±ΡΠ²Π°ΡΡ ΡΡΠ΅Ρ ΡΠΈΠΏΠΎΠ². Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΡ SADB_LIFETIME_SOFT ΠΈ SADB_LIFETIME_HARD Π·Π°Π΄Π°ΡΡ Π³ΠΈΠ±ΠΊΠΎΠ΅ ΠΈ ΠΆΠ΅ΡΡΠΊΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ SADB_EXPIRE ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ΄ΡΠΎΠΌ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠ΅Π²ΡΡΠ΅Π½ΠΈΡ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ. ΠΠΎΡΠ»Π΅ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΆΠ΅ΡΡΠΊΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅ΡΡΡ. Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ SADB_LIFETIME_CURRENT Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΎΡΠ²Π΅Ρ Π½Π° SADB_DUMP, SADB_EXPIRE ΠΈ SADB_GET ΠΈ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ.
19.5. ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ SA
ΠΠ»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΌΠ΅Π½Π° ΠΊΠ»ΡΡΠ΅ΠΉ. ΠΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΡΠΈΠΏΠ° IKE (RFC 2409 [43]).
ΠΠ ΠΠΠΠ§ΠΠΠΠΠ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Π³ΡΡΠΏΠΏΠ° IETF ΠΏΠΎ IPSec ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»Π° Π·Π°ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° IKE.
ΠΠ΅ΠΌΠΎΠ½, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ, ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΡΡ Π² ΡΠ΄ΡΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ SADB_REGISTER, ΡΠΊΠ°Π·ΡΠ²Π°Ρ Π² ΠΏΠΎΠ»Π΅ sadb_msg_satype (ΡΠΌ. ΡΠ°Π±Π». 19.2) ΡΠΈΠΏ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ½ ΡΠΌΠ΅Π΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ. ΠΡΠ»ΠΈ Π΄Π΅ΠΌΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ SADB_REGISTER, Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ ΡΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΏ SA. Π ΠΎΡΠ²Π΅ΡΠ½ΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ SADB_REGISTER ΡΠ΄ΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ (Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ), Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»ΠΈΠ½Ρ ΠΊΠ»ΡΡΠ΅ΠΉ Π΄Π»Ρ ΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ². Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΎΠΉ sadb_supported, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 19.8. Π‘ΡΡΡΠΊΡΡΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π² ΠΏΠΎΠ»ΡΡ sadb_alg.
ΠΠΈΡΡΠΈΠ½Π³ 19.8. Π‘ΡΡΡΠΊΡΡΡΠ°, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ
struct sadb_supported {
u_int16_t sadb_supported_len; /* Π΄Π»ΠΈΠ½Π° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΏΠΈΡΠΊΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² / 8 */
u_int16_t sadb_supported_exttype; /* SADB_EXT_SUPPORTED_{AUTH,ENCRYPT} */
u_int32_t sadb_supported_reserved; /* Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ */
};
/* Π΄Π°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² */
struct sadb_alg {
u_int8_t sadb_alg_id; /* ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΈΠ· ΡΠ°Π±Π». 19.5 */
u_int8_t sadb_alg_ivlen; /* Π΄Π»ΠΈΠ½Π° IV ΠΈΠ»ΠΈ Π½ΡΠ»Ρ */
u_int16_t sadb_alg_minbits; /* ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π΄Π»ΠΈΠ½Π° ΠΊΠ»ΡΡΠ° */
u_int16_t sadb_alg_maxbits; /* ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π΄Π»ΠΈΠ½Π° ΠΊΠ»ΡΡΠ° */
u_int16_t sadb_alg_reserved; /* Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ */
};
ΠΠΎΡΠ»Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° sadb_supported ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅ sadb_alg Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. ΠΠ° ΡΠΈΡ. 19.1 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡΠ΅Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ SA ΡΠΈΠΏΠ° SADB_SATYPE_ESP.
Π ΠΈΡ. 19.1. ΠΠ°Π½Π½ΡΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ ΡΠ΄ΡΠΎΠΌ Π² ΠΎΡΠ²Π΅Ρ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ SADB_REGISTER
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½Π°Ρ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 19.9, ΠΏΡΠΎΡΡΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΡΡ Π² ΡΠ΄ΡΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΎΡΠ²Π΅Ρ ΡΠ΄ΡΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ².
ΠΠΈΡΡΠΈΠ½Π³ 19.9. Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ Π΄Π΅ΠΌΠΎΠ½Π°-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°
//key/register.c
1 void
2 sadb_register(int type)
3 {
4 int s;
5 char buf[4096]; /* XXX */
6 struct sadb_msg msg;
7 int goteof;
8 int mypid;
9 s = Socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
10 mypid = getpid();
11 /* ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° Π·Π°ΠΏΡΠΎΡΠ° SADB_REGISTER */
12 bzero(&msg, sizeof(msg));
13 msg.sadb_msg_version = PF_KEY_V2;
14 msg.sadb_msg_type = SADB_REGISTER;
15 msg.sadb_msg_satype = type;
16 msg.sadb_msg_len = sizeof(msg) / 8;
17 msg.sadb_msg_pid = mypid;
18 printf("Sending register message:\n");
19 print_sadb_msg(&msg, sizeof(msg));
20 Write(s, &msg, sizeof(msg));
21 printf("\nReply returned:\n");
22 /* Π§ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ²ΠΎΠ΄ ΠΎΡΠ²Π΅ΡΠ° SADB_REGISTER, ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΠΏΡΠΎΡΠΈΡ
ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ */
23 for (;;) {
24 int msglen;
25 struct sadb_msg *msgp;
26 msglen = Read(s, &buf, sizeof(buf));
27 msgp = (struct sadb_msg*)&buf;
28 if (msgp->sadb_msg_pid == mypid &&
29 msgp->sadb_msg_type == SADB_REGISTER) {
30 print_sadb_msg(msgp, msglen);
31 break;
32 }
33 }
34 close(s);
35 }
ΠΡΠΊΡΡΡΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΠ° PF_KEY1-9 ΠΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠΎΠΊΠ΅Ρ PF_KEY.
Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ PID10 ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ΄ΡΠΎ Π±ΡΠ΄Π΅Ρ Π°Π΄ΡΠ΅ΡΠΎΠ²Π°ΡΡ Π½Π°ΠΌ ΡΠ²ΠΎΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π΅Π³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΠΎΡΠ±ΠΈΡΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠ΅ Π½Π°Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ SADB_REGISTER11-17 ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ SADB_DUMP, ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ SADB_REGISTER Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ. ΠΡ ΠΎΠ±Π½ΡΠ»ΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠ΅ Π½Π°Ρ ΠΏΠΎΠ»Ρ ΡΡΡΡΠΊΡΡΡΡ.
ΠΡΠ²ΠΎΠ΄ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ18-20 ΠΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ print_sadb_msg, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΎΠΊΠ΅Ρ.
ΠΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠ°23-30 ΠΡ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠΎΠΊΠ΅ΡΠ°, ΠΎΠΆΠΈΠ΄Π°Ρ ΠΎΡΠ²Π΅ΡΠ° Π½Π° Π½Π°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ. ΠΡΠ²Π΅Ρ Π°Π΄ΡΠ΅ΡΠΎΠ²Π°Π½ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ SADB_REGISTER. ΠΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ print_sadb_msg.
ΠΡΠΈΠΌΠ΅Ρ
ΠΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ register Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² RFC 2367.
macosx % register -t ah
Sending register message:
SADB Message Register, errno 0, satype IPsec AH, seq 0, pid 20746
Reply returned:
SADB Message Register, errno 0, satype IPsec AH, seq 0, pid 20746
Supported authentication algorithms:
HMAC-MD5 ivlen 0 bits 128-128
HMAC-SHA-1 ivlen 0 bits 160-160
Keyed MD5 ivlen 0 bits 128-128
Keyed SHA-1 ivlen 0 bits 160-160
Null ivlen 0 bits 0-2048
SHA2-256 ivlen 0 bits 256-256
SHA2-384 ivlen 0 bits 384-384
SHA2-512 ivlen 0 bits 512-512
Supported encryption algorithms:
DES-CBC ivlen 8 bits 64-64
3DES-CBC ivlen 8 bits 192-192
Null ivlen 0 bits 0-2048
Blowfish-CBC ivlen 8 bits 40-448
CAST128-CBC ivlen 8 bits 40-128
AES ivlen 16 bits 128-256
ΠΡΠ»ΠΈ ΡΠ΄ΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ²ΡΠ·Π°ΡΡΡΡ Ρ ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊΠΎΠΌ, Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π½ΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ²ΠΎΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΡΠ΄ΡΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π½Π° Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π²ΡΠΈΠ΅ΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠΊΠ΅ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ SADB_ACQUIRE, Π² ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΠ΅ ΡΠ΄ΡΠΎΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ Π΄Π»ΠΈΠ½Ρ ΠΊΠ»ΡΡΠ΅ΠΉ. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄ΡΡΠ² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠ΅ΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊΠ°. ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ, Π΄Π»ΠΈΠ½Ρ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π° ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ³Π΄Π° Π΄Π΅ΠΌΠΎΠ½-ΠΊΠ»ΡΡΠ½ΠΈΠΊ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ SADB_ACQUIRE, ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΠΊΠ»ΡΡΠ°, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠ΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠ΄ΡΠΎΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΉ, ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΡΠΎΡ ΠΊΠ»ΡΡ Π² ΡΠ΄ΡΠΎ. ΠΠ»Ρ Π²ΡΠ±ΠΎΡΠ° SPI ΠΈΠ· Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π΄Π΅ΠΌΠΎΠ½ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ SADB_GETSPI. Π ΠΎΡΠ²Π΅Ρ Π½Π° ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΄ΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ SADB_SASTATE_LARVAL. ΠΠ°ΡΠ΅ΠΌ Π΄Π΅ΠΌΠΎΠ½ ΡΠΎΠ³Π»Π°ΡΠΎΠ²ΡΠ²Π°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΌ ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΡΠ΄ΡΠΎΠΌ SPI, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ SADB_UPDATE Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Π΅Π³ΠΎ Π² ΡΠ°Π±ΠΎΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ (SADB_SASTATE_MATURE). ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ½Π°Π±ΠΆΠ°ΡΡΡΡ Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈ ΠΆΠ΅ΡΡΠΊΠΈΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ Π½Π° Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ. ΠΠΎΠ³Π΄Π° ΠΈΡΡΠ΅ΠΊΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΈΡ ΡΡΠΎΠΊΠΎΠ², ΡΠ΄ΡΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ SADB_EXPIRE, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅. ΠΠΎ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ SADB_SASTATE_DYING, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΎ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΠΆΠ΅ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠΎ ΠΆΠ΅ΡΡΠΊΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ SADB_SASTATE_DEAD, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ΄Π°Π»Π΅Π½ΠΎ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .