Commit 571e6ec8 by Daniel Lezcano

Move configuration info to the structure

Move configuration informations from the handler structure to the configuration structure. Signed-off-by: 's avatarDaniel Lezcano <dlezcano@fr.ibm.com>
parent 88d5514d
...@@ -132,7 +132,7 @@ static int trigger_command(int fd, struct lxc_request *request, ...@@ -132,7 +132,7 @@ static int trigger_command(int fd, struct lxc_request *request,
static void command_fd_cleanup(int fd, struct lxc_handler *handler, static void command_fd_cleanup(int fd, struct lxc_handler *handler,
struct lxc_epoll_descr *descr) struct lxc_epoll_descr *descr)
{ {
lxc_console_remove_fd(fd, &handler->tty_info); lxc_console_remove_fd(fd, &handler->conf.tty_info);
lxc_mainloop_del_handler(descr, fd); lxc_mainloop_del_handler(descr, fd);
close(fd); close(fd);
} }
......
...@@ -1242,6 +1242,7 @@ int lxc_conf_init(struct lxc_conf *conf) ...@@ -1242,6 +1242,7 @@ int lxc_conf_init(struct lxc_conf *conf)
conf->utsname = NULL; conf->utsname = NULL;
conf->tty = 0; conf->tty = 0;
conf->pts = 0; conf->pts = 0;
conf->console[0] = '\0';
lxc_list_init(&conf->cgroup); lxc_list_init(&conf->cgroup);
lxc_list_init(&conf->networks); lxc_list_init(&conf->networks);
return 0; return 0;
...@@ -1619,44 +1620,44 @@ void lxc_delete_tty(struct lxc_tty_info *tty_info) ...@@ -1619,44 +1620,44 @@ void lxc_delete_tty(struct lxc_tty_info *tty_info)
tty_info->nbtty = 0; tty_info->nbtty = 0;
} }
int lxc_setup(const char *name, struct lxc_handler *handler) int lxc_setup(const char *name, struct lxc_conf *lxc_conf)
{ {
if (setup_utsname(handler->lxc_conf.utsname)) { if (setup_utsname(lxc_conf->utsname)) {
ERROR("failed to setup the utsname for '%s'", name); ERROR("failed to setup the utsname for '%s'", name);
return -1; return -1;
} }
if (!lxc_list_empty(&handler->lxc_conf.networks) && setup_network(name)) { if (!lxc_list_empty(&lxc_conf->networks) && setup_network(name)) {
ERROR("failed to setup the network for '%s'", name); ERROR("failed to setup the network for '%s'", name);
return -1; return -1;
} }
if (setup_cgroup(name, &handler->lxc_conf.cgroup)) { if (setup_cgroup(name, &lxc_conf->cgroup)) {
ERROR("failed to setup the cgroups for '%s'", name); ERROR("failed to setup the cgroups for '%s'", name);
return -1; return -1;
} }
if (setup_mount(handler->lxc_conf.fstab)) { if (setup_mount(lxc_conf->fstab)) {
ERROR("failed to setup the mounts for '%s'", name); ERROR("failed to setup the mounts for '%s'", name);
return -1; return -1;
} }
if (setup_console(handler->lxc_conf.rootfs, handler->tty)) { if (setup_console(lxc_conf->rootfs, lxc_conf->console)) {
ERROR("failed to setup the console for '%s'", name); ERROR("failed to setup the console for '%s'", name);
return -1; return -1;
} }
if (setup_tty(handler->lxc_conf.rootfs, &handler->tty_info)) { if (setup_tty(lxc_conf->rootfs, &lxc_conf->tty_info)) {
ERROR("failed to setup the ttys for '%s'", name); ERROR("failed to setup the ttys for '%s'", name);
return -1; return -1;
} }
if (setup_rootfs(handler->lxc_conf.rootfs)) { if (setup_rootfs(lxc_conf->rootfs)) {
ERROR("failed to set rootfs for '%s'", name); ERROR("failed to set rootfs for '%s'", name);
return -1; return -1;
} }
if (setup_pts(handler->lxc_conf.pts)) { if (setup_pts(lxc_conf->pts)) {
ERROR("failed to setup the new pts instance"); ERROR("failed to setup the new pts instance");
return -1; return -1;
} }
......
...@@ -110,24 +110,6 @@ struct lxc_cgroup { ...@@ -110,24 +110,6 @@ struct lxc_cgroup {
}; };
/* /*
* Defines the global container configuration
* @rootfs : the root directory to run the container
* @mount : the list of mount points
* @network : the network configuration
* @utsname : the container utsname
*/
struct lxc_conf {
const char *rcfile;
char *rootfs;
char *fstab;
int tty;
int pts;
struct utsname *utsname;
struct lxc_list cgroup;
struct lxc_list networks;
};
/*
* Defines a structure containing a pty information for * Defines a structure containing a pty information for
* virtualizing a tty * virtualizing a tty
* @name : the path name of the slave pty side * @name : the path name of the slave pty side
...@@ -152,6 +134,26 @@ struct lxc_tty_info { ...@@ -152,6 +134,26 @@ struct lxc_tty_info {
}; };
/* /*
* Defines the global container configuration
* @rootfs : the root directory to run the container
* @mount : the list of mount points
* @network : the network configuration
* @utsname : the container utsname
*/
struct lxc_conf {
const char *rcfile;
char *rootfs;
char *fstab;
int tty;
int pts;
struct utsname *utsname;
struct lxc_list cgroup;
struct lxc_list networks;
struct lxc_tty_info tty_info;
char console[MAXPATHLEN];
};
/*
* Initialize the lxc configuration structure * Initialize the lxc configuration structure
*/ */
extern int lxc_conf_init(struct lxc_conf *conf); extern int lxc_conf_init(struct lxc_conf *conf);
...@@ -179,7 +181,7 @@ extern void lxc_delete_tty(struct lxc_tty_info *tty_info); ...@@ -179,7 +181,7 @@ extern void lxc_delete_tty(struct lxc_tty_info *tty_info);
struct lxc_handler; struct lxc_handler;
extern int lxc_setup(const char *name, struct lxc_handler *handler); extern int lxc_setup(const char *name, struct lxc_conf *lxc_conf);
extern int conf_has(const char *name, const char *info); extern int conf_has(const char *name, const char *info);
......
...@@ -95,7 +95,7 @@ extern int lxc_console_callback(int fd, struct lxc_request *request, ...@@ -95,7 +95,7 @@ extern int lxc_console_callback(int fd, struct lxc_request *request,
struct lxc_handler *handler) struct lxc_handler *handler)
{ {
int ttynum = request->data; int ttynum = request->data;
struct lxc_tty_info *tty_info = &handler->tty_info; struct lxc_tty_info *tty_info = &handler->conf.tty_info;
if (ttynum > 0) { if (ttynum > 0) {
if (ttynum > tty_info->nbtty) if (ttynum > tty_info->nbtty)
......
...@@ -256,7 +256,7 @@ struct lxc_handler *lxc_init(const char *name) ...@@ -256,7 +256,7 @@ struct lxc_handler *lxc_init(const char *name)
goto out_put_lock; goto out_put_lock;
} }
if (lxc_conf_init(&handler->lxc_conf)) { if (lxc_conf_init(&handler->conf)) {
ERROR("failed to initialize the configuration"); ERROR("failed to initialize the configuration");
goto out_aborting; goto out_aborting;
} }
...@@ -265,18 +265,18 @@ struct lxc_handler *lxc_init(const char *name) ...@@ -265,18 +265,18 @@ struct lxc_handler *lxc_init(const char *name)
if (!access(path, F_OK)) { if (!access(path, F_OK)) {
if (lxc_config_read(path, &handler->lxc_conf)) { if (lxc_config_read(path, &handler->conf)) {
ERROR("failed to read the configuration file"); ERROR("failed to read the configuration file");
goto out_aborting; goto out_aborting;
} }
} }
if (console_init(handler->tty, sizeof(handler->tty))) { if (console_init(handler->conf.console, sizeof(handler->conf.console))) {
ERROR("failed to initialize the console"); ERROR("failed to initialize the console");
goto out_aborting; goto out_aborting;
} }
if (lxc_create_tty(name, &handler->tty_info)) { if (lxc_create_tty(name, &handler->conf.tty_info)) {
ERROR("failed to create the ttys"); ERROR("failed to create the ttys");
goto out_aborting; goto out_aborting;
} }
...@@ -301,7 +301,7 @@ out: ...@@ -301,7 +301,7 @@ out:
return handler; return handler;
out_delete_tty: out_delete_tty:
lxc_delete_tty(&handler->tty_info); lxc_delete_tty(&handler->conf.tty_info);
out_aborting: out_aborting:
set_state(name, handler, ABORTING); set_state(name, handler, ABORTING);
out_put_lock: out_put_lock:
...@@ -323,7 +323,7 @@ void lxc_fini(const char *name, struct lxc_handler *handler) ...@@ -323,7 +323,7 @@ void lxc_fini(const char *name, struct lxc_handler *handler)
if (handler) { if (handler) {
remove_init_pid(name, handler->pid); remove_init_pid(name, handler->pid);
lxc_delete_tty(&handler->tty_info); lxc_delete_tty(&handler->conf.tty_info);
lxc_put_lock(handler->lock); lxc_put_lock(handler->lock);
free(handler); free(handler);
} }
...@@ -377,7 +377,7 @@ static int do_start(void *arg) ...@@ -377,7 +377,7 @@ static int do_start(void *arg)
} }
/* Setup the container, ip, names, utsname, ... */ /* Setup the container, ip, names, utsname, ... */
if (lxc_setup(name, handler)) { if (lxc_setup(name, &handler->conf)) {
ERROR("failed to setup the container"); ERROR("failed to setup the container");
goto out_warn_father; goto out_warn_father;
} }
......
...@@ -28,11 +28,9 @@ struct lxc_handler { ...@@ -28,11 +28,9 @@ struct lxc_handler {
int sigfd; int sigfd;
int lock; int lock;
char tty[MAXPATHLEN];
char nsgroup[MAXPATHLEN]; char nsgroup[MAXPATHLEN];
sigset_t oldmask; sigset_t oldmask;
struct lxc_tty_info tty_info; struct lxc_conf conf;
struct lxc_conf lxc_conf;
}; };
extern struct lxc_handler *lxc_init(const char *name); extern struct lxc_handler *lxc_init(const char *name);
......
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