4 #include <linux/config.h>
7 #define XID_TAG(in) (IS_TAGXID(in))
10 #ifdef CONFIG_XID_TAG_NFSD
11 #define XID_TAG_NFSD 1
13 #define XID_TAG_NFSD 0
17 #ifdef CONFIG_INOXID_NONE
19 #define MAX_UID 0xFFFFFFFF
20 #define MAX_GID 0xFFFFFFFF
22 #define INOXID_XID(tag, uid, gid, xid) (0)
24 #define XIDINO_UID(tag, uid, xid) (uid)
25 #define XIDINO_GID(tag, gid, xid) (gid)
30 #ifdef CONFIG_INOXID_GID16
32 #define MAX_UID 0xFFFFFFFF
33 #define MAX_GID 0x0000FFFF
35 #define INOXID_XID(tag, uid, gid, xid) \
36 ((tag) ? (((gid) >> 16) & 0xFFFF) : 0)
38 #define XIDINO_UID(tag, uid, xid) (uid)
39 #define XIDINO_GID(tag, gid, xid) \
40 ((tag) ? (((gid) & 0xFFFF) | ((xid) << 16)) : (gid))
45 #ifdef CONFIG_INOXID_UGID24
47 #define MAX_UID 0x00FFFFFF
48 #define MAX_GID 0x00FFFFFF
50 #define INOXID_XID(tag, uid, gid, xid) \
51 ((tag) ? ((((uid) >> 16) & 0xFF00) | (((gid) >> 24) & 0xFF)) : 0)
53 #define XIDINO_UID(tag, uid, xid) \
54 ((tag) ? (((uid) & 0xFFFFFF) | (((xid) & 0xFF00) << 16)) : (uid))
55 #define XIDINO_GID(tag, gid, xid) \
56 ((tag) ? (((gid) & 0xFFFFFF) | (((xid) & 0x00FF) << 24)) : (gid))
61 #ifdef CONFIG_INOXID_UID16
63 #define MAX_UID 0x0000FFFF
64 #define MAX_GID 0xFFFFFFFF
66 #define INOXID_XID(tag, uid, gid, xid) \
67 ((tag) ? (((uid) >> 16) & 0xFFFF) : 0)
69 #define XIDINO_UID(tag, uid, xid) \
70 ((tag) ? (((uid) & 0xFFFF) | ((xid) << 16)) : (uid))
71 #define XIDINO_GID(tag, gid, xid) (gid)
76 #ifdef CONFIG_INOXID_INTERN
78 #define MAX_UID 0xFFFFFFFF
79 #define MAX_GID 0xFFFFFFFF
81 #define INOXID_XID(tag, uid, gid, xid) \
84 #define XIDINO_UID(tag, uid, xid) (uid)
85 #define XIDINO_GID(tag, gid, xid) (gid)
90 #ifdef CONFIG_INOXID_RUNTIME
92 #define MAX_UID 0xFFFFFFFF
93 #define MAX_GID 0xFFFFFFFF
95 #define INOXID_XID(tag, uid, gid, xid) (0)
97 #define XIDINO_UID(tag, uid, xid) (uid)
98 #define XIDINO_GID(tag, gid, xid) (gid)
103 #ifndef CONFIG_INOXID_NONE
104 #define vx_current_fsxid(sb) \
105 ((sb)->s_flags & MS_TAGXID ? current->xid : 0)
107 #define vx_current_fsxid(sb) (0)
110 #ifndef CONFIG_INOXID_INTERN
111 #define XIDINO_XID(tag, xid) (0)
113 #define XIDINO_XID(tag, xid) ((tag) ? (xid) : 0)
116 #define INOXID_UID(tag, uid, gid) \
117 ((tag) ? ((uid) & MAX_UID) : (uid))
118 #define INOXID_GID(tag, uid, gid) \
119 ((tag) ? ((gid) & MAX_GID) : (gid))
122 static inline uid_t vx_map_uid(uid_t uid)
124 if ((uid > MAX_UID) && (uid != -1))
126 return (uid & MAX_UID);
129 static inline gid_t vx_map_gid(gid_t gid)
131 if ((gid > MAX_GID) && (gid != -1))
133 return (gid & MAX_GID);
137 #ifdef CONFIG_VSERVER_LEGACY
138 #define FIOC_GETXID _IOR('x', 1, long)
139 #define FIOC_SETXID _IOW('x', 2, long)
140 #define FIOC_SETXIDJ _IOW('x', 3, long)
143 int vx_parse_xid(char *string, xid_t *xid, int remove);
144 void vx_propagate_xid(struct nameidata *nd, struct inode *inode);
146 #endif /* _VX_XID_H */