include/parsec/mac.h#

Structures and Types Documentation#

typedef mac_cat_t#

typedef uint64_t mac_cat_t;

typedef mac_lev_t#

typedef uint8_t mac_lev_t;

typedef mac_t#

typedef struct __mac* mac_t;

typedef mac_type_t#

typedef uint32_t mac_type_t;

Functions Documentation#

function mac_cmp#

Сравнивает мандатные метки

int mac_cmp (
    mac_t src,
    mac_t dst
)

Parameters:

  • mac_src мандатная метка

  • mac_dst мандатная метка

Returns:

возвращает -1 если метка src меньше метки dst, 0 если метки равны, возвращает 1 если метка src больше метки dst, -2 если метки не сравнимы. Метки являются несравнимыми если результат сравнений по уровням не совпадает с результатом сравнений по категориям и/или хотя бы одна из меток имеет специальный тип (тип не совпадающий с MAC_TYPE_SUBJECT или MAC_TYPE_OBJECT)

function mac_empty#

Проверка мандатной метки, что ee уровень, категория и тип равны 0.

int mac_empty (
    mac_t mac
)

Parameters:

  • mac мандатная метка

Returns:

возвращает 0, при ошибке -1, в случае когда mac равен NULL, вернет 0

function mac_free#

Освобождение памяти мандатной метки

void mac_free (
    mac_t
)

Parameters:

  • mac мандатная метка

function mac_from_text#

Заполняет мандатную метку на основе строки text.

int mac_from_text (
    mac_t mac,
    const char *text
)

Parameters:

  • mac мандатная метка

  • text указатель на строку, описывающую уровень, категорию и тип мандатной метки формат строки принимает вид: <Уровень>:<Категории>[:<Тип>]

Returns:

в случае успеха возвращает 0, при ошибки -1

function mac_get_cat#

Получаем мандатную категорию метки

mac_cat_t mac_get_cat (
    mac_t mac
)

Parameters:

  • mac мандатная метка

Returns:

текущее значение атрибута cat в случае успеха, при ошибке 0, в случае когда mac равен NULL так же вернет 0

function mac_get_fd#

Получаем мандатную метку объекта(дескриптор)

mac_t mac_get_fd (
    int fd
)

Parameters:

  • fd дескриптор файла или сокета

Returns:

возвращает мандатную метку, при ошибке NULL

function mac_get_file#

Получаем мандатную метку файла

mac_t mac_get_file (
    const char *filename
)

Parameters:

  • filename имя файла

Returns:

возвращает мандатную метку, при ошибке NULL

function mac_get_lev#

Получаем мандатный уровень метки

mac_lev_t mac_get_lev (
    mac_t mac
)

Parameters:

  • mac мандатная метка

Returns:

текущее значение атрибута lev в случае успеха, при ошибке 0, в случае когда mac равен NULL так же вернет 0

function mac_get_pid#

Получаем мандатную метку субъекта(процесса/потока)

mac_t mac_get_pid (
    pid_t pid
)

Parameters:

  • pid идентификатор процесса, в случае потока указывается tid

Returns:

мандатная метка mac в случае успеха, при ошибке NULL

function mac_get_proc#

Получаем мандатную метку текущего процесса

static inline mac_t mac_get_proc (
    void
)

Returns:

мандатная метка mac в случае успеха, при ошибке NULL

function mac_get_type#

Получаем тип мандатной метки

mac_type_t mac_get_type (
    mac_t mac
)

Parameters:

  • mac мандатная метка

Returns:

текущий тип для мандатной метки, при ошибке вернется 0

function mac_init#

Создание мандатной метки

mac_t mac_init (
    mac_type_t
)

Parameters:

  • type тип мандатной метки

Returns:

указатель на мандатную метку в случае успеха, иначе NULL

function mac_set_cat#

Устанавливает мандатную категорию метки

int mac_set_cat (
    mac_t mac,
    mac_cat_t
)

Parameters:

  • mac мандатная метка

  • cat категория

Returns:

0 в случае успеха, при ошибке -1

function mac_set_fd#

Устанавливаем мандатную метку объекту(дескриптор)

int mac_set_fd (
    int fd,
    mac_t mac
)

Parameters:

  • fd дескриптор файла или сокета

  • mac мандатная метка

Returns:

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

function mac_set_file#

Устанавливаем мандатную метку файлу

int mac_set_file (
    const char *filename,
    mac_t mac
)

Parameters:

  • filename имя файла

  • mac мандатная метка

Returns:

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

function mac_set_lev#

Устанавливает мандатный уровень метки

int mac_set_lev (
    mac_t mac,
    mac_lev_t
)

Parameters:

  • mac мандатная метка

  • lev уровень

Returns:

0 в случае успеха, при ошибке -1

function mac_set_pid#

Устанавливаем мандатную метку субъекту(процессу/потоку)

int mac_set_pid (
    pid_t pid,
    mac_t mac
)

Parameters:

  • pid идентификатор процесса, в случае потока указывается tid

  • mac мандатная метка

Returns:

0 в случае успеха, при ошибке -1

function mac_set_proc#

Устанавливаем мандатную метку текущему процессу

static inline int mac_set_proc (
    mac_t mac
)

Parameters:

  • mac мандатная метка

Returns:

0 в случае успеха, при ошибке -1

function mac_set_type#

Устанавливает тип мандатной метки

int mac_set_type (
    mac_t mac,
    mac_type_t
)

Parameters:

  • mac мандатная метка

  • type тип метки(объект, субъект, атрибуты)

Returns:

0 в случае успеха, при ошибке -1

function mac_to_text#

Получаем текстовое представление мандатной метки

char * mac_to_text (
    mac_t,
    ssize_t *size,
    int flags
)

Parameters:

  • mac мандатная метка

  • size указатель на переменную, принимающую длину выделенной строки (может быть NULL) без учета завершающего нулевого символа

  • flags флаги, которые указывают на особенности формирования строки

Returns:

в случае успеха возвращает указатель на выделенную строку типа char* текстового представления компонент метки, в случае ошибки вернет NULL

function mac_to_wtext#

Получаем текстовое представление мандатной метки

wchar_t * mac_to_wtext (
    mac_t mac,
    ssize_t *size,
    int flags
)

Parameters:

  • mac мандатная метка

  • size указатель на переменную, принимающую длину выделенной строки (может быть NULL) без учета завершающего нулевого символа

  • flags флаги, которые указывают на особенности формирования строки

Returns:

в случае успеха возвращает указатель на выделенную строку типа wchar_t* текстового представления компонент метки, в случае ошибки вернет NULL

function mac_valid#

Проверка мандатной метки на валидность

int mac_valid (
    mac_t
)

Parameters:

  • mac мандатная метка

Returns:

в случае успеха вернет 0, в обратном случае -1, метка считается невалидной если ее тип не MAC_TYPE_OBJECT и её атрибуты типа не равны 0

Macros Documentation#

define MAC_FMT_CAT#

#define MAC_FMT_CAT 4

define MAC_FMT_LEV#

#define MAC_FMT_LEV 2

define MAC_FMT_NUM#

#define MAC_FMT_NUM 0

define MAC_FMT_TXT#

#define MAC_FMT_TXT 1

define MAC_FMT_TYPE#

#define MAC_FMT_TYPE 8

define MAC_TYPE#

#define MAC_TYPE (
    v
) ((v)&0xf0000)

define MAC_TYPE_EQU#

#define MAC_TYPE_EQU (MAC_TYPE_OBJECT | MAC_ATTR_IGNOREW | MAC_ATTR_IGNORER | MAC_ATTR_IGNOREX)

define MAC_TYPE_EQU_W#

#define MAC_TYPE_EQU_W (MAC_TYPE_OBJECT | MAC_ATTR_IGNOREW)

define MAC_TYPE_LOW#

#define MAC_TYPE_LOW (MAC_TYPE_OBJECT | MAC_ATTR_IGNORER | MAC_ATTR_IGNOREX)

define MAC_TYPE_OBJECT#

#define MAC_TYPE_OBJECT 0x10000

define MAC_TYPE_SUBJECT#

#define MAC_TYPE_SUBJECT 0x00000 /* null flags */

define MAC_TYPE_VAL#

#define MAC_TYPE_VAL (
    v
) ((v)>>16)

define __MAC_TYPES#

#define __MAC_TYPES