This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / include / linux / vserver / xid.h
1 #ifndef _LINUX_XID_H_
2 #define _LINUX_XID_H_
3
4 #ifdef CONFIG_INOXID_NONE
5
6 #define MAX_UID         0xFFFFFFFF
7 #define MAX_GID         0xFFFFFFFF
8
9 #define INOXID_XID(uid, gid, xid)       (0)
10
11 #define XIDINO_UID(uid, xid)            (uid)
12 #define XIDINO_GID(gid, xid)            (gid)
13
14 #endif
15
16
17 #ifdef CONFIG_INOXID_GID16
18
19 #define MAX_UID         0xFFFFFFFF
20 #define MAX_GID         0x0000FFFF
21
22 #define INOXID_XID(uid, gid, xid)       (((gid) >> 16) & 0xFFFF)
23
24 #define XIDINO_UID(uid, xid)            (uid)
25 #define XIDINO_GID(gid, xid)            (((gid) & 0xFFFF) | ((xid) << 16))
26
27
28 #endif
29
30
31 #ifdef CONFIG_INOXID_GID24
32
33 #define MAX_UID         0x00FFFFFF
34 #define MAX_GID         0x00FFFFFF
35
36 #define INOXID_XID(uid, gid, xid)       ((((uid) >> 16) & 0xFF00) | (((gid) >> 24) & 0xFF))
37
38 #define XIDINO_UID(uid, xid)            (((uid) & 0xFFFFFF) | (((xid) & 0xFF00) << 16))
39 #define XIDINO_GID(gid, xid)            (((gid) & 0xFFFFFF) | (((xid) & 0x00FF) << 24))
40
41 #endif
42
43
44 #ifdef CONFIG_INOXID_GID32
45
46 #define MAX_UID         0xFFFFFFFF
47 #define MAX_GID         0xFFFFFFFF
48
49 #define INOXID_XID(uid, gid, xid)       (xid)
50
51 #define XIDINO_UID(uid, xid)            (uid)
52 #define XIDINO_GID(gid, xid)            (gid)
53
54 #endif
55
56
57 #ifdef CONFIG_INOXID_RUNTIME
58
59 #define MAX_UID         0xFFFFFFFF
60 #define MAX_GID         0xFFFFFFFF
61
62 #define INOXID_XID(uid, gid, xid)       (0)
63
64 #define XIDINO_UID(uid, xid)            (uid)
65 #define XIDINO_GID(gid, xid)            (gid)
66
67 #endif
68
69
70 #define INOXID_UID(uid, gid)            ((uid) & MAX_UID)
71 #define INOXID_GID(uid, gid)            ((gid) & MAX_GID)
72
73 static inline uid_t vx_map_uid(uid_t uid)
74 {
75         if ((uid > MAX_UID) && (uid != -1))
76                 uid = -2;
77         return (uid & MAX_UID);
78 }
79
80 static inline gid_t vx_map_gid(gid_t gid)
81 {
82         if ((gid > MAX_GID) && (gid != -1))
83                 gid = -2;
84         return (gid & MAX_GID);
85 }
86
87
88 #ifdef  CONFIG_VSERVER_LEGACY           
89 #define FIOC_GETXID     _IOR('x', 1, long)
90 #define FIOC_SETXID     _IOW('x', 2, long)
91 #define FIOC_SETXIDJ    _IOW('x', 3, long)
92 #endif
93
94 #endif /* _LINUX_XID_H_ */