X-Git-Url: http://git.onelab.eu/?p=util-vserver-pl.git;a=blobdiff_plain;f=src%2Fplanetlab.c;h=824039b4ceb5755cda297cd2f48ed80c3a0a408e;hp=15cc7e52a42a2973f41a1de4c567e90c44c9e0b5;hb=de7215310b459bac3471991612e1e9a0b0ae347c;hpb=2bfb0d313ab75d2072b4f6ccd46838a108332be8 diff --git a/src/planetlab.c b/src/planetlab.c index 15cc7e5..824039b 100644 --- a/src/planetlab.c +++ b/src/planetlab.c @@ -64,6 +64,7 @@ create_context(xid_t ctx, uint64_t bcaps) struct vc_ctx_caps vc_caps; struct vc_net_flags vc_nf; struct vc_net_caps vc_ncaps; + uint32_t unshare_mask; /* Create network context */ if (vc_net_create(ctx) == VC_NOCTX) { @@ -88,12 +89,19 @@ tag: return -1; process: + /* * Create context info - this sets the STATE_SETUP and STATE_INIT flags. */ if (vc_ctx_create(ctx, 0) == VC_NOCTX) return -1; + /* Unshare the NET namespace if the slice if requested in the local slice configuration */ + unshare_mask = get_space_flag(ctx); + if (unshare_mask != 0) { + sys_unshare(unshare_mask); + } + /* Set capabilities - these don't take effect until SETUP flag is unset */ vc_caps.bcaps = bcaps; vc_caps.bmask = ~0ULL; /* currently unused */ @@ -251,6 +259,7 @@ struct pl_resources { if (index < len) index++; else goto out; #define VSERVERCONF "/etc/vservers/" + void pl_get_limits(const char *context, struct sliver_resources *slr) {