5 #warning config options missing
8 #define XID_TAG_SB(sb) (sb->s_flags & MS_TAGXID)
10 #define XID_TAG(in) (!(in) || \
11 (((struct inode *)in)->i_sb && \
12 XID_TAG_SB(((struct inode *)in)->i_sb)))
15 #ifdef CONFIG_XID_TAG_NFSD
16 #define XID_TAG_NFSD 1
18 #define XID_TAG_NFSD 0
22 #ifdef CONFIG_INOXID_NONE
24 #define MAX_UID 0xFFFFFFFF
25 #define MAX_GID 0xFFFFFFFF
27 #define INOXID_XID(tag, uid, gid, xid) (0)
29 #define XIDINO_UID(tag, uid, xid) (uid)
30 #define XIDINO_GID(tag, gid, xid) (gid)
35 #ifdef CONFIG_INOXID_GID16
37 #define MAX_UID 0xFFFFFFFF
38 #define MAX_GID 0x0000FFFF
40 #define INOXID_XID(tag, uid, gid, xid) \
41 ((tag) ? (((gid) >> 16) & 0xFFFF) : 0)
43 #define XIDINO_UID(tag, uid, xid) (uid)
44 #define XIDINO_GID(tag, gid, xid) \
45 ((tag) ? (((gid) & 0xFFFF) | ((xid) << 16)) : (gid))
50 #ifdef CONFIG_INOXID_UGID24
52 #define MAX_UID 0x00FFFFFF
53 #define MAX_GID 0x00FFFFFF
55 #define INOXID_XID(tag, uid, gid, xid) \
56 ((tag) ? ((((uid) >> 16) & 0xFF00) | (((gid) >> 24) & 0xFF)) : 0)
58 #define XIDINO_UID(tag, uid, xid) \
59 ((tag) ? (((uid) & 0xFFFFFF) | (((xid) & 0xFF00) << 16)) : (uid))
60 #define XIDINO_GID(tag, gid, xid) \
61 ((tag) ? (((gid) & 0xFFFFFF) | (((xid) & 0x00FF) << 24)) : (gid))
66 #ifdef CONFIG_INOXID_UID16
68 #define MAX_UID 0x0000FFFF
69 #define MAX_GID 0xFFFFFFFF
71 #define INOXID_XID(tag, uid, gid, xid) \
72 ((tag) ? (((uid) >> 16) & 0xFFFF) : 0)
74 #define XIDINO_UID(tag, uid, xid) \
75 ((tag) ? (((uid) & 0xFFFF) | ((xid) << 16)) : (uid))
76 #define XIDINO_GID(tag, gid, xid) (gid)
81 #ifdef CONFIG_INOXID_INTERN
83 #define MAX_UID 0xFFFFFFFF
84 #define MAX_GID 0xFFFFFFFF
86 #define INOXID_XID(tag, uid, gid, xid) \
89 #define XIDINO_UID(tag, uid, xid) (uid)
90 #define XIDINO_GID(tag, gid, xid) (gid)
95 #ifdef CONFIG_INOXID_RUNTIME
97 #define MAX_UID 0xFFFFFFFF
98 #define MAX_GID 0xFFFFFFFF
100 #define INOXID_XID(tag, uid, gid, xid) (0)
102 #define XIDINO_UID(tag, uid, xid) (uid)
103 #define XIDINO_GID(tag, gid, xid) (gid)
108 #ifdef CONFIG_INOXID_NONE
109 #define vx_current_fsxid(sb) (0)
111 #define vx_current_fsxid(sb) \
112 (XID_TAG_SB(sb) ? current->xid : 0)
115 #define INOXID_UID(tag, uid, gid) \
116 ((tag) ? ((uid) & MAX_UID) : (uid))
117 #define INOXID_GID(tag, uid, gid) \
118 ((tag) ? ((gid) & MAX_GID) : (gid))
121 static inline uid_t vx_map_uid(uid_t uid)
123 if ((uid > MAX_UID) && (uid != -1))
125 return (uid & MAX_UID);
128 static inline gid_t vx_map_gid(gid_t gid)
130 if ((gid > MAX_GID) && (gid != -1))
132 return (gid & MAX_GID);
136 #ifdef CONFIG_VSERVER_LEGACY
137 #define FIOC_GETXID _IOR('x', 1, long)
138 #define FIOC_SETXID _IOW('x', 2, long)
139 #define FIOC_SETXIDJ _IOW('x', 3, long)
142 int vx_parse_xid(char *string, xid_t *xid, int remove);
143 void vx_propagate_xid(struct nameidata *nd, struct inode *inode);
145 #endif /* _VX_XID_H */