include/parsec/mac.h#
Документация по структурам и типам#
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;
Документация по функциям#
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идентификатор процесса, в случае потока указывается tidmacмандатная метка
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
Документация по макросам#
define MAC_FMT_TXT#
#define MAC_FMT_TXT 1
define MAC_FMT_TYPE#
#define MAC_FMT_TYPE 8