X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fnflags-net.c;h=2ab0a3f518b75caf3ffa0758fcbed69e1a0fbb28;hb=95e2774070e989fe9cf9f48dae5fa054e55e2a3e;hp=761faedcd59762e60904430e648f66d9d67cd8da;hpb=3f3cf95f755f3ef1c31ad8e38153deb4ee214c66;p=util-vserver.git diff --git a/lib/nflags-net.c b/lib/nflags-net.c index 761faed..2ab0a3f 100644 --- a/lib/nflags-net.c +++ b/lib/nflags-net.c @@ -1,4 +1,4 @@ -// $Id: nflags-net.c,v 1.2 2005/04/24 20:25:17 ensc Exp $ --*- c -*-- +// $Id: nflags-net.c 2597 2007-08-26 17:48:26Z dhozac $ --*- c -*-- // Copyright (C) 2004 Enrico Scholz // @@ -25,19 +25,50 @@ #include #include +#include #include #define DECL(STR, VAL) { STR, sizeof(STR)-1, VAL } static struct Mapping_uint64 const VALUES[] = { -#warning Add the 'nflags' values here - DECL("", 0) + DECL("lock", VC_NXF_INFO_LOCK), + DECL("private", VC_NXF_INFO_PRIVATE), + + DECL("single_ip", VC_NXF_SINGLE_IP), + DECL("lback_remap", VC_NXF_LBACK_REMAP), + DECL("remap_lback", VC_NXF_LBACK_REMAP), + + DECL("hide_netif", VC_NXF_HIDE_NETIF), + DECL("hide_lback", VC_NXF_HIDE_LBACK), + + DECL("state_setup", VC_NXF_STATE_SETUP), + DECL("state_admin", VC_NXF_STATE_ADMIN), + + DECL("sc_helper", VC_NXF_SC_HELPER), + DECL("persistent", VC_NXF_PERSISTENT), + + // Aliases for the legacy flags + DECL("info_lock", VC_NXF_INFO_LOCK), + DECL("info_private", VC_NXF_INFO_PRIVATE), }; +inline static char const * +removePrefix(char const *str, size_t *len) +{ + if ((len==0 || *len==0 || *len>4) && + strncasecmp("nxf_", str, 4)==0) { + if (len && *len>4) *len -= 4; + return str+4; + } + else + return str; +} + uint_least64_t vc_text2nflag(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;