Commit d1ea5ad0 by Serge Hallyn Committed by Stéphane Graber

support lxc.mount.auto for get_config_item and clear_config_item

parent 7cdf119b
......@@ -4102,6 +4102,12 @@ int lxc_clear_mount_entries(struct lxc_conf *c)
return 0;
}
int lxc_clear_automounts(struct lxc_conf *c)
{
c->auto_mounts = 0;
return 0;
}
int lxc_clear_hooks(struct lxc_conf *c, const char *key)
{
struct lxc_list *it,*next;
......
......@@ -358,6 +358,7 @@ extern int lxc_clear_config_caps(struct lxc_conf *c);
extern int lxc_clear_config_keepcaps(struct lxc_conf *c);
extern int lxc_clear_cgroups(struct lxc_conf *c, const char *key);
extern int lxc_clear_mount_entries(struct lxc_conf *c);
extern int lxc_clear_automounts(struct lxc_conf *c);
extern int lxc_clear_hooks(struct lxc_conf *c, const char *key);
extern int lxc_clear_idmaps(struct lxc_conf *c);
extern int lxc_clear_groups(struct lxc_conf *c);
......
......@@ -1941,6 +1941,40 @@ static int lxc_get_mount_entries(struct lxc_conf *c, char *retv, int inlen)
return fulllen;
}
static int lxc_get_auto_mounts(struct lxc_conf *c, char *retv, int inlen)
{
int len, fulllen = 0;
if (!retv)
inlen = 0;
else
memset(retv, 0, inlen);
if (!(c->auto_mounts & LXC_AUTO_ALL_MASK))
return 0;
switch (c->auto_mounts & LXC_AUTO_PROC_MASK) {
case LXC_AUTO_PROC_MIXED: strprint(retv, inlen, "proc:mixed\n"); break;
case LXC_AUTO_PROC_RW: strprint(retv, inlen, "proc:rw"); break;
default: break;
}
switch (c->auto_mounts & LXC_AUTO_SYS_MASK) {
case LXC_AUTO_SYS_RO: strprint(retv, inlen, "sys:ro"); break;
case LXC_AUTO_SYS_RW: strprint(retv, inlen, "sys:rw"); break;
default: break;
}
switch (c->auto_mounts & LXC_AUTO_CGROUP_MASK) {
case LXC_AUTO_CGROUP_MIXED: strprint(retv, inlen, "cgroup:mixed"); break;
case LXC_AUTO_CGROUP_RO: strprint(retv, inlen, "cgroup:ro"); break;
case LXC_AUTO_CGROUP_RW: strprint(retv, inlen, "cgroup:rw"); break;
case LXC_AUTO_CGROUP_FULL_MIXED: strprint(retv, inlen, "cgroup-full:mixed"); break;
case LXC_AUTO_CGROUP_FULL_RO: strprint(retv, inlen, "cgroup-full:ro"); break;
case LXC_AUTO_CGROUP_FULL_RW: strprint(retv, inlen, "cgroup-full:rw"); break;
default: break;
}
return fulllen;
}
/*
* lxc.network.0.XXX, where XXX can be: name, type, link, flags, type,
* macvlan.mode, veth.pair, vlan, ipv4, ipv6, script.up, hwaddr, mtu,
......@@ -2074,6 +2108,8 @@ int lxc_get_config_item(struct lxc_conf *c, const char *key, char *retv,
if (strcmp(key, "lxc.mount.entry") == 0)
return lxc_get_mount_entries(c, retv, inlen);
else if (strcmp(key, "lxc.mount.auto") == 0)
return lxc_get_auto_mounts(c, retv, inlen);
else if (strcmp(key, "lxc.mount") == 0)
v = c->fstab;
else if (strcmp(key, "lxc.tty") == 0)
......@@ -2151,6 +2187,8 @@ int lxc_clear_config_item(struct lxc_conf *c, const char *key)
return lxc_clear_cgroups(c, key);
else if (strcmp(key, "lxc.mount.entries") == 0)
return lxc_clear_mount_entries(c);
else if (strcmp(key, "lxc.mount.auto") == 0)
return lxc_clear_automounts(c);
else if (strncmp(key, "lxc.hook", 8) == 0)
return lxc_clear_hooks(c, key);
else if (strncmp(key, "lxc.group", 9) == 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