]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
Add support share pid namespace 1836/head
authorLiFeng <lifeng68@huawei.com>
Fri, 29 Sep 2017 11:53:43 +0000 (19:53 +0800)
committerLiFeng <lifeng68@huawei.com>
Fri, 29 Sep 2017 11:53:43 +0000 (19:53 +0800)
Signed-off-by: LiFeng <lifeng68@huawei.com>
src/lxc/start.c
src/lxc/tools/lxc_start.c

index 33b30cb52921805cd1a869eadefe81a2cc178216..b838e579d19135edd9cfd6ea54d6a7fdcb4dae1c 100644 (file)
@@ -1126,7 +1126,7 @@ static int lxc_recv_ttys_from_child(struct lxc_handler *handler)
 
 void resolve_clone_flags(struct lxc_handler *handler)
 {
-       handler->clone_flags = CLONE_NEWPID | CLONE_NEWNS;
+       handler->clone_flags = CLONE_NEWNS;
 
        if (!lxc_list_empty(&handler->conf->id_map))
                handler->clone_flags |= CLONE_NEWUSER;
@@ -1147,6 +1147,11 @@ void resolve_clone_flags(struct lxc_handler *handler)
                handler->clone_flags |= CLONE_NEWUTS;
        else
                INFO("Inheriting a UTS namespace.");
+
+       if (handler->conf->inherit_ns_fd[LXC_NS_PID] == -1)
+               handler->clone_flags |= CLONE_NEWPID;
+       else
+               INFO("Inheriting a PID namespace.");
 }
 
 /* lxc_spawn() performs crucial setup tasks and clone()s the new process which
index 20d5b0364320f56925a579ce2c6ffeee0620a1d9..d4653274572e8b590c291f1f9344a2b9afed5851 100644 (file)
@@ -53,6 +53,7 @@
 #define OPT_SHARE_NET OPT_USAGE + 1
 #define OPT_SHARE_IPC OPT_USAGE + 2
 #define OPT_SHARE_UTS OPT_USAGE + 3
+#define OPT_SHARE_PID OPT_USAGE + 4
 
 lxc_log_define(lxc_start_ui, lxc);
 
@@ -149,6 +150,7 @@ static int my_parser(struct lxc_arguments* args, int c, char* arg)
        case OPT_SHARE_NET: args->share_ns[LXC_NS_NET] = arg; break;
        case OPT_SHARE_IPC: args->share_ns[LXC_NS_IPC] = arg; break;
        case OPT_SHARE_UTS: args->share_ns[LXC_NS_UTS] = arg; break;
+       case OPT_SHARE_PID: args->share_ns[LXC_NS_PID] = arg; break;
        }
        return 0;
 }
@@ -165,6 +167,7 @@ static const struct option my_longopts[] = {
        {"share-net", required_argument, 0, OPT_SHARE_NET},
        {"share-ipc", required_argument, 0, OPT_SHARE_IPC},
        {"share-uts", required_argument, 0, OPT_SHARE_UTS},
+       {"share-pid", required_argument, 0, OPT_SHARE_PID},
        LXC_COMMON_OPTIONS
 };
 
@@ -187,7 +190,7 @@ Options :\n\
                          If not specified, exit with failure instead\n\
                          Note: --daemon implies --close-all-fds\n\
   -s, --define KEY=VAL   Assign VAL to configuration variable KEY\n\
-      --share-[net|ipc|uts]=NAME Share a namespace with another container or pid\n\
+      --share-[net|ipc|uts|pid]=NAME Share a namespace with another container or pid\n\
 ",
        .options   = my_longopts,
        .parser    = my_parser,