X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fcflags-v13.c;h=dae4bbf2a4e986806ebd05050b8d14869ef6b8c7;hb=ec4370f7ebd7fb0ce7f002f5bf2c74f03acd3ec1;hp=0af2d04d7c5929809c60277f0f422e93ade60b6c;hpb=9234e6a7cb48373edec38284ba54a819037b79b2;p=util-vserver.git diff --git a/lib/cflags-v13.c b/lib/cflags-v13.c index 0af2d04..dae4bbf 100644 --- a/lib/cflags-v13.c +++ b/lib/cflags-v13.c @@ -1,4 +1,4 @@ -// $Id: cflags-v13.c,v 1.3 2004/10/21 19:00:20 ensc Exp $ --*- c -*-- +// $Id: cflags-v13.c 2533 2007-04-21 14:06:26Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -25,6 +25,7 @@ #include #include +#include #include #define DECL(STR, VAL) { STR, sizeof(STR)-1, VAL } @@ -48,23 +49,58 @@ static struct Mapping_uint64 const VALUES[] = { DECL("virt_uptime", VC_VXF_VIRT_UPTIME), DECL("virt_cpu", VC_VXF_VIRT_CPU), DECL("virt_load", VC_VXF_VIRT_LOAD), + DECL("virt_time", VC_VXF_VIRT_TIME), DECL("hide_mount", VC_VXF_HIDE_MOUNT), DECL("hide_netif", VC_VXF_HIDE_NETIF), + DECL("hide_vinfo", VC_VXF_HIDE_VINFO), DECL("state_setup", VC_VXF_STATE_SETUP), DECL("state_init", VC_VXF_STATE_INIT), + DECL("state_admin", VC_VXF_STATE_ADMIN), + + DECL("sc_helper", VC_VXF_SC_HELPER), + DECL("persistent", VC_VXF_PERSISTENT), + DECL("reboot_kill", VC_VXF_REBOOT_KILL), DECL("fork_rss", VC_VXF_FORK_RSS), DECL("prolific", VC_VXF_PROLIFIC), DECL("igneg_nice", VC_VXF_IGNEG_NICE), - + + // Some pseudo flags + DECL("secure", VC_VXF_HIDE_NETIF), + DECL("default", VC_VXF_VIRT_UPTIME|VC_VXF_SC_HELPER), + + // Aliases for the legacy flags + DECL("info_lock", VC_VXF_INFO_LOCK), + DECL("info_nproc", VC_VXF_INFO_NPROC), + DECL("info_private", VC_VXF_INFO_PRIVATE), + DECL("info_init", VC_VXF_INFO_INIT), + + DECL("info_hideinfo", VC_VXF_INFO_HIDEINFO), + DECL("info_ulimit", VC_VXF_INFO_ULIMIT), + DECL("info_namespace", VC_VXF_INFO_NAMESPACE), + // 2.6 name + DECL("info_nspace", VC_VXF_INFO_NAMESPACE), }; +inline static char const * +removePrefix(char const *str, size_t *len) +{ + if ((len==0 || *len==0 || *len>4) && + strncasecmp("vxf_", str, 4)==0) { + if (len && *len>4) *len -= 4; + return str+4; + } + else + return str; +} + uint_least64_t vc_text2cflag(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;