19.2. Чтение и запись

We use cookies. Read the Privacy and Cookie Policy

19.2. Чтение и запись

Все сообщения в сокете управления ключами должны иметь одинаковые заголовки, соответствующие листингу 19.1[1]. Сообщение может сопровождаться различными расширениями в зависимости от наличия дополнительной информации или необходимости ее предоставления. Все нужные структуры определяются в заголовочном файле <net/pfkeyv2.h>. Все сообщения и расширения подвергаются 64-разрядному выравниванию и дополняются до длин, кратных 64 разрядам. Все поля длины оперируют 64-разрядными единицами, то есть значение длины 1 означает реальную длину 8 байт. Расширение, не содержащее достаточного количества данных, дополняется произвольным образом до длины, кратной 64 разрядам.

Значение sadb_msg_type задает одну из десяти команд управления ключами. Типы сообщений перечислены в табл. 19.1. За заголовком sadb_msg может следовать произвольное количество расширений. Большинство сообщений имеют обязательные и необязательные расширения, которые будут описаны в соответствующих разделах. Шестнадцать типов расширений с названиями структур, их определяющих, перечислены в табл. 19.3.

Листинг 19.1. Заголовок сообщения управления ключами

struct sadb_msg {

 u_int8_t  sadb_msg_version;  /* PF_KEY_V2 */

 u_int8_t  sadb_msg_type;     /* см. табл. 19.1 */

 u_int8_t  sadb_msg_errno;    /* код ошибки */

 u_int8_t  sadb_msg_satype;   /* см. табл. 19.2 */

 u_int16_t sadb_msg_len;      /* длина заголовка и расширений / 8 */

 u_int16_t sadb_msg_reserved; /* нуль при передаче, игнорируется

                                 при получении */

 u_int32_t sadb_msg_seq;      /* порядковый номер */

 u_int32_t sadb_msg_pid;      /* идентификатор процесса отправителя

                                 или получателя */

};

Таблица 19.1. Типы сообщений

Тип сообщения К ядру От ядра Описание SADB_ACQUIRE • • Запрос на создание записи в SADB SADB_ADD • • Добавление записи в полную базу безопасности SADB_DELETE • • Удаление записи SADB_DUMP • • Дамп SADB (используется для отладки) SADB_EXPIRE • Уведомление об истечении срока действия записи SADB_FLUSH • • Очистка всей базы безопасности SADB_GET • • Получение записи SADB_GETSPI • • Выделение SPI для создания записи SADB SADB_REGISTER • Регистрация для ответа на SADB_ACQUIRE SADB_UPDATE • • Обновление записи в частичной SADB

Таблица 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

Рассмотрим несколько примеров сообщений и расширений, используемых в типичных операциях с сокетами управления ключами.

Данный текст является ознакомительным фрагментом.