tools: move lxc-start to API symbols only

Closes #2073. Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
parent 6a3ec2c5
...@@ -20,35 +20,30 @@ ...@@ -20,35 +20,30 @@
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
#include "config.h"
#include <stdio.h> #define _GNU_SOURCE
#include <libgen.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h> #include <errno.h>
#include <fcntl.h> #include <fcntl.h>
#include <libgen.h>
#include <net/if.h>
#include <signal.h> #include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/param.h> #include <sys/param.h>
#include <sys/utsname.h>
#include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <arpa/inet.h> #include <sys/types.h>
#include <netinet/in.h> #include <sys/utsname.h>
#include <net/if.h>
#include <lxc/lxccontainer.h> #include <lxc/lxccontainer.h>
#include "log.h"
#include "caps.h"
#include "lxc.h"
#include "conf.h"
#include "cgroup.h"
#include "utils.h"
#include "confile.h"
#include "arguments.h" #include "arguments.h"
#include "tool_list.h"
#include "tool_utils.h"
static struct lxc_list defines; static struct lxc_list defines;
...@@ -82,21 +77,44 @@ err: ...@@ -82,21 +77,44 @@ err:
return err; return err;
} }
static int my_parser(struct lxc_arguments* args, int c, char* arg) static int my_parser(struct lxc_arguments *args, int c, char *arg)
{ {
switch (c) { switch (c) {
case 'c': args->console = arg; break; case 'c':
case 'L': args->console_log = arg; break; args->console = arg;
case 'd': args->daemonize = 1; break; break;
case 'F': args->daemonize = 0; break; case 'L':
case 'f': args->rcfile = arg; break; args->console_log = arg;
case 'C': args->close_all_fds = 1; break; break;
case 's': return lxc_config_define_add(&defines, arg); case 'd':
case 'p': args->pidfile = arg; break; args->daemonize = 1;
case OPT_SHARE_NET: args->share_ns[LXC_NS_NET] = arg; break; break;
case OPT_SHARE_IPC: args->share_ns[LXC_NS_IPC] = arg; break; case 'F':
case OPT_SHARE_UTS: args->share_ns[LXC_NS_UTS] = arg; break; args->daemonize = 0;
case OPT_SHARE_PID: args->share_ns[LXC_NS_PID] = arg; break; break;
case 'f':
args->rcfile = arg;
break;
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_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; return 0;
} }
...@@ -147,11 +165,10 @@ Options :\n\ ...@@ -147,11 +165,10 @@ Options :\n\
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
struct lxc_conf *conf;
struct lxc_log log;
const char *lxcpath; const char *lxcpath;
char *const *args; char *const *args;
struct lxc_container *c; struct lxc_container *c;
struct lxc_log log;
int err = EXIT_FAILURE; int err = EXIT_FAILURE;
char *rcfile = NULL; char *rcfile = NULL;
char *const default_args[] = { char *const default_args[] = {
...@@ -181,7 +198,6 @@ int main(int argc, char *argv[]) ...@@ -181,7 +198,6 @@ int main(int argc, char *argv[])
if (lxc_log_init(&log)) if (lxc_log_init(&log))
exit(err); exit(err);
lxc_log_options_no_override();
lxcpath = my_args.lxcpath[0]; lxcpath = my_args.lxcpath[0];
if (access(lxcpath, O_RDONLY) < 0) { if (access(lxcpath, O_RDONLY) < 0) {
...@@ -259,11 +275,12 @@ int main(int argc, char *argv[]) ...@@ -259,11 +275,12 @@ int main(int argc, char *argv[])
* We should use set_config_item() over &defines, which would handle * We should use set_config_item() over &defines, which would handle
* unset c->lxc_conf for us and let us not use lxc_config_define_load() * unset c->lxc_conf for us and let us not use lxc_config_define_load()
*/ */
if (!c->lxc_conf) if (!c->lxc_conf) {
c->lxc_conf = lxc_conf_init(); fprintf(stderr, "No container config specified\n");
conf = c->lxc_conf; goto out;
}
if (lxc_config_define_load(&defines, conf)) if (lxc_config_define_load(&defines, c))
goto out; goto out;
if (!rcfile && !strcmp("/sbin/init", args[0])) { if (!rcfile && !strcmp("/sbin/init", args[0])) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment