]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
conf{,ile}: allow to clear all config items 1565/head
authorChristian Brauner <christian.brauner@ubuntu.com>
Mon, 15 May 2017 12:53:06 +0000 (14:53 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Mon, 15 May 2017 13:24:17 +0000 (15:24 +0200)
Closes #1561.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/conf.c
src/lxc/conf.h
src/lxc/confile.c

index 76a190120340ed48953aebbd53dc2649bff1a3ee..a66d9e704e52c4b12efc5346480dd1f2aea1dc8d 100644 (file)
@@ -4937,3 +4937,82 @@ struct lxc_list *sort_cgroup_settings(struct lxc_list* cgroup_settings)
 
        return result;
 }
+
+int lxc_clear_simple_config_item(struct lxc_conf *c, const char *key)
+{
+       if (strcmp(key, "lxc.utsname") == 0) {
+               free(c->utsname);
+               c->utsname = NULL;
+       } else if (strcmp(key, "lxc.arch") == 0) {
+               c->personality = -1;
+       } else if (strcmp(key, "lxc.haltsignal") == 0) {
+               c->haltsignal = 0;
+       } else if (strcmp(key, "lxc.rebootsignal") == 0) {
+               c->rebootsignal = 0;
+       } else if (strcmp(key, "lxc.stopsignal") == 0) {
+               c->stopsignal = 0;
+       } else if (strcmp(key, "lxc.init_cmd") == 0) {
+               free(c->init_cmd);
+               c->init_cmd = NULL;
+       } else if (strcmp(key, "lxc.init_uid") == 0) {
+               c->init_uid = 0;
+       } else if (strcmp(key, "lxc.init_gid") == 0) {
+               c->init_gid = 0;
+       } else if (strcmp(key, "lxc.ephemeral") == 0) {
+               c->ephemeral = 0;
+       } else if (strcmp(key, "lxc.console.logfile") == 0) {
+               free(c->console.log_path);
+               c->console.log_path = NULL;
+       } else if (strcmp(key, "lxc.console") == 0) {
+               free(c->console.path);
+               c->console.path = NULL;
+       } else if (strcmp(key, "lxc.tty") == 0) {
+               c->tty = 0;
+       } else if (strcmp(key, "lxc.devttydir") == 0) {
+               free(c->ttydir);
+               c->ttydir = NULL;
+       } else if (strcmp(key, "lxc.autodev") == 0) {
+               c->autodev = 1;
+       } else if (strcmp(key, "lxc.kmsg") == 0) {
+               c->kmsg = 0;
+       } else if (strcmp(key, "lxc.mount") == 0) {
+               free(c->fstab);
+               c->fstab = NULL;
+       } else if (strcmp(key, "lxc.rootfs") == 0) {
+               free(c->rootfs.path);
+               c->rootfs.path = NULL;
+       } else if (strcmp(key, "lxc.rootfs.mount") == 0) {
+               free(c->rootfs.mount);
+               c->rootfs.mount = NULL;
+       } else if (strcmp(key, "lxc.rootfs.options") == 0) {
+               free(c->rootfs.options);
+               c->rootfs.options = NULL;
+       } else if (strcmp(key, "lxc.rootfs.backend") == 0) {
+               free(c->rootfs.bdev_type);
+               c->rootfs.bdev_type = NULL;
+       } else if (strcmp(key, "lxc.aa_profile") == 0) {
+               free(c->lsm_aa_profile);
+               c->lsm_aa_profile = NULL;
+       } else if (strcmp(key, "lxc.aa_allow_incomplete") == 0) {
+               c->lsm_aa_allow_incomplete = 0;
+       } else if (strcmp(key, "lxc.se_context") == 0) {
+               free(c->lsm_se_context);
+               c->lsm_se_context = NULL;
+       } else if (strcmp(key, "lxc.seccomp") == 0) {
+               free(c->seccomp);
+               c->seccomp = NULL;
+       } else if (strcmp(key, "lxc.loglevel") == 0) {
+               c->loglevel = LXC_LOG_PRIORITY_NOTSET;
+       } else if (strcmp(key, "lxc.logfile") == 0) {
+               free(c->logfile);
+               c->logfile = NULL;
+       } else if (strcmp(key, "lxc.monitor.unshare") == 0) {
+               c->monitor_unshare = 0;
+       } else if (strcmp(key, "lxc.pts") == 0) {
+               c->pts = 0;
+       } else {
+               return -1;
+       }
+
+       return 0;
+}
index 7c99048e4920e14a0f878c2e838ce100e71d2ba3..a0bb05b0a0a6681ad84ef717a88712145a2a6355 100644 (file)
@@ -453,6 +453,7 @@ extern int lxc_clear_groups(struct lxc_conf *c);
 extern int lxc_clear_environment(struct lxc_conf *c);
 extern int lxc_clear_limits(struct lxc_conf *c, const char *key);
 extern int lxc_delete_autodev(struct lxc_handler *handler);
+extern int lxc_clear_simple_config_item(struct lxc_conf *c, const char *key);
 
 extern int do_rootfs_setup(struct lxc_conf *conf, const char *name,
                           const char *lxcpath);
index b012a8588a742e06a9acf6604e43794d7eab36f8..4114e9fffb8bab816c426d65dc5973a2aa3b72ba 100644 (file)
@@ -2874,7 +2874,8 @@ int lxc_clear_config_item(struct lxc_conf *c, const char *key)
                return lxc_clear_idmaps(c);
        else if (strncmp(key, "lxc.limit", 9) == 0)
                return lxc_clear_limits(c, key);
-       return -1;
+
+       return lxc_clear_simple_config_item(c, key);
 }
 
 /*