add lxc.console.logpath

v2: add get_config_item

clear_config_item is not supported, as it isn't for lxc.console, bc
you can do 'lxc.console.logfile =' to clear it.  Likewise save_config
is not needed because the config is now just written through the
unexpanded char*.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
This commit is contained in:
Serge Hallyn 2014-08-06 22:39:45 +00:00 committed by Stéphane Graber
parent 281b843648
commit 96f15ca18c
2 changed files with 24 additions and 3 deletions

View File

@ -536,12 +536,23 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
<variablelist> <variablelist>
<varlistentry> <varlistentry>
<term> <term>
<option>lxc.console</option> <option>lxc.console.logfile</option>
</term> </term>
<listitem> <listitem>
<para> <para>
Specify a path to a file where the console output will Specify a path to a file where the console output will
be written. The keyword 'none' will simply disable the be written.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
<option>lxc.console</option>
</term>
<listitem>
<para>
Specify a path to a device to which the console will be
attached. The keyword 'none' will simply disable the
console. This is dangerous once if have a rootfs with a console. This is dangerous once if have a rootfs with a
console device file where the application can write, the console device file where the application can write, the
messages will fall in the host. messages will fall in the host.

View File

@ -89,6 +89,7 @@ static int config_network_ipv6_gateway(const char *, const char *, struct lxc_co
static int config_cap_drop(const char *, const char *, struct lxc_conf *); static int config_cap_drop(const char *, const char *, struct lxc_conf *);
static int config_cap_keep(const char *, const char *, struct lxc_conf *); static int config_cap_keep(const char *, const char *, struct lxc_conf *);
static int config_console(const char *, const char *, struct lxc_conf *); static int config_console(const char *, const char *, struct lxc_conf *);
static int config_console_logfile(const char *, const char *, struct lxc_conf *);
static int config_seccomp(const char *, const char *, struct lxc_conf *); static int config_seccomp(const char *, const char *, struct lxc_conf *);
static int config_includefile(const char *, const char *, struct lxc_conf *); static int config_includefile(const char *, const char *, struct lxc_conf *);
static int config_network_nic(const char *, const char *, struct lxc_conf *); static int config_network_nic(const char *, const char *, struct lxc_conf *);
@ -146,6 +147,7 @@ static struct lxc_config_t config[] = {
{ "lxc.network", config_network }, { "lxc.network", config_network },
{ "lxc.cap.drop", config_cap_drop }, { "lxc.cap.drop", config_cap_drop },
{ "lxc.cap.keep", config_cap_keep }, { "lxc.cap.keep", config_cap_keep },
{ "lxc.console.logfile", config_console_logfile },
{ "lxc.console", config_console }, { "lxc.console", config_console },
{ "lxc.seccomp", config_seccomp }, { "lxc.seccomp", config_seccomp },
{ "lxc.include", config_includefile }, { "lxc.include", config_includefile },
@ -1604,6 +1606,12 @@ static int config_console(const char *key, const char *value,
return config_path_item(&lxc_conf->console.path, value); return config_path_item(&lxc_conf->console.path, value);
} }
static int config_console_logfile(const char *key, const char *value,
struct lxc_conf *lxc_conf)
{
return config_path_item(&lxc_conf->console.log_path, value);
}
int append_unexp_config_line(const char *line, struct lxc_conf *conf) int append_unexp_config_line(const char *line, struct lxc_conf *conf)
{ {
size_t len = conf->unexpanded_len, linelen = strlen(line); size_t len = conf->unexpanded_len, linelen = strlen(line);
@ -2261,6 +2269,8 @@ int lxc_get_config_item(struct lxc_conf *c, const char *key, char *retv,
return lxc_get_cgroup_entry(c, retv, inlen, key + 11); return lxc_get_cgroup_entry(c, retv, inlen, key + 11);
else if (strcmp(key, "lxc.utsname") == 0) else if (strcmp(key, "lxc.utsname") == 0)
v = c->utsname ? c->utsname->nodename : NULL; v = c->utsname ? c->utsname->nodename : NULL;
else if (strcmp(key, "lxc.console.logfile") == 0)
v = c->console.log_path;
else if (strcmp(key, "lxc.console") == 0) else if (strcmp(key, "lxc.console") == 0)
v = c->console.path; v = c->console.path;
else if (strcmp(key, "lxc.rootfs.mount") == 0) else if (strcmp(key, "lxc.rootfs.mount") == 0)