X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fccaps-v13.c;h=4f388647deea5a67859267b40e1989de7f9a765f;hb=ec4370f7ebd7fb0ce7f002f5bf2c74f03acd3ec1;hp=71471a705d32a56b7ea10c6066291481139de65a;hpb=2822ba293eb308225c50d346930c47bf98d9927b;p=util-vserver.git diff --git a/lib/ccaps-v13.c b/lib/ccaps-v13.c index 71471a7..4f38864 100644 --- a/lib/ccaps-v13.c +++ b/lib/ccaps-v13.c @@ -1,4 +1,4 @@ -// $Id: ccaps-v13.c,v 1.4 2005/07/15 16:28:18 ensc Exp $ --*- c -*-- +// $Id: ccaps-v13.c 2393 2006-11-23 18:30:29Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -25,30 +25,48 @@ #include #include +#include #include #define DECL(STR, VAL) { STR, sizeof(STR)-1, VAL } static struct Mapping_uint64 const VALUES[] = { - DECL("utsname", VC_VXC_SET_UTSNAME), - DECL("rlimit", VC_VXC_SET_RLIMIT), + DECL("set_utsname", VC_VXC_SET_UTSNAME), + DECL("set_rlimit", VC_VXC_SET_RLIMIT), DECL("raw_icmp", VC_VXC_RAW_ICMP), DECL("syslog", VC_VXC_SYSLOG), 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), // 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;