X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fsrc%2Fvattribute.c;h=a20c0e6c3a730a5627f8f30f281de126caa2b128;hb=0d5f1561a88261415e2f3cf4f1de411d11878562;hp=30f18501771af7699153423e1512eadf72469aba;hpb=631a6dd42e34509ffeb5fe4f45da586e3e9d31f6;p=util-vserver.git diff --git a/util-vserver/src/vattribute.c b/util-vserver/src/vattribute.c index 30f1850..a20c0e6 100644 --- a/util-vserver/src/vattribute.c +++ b/util-vserver/src/vattribute.c @@ -70,7 +70,7 @@ showHelp(int fd, char const *cmd, int res) WRITE_MSG(fd, " --set [--xid ] [--bcap [~!]] [--ccap [~!]] [--flag [~!]] [--secure] -- [ *]\n" "\n" - " --bcap ... system capability to be removed\n" + " --bcap ... system capability to be added\n" " --cap ... context capability to be added\n" "\n" "Please report bugs to " PACKAGE_BUGREPORT "\n"); @@ -95,11 +95,11 @@ parseFlags(char const *str, struct vc_ctx_flags *flags) struct vc_err_listparser err; int rc; - rc = vc_list2flag(str,0, &err, flags); + rc = vc_list2cflag(str,0, &err, flags); if (rc==-1) { WRITE_MSG(2, "Unknown flag '"); - write(2, err.ptr, err.len); + Vwrite(2, err.ptr, err.len); WRITE_MSG(2, "'\n"); exit(wrapper_exit_code); } @@ -115,7 +115,7 @@ parseBCaps(char const *str, struct vc_ctx_caps *caps) if (rc==-1) { WRITE_MSG(2, "Unknown bcap '"); - write(2, err.ptr, err.len); + Vwrite(2, err.ptr, err.len); WRITE_MSG(2, "'\n"); exit(wrapper_exit_code); } @@ -131,7 +131,7 @@ parseCCaps(char const *str, struct vc_ctx_caps *caps) if (rc==-1) { WRITE_MSG(2, "Unknown ccap '"); - write(2, err.ptr, err.len); + Vwrite(2, err.ptr, err.len); WRITE_MSG(2, "'\n"); exit(wrapper_exit_code); } @@ -141,10 +141,14 @@ static void parseSecure(struct vc_ctx_flags UNUSED * flags, struct vc_ctx_caps UNUSED * caps) { - caps->ccaps = ~0ull; + caps->ccaps = ~vc_get_insecureccaps(); caps->cmask = ~0ull; - caps->bcaps = vc_get_securecaps(); + caps->bcaps = ~vc_get_insecurebcaps(); caps->bmask = ~0ull; + + // TODO: generalize this + flags->flagword = VC_VXF_HIDE_NETIF; + flags->mask = VC_VXF_HIDE_NETIF; } int main(int argc, char *argv[]) @@ -163,11 +167,11 @@ int main(int argc, char *argv[]) case CMD_HELP : showHelp(1, argv[0], 0); case CMD_VERSION : showVersion(); case CMD_SET : break; // default op currently - case CMD_XID : args.xid = atoi(optarg); break; - case CMD_FLAG : parseFlags(optarg, &args.flags); break; - case CMD_CCAP : parseCCaps(optarg, &args.caps); break; - case CMD_BCAP : parseBCaps(optarg, &args.caps); break; - case CMD_SECURE : parseSecure(&args.flags, &args.caps); break; + case CMD_XID : args.xid = Evc_xidopt2xid(optarg,true); break; + case CMD_FLAG : parseFlags(optarg, &args.flags); break; + case CMD_CCAP : parseCCaps(optarg, &args.caps); break; + case CMD_BCAP : parseBCaps(optarg, &args.caps); break; + case CMD_SECURE : parseSecure(&args.flags, &args.caps); break; default : WRITE_MSG(2, "Try '"); WRITE_STR(2, argv[0]); @@ -178,13 +182,12 @@ int main(int argc, char *argv[]) } if (args.xid==VC_NOCTX) args.xid = Evc_get_task_xid(0); - args.caps.bcaps = ~args.caps.bcaps; if ((args.caps.cmask || args.caps.bmask) && vc_set_ccaps(args.xid, &args.caps)==-1) perror(ENSC_WRAPPERS_PREFIX "vc_set_ccaps()"); else if (args.flags.mask && - vc_set_flags(args.xid, &args.flags)==-1) + vc_set_cflags(args.xid, &args.flags)==-1) perror(ENSC_WRAPPERS_PREFIX "vc_set_flags()"); else if (optind