TOMOYO: Add refcounter on string data.
[linux-2.6/libata-dev.git] / security / tomoyo / tomoyo.h
blobbf3986addc1a637017dd743752a39eef0ec0fe0c
1 /*
2 * security/tomoyo/tomoyo.h
4 * Implementation of the Domain-Based Mandatory Access Control.
6 * Copyright (C) 2005-2009 NTT DATA CORPORATION
8 * Version: 2.2.0 2009/04/01
12 #ifndef _SECURITY_TOMOYO_TOMOYO_H
13 #define _SECURITY_TOMOYO_TOMOYO_H
15 struct tomoyo_path_info;
16 struct path;
17 struct inode;
18 struct linux_binprm;
19 struct pt_regs;
21 int tomoyo_check_exec_perm(struct tomoyo_domain_info *domain,
22 const struct tomoyo_path_info *filename);
23 int tomoyo_check_open_permission(struct tomoyo_domain_info *domain,
24 struct path *path, const int flag);
25 int tomoyo_check_1path_perm(struct tomoyo_domain_info *domain,
26 const u8 operation, struct path *path);
27 int tomoyo_check_2path_perm(struct tomoyo_domain_info *domain,
28 const u8 operation, struct path *path1,
29 struct path *path2);
30 int tomoyo_check_rewrite_permission(struct tomoyo_domain_info *domain,
31 struct file *filp);
32 int tomoyo_find_next_domain(struct linux_binprm *bprm);
34 /* Index numbers for Access Controls. */
36 #define TOMOYO_TYPE_SINGLE_PATH_ACL 0
37 #define TOMOYO_TYPE_DOUBLE_PATH_ACL 1
39 /* Index numbers for File Controls. */
42 * TYPE_READ_WRITE_ACL is special. TYPE_READ_WRITE_ACL is automatically set
43 * if both TYPE_READ_ACL and TYPE_WRITE_ACL are set. Both TYPE_READ_ACL and
44 * TYPE_WRITE_ACL are automatically set if TYPE_READ_WRITE_ACL is set.
45 * TYPE_READ_WRITE_ACL is automatically cleared if either TYPE_READ_ACL or
46 * TYPE_WRITE_ACL is cleared. Both TYPE_READ_ACL and TYPE_WRITE_ACL are
47 * automatically cleared if TYPE_READ_WRITE_ACL is cleared.
50 #define TOMOYO_TYPE_READ_WRITE_ACL 0
51 #define TOMOYO_TYPE_EXECUTE_ACL 1
52 #define TOMOYO_TYPE_READ_ACL 2
53 #define TOMOYO_TYPE_WRITE_ACL 3
54 #define TOMOYO_TYPE_CREATE_ACL 4
55 #define TOMOYO_TYPE_UNLINK_ACL 5
56 #define TOMOYO_TYPE_MKDIR_ACL 6
57 #define TOMOYO_TYPE_RMDIR_ACL 7
58 #define TOMOYO_TYPE_MKFIFO_ACL 8
59 #define TOMOYO_TYPE_MKSOCK_ACL 9
60 #define TOMOYO_TYPE_MKBLOCK_ACL 10
61 #define TOMOYO_TYPE_MKCHAR_ACL 11
62 #define TOMOYO_TYPE_TRUNCATE_ACL 12
63 #define TOMOYO_TYPE_SYMLINK_ACL 13
64 #define TOMOYO_TYPE_REWRITE_ACL 14
65 #define TOMOYO_TYPE_IOCTL_ACL 15
66 #define TOMOYO_TYPE_CHMOD_ACL 16
67 #define TOMOYO_TYPE_CHOWN_ACL 17
68 #define TOMOYO_TYPE_CHGRP_ACL 18
69 #define TOMOYO_TYPE_CHROOT_ACL 19
70 #define TOMOYO_TYPE_MOUNT_ACL 20
71 #define TOMOYO_TYPE_UMOUNT_ACL 21
72 #define TOMOYO_MAX_SINGLE_PATH_OPERATION 22
74 #define TOMOYO_TYPE_LINK_ACL 0
75 #define TOMOYO_TYPE_RENAME_ACL 1
76 #define TOMOYO_TYPE_PIVOT_ROOT_ACL 2
77 #define TOMOYO_MAX_DOUBLE_PATH_OPERATION 3
79 #define TOMOYO_DOMAINPOLICY 0
80 #define TOMOYO_EXCEPTIONPOLICY 1
81 #define TOMOYO_DOMAIN_STATUS 2
82 #define TOMOYO_PROCESS_STATUS 3
83 #define TOMOYO_MEMINFO 4
84 #define TOMOYO_SELFDOMAIN 5
85 #define TOMOYO_VERSION 6
86 #define TOMOYO_PROFILE 7
87 #define TOMOYO_MANAGER 8
89 extern struct tomoyo_domain_info tomoyo_kernel_domain;
91 static inline struct tomoyo_domain_info *tomoyo_domain(void)
93 return current_cred()->security;
96 static inline struct tomoyo_domain_info *tomoyo_real_domain(struct task_struct
97 *task)
99 return task_cred_xxx(task, security);
102 #endif /* !defined(_SECURITY_TOMOYO_TOMOYO_H) */