5 #warning config options missing
8 #define XID_TAG(in) (!(in) || \
9 (((struct inode *)in)->i_sb && \
10 (((struct inode *)in)->i_sb->s_flags & MS_TAGXID)))
12 #ifdef CONFIG_XID_TAG_NFSD
13 #define XID_TAG_NFSD 1
15 #define XID_TAG_NFSD 0
19 #ifdef CONFIG_INOXID_NONE
21 #define MAX_UID 0xFFFFFFFF
22 #define MAX_GID 0xFFFFFFFF
24 #define INOXID_XID(tag, uid, gid, xid) (0)
26 #define XIDINO_UID(tag, uid, xid) (uid)
27 #define XIDINO_GID(tag, gid, xid) (gid)
32 #ifdef CONFIG_INOXID_GID16
34 #define MAX_UID 0xFFFFFFFF
35 #define MAX_GID 0x0000FFFF
37 #define INOXID_XID(tag, uid, gid, xid) \
38 ((tag) ? (((gid) >> 16) & 0xFFFF) : 0)
40 #define XIDINO_UID(tag, uid, xid) (uid)
41 #define XIDINO_GID(tag, gid, xid) \
42 ((tag) ? (((gid) & 0xFFFF) | ((xid) << 16)) : (gid))
47 #ifdef CONFIG_INOXID_UGID24
49 #define MAX_UID 0x00FFFFFF
50 #define MAX_GID 0x00FFFFFF
52 #define INOXID_XID(tag, uid, gid, xid) \
53 ((tag) ? ((((uid) >> 16) & 0xFF00) | (((gid) >> 24) & 0xFF)) : 0)
55 #define XIDINO_UID(tag, uid, xid) \
56 ((tag) ? (((uid) & 0xFFFFFF) | (((xid) & 0xFF00) << 16)) : (uid))
57 #define XIDINO_GID(tag, gid, xid) \
58 ((tag) ? (((gid) & 0xFFFFFF) | (((xid) & 0x00FF) << 24)) : (gid))
63 #ifdef CONFIG_INOXID_UID16
65 #define MAX_UID 0x0000FFFF
66 #define MAX_GID 0xFFFFFFFF
68 #define INOXID_XID(tag, uid, gid, xid) \
69 ((tag) ? (((uid) >> 16) & 0xFFFF) : 0)
71 #define XIDINO_UID(tag, uid, xid) \
72 ((tag) ? (((uid) & 0xFFFF) | ((xid) << 16)) : (uid))
73 #define XIDINO_GID(tag, gid, xid) (gid)
78 #ifdef CONFIG_INOXID_INTERN
80 #define MAX_UID 0xFFFFFFFF
81 #define MAX_GID 0xFFFFFFFF
83 #define INOXID_XID(tag, uid, gid, xid) \
86 #define XIDINO_UID(tag, uid, xid) (uid)
87 #define XIDINO_GID(tag, gid, xid) (gid)
92 #ifdef CONFIG_INOXID_RUNTIME
94 #define MAX_UID 0xFFFFFFFF
95 #define MAX_GID 0xFFFFFFFF
97 #define INOXID_XID(tag, uid, gid, xid) (0)
99 #define XIDINO_UID(tag, uid, xid) (uid)
100 #define XIDINO_GID(tag, gid, xid) (gid)
105 #define INOXID_UID(tag, uid, gid) \
106 ((tag) ? ((uid) & MAX_UID) : (uid))
107 #define INOXID_GID(tag, uid, gid) \
108 ((tag) ? ((gid) & MAX_GID) : (gid))
111 static inline uid_t vx_map_uid(uid_t uid)
113 if ((uid > MAX_UID) && (uid != -1))
115 return (uid & MAX_UID);
118 static inline gid_t vx_map_gid(gid_t gid)
120 if ((gid > MAX_GID) && (gid != -1))
122 return (gid & MAX_GID);
126 #ifdef CONFIG_VSERVER_LEGACY
127 #define FIOC_GETXID _IOR('x', 1, long)
128 #define FIOC_SETXID _IOW('x', 2, long)
129 #define FIOC_SETXIDJ _IOW('x', 3, long)
132 int vx_parse_xid(char *string, xid_t *xid, int remove);
133 void vx_propagate_xid(struct nameidata *nd, struct inode *inode);
135 #endif /* _VX_XID_H */