contd...
[util-vserver-pl.git] / src / planetlab.c
index 689ced4..69f2228 100644 (file)
@@ -44,6 +44,8 @@ POSSIBILITY OF SUCH DAMAGE.
 #include <ctype.h>
 #include <sys/resource.h>
 #include <fcntl.h>
+#define _GNU_SOURCE 
+#include <sched.h>
 
 #include "vserver.h"
 #include "planetlab.h"
@@ -100,7 +102,7 @@ process:
   unshare_mask = get_space_flag(ctx);
   if (unshare_mask != 0) {
       sys_unshare(unshare_mask);
-      vc_set_namespace(ctx, unshare_mask | vc_get_space_mask());
+      vc_set_namespace(ctx, unshare_mask);
   }
 
   /* Set capabilities - these don't take effect until SETUP flag is unset */
@@ -188,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;