X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fnidopt2nid.c;h=2f6388a1a0d2b44c3ee2701d391ff7a83590e81c;hb=c4044f42e233926852ef9d41a777225ed99df90a;hp=d3fd8c6e38f2efad50e12eb61b1adea7b75eb38f;hpb=e97918417e2f91e76024bee546366f2f0d43c281;p=util-vserver.git diff --git a/lib/nidopt2nid.c b/lib/nidopt2nid.c index d3fd8c6..2f6388a 100644 --- a/lib/nidopt2nid.c +++ b/lib/nidopt2nid.c @@ -24,6 +24,13 @@ #include #include +static nid_t +getVserverNid(char const *id, bool honor_static, char const **err) +{ + *err = "vc_getVserverCtx"; + return vc_getVserverCtx(id, vcCFG_AUTO, honor_static, 0, vcCTX_NID); +} + nid_t vc_nidopt2nid(char const *str, bool honor_static, char const **err_info) { @@ -32,7 +39,16 @@ vc_nidopt2nid(char const *str, bool honor_static, char const **err_info) err = "vc_get_task_nid()"; if (strcmp(str,"self")==0) res = vc_get_task_nid(0); - else res = vc_xidopt2xid(str, honor_static, &err); + else if (str[0]==':') res = getVserverNid(str+1, honor_static, &err); + else { + char * endptr; + nid_t nid = strtol(str, &endptr, 10); + + if (endptr!=str && (*endptr=='\0' || *endptr=='\n')) + res = nid; + else + res = getVserverNid(str, honor_static, &err); + } if (res==VC_NOCTX && err_info) *err_info = err;