From: Marek Majkowski Date: Tue, 12 Nov 2013 16:19:55 +0000 (-0800) Subject: Refactoring - make the option parsing code generic X-Git-Tag: lxc-1.0.0.beta1~93^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4692616518ce993fd333d597dae6c6d95da87c3d;p=thirdparty%2Flxc.git Refactoring - make the option parsing code generic --- diff --git a/src/lxc/arguments.h b/src/lxc/arguments.h index 1befc8da0..021f552e2 100644 --- a/src/lxc/arguments.h +++ b/src/lxc/arguments.h @@ -54,8 +54,7 @@ struct lxc_arguments { int lxcpath_additional; /* for lxc-start */ - const char *share_net; - const char *share_ipc; + const char *share_ns[32]; // size must be greater than LXC_NS_MAX /* for lxc-checkpoint/restart */ const char *statefile; diff --git a/src/lxc/lxc_start.c b/src/lxc/lxc_start.c index 79186ade3..a7976eafb 100644 --- a/src/lxc/lxc_start.c +++ b/src/lxc/lxc_start.c @@ -151,8 +151,8 @@ static int my_parser(struct lxc_arguments* args, int c, char* arg) case 'C': args->close_all_fds = 1; break; case 's': return lxc_config_define_add(&defines, arg); case 'p': args->pidfile = arg; break; - case OPT_SHARE_NET: args->share_net = arg; break; - case OPT_SHARE_IPC: args->share_ipc = arg; break; + case OPT_SHARE_NET: args->share_ns[LXC_NS_NET] = arg; break; + case OPT_SHARE_IPC: args->share_ns[LXC_NS_IPC] = arg; break; } return 0; } @@ -306,26 +306,19 @@ int main(int argc, char *argv[]) } } - if (my_args.share_net != NULL) { - int pid = pid_from_lxcname(my_args.share_net, lxcpath); - if (pid < 1) - goto out; - - int fd = open_ns(pid, "net"); - if (fd < 0) - goto out; - conf->inherit_ns_fd[LXC_NS_NET] = fd; - } + int i; + for (i = 0; i < LXC_NS_MAX; i++) { + if (my_args.share_ns[i] == NULL) + continue; - if (my_args.share_ipc != NULL) { - int pid = pid_from_lxcname(my_args.share_ipc, lxcpath); + int pid = pid_from_lxcname(my_args.share_ns[i], lxcpath); if (pid < 1) goto out; - int fd = open_ns(pid, "ipc"); + int fd = open_ns(pid, ns_info[i].proc_name); if (fd < 0) goto out; - conf->inherit_ns_fd[LXC_NS_IPC] = fd; + conf->inherit_ns_fd[i] = fd; } if (my_args.daemonize) {