X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2Fplanetlab.c;h=69f2228a94b0c82f96edc3654a5498de6ef8b81f;hb=a733a7bca0d2daa282692f560ecd3610850b57a1;hp=824039b4ceb5755cda297cd2f48ed80c3a0a408e;hpb=de7215310b459bac3471991612e1e9a0b0ae347c;p=util-vserver-pl.git diff --git a/src/planetlab.c b/src/planetlab.c index 824039b..69f2228 100644 --- a/src/planetlab.c +++ b/src/planetlab.c @@ -44,6 +44,8 @@ POSSIBILITY OF SUCH DAMAGE. #include #include #include +#define _GNU_SOURCE +#include #include "vserver.h" #include "planetlab.h" @@ -96,10 +98,11 @@ process: 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 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); + vc_set_namespace(ctx, unshare_mask); } /* Set capabilities - these don't take effect until SETUP flag is unset */ @@ -187,6 +190,13 @@ pl_chcontext(xid_t ctx, uint64_t bcaps, const struct sliver_resources *slr) migrate: if (net_migrated || !vc_net_migrate(ctx)) { + uint32_t unshare_mask; + /* Unshare the net namespace if the slice if requested in the local slice configuration */ + unshare_mask = get_space_flag(ctx); + if (unshare_mask != 0) { + vc_enter_namespace(ctx, unshare_mask); + } + if (!vc_tag_migrate(ctx) && !vc_ctx_migrate(ctx, 0)) break; /* done */ net_migrated = 1;