Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«UNIX: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сСтСвых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 145

Автор Уильям БтивСнс

Π’Π°Π±Π»ΠΈΡ†Π° 19.2. Π’ΠΈΠΏΡ‹ соглашСний ΠΎ бСзопасности

Π’ΠΈΠΏ соглашСния ОписаниС SADB_SATYPE_AH ΠΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ IPSec SADB_SATYPE_ESP ESP IPSec SADB_SATYPE_MIP Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (Mobile IP) SADB_SATYPE_OSPFV2 АутСнтификация OSPFv2 SADB_SATYPE_RIPV2 АутСнтификация RIPv2 SADB_SATYPE_RSVP АутСнтификация RSVP SADB_SATYPE_UNSPECIFIED He ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½

Π’Π°Π±Π»ΠΈΡ†Π° 19.3. Π’ΠΈΠΏΡ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ PF_KEY

Π’ΠΈΠΏ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ОписаниС Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° SADB_EXT_ADDRESS_DST АдрСс получатСля SA sadb_address SADB_EXT_ADDRESS_PROXY АдрСс прокси-сСрвСра SA sadb_address SADB_EXT_ADDRESS_SRC АдрСс отправитСля SA sadb_address SADB_EXT_IDENTITY_DST Π›ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ получатСля sadb_ident SADB_EXT_IDENTITY_SRC Π›ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ отправитСля sadb_ident SADB_EXT_KEY_AUTH ΠšΠ»ΡŽΡ‡ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ sadb_key SADB_EXT_KEY_ENCRYPT ΠšΠ»ΡŽΡ‡ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ sadb_key SADB_EXT_LIFETIME_CURRENT Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ врСмя ΠΆΠΈΠ·Π½ΠΈ SA sadb_lifetime SADB_EXT_LIFETIME_HARD ЖСсткоС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° врСмя ΠΆΠΈΠ·Π½ΠΈ SA sadb_lifetime SADB_EXT_LIFETIME_SOFT Π“ΠΈΠ±ΠΊΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° врСмя ΠΆΠΈΠ·Π½ΠΈ SA sadb_lifetime SADB_EXT_PROPOSAL ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠ°Ρ ситуация sadb_prop SADB_EXT_SA БоглашСниС ΠΎ бСзопасности sadb_sa SADB_EXT_SENSITIVITY Π’Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ SA sadb_sens SADB_EXT_SPIRANGE Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ допустимых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ SPI sadb_spirange SADB_EXT_SUPPORTED_AUTH ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ sadb_supported SADB_EXT_SUPPORTED_ENCRYPT ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ sadb_supported

Рассмотрим нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² сообщСний ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… опСрациях с сокСтами управлСния ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ.

19.3. Π”Π°ΠΌΠΏ Π±Π°Π·Ρ‹ соглашСний ΠΎ бСзопасности

Для Π΄Π°ΠΌΠΏΠ° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π±Π°Π·Ρ‹ соглашСний ΠΎ бСзопасности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ сообщСниС SADB_DUMP. Π­Ρ‚ΠΎ самоС простоС ΠΈΠ· сообщСний, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, Π° состоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· 16-Π±Π°ΠΉΡ‚ΠΎΠ²ΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° sadb_msg. Когда процСсс отправляСт сообщСниС SADB_DUMP ядру Ρ‡Π΅Ρ€Π΅Π· сокСт управлСния ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ, ядро ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ сообщСний SADB_DUMP ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ сокСту. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сообщСнии содСрТится ΠΎΠ΄Π½Π° запись Π±Π°Π·Ρ‹ SADB. ΠšΠΎΠ½Π΅Ρ† ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ обозначаСтся сообщСниСм со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 0 Π² ΠΏΠΎΠ»Π΅ sadb_msg_seq.

ПолС sadb_msg_satype позволяСт Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ записи ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ЗначСния этого поля слСдуСт Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· Ρ‚Π°Π±Π». 19.2. ΠŸΡ€ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ значСния SADB_SATYPE_UNSPEC Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ всС записи Π±Π°Π·Ρ‹. НС всС Ρ‚ΠΈΠΏΡ‹ соглашСний ΠΎ бСзопасности ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ всСми рСализациями. РСализация KAME ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ соглашСния, относящиСся ΠΊ IPSec (SADB_SATYPE_AH ΠΈ SADB_SATYPE_ESP), поэтому ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°ΠΌΠΏ записСй SADB_SATYPE_RIPV2 Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° ошибка EINVAL. Если ΠΆΠ΅ записСй, относящихся ΠΊ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ, Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π΅Ρ‚ (Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ), функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ENOENT.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π°Ρ записи ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… бСзопасности, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π² листингС 19.2.

Листинг 19.2. Π”Π°ΠΌΠΏ Π±Π°Π·Ρ‹ соглашСний ΠΎ бСзопасности

//key/dump.c

 1 void

 2 sadb_dump(int type)

 3 {

 4  int s;

 5  char buf[4096];

 6  struct sadb_msg msg;

 7  int goteof;


 8  s = Socket(PF_KEY, SOCK_RAW, PF_KEY_V2);


 9  /* Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° запроса SADB_DUMP */

10  bzero(&msg, sizeof(msg));

11  msg.sadb_msg_version = PF_KEY_V2;

12  msg.sadb_msg_type = SADB_DUMP;

13  msg.sadb_msg_satype = type;

14  msg.sadb_msg_len = sizeof(msg) / 8;

15  msg.sadb_msg_pid = getpid();

16  printf("Sending dump message:\n");

17  print_sadb_msg(&msg, sizeof(msg));

18  Write(s, &msg, sizeof(msg));


19  printf("\nMessages returned:\n");

20  /* считываниС ΠΈ Π²Ρ‹Π²ΠΎΠ΄ всСх ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² SADB_DUMP */

21  goteof = 0;

22  while (goteof == 0) {

23   int msglen;

24   struct sadb_msg *msgp;


25   msglen = Read(s, &buf, sizeof(buf));

26   msgp = (struct sadb_msg*)&buf;

27   print_sadb_msg(msgp, msglen);

28   if (msgp->sadb_msg_seq == 0)

29    goteof = 1;

30  }

31  close(s);

32 }


33 int

34 main(int argc, char **argv)

35 {

36  int satype = SADB_SATYPE_UNSPEC;

37  int c;


38  opterr = 0; /* ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ записи Π² stderr для getopt() */

39  while ((c = getopt(argc, argv, "t:")) != -1) {

40   switch (c) {

41   case 't':

42    if ((satype = getsatypebyname(optarg)) == -1)

43     err_quit("invalid -t option %s", optarg);

44    break;


45   default:

46    err_quit("unrecognized option: %c", c);

47   }

48  }


49  sadb_dump(satype);

50 }

Π’ этом листингС ΠΌΡ‹ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ встрСчаСмся с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ getopt, опрСдСляСмой стандартом POSIX. Π’Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ прСдставляСт собой строку символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ приняты Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки: Π² нашСм случаС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ t. Π—Π° символом слСдуСт Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅, ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ Π·Π° ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΎ числСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ нСсколько Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², эти Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒΡΡ. НапримСр, Π² листингС 29.3 ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ строка ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄ 0i:l:v. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΡŽΡ‡ΠΈ i ΠΈ l ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, Π° 0 ΠΈ v β€” Π½Π΅ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ.

Π­Ρ‚Π° функция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ <unistd.h>.

extern char *optarg;

extern int optind, opterr, optopt;

ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ getopt ΠΌΡ‹ устанавливаСм opterr Π² Π½ΡƒΠ»ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ функция Π½Π΅ направляла сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π² стандартный ΠΏΠΎΡ‚ΠΎΠΊ Π²Ρ‹Π²ΠΎΠ΄Π° этих сообщСний, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π’ стандартС POSIX говорится, Ρ‡Ρ‚ΠΎ Ссли ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅, Ρ‚ΠΎ это Ρ‚ΠΎΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ сообщСний Π² стандартный ΠΏΠΎΡ‚ΠΎΠΊ сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ всС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π΄Π°Π½Π½ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ сокСта PF_KEY

1-8 Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ сокСт PF_KEY. Для этого Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ сокСт Π΄Π°Π΅Ρ‚ доступ ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ.

Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ запроса SADB_DUMP

9-15 ΠœΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с обнулСния структуры sadb_msg, Ρ‡Ρ‚ΠΎ позволяСт Π½Π°ΠΌ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ заполняСм всС ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ нас поля ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Если ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ сокСта Π² качСствС Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° использовалась константа PF_KEY_V2, всС сообщСния, направляСмыС Π² Ρ‚Π°ΠΊΠΎΠΉ сокСт, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ PF_KEY_V2. НуТный Π½Π°ΠΌ Ρ‚ΠΈΠΏ сообщСния β€” SADB_DUMP. Π”Π»ΠΈΠ½Π° сообщСния устанавливаСтся Ρ€Π°Π²Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π±Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для запроса Π΄Π°ΠΌΠΏΠ° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. НаконСц, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ процСсса устанавливаСтся Ρ€Π°Π²Π½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ нашСго процСсса. Π­Ρ‚ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ условиС для всСх сообщСний.

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния SADB_DUMP

16-18 ΠœΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌ сообщСниС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ print_sadb_msg. ΠœΡ‹ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌ листинг этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ достаточно Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΈ Π½Π΅ прСдставляСт особого интСрСса, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π½Π°Π±ΠΎΡ€ свободно распространяСмых ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, доступный для скачивания с сайта этой ΠΊΠ½ΠΈΠ³ΠΈ. Ѐункция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ сообщСниС, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΎΡ‚ ядра, ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ всю ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽΡΡ Π² этом сообщСнии ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ для чтСния Ρ„ΠΎΡ€ΠΌΠ΅.