]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
support lxc.mount.auto for get_config_item and clear_config_item
authorSerge Hallyn <serge.hallyn@ubuntu.com>
Wed, 12 Mar 2014 23:27:24 +0000 (18:27 -0500)
committerStéphane Graber <stgraber@ubuntu.com>
Thu, 13 Mar 2014 00:16:14 +0000 (20:16 -0400)
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
src/lxc/conf.c
src/lxc/conf.h
src/lxc/confile.c

index 43465855278580ddffa1c04cea2e78788da00fb6..710b961936f5490d0e8ebfb6be3daa2ace7ea4dc 100644 (file)
@@ -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;
index 28042121bf2806583d206cc1a95ba840ba7b5471..c3705873ce6ad067225a110610f2dcb8505b3b75 100644 (file)
@@ -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);
index 8b1c0b6e535b641f6ae58eb6d8b320bd120f4ada..d6cf1511c174fdb4d90b4043a65cf077480e986c 100644 (file)
@@ -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)