Merge to Fedora kernel-2.6.18-1.2255_FC5-vs2.0.2.2-rc9 patched with stable patch...
[linux-2.6.git] / include / linux / vs_base.h
index ed23add..c49e62c 100644 (file)
@@ -8,6 +8,9 @@
 
 #define vx_current_xid() vx_task_xid(current)
 
+#define current_vx_info() (current->vx_info)
+
+
 #define vx_check(c,m)  __vx_check(vx_current_xid(),c,m)
 
 #define vx_weak_check(c,m)     ((m) ? vx_check(c,m) : 1)
@@ -15,9 +18,9 @@
 
 /*
  * check current context for ADMIN/WATCH and
- * optionally agains supplied argument
+ * optionally against supplied argument
  */
-static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode)
+static inline int __vx_check(xid_t cid, xid_t id, unsigned int mode)
 {
        if (mode & VX_ARG_MASK) {
                if ((mode & VX_IDENT) &&
@@ -34,7 +37,8 @@ static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode)
                        return 1;
        }
        return (((mode & VX_ADMIN) && (cid == 0)) ||
-               ((mode & VX_WATCH) && (cid == 1)));
+               ((mode & VX_WATCH) && (cid == 1)) ||
+               ((mode & VX_HOSTID) && (id == 0)));
 }
 
 
@@ -51,6 +55,8 @@ static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode)
 
 #define vx_mask_mask(v,f,m)    (((v) & ~(m)) | ((v) & (f) & (m)))
 
+#define vx_check_bit(v,n)      ((v) & (1LL << (n)))
+
 
 /* context flags */
 
@@ -78,6 +84,13 @@ static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode)
 #define vx_ccaps(c)    vx_info_ccaps(current->vx_info,(c))
 
 
+#define __vx_mcaps(v)  ((v) ? (v)->vx_ccaps >> 32UL : ~0 )
+
+#define vx_info_mcaps(v,c)     (__vx_mcaps(v) & (c))
+
+#define vx_mcaps(c)    vx_info_mcaps(current->vx_info,(c))
+
+
 #define vx_current_bcaps() \
        (((current->vx_info) && !vx_flags(VXF_STATE_SETUP, 0)) ? \
        current->vx_info->vx_bcaps : cap_bset)
@@ -87,5 +100,10 @@ static __inline__ int __vx_check(xid_t cid, xid_t id, unsigned int mode)
        (current->vx_info && \
        (current->vx_info->vx_initpid == (n)))
 
+#define vx_capable(b,c) (capable(b) || \
+       ((current->euid == 0) && vx_ccaps(c)))
+
 
+#else
+#warning duplicate inclusion
 #endif