next up previous
Next: Регистрация Системных Вызовов Up: Регистрация Модуля Previous: Callback-функции

Функции Регистрации

Для регистрации модуля вы сначала выбираете положительное, 32-х Битное целое со знаком число, это будет ваш персональный дескриптор. Он будет требоваться при всех дальнейших процедурах связанных с регистрацией. Если случится так, что выбранный вами дескриптор в данный момент используется, то вам будет отказано в регистрации со значением ошибки - RSBAC_EEXIST.

rsbac_reg_syscall_entry в struct содержит все необходимые значения. Функция может быть не учтена установкой ее указателя в значение NULL. Ваш модуль позднее будет идентифицирован в сообщениях REG и proc-файлах по его имени. Текущая максимальная длина имени 30 знаков.

Значение переключателя определяет, будет ваш модуль с самого начала включен или выключен. В целях безопасности переключение работает только в том случае, если оно задействовано в конфигурации ядра.

struct rsbac_reg_entry_t 

   { 

    rsbac_reg_handle_t                  handle; 

    char                                name[RSBAC_REG_NAME_LEN+1];

    rsbac_reg_request_func_t          * request_func; 

    rsbac_reg_set_attr_func_t         * set_attr_func; 

    rsbac_reg_need_overwrite_func_t   * need_overwrite_func; 

    rsbac_reg_write_func_t            * write_func; 

    rsbac_reg_mount_func_t            * mount_func; 

    rsbac_reg_umount_func_t           * umount_func; 

    boolean                             switch_on;  /* turned on initially? */ 

};

Заданная этой struct регистрация весьма легка. Обычно регистрация происходит в функции init_module() модуля ядра, де-регистрация в cleanup_module(). Выгрузка модуля, зарегистрированного REG, без де-регистрации убьет вашу систему!

Единственная вещь, добавленная к вхождению struct это значение версии REG, которое позволит производить проверку версий для модулей поставляемых в бинарном виде. Оно должно быть всегда установлено в значение RSBAC_REG_VERSION. Функция регистрации возвратит ва положительный дескриптор или отрицательный код ошибки (для дополнительной информации смотри include/rsbac/reg.h).

rsbac_reg_handle_t rsbac_reg_register 

  (       rsbac_version_t      version, 

   struct rsbac_reg_entry_t entry);

Единожды зарегистрировавшись вы можете включать или выключать модуль, если это задействовано в конфигурации ядра. Как правило, в случае успеха функция возвращает значение 0 и негативное в случае ошибки.

int rsbac_reg_switch 

  (rsbac_reg_handle_t handle, boolean value);

Дерегистрация очень проста.

int rsbac_reg_unregister 

  (rsbac_reg_handle_t handle);

ОК! Теперь ваша модель должна работать. Если она также регистрирует syscall- или proc-вхождения, то вы теперь можете взглянуть на его статус.

Позвольте мне намекнуть на примеры модулей - использование их, для начала, будет хорошим выбором и предохранит вас от излишнего печатания.


next up previous
Next: Регистрация Системных Вызовов Up: Регистрация Модуля Previous: Callback-функции