[lxc-devel] [lxc/master] conf{, ile}: allow to clear all config items
brauner on Github
lxc-bot at linuxcontainers.org
Mon May 15 13:25:00 UTC 2017
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 366 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20170515/32a92106/attachment.bin>
-------------- next part --------------
From 78625a5e3e5b0793eda269256a81804f9559e867 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Mon, 15 May 2017 14:53:06 +0200
Subject: [PATCH] conf{,ile}: allow to clear all config items
Closes #1561.
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/conf.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lxc/conf.h | 1 +
src/lxc/confile.c | 3 ++-
3 files changed, 82 insertions(+), 1 deletion(-)
diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 76a1901..a66d9e7 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -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;
+}
diff --git a/src/lxc/conf.h b/src/lxc/conf.h
index 7c99048..a0bb05b 100644
--- a/src/lxc/conf.h
+++ b/src/lxc/conf.h
@@ -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);
diff --git a/src/lxc/confile.c b/src/lxc/confile.c
index b012a85..4114e9f 100644
--- a/src/lxc/confile.c
+++ b/src/lxc/confile.c
@@ -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);
}
/*
More information about the lxc-devel
mailing list