今天概要的介绍一下mls_type.h头文件
mls_type.h
文件描述
对于mls_type.h文件,其完整文件名为security/selinux/ss/mls_types.h,该文件定义了MLS策略使用的类型。
主要变量定义
该文件定义了三个宏,分别为:mls_level_incomp()、mls_evel_between()及mls_range_contains(),其作用分别是:
宏名宏的作用
mls_level_incomp() 判断两个安全级别是否不可比
mls_level_between() 判断一个安全级别是否位于另外两个安全级别之间
mls_level_contains() 判断两个安全级别之间的包含关系
结构体定义
对于该文件中定义的结构体mls_level及mls_range等详见“Linux多安全策略和动态安全策略框架机制模块代码分析报告”一文,这里不再赘述。
外部函数
对于该文件涉及的外部函数功能,参见“Linux多安全策略和动态安全策略框架机制模块代码分析报告”一文,这里不再赘述。
内部函数
对于该文件中定义的各内部函数,在前边的一系列文章中有详细的解释。
核心代码注释
该文件中只定义了mls_level_isvalid()和mls_context_to_sid()两个函数,它们用来表示安全级别间的关系,下面主要对这两个函数进行详细解释。
mls_level_isvalid()
static inline int mls_level_eq(struct mls_level *l1, struct mls_level *l2)
{
/*
* 如果安全级别l1的敏感属性等于安全级别l2的敏感属性并且l1的类别集
* 合等于l2的类别集合,则返回真。
*/
return ((l1->sens == l2->sens) &&ebitmap_cmp(&l1->cat, &l2->cat));
}
static inline int mls_level_dom(struct mls_level *l1, struct mls_level *l2)
{
/*
* 如果安全级别l1的敏感属性大于等于安全级别l2的敏感属性并且l1的类
* 别集合包含l2的类别集合,则返回真。
*/
return ((l1->sens >= l2->sens) &&ebitmap_contains(&l1->cat, &l2->cat));