remove non-used function
[util-vserver-pl.git] / src / planetlab.c
index 90ba4dd..b931e81 100644 (file)
@@ -97,10 +97,11 @@ process:
   if (vc_ctx_create(ctx, 0) == VC_NOCTX)
     return -1;
 
-    if (unshare_flags != 0) {
+  if (unshare_flags != 0) {
       unshare(unshare_flags);
       unshare_flags |= vc_get_space_mask();
-      vc_set_namespace(ctx, unshare_flags);
+      //printf("vc_set_namespace(%d, %X)\n", ctx, unshare_flags);
+      //vc_set_namespace(ctx, unshare_flags);
   }
 
   /* Set capabilities - these don't take effect until SETUP flag is unset */
@@ -138,11 +139,12 @@ pl_setup_done(xid_t ctx)
 #define RETRY_LIMIT  10
 
 int
-pl_chcontext(xid_t ctx, uint64_t bcaps, const struct sliver_resources *slr)
+pl_chcontext(xid_t ctx, uint64_t bcaps, const struct sliver_resources *slr, 
+            int unshare_netns)
 {
   int  retry_count = 0;
   int  net_migrated = 0;
-
+  
   if (pl_set_ulimits(slr) != 0)
     return -1;
 
@@ -152,12 +154,12 @@ pl_chcontext(xid_t ctx, uint64_t bcaps, const struct sliver_resources *slr)
 
       if (vc_get_cflags(ctx, &vc_flags))
        {
-        uint32_t unshare_flags;
+         uint32_t unshare_flags;
          if (errno != ESRCH)
            return -1;
 
-       /* Unshare the net namespace if the slice if requested in the local slice configuration */
-        unshare_flags = get_space_flag(ctx);
+         /* Always unshare the net namespace for a new context */
+         unshare_flags = CLONE_NEWNET;
 
          /* context doesn't exist - create it */
          if (create_context(ctx, bcaps, unshare_flags))
@@ -192,13 +194,16 @@ pl_chcontext(xid_t ctx, uint64_t bcaps, const struct sliver_resources *slr)
     migrate:
       if (net_migrated || !vc_net_migrate(ctx))
        {
-        uint32_t unshare_flags;
-      /* Unshare the net namespace if the slice if requested in the local slice configuration */
-      unshare_flags = get_space_flag(ctx);
-      if (unshare_flags != 0) {
-          unshare_flags |=vc_get_space_mask();
-          vc_enter_namespace(ctx, unshare_flags);
-      }
+         uint32_t unshare_flags;
+
+         /* Unshare the net namespace if requested in the slice config */
+         unshare_flags = unshare_netns ? CLONE_NEWNET : 0;
+
+         if (unshare_flags != 0) {
+           unshare_flags |=vc_get_space_mask();
+           //printf("vc_enter_namespace(%d, %X)\n", ctx, unshare_flags);
+           //vc_enter_namespace(ctx, unshare_flags);
+         }
 
          if (!vc_tag_migrate(ctx) && !vc_ctx_migrate(ctx, 0))
            break;  /* done */
@@ -300,10 +305,6 @@ pl_get_limits(const char *context, struct sliver_resources *slr)
     {"rlimits/openfd.soft", TYPE_LONG, &slr->vs_openfd.soft},
     {"rlimits/openfd.min", TYPE_LONG, &slr->vs_openfd.min},
 
-    {"rlimits/memlock.hard", TYPE_LONG, &slr->vs_memlock.hard},
-    {"rlimits/memlock.soft", TYPE_LONG, &slr->vs_memlock.soft},
-    {"rlimits/memlock.min", TYPE_LONG, &slr->vs_memlock.min},
-
     {"personality", TYPE_PERS, &slr->personality},
 
     {0,0}
@@ -327,10 +328,6 @@ pl_get_limits(const char *context, struct sliver_resources *slr)
   slr->vs_openfd.soft = VC_LIM_KEEP;
   slr->vs_openfd.min = VC_LIM_KEEP;
 
-  slr->vs_memlock.hard = VC_LIM_KEEP;
-  slr->vs_memlock.soft = VC_LIM_KEEP;
-  slr->vs_memlock.min = VC_LIM_KEEP;
-
   slr->personality = 0;
 
   cwd = open(".", O_RDONLY);
@@ -446,6 +443,5 @@ pl_set_ulimits(const struct sliver_resources *slr)
   set_one_ulimit(RLIMIT_AS, &slr->vs_as);
   set_one_ulimit(RLIMIT_NPROC, &slr->vs_nproc);
   set_one_ulimit(RLIMIT_NOFILE, &slr->vs_openfd);
-  set_one_ulimit(RLIMIT_MEMLOCK, &slr->vs_memlock);
   return set_personality(slr->personality);
 }