X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fvserver-start%2Fmain.c;h=3ff03e45e6125af00cff9f1dd176a4f7364d654c;hb=3eb1b2279739d0f16391a3724a9897c686f030d3;hp=deaebda27bea9e1e2b74dd6291a4641d3c1ba7c3;hpb=459ba6df2aeae93944f901a2ff2181289cc8db99;p=util-vserver.git diff --git a/util-vserver/vserver-start/main.c b/util-vserver/vserver-start/main.c index deaebda..3ff03e4 100644 --- a/util-vserver/vserver-start/main.c +++ b/util-vserver/vserver-start/main.c @@ -37,10 +37,12 @@ #include #include #include +#include #include #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,7 +127,18 @@ checkConstraints() Vshelper_doSanityCheck(); } -int main(int argc, char *argv[]) +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 UNUSED argc, char UNUSED *argv[]) { Cfg_init(&cfg); @@ -151,16 +164,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;