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
идентификатор процесса, в случае потока указывается 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
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