gentoo: use /var/run for new /run compatibility
[util-vserver.git] / lib / ccaps-v13.c
index 7d457e7..97caa05 100644 (file)
 #include <lib_internal/util-dimof.h>
 
 #include <string.h>
+#include <strings.h>
 #include <assert.h>
 
 #define DECL(STR, VAL) { STR, sizeof(STR)-1, VAL }
 
 static struct Mapping_uint64 const VALUES[] = {
   DECL("set_utsname",     VC_VXC_SET_UTSNAME),
-  DECL("rlimit",          VC_VXC_SET_RLIMIT),
+  DECL("set_rlimit",      VC_VXC_SET_RLIMIT),
+  DECL("fs_security",     VC_VXC_FS_SECURITY),
+  DECL("tiocsti",         VC_VXC_TIOCSTI),
   DECL("raw_icmp",        VC_VXC_RAW_ICMP),
   DECL("syslog",          VC_VXC_SYSLOG),
+  DECL("oom_adjust",      VC_VXC_OOM_ADJUST),
+  DECL("audit_control",   VC_VXC_AUDIT_CONTROL),
   DECL("secure_mount",    VC_VXC_SECURE_MOUNT),
   DECL("secure_remount",  VC_VXC_SECURE_REMOUNT),
   DECL("binary_mount",    VC_VXC_BINARY_MOUNT),
   DECL("quota_ctl",       VC_VXC_QUOTA_CTL),
   DECL("admin_mapper",    VC_VXC_ADMIN_MAPPER),
   DECL("admin_cloop",     VC_VXC_ADMIN_CLOOP),
+  DECL("kthread",         VC_VXC_KTHREAD),
+  DECL("namespace",       VC_VXC_NAMESPACE),
     // some deprecated values...
   DECL("mount",           VC_VXC_SECURE_MOUNT),
   DECL("remount",         VC_VXC_SECURE_REMOUNT),
   DECL("icmp",            VC_VXC_RAW_ICMP),
   DECL("ping",            VC_VXC_RAW_ICMP),
   DECL("utsname",         VC_VXC_SET_UTSNAME),
+  DECL("rlimit",          VC_VXC_SET_RLIMIT),
 };
 
+inline static char const *
+removePrefix(char const *str, size_t *len)
+{
+  if ((len==0 || *len==0 || *len>4) &&
+      strncasecmp("vxc_", str, 4)==0) {
+    if (len && *len>4) *len -= 4;
+    return str+4;
+  }
+  else
+    return str;
+}
+
 uint_least64_t
 vc_text2ccap(char const *str, size_t len)
 {
-  ssize_t      idx = utilvserver_value2text_uint64(str, len,
+  char const * tmp = removePrefix(str, &len);
+  ssize_t      idx = utilvserver_value2text_uint64(tmp, len,
                                                    VALUES, DIM_OF(VALUES));
   if (idx==-1) return 0;
   else         return VALUES[idx].val;