X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fvserver-start%2Fmain.c;fp=util-vserver%2Fvserver-start%2Fmain.c;h=6da6b2744f3601e068dbfd7d29b8e8ddb9f279e1;hb=328f35cbd18b219a593f75b2048f2b45ad65f912;hp=deaebda27bea9e1e2b74dd6291a4641d3c1ba7c3;hpb=31110046e99492c1bb9c0a9e12962801ced749b7;p=util-vserver.git diff --git a/util-vserver/vserver-start/main.c b/util-vserver/vserver-start/main.c index deaebda..6da6b27 100644 --- a/util-vserver/vserver-start/main.c +++ b/util-vserver/vserver-start/main.c @@ -41,6 +41,7 @@ #define ENSC_WRAPPERS_VSERVER 1 #define ENSC_WRAPPERS_SOCKET 1 +#define ENSC_WRAPPERS_UNISTD 1 #define ENSC_WRAPPERS_FCNTL 1 #define ENSC_WRAPPERS_STDLIB 1 #include @@ -125,6 +126,17 @@ checkConstraints() Vshelper_doSanityCheck(); } +static void +setCFlag(xid_t xid, uint_least64_t value) +{ + struct vc_ctx_flags flags = { + .flagword = value, + .mask = value + }; + + Evc_set_cflags(xid, &flags); +} + int main(int argc, char *argv[]) { Cfg_init(&cfg); @@ -151,16 +163,26 @@ int main(int argc, char *argv[]) case 0 : Undo_init(); execScriptlets(&cfgdir, opts.VSERVER_NAME, "prepre-start"); - activateInterfaces(); + activateInterfaces(&cfg.interfaces); xid = Evc_ctx_create(cfg.xid); + setCFlag(xid, VC_VXF_INFO_NAMESPACE); + mountVserver(&cfg); // prepareInit(&cfg, &cfgdir); Esend(sync_fd[0], &xid, sizeof xid, MSG_NOSIGNAL); + // 'pre-start.parent' will be executed now in the parent-context Erecv(sync_fd[0], &c, 1, 0); execScriptlets(&cfgdir, opts.VSERVER_NAME, "pre-start"); + if (cfg.nice) + Enice(atoi(cfg.nice)); + if (opts.OPTION_DEFAULTTTY) + setDefaultTTY(&cfgdir, 0); + + + Undo_detach(); break;