5 #define DX_TAG(in) (IS_TAGGED(in))
8 #ifdef CONFIG_DX_TAG_NFSD
15 #ifdef CONFIG_TAGGING_NONE
17 #define MAX_UID 0xFFFFFFFF
18 #define MAX_GID 0xFFFFFFFF
20 #define INOTAG_TAG(cond, uid, gid, tag) (0)
22 #define TAGINO_UID(cond, uid, tag) (uid)
23 #define TAGINO_GID(cond, gid, tag) (gid)
28 #ifdef CONFIG_TAGGING_GID16
30 #define MAX_UID 0xFFFFFFFF
31 #define MAX_GID 0x0000FFFF
33 #define INOTAG_TAG(cond, uid, gid, tag) \
34 ((cond) ? (((gid) >> 16) & 0xFFFF) : 0)
36 #define TAGINO_UID(cond, uid, tag) (uid)
37 #define TAGINO_GID(cond, gid, tag) \
38 ((cond) ? (((gid) & 0xFFFF) | ((tag) << 16)) : (gid))
43 #ifdef CONFIG_TAGGING_ID24
45 #define MAX_UID 0x00FFFFFF
46 #define MAX_GID 0x00FFFFFF
48 #define INOTAG_TAG(cond, uid, gid, tag) \
49 ((cond) ? ((((uid) >> 16) & 0xFF00) | (((gid) >> 24) & 0xFF)) : 0)
51 #define TAGINO_UID(cond, uid, tag) \
52 ((cond) ? (((uid) & 0xFFFFFF) | (((tag) & 0xFF00) << 16)) : (uid))
53 #define TAGINO_GID(cond, gid, tag) \
54 ((cond) ? (((gid) & 0xFFFFFF) | (((tag) & 0x00FF) << 24)) : (gid))
59 #ifdef CONFIG_TAGGING_UID16
61 #define MAX_UID 0x0000FFFF
62 #define MAX_GID 0xFFFFFFFF
64 #define INOTAG_TAG(cond, uid, gid, tag) \
65 ((cond) ? (((uid) >> 16) & 0xFFFF) : 0)
67 #define TAGINO_UID(cond, uid, tag) \
68 ((cond) ? (((uid) & 0xFFFF) | ((tag) << 16)) : (uid))
69 #define TAGINO_GID(cond, gid, tag) (gid)
74 #ifdef CONFIG_TAGGING_INTERN
76 #define MAX_UID 0xFFFFFFFF
77 #define MAX_GID 0xFFFFFFFF
79 #define INOTAG_TAG(cond, uid, gid, tag) \
82 #define TAGINO_UID(cond, uid, tag) (uid)
83 #define TAGINO_GID(cond, gid, tag) (gid)
88 #ifndef CONFIG_TAGGING_NONE
89 #define dx_current_fstag(sb) \
90 ((sb)->s_flags & MS_TAGGED ? dx_current_tag(): 0)
92 #define dx_current_fstag(sb) (0)
95 #ifndef CONFIG_TAGGING_INTERN
96 #define TAGINO_TAG(cond, tag) (0)
98 #define TAGINO_TAG(cond, tag) ((cond) ? (tag) : 0)
101 #define INOTAG_UID(cond, uid, gid) \
102 ((cond) ? ((uid) & MAX_UID) : (uid))
103 #define INOTAG_GID(cond, uid, gid) \
104 ((cond) ? ((gid) & MAX_GID) : (gid))
107 static inline uid_t dx_map_uid(uid_t uid)
109 if ((uid > MAX_UID) && (uid != -1))
111 return (uid & MAX_UID);
114 static inline gid_t dx_map_gid(gid_t gid)
116 if ((gid > MAX_GID) && (gid != -1))
118 return (gid & MAX_GID);
122 #ifdef CONFIG_VSERVER_LEGACY
123 #define FIOC_GETTAG _IOR('x', 1, long)
124 #define FIOC_SETTAG _IOW('x', 2, long)
125 #define FIOC_SETTAGJ _IOW('x', 3, long)
128 #ifdef CONFIG_PROPAGATE
130 int dx_parse_tag(char *string, tag_t *tag, int remove);
132 void __dx_propagate_tag(struct nameidata *nd, struct inode *inode);
134 #define dx_propagate_tag(n,i) __dx_propagate_tag(n,i)
137 #define dx_propagate_tag(n,i) do { } while (0)
140 #endif /* _DX_TAG_H */