added cflags
[util-vserver.git] / util-vserver / lib / vserver.h
index ff06071..eaa2026 100644 (file)
@@ -34,6 +34,7 @@
 #  define VC_ATTR_UNUSED                __attribute__((__unused__))
 #  define VC_ATTR_NORETURN              __attribute__((__noreturn__))
 #  define VC_ATTR_CONST                        __attribute__((__const__))
+#  define VC_ATTR_DEPRECATED           __attribute__((__deprecated__))
 #  if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30300
 #    define VC_ATTR_NONNULL(ARGS)      __attribute__((__nonnull__ ARGS))
 #    define VC_ATTR_ALWAYSINLINE        __attribute__((__always_inline__))
@@ -51,6 +52,7 @@
 #  define VC_ATTR_UNUSED
 #  define VC_ATTR_NORETURN
 #  define VC_ATTR_ALWAYSINLINE
+#  define VC_ATTR_DEPRECATED
 #  define VC_ATTR_PURE
 #  define VC_ATTR_CONST
 #endif
 
 // the flags
 #define VC_VXF_INFO_LOCK               0x00000001
-#define VC_VXF_INFO_NPROC              0x00000002
-#define VC_VXF_INFO_PRIVATE            0x00000004
-#define VC_VXF_INFO_INIT               0x00000008
+#define VC_VXF_INFO_NPROC              0x00000004
+#define VC_VXF_INFO_PRIVATE            0x00000008
+#define VC_VXF_INFO_INIT               0x00000010
 
-#define VC_VXF_INFO_HIDE               0x00000010
-#define VC_VXF_INFO_ULIMIT             0x00000020
-#define VC_VXF_INFO_NSPACE             0x00000040
+#define VC_VXF_INFO_HIDEINFO           0x00000020
+#define VC_VXF_INFO_ULIMIT             0x00000040
+#define VC_VXF_INFO_NAMESPACE          0x00000080
 
 #define        VC_VXF_SCHED_HARD               0x00000100
 #define        VC_VXF_SCHED_PRIO               0x00000200
 
 #define VC_VXF_VIRT_MEM                        0x00010000
 #define VC_VXF_VIRT_UPTIME             0x00020000
+#define VC_VXF_VIRT_CPU                        0x00040000
+
+#define VC_VXF_HIDE_MOUNT              0x01000000
+#define VC_VXF_HIDE_NETIF              0x02000000
 
 #define        VC_VXF_STATE_SETUP              (1ULL<<32)
 #define        VC_VXF_STATE_INIT               (1ULL<<33)
 
+// the ccapabilities
+#define VC_VXC_SET_UTSNAME             0x00000001
+#define VC_VXC_SET_RLIMIT              0x00000002
+
+#define VC_VXC_ICMP_PING               0x00000100
+
+#define VC_VXC_SECURE_MOUNT            0x00010000
+
 
 /** \defgroup  syscalls Syscall wrappers
  *  Functions which are calling the vserver syscall directly. */
@@ -239,14 +253,14 @@ extern "C" {
      *
      * \returns the xid of the created context, or VC_NOCTX on errors. errno
      *          will be set appropriately. */
-  xid_t        vc_create_context(xid_t xid);
+  xid_t        vc_ctx_create(xid_t xid);
 
     /** \brief   Moves the current process into the specified context.
      *  \ingroup syscalls
      *
      *  \param   xid  The new context
      *  \returns 0 on success, -1 on errors */
-  int  vc_migrate_context(xid_t xid);
+  int  vc_ctx_migrate(xid_t xid);
   
     /* rlimit related functions */
   
@@ -380,8 +394,8 @@ extern "C" {
       size_t           len;
   };
  
-  int                  vc_get_flags(xid_t xid, struct vc_ctx_flags *)       VC_ATTR_NONNULL((2));
-  int                  vc_set_flags(xid_t xid, struct vc_ctx_flags const *) VC_ATTR_NONNULL((2));
+  int                  vc_get_cflags(xid_t xid, struct vc_ctx_flags *)       VC_ATTR_NONNULL((2));
+  int                  vc_set_cflags(xid_t xid, struct vc_ctx_flags const *) VC_ATTR_NONNULL((2));
 
   int                  vc_get_ccaps(xid_t xid, struct vc_ctx_caps *);
   int                  vc_set_ccaps(xid_t xid, struct vc_ctx_caps const *);
@@ -398,36 +412,27 @@ extern "C" {
                                     struct vc_err_listparser *err,
                                     struct vc_ctx_caps *);
 
-  int                  vc_list2flag(char const *, size_t len,
+  int                  vc_list2cflag(char const *, size_t len,
                                     struct vc_err_listparser *err,
                                     struct vc_ctx_flags *flags);
-  uint_least64_t       vc_text2flag(char const *, size_t len);
-  char const *         vc_loflag2text(uint_least64_t *);
+  uint_least64_t       vc_text2cflag(char const *, size_t len);
+  char const *         vc_locflag2text(uint_least64_t *);
   
-  uint_least32_t       vc_list2flag_compat(char const *, size_t len,
+  uint_least32_t       vc_list2cflag_compat(char const *, size_t len,
                                            struct vc_err_listparser *err);
-  uint_least32_t       vc_text2flag_compat(char const *, size_t len);
-  char const *         vc_hiflag2text_compat(uint_least32_t);
-  
-  int          vc_text2cap(char const *);
-  char const * vc_cap2text(unsigned int);
-
-  inline static uint_least32_t vc_get_securecaps() {
-    return ( (1<<VC_CAP_LINUX_IMMUTABLE) | (1<<VC_CAP_NET_BROADCAST) |
-            (1<<VC_CAP_NET_ADMIN) | (1<<VC_CAP_NET_RAW) |
-            (1<<VC_CAP_IPC_LOCK) | (1<<VC_CAP_IPC_OWNER) |
-            (1<<VC_CAP_SYS_MODULE) | (1<<VC_CAP_SYS_RAWIO) |
-            (1<<VC_CAP_SYS_PACCT) | (1<<VC_CAP_SYS_ADMIN) |
-            (1<<VC_CAP_SYS_BOOT) | (1<<VC_CAP_SYS_NICE) |
-            (1<<VC_CAP_SYS_RESOURCE) | (1<<VC_CAP_SYS_TIME) |
-            (1<<VC_CAP_MKNOD) | (1<<VC_CAP_QUOTACTL) );
-  }
+  uint_least32_t       vc_text2cflag_compat(char const *, size_t len);
+  char const *         vc_hicflag2text_compat(uint_least32_t);
+
+  uint_least32_t       vc_get_insecurecaps() VC_ATTR_CONST;
+  int                  vc_text2cap(char const *);
+  char const *         vc_cap2text(unsigned int);
+
 
-  inline static int            vc_setfilecontext(char const *filename, xid_t xid) {
+  inline static int    vc_setfilecontext(char const *filename, xid_t xid) {
     return vc_set_iattr(filename, xid, 0, VC_IATTR_XID);
   }
   
-  inline static xid_t          vc_getfilecontext(char const *filename) {
+  inline static xid_t  vc_getfilecontext(char const *filename) {
     xid_t      res;
     if (vc_get_iattr(filename, &res, 0,0)==-1) return VC_NOCTX;
     return res;
@@ -448,12 +453,13 @@ extern "C" {
   
   typedef enum { vcFEATURE_VKILL,  vcFEATURE_IATTR,   vcFEATURE_RLIMIT,
                 vcFEATURE_COMPAT, vcFEATURE_MIGRATE, vcFEATURE_NAMESPACE,
-                vcFEATURE_SCHED,  vcFEATURE_VINFO,   vcFEATURE_VHI }
+                vcFEATURE_SCHED,  vcFEATURE_VINFO,   vcFEATURE_VHI,
+                 vcFEATURE_VSHELPER0, vcFEATURE_VSHELPER }
     vcFeatureSet;
 
-  bool         vc_isSupported(vcFeatureSet);
+  bool         vc_isSupported(vcFeatureSet) VC_ATTR_CONST;
   bool         vc_isSupportedString(char const *);
-  
+
   /* The management part */
 
 #define VC_LIMIT_VSERVER_NAME_LEN      1024