Commit | Line | Data |
---|---|---|
63e2b423 JJ |
1 | /* |
2 | * AppArmor security module | |
3 | * | |
4 | * This file contains AppArmor filesystem definitions. | |
5 | * | |
6 | * Copyright (C) 1998-2008 Novell/SUSE | |
7 | * Copyright 2009-2010 Canonical Ltd. | |
8 | * | |
9 | * This program is free software; you can redistribute it and/or | |
10 | * modify it under the terms of the GNU General Public License as | |
11 | * published by the Free Software Foundation, version 2 of the | |
12 | * License. | |
13 | */ | |
14 | ||
15 | #ifndef __AA_APPARMORFS_H | |
16 | #define __AA_APPARMORFS_H | |
17 | ||
9acd494b | 18 | enum aa_fs_type { |
e74abcf3 | 19 | AA_FS_TYPE_BOOLEAN, |
a9bf8e9f | 20 | AA_FS_TYPE_STRING, |
e74abcf3 | 21 | AA_FS_TYPE_U64, |
9acd494b KC |
22 | AA_FS_TYPE_FOPS, |
23 | AA_FS_TYPE_DIR, | |
24 | }; | |
25 | ||
26 | struct aa_fs_entry; | |
27 | ||
28 | struct aa_fs_entry { | |
29 | const char *name; | |
30 | struct dentry *dentry; | |
31 | umode_t mode; | |
32 | enum aa_fs_type v_type; | |
33 | union { | |
e74abcf3 | 34 | bool boolean; |
a9bf8e9f | 35 | char *string; |
e74abcf3 | 36 | unsigned long u64; |
9acd494b KC |
37 | struct aa_fs_entry *files; |
38 | } v; | |
39 | const struct file_operations *file_ops; | |
40 | }; | |
41 | ||
e74abcf3 KC |
42 | extern const struct file_operations aa_fs_seq_file_ops; |
43 | ||
44 | #define AA_FS_FILE_BOOLEAN(_name, _value) \ | |
45 | { .name = (_name), .mode = 0444, \ | |
46 | .v_type = AA_FS_TYPE_BOOLEAN, .v.boolean = (_value), \ | |
47 | .file_ops = &aa_fs_seq_file_ops } | |
a9bf8e9f KC |
48 | #define AA_FS_FILE_STRING(_name, _value) \ |
49 | { .name = (_name), .mode = 0444, \ | |
50 | .v_type = AA_FS_TYPE_STRING, .v.string = (_value), \ | |
51 | .file_ops = &aa_fs_seq_file_ops } | |
e74abcf3 KC |
52 | #define AA_FS_FILE_U64(_name, _value) \ |
53 | { .name = (_name), .mode = 0444, \ | |
54 | .v_type = AA_FS_TYPE_U64, .v.u64 = (_value), \ | |
55 | .file_ops = &aa_fs_seq_file_ops } | |
9acd494b KC |
56 | #define AA_FS_FILE_FOPS(_name, _mode, _fops) \ |
57 | { .name = (_name), .v_type = AA_FS_TYPE_FOPS, \ | |
58 | .mode = (_mode), .file_ops = (_fops) } | |
59 | #define AA_FS_DIR(_name, _value) \ | |
60 | { .name = (_name), .v_type = AA_FS_TYPE_DIR, .v.files = (_value) } | |
61 | ||
63e2b423 JJ |
62 | extern void __init aa_destroy_aafs(void); |
63 | ||
64 | #endif /* __AA_APPARMORFS_H */ |