fixed detection of legacy-style (check for file but not directory)
[util-vserver.git] / util-vserver / lib / vserver-internal.h
index 9bf730e..02c5349 100644 (file)
@@ -31,8 +31,8 @@
 
 #include "internal.h"
 
-#ifndef __NR_vserver
-#  define __NR_vserver 273
+#if !defined(__NR_vserver) && defined(ENSC_SYSCALL__NR_vserver)
+#  define __NR_vserver ENSC_SYSCALL__NR_vserver
 #endif
 
 #define VC_PREFIX      0)
 #endif
 
 #ifdef VC_ENABLE_API_V13
-#  define CALL_VC_V13(F,...)   CALL_VC_GENERAL(0x00010010, v13, F, __VA_ARGS__)
+#  define CALL_VC_V13(F,...)   CALL_VC_GENERAL(0x00010011, v13, F, __VA_ARGS__)
 #else
 #  define CALL_VC_V13(F,...)   CALL_VC_NOOP
 #endif
 
+#ifdef VC_ENABLE_API_V13
+#  define CALL_VC_V13A(F,...)  CALL_VC_GENERAL(0x00010012, v13, F, __VA_ARGS__)
+#else
+#  define CALL_VC_V13A(F,...)  CALL_VC_NOOP
+#endif
+
+#ifdef VC_ENABLE_API_NET
+#  define CALL_VC_NET(F,...)   CALL_VC_GENERAL(0x00010016, net, F, __VA_ARGS__)
+#else
+#  define CALL_VC_NET(F,...)   CALL_VC_NOOP
+#endif
+
 #ifdef VC_ENABLE_API_FSCOMPAT
 #  define CALL_VC_FSCOMPAT(F,...)      CALL_VC_GENERAL(0x00010000, fscompat, F, __VA_ARGS__)
 #else
                                 ((X)==(uint32_t)(-2)) ? VC_SAMECTX : \
                                 (xid_t)(X))
 
-#  define CTX_USER2KERNEL(X)   (((X)==VC_RANDCTX) ? (uint32_t)(-1) : \
-                                ((X)==VC_SAMECTX) ? (uint32_t)(-2) : \
+#  define CTX_USER2KERNEL(X)   (((X)==VC_DYNAMIC_XID) ? (uint32_t)(-1) : \
+                                ((X)==VC_SAMECTX)     ? (uint32_t)(-2) : \
                                 (uint32_t)(X))
 #else
 #  define CTX_USER2KERNEL(X)   (X)
 #  define VHI_KERNEL2USER(X)           (X)
 #endif
 
+#if 1
+#  define NID_KERNEL2USER(X)   (((X)==(uint32_t)(-1)) ? VC_NONID   : \
+                                (xid_t)(X))
+
+#  define NID_USER2KERNEL(X)   (((X)==VC_DYNAMIC_NID) ? (uint32_t)(-1) : \
+                                (uint32_t)(X))
+#else
+#  define NID_USER2KERNEL(X)   (X)
+#  define NID_KERNEL2USER(X)   (X)
+#endif
+
+#if 1
+#  define NETTYPE_USER2KERNEL(X)       ((X)==vcNET_IPV4   ? 0 : \
+                                        (X)==vcNET_IPV6   ? 1 : \
+                                        (X)==vcNET_IPV4R  ? 2 : \
+                                        (X)==vcNET_IPV6R  ? 3 : \
+                                        (X))
+#  define NETTYPE_KERNEL2USER(X)       ((X)==0 ? vcNET_IPV4   ? : \
+                                        (X)==1 ? vcNET_IPV6   ? : \
+                                        (X)==2 ? vcNET_IPV4R  ? : \
+                                        (X)==3 ? vcNET_IPV6R  ? : \
+                                        (vc_net_nx_type)(X))
+#else
+#  define NETTYPE_USER2KERNEL(X)       (X)
+#  define NETTYPE_KERNEL2USER(X)       (X)
+#endif
+
 
 #define EXT2_IOC_GETCONTEXT            _IOR('x', 1, long)
 #define EXT2_IOC_SETCONTEXT            _IOW('x', 2, long)
 
 #ifndef HAVE_VSERVER
-#if defined(__pic__) && defined(__i386)
+#ifdef ENSC_SYSCALL_TRADITIONAL
 inline static UNUSED ALWAYSINLINE
 int vserver(uint32_t cmd, uint32_t id, void *data)
 {