static struct lsm_drv apparmor_drv = {
.name = "AppArmor",
+ .enabled = apparmor_enabled,
.process_label_get = apparmor_process_label_get,
.process_label_set = apparmor_process_label_set,
};
INFO("Initialized LSM security driver %s", drv->name);
}
+int lsm_enabled()
+{
+ if (drv)
+ return drv->enabled();
+ return 0;
+}
+
char *lsm_process_label_get(pid_t pid)
{
if (!drv) {
struct lsm_drv {
const char *name;
+ int (*enabled)(void);
char *(*process_label_get)(pid_t pid);
int (*process_label_set)(const char *label, int use_default);
};
#if HAVE_APPARMOR || HAVE_SELINUX
void lsm_init(void);
+int lsm_enabled(void);
char *lsm_process_label_get(pid_t pid);
int lsm_process_label_set(const char *label, int use_default);
int lsm_proc_mount(struct lxc_conf *lxc_conf);
void lsm_proc_unmount(struct lxc_conf *lxc_conf);
#else
static inline void lsm_init(void) { }
+static inline int lsm_enabled(void) { return 0; }
static inline char *lsm_process_label_get(pid_t pid) { return NULL; }
static inline int lsm_process_label_set(char *label, int use_default) { return 0; }
static inline int lsm_proc_mount(struct lxc_conf *lxc_conf) { return 0; }
return 0;
}
+static int nop_enabled(void)
+{
+ return 0;
+}
+
static struct lsm_drv nop_drv = {
.name = "nop",
+ .enabled = nop_enabled,
.process_label_get = nop_process_label_get,
.process_label_set = nop_process_label_set,
};
static struct lsm_drv selinux_drv = {
.name = "SELinux",
+ .enabled = is_selinux_enabled,
.process_label_get = selinux_process_label_get,
.process_label_set = selinux_process_label_set,
};