]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
network: add arg to config clear method
authorChristian Brauner <christian.brauner@ubuntu.com>
Thu, 15 Jun 2017 17:08:22 +0000 (19:08 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Sun, 18 Jun 2017 09:54:03 +0000 (11:54 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/confile.c
src/lxc/confile.h
src/lxc/lxccontainer.c

index 3d002fbe907466952a452f066f52ac614ae7941c..863417da7cce0e2bd3a12241aa3c069697d827eb 100644 (file)
@@ -67,118 +67,119 @@ lxc_log_define(lxc_confile, lxc);
 static int set_config_personality(const char *, const char *, struct lxc_conf *,
                                  void *);
 static int get_config_personality(const char *, char *, int, struct lxc_conf *);
-static int clr_config_personality(const char *, struct lxc_conf *);
+static int clr_config_personality(const char *, struct lxc_conf *, void *);
 
 static int set_config_pts(const char *, const char *, struct lxc_conf *,
                          void *);
 static int get_config_pts(const char *, char *, int, struct lxc_conf *);
-static int clr_config_pts(const char *, struct lxc_conf *);
+static int clr_config_pts(const char *, struct lxc_conf *, void *);
 
 static int set_config_tty(const char *, const char *, struct lxc_conf *,
                          void *);
 static int get_config_tty(const char *, char *, int, struct lxc_conf *);
-static int clr_config_tty(const char *, struct lxc_conf *);
+static int clr_config_tty(const char *, struct lxc_conf *, void *);
 
 static int set_config_ttydir(const char *, const char *, struct lxc_conf *,
                             void *);
 static int get_config_ttydir(const char *, char *, int, struct lxc_conf *);
-static int clr_config_ttydir(const char *, struct lxc_conf *);
+static int clr_config_ttydir(const char *, struct lxc_conf *, void *);
 
 static int set_config_kmsg(const char *, const char *, struct lxc_conf *,
                           void *);
 static int get_config_kmsg(const char *, char *, int, struct lxc_conf *);
-static int clr_config_kmsg(const char *, struct lxc_conf *);
+static int clr_config_kmsg(const char *, struct lxc_conf *, void *);
 
 static int set_config_lsm_aa_profile(const char *, const char *,
                                     struct lxc_conf *, void *);
 static int get_config_lsm_aa_profile(const char *, char *, int,
                                     struct lxc_conf *);
-static int clr_config_lsm_aa_profile(const char *, struct lxc_conf *);
+static int clr_config_lsm_aa_profile(const char *, struct lxc_conf *, void *);
 
 static int set_config_lsm_aa_incomplete(const char *, const char *,
                                        struct lxc_conf *, void *);
 static int get_config_lsm_aa_incomplete(const char *, char *, int,
                                        struct lxc_conf *);
-static int clr_config_lsm_aa_incomplete(const char *, struct lxc_conf *);
+static int clr_config_lsm_aa_incomplete(const char *, struct lxc_conf *,
+                                       void *);
 
 static int set_config_lsm_se_context(const char *, const char *,
                                     struct lxc_conf *, void *);
 static int get_config_lsm_se_context(const char *, char *, int,
                                     struct lxc_conf *);
-static int clr_config_lsm_se_context(const char *, struct lxc_conf *);
+static int clr_config_lsm_se_context(const char *, struct lxc_conf *, void *);
 
 static int set_config_cgroup(const char *, const char *, struct lxc_conf *,
                             void *);
 static int get_config_cgroup(const char *, char *, int, struct lxc_conf *);
-static int clr_config_cgroup(const char *, struct lxc_conf *);
+static int clr_config_cgroup(const char *, struct lxc_conf *, void *);
 
 static int set_config_idmaps(const char *, const char *, struct lxc_conf *,
                             void *);
 static int get_config_idmaps(const char *, char *, int, struct lxc_conf *);
-static int clr_config_idmaps(const char *, struct lxc_conf *);
+static int clr_config_idmaps(const char *, struct lxc_conf *, void *);
 
 static int set_config_loglevel(const char *, const char *, struct lxc_conf *,
                               void *);
 static int get_config_loglevel(const char *, char *, int, struct lxc_conf *);
-static int clr_config_loglevel(const char *, struct lxc_conf *);
+static int clr_config_loglevel(const char *, struct lxc_conf *, void *);
 
 static int set_config_logfile(const char *, const char *, struct lxc_conf *,
                              void *);
 static int get_config_logfile(const char *, char *, int, struct lxc_conf *);
-static int clr_config_logfile(const char *, struct lxc_conf *);
+static int clr_config_logfile(const char *, struct lxc_conf *, void *);
 
 static int set_config_mount(const char *, const char *, struct lxc_conf *,
                            void *);
 static int get_config_mount(const char *, char *, int, struct lxc_conf *);
-static int clr_config_mount(const char *, struct lxc_conf *);
+static int clr_config_mount(const char *, struct lxc_conf *, void *);
 
 static int set_config_mount_auto(const char *, const char *, struct lxc_conf *,
                                 void *);
 static int get_config_mount_auto(const char *, char *, int, struct lxc_conf *);
-static int clr_config_mount_auto(const char *, struct lxc_conf *);
+static int clr_config_mount_auto(const char *, struct lxc_conf *, void *);
 
 static int set_config_fstab(const char *, const char *, struct lxc_conf *,
                            void *);
 static int get_config_fstab(const char *, char *, int, struct lxc_conf *);
-static int clr_config_fstab(const char *, struct lxc_conf *);
+static int clr_config_fstab(const char *, struct lxc_conf *, void *);
 
 static int set_config_rootfs_mount(const char *, const char *,
                                   struct lxc_conf *, void *);
 static int get_config_rootfs_mount(const char *, char *, int,
                                   struct lxc_conf *);
-static int clr_config_rootfs_mount(const char *, struct lxc_conf *);
+static int clr_config_rootfs_mount(const char *, struct lxc_conf *, void *);
 
 static int set_config_rootfs_options(const char *, const char *,
                                     struct lxc_conf *, void *);
 static int get_config_rootfs_options(const char *, char *, int,
                                     struct lxc_conf *);
-static int clr_config_rootfs_options(const char *, struct lxc_conf *);
+static int clr_config_rootfs_options(const char *, struct lxc_conf *, void *);
 
 static int set_config_rootfs_backend(const char *, const char *,
                                     struct lxc_conf *, void *);
 static int get_config_rootfs_backend(const char *, char *, int,
                                     struct lxc_conf *);
-static int clr_config_rootfs_backend(const char *, struct lxc_conf *);
+static int clr_config_rootfs_backend(const char *, struct lxc_conf *, void *);
 
 static int set_config_rootfs(const char *, const char *, struct lxc_conf *,
                             void *);
 static int get_config_rootfs(const char *, char *, int, struct lxc_conf *);
-static int clr_config_rootfs(const char *, struct lxc_conf *);
+static int clr_config_rootfs(const char *, struct lxc_conf *, void *);
 
 static int set_config_pivotdir(const char *, const char *, struct lxc_conf *,
                               void *);
 static int get_config_pivotdir(const char *, char *, int, struct lxc_conf *);
-static int clr_config_pivotdir(const char *, struct lxc_conf *);
+static int clr_config_pivotdir(const char *, struct lxc_conf *, void *);
 
 static int set_config_utsname(const char *, const char *, struct lxc_conf *,
                              void *);
 static int get_config_utsname(const char *, char *, int, struct lxc_conf *);
-static int clr_config_utsname(const char *, struct lxc_conf *);
+static int clr_config_utsname(const char *, struct lxc_conf *, void *);
 
 static int set_config_hooks(const char *, const char *, struct lxc_conf *,
                            void *);
 static int get_config_hooks(const char *, char *, int, struct lxc_conf *);
-static int clr_config_hooks(const char *, struct lxc_conf *);
+static int clr_config_hooks(const char *, struct lxc_conf *, void *);
 
 static int set_config_network_type(const char *, const char *,
                                   struct lxc_conf *, void *);
@@ -214,121 +215,121 @@ static int set_config_network_nic(const char *, const char *, struct lxc_conf *,
                                  void *);
 static int get_config_network_item(const char *, char *, int,
                                   struct lxc_conf *);
-static int clr_config_network_item(const char *, struct lxc_conf *);
+static int clr_config_network_item(const char *, struct lxc_conf *, void *);
 
 static int set_config_network(const char *, const char *, struct lxc_conf *,
                              void *);
 static int get_config_network(const char *, char *, int, struct lxc_conf *);
-static int clr_config_network(const char *, struct lxc_conf *);
+static int clr_config_network(const char *, struct lxc_conf *, void *);
 
 static int set_config_cap_drop(const char *, const char *, struct lxc_conf *,
                               void *);
 static int get_config_cap_drop(const char *, char *, int, struct lxc_conf *);
-static int clr_config_cap_drop(const char *, struct lxc_conf *);
+static int clr_config_cap_drop(const char *, struct lxc_conf *, void *);
 
 static int set_config_cap_keep(const char *, const char *, struct lxc_conf *,
                               void *);
 static int get_config_cap_keep(const char *, char *, int, struct lxc_conf *);
-static int clr_config_cap_keep(const char *, struct lxc_conf *);
+static int clr_config_cap_keep(const char *, struct lxc_conf *, void *);
 
 static int set_config_console_logfile(const char *, const char *,
                                      struct lxc_conf *, void *);
 static int get_config_console_logfile(const char *, char *, int,
                                      struct lxc_conf *);
-static int clr_config_console_logfile(const char *, struct lxc_conf *);
+static int clr_config_console_logfile(const char *, struct lxc_conf *, void *);
 
 static int set_config_console(const char *, const char *, struct lxc_conf *,
                              void *);
 static int get_config_console(const char *, char *, int, struct lxc_conf *);
-static int clr_config_console(const char *, struct lxc_conf *);
+static int clr_config_console(const char *, struct lxc_conf *, void *);
 
 static int set_config_seccomp(const char *, const char *, struct lxc_conf *,
                              void *);
 static int get_config_seccomp(const char *, char *, int, struct lxc_conf *);
-static int clr_config_seccomp(const char *, struct lxc_conf *);
+static int clr_config_seccomp(const char *, struct lxc_conf *, void *);
 
 static int set_config_includefiles(const char *, const char *,
                                   struct lxc_conf *, void *);
 static int get_config_includefiles(const char *, char *, int,
                                   struct lxc_conf *);
-static int clr_config_includefiles(const char *, struct lxc_conf *);
+static int clr_config_includefiles(const char *, struct lxc_conf *, void *);
 
 static int set_config_autodev(const char *, const char *, struct lxc_conf *,
                              void *);
 static int get_config_autodev(const char *, char *, int, struct lxc_conf *);
-static int clr_config_autodev(const char *, struct lxc_conf *);
+static int clr_config_autodev(const char *, struct lxc_conf *, void *);
 
 static int set_config_haltsignal(const char *, const char *, struct lxc_conf *,
                                 void *);
 static int get_config_haltsignal(const char *, char *, int, struct lxc_conf *);
-static int clr_config_haltsignal(const char *, struct lxc_conf *);
+static int clr_config_haltsignal(const char *, struct lxc_conf *, void *);
 
 static int set_config_rebootsignal(const char *, const char *,
                                   struct lxc_conf *, void *);
 static int get_config_rebootsignal(const char *, char *, int,
                                   struct lxc_conf *);
-static int clr_config_rebootsignal(const char *, struct lxc_conf *);
+static int clr_config_rebootsignal(const char *, struct lxc_conf *, void *);
 
 static int set_config_stopsignal(const char *, const char *, struct lxc_conf *,
                                 void *);
 static int get_config_stopsignal(const char *, char *, int, struct lxc_conf *);
-static int clr_config_stopsignal(const char *, struct lxc_conf *);
+static int clr_config_stopsignal(const char *, struct lxc_conf *, void *);
 
 static int set_config_start(const char *, const char *, struct lxc_conf *,
                            void *);
 static int get_config_start(const char *, char *, int, struct lxc_conf *);
-static int clr_config_start(const char *, struct lxc_conf *);
+static int clr_config_start(const char *, struct lxc_conf *, void *);
 
 static int set_config_monitor(const char *, const char *, struct lxc_conf *,
                              void *);
 static int get_config_monitor(const char *, char *, int, struct lxc_conf *);
-static int clr_config_monitor(const char *, struct lxc_conf *);
+static int clr_config_monitor(const char *, struct lxc_conf *, void *);
 
 static int set_config_group(const char *, const char *, struct lxc_conf *,
                            void *);
 static int get_config_group(const char *, char *, int, struct lxc_conf *);
-static int clr_config_group(const char *, struct lxc_conf *);
+static int clr_config_group(const char *, struct lxc_conf *, void *);
 
 static int set_config_environment(const char *, const char *, struct lxc_conf *,
                                  void *);
 static int get_config_environment(const char *, char *, int, struct lxc_conf *);
-static int clr_config_environment(const char *, struct lxc_conf *);
+static int clr_config_environment(const char *, struct lxc_conf *, void *);
 
 static int set_config_init_cmd(const char *, const char *, struct lxc_conf *,
                               void *);
 static int get_config_init_cmd(const char *, char *, int, struct lxc_conf *);
-static int clr_config_init_cmd(const char *, struct lxc_conf *);
+static int clr_config_init_cmd(const char *, struct lxc_conf *, void *);
 
 static int set_config_init_uid(const char *, const char *, struct lxc_conf *,
                               void *);
 static int get_config_init_uid(const char *, char *, int, struct lxc_conf *);
-static int clr_config_init_uid(const char *, struct lxc_conf *);
+static int clr_config_init_uid(const char *, struct lxc_conf *, void *);
 
 static int set_config_init_gid(const char *, const char *, struct lxc_conf *,
                               void *);
 static int get_config_init_gid(const char *, char *, int, struct lxc_conf *);
-static int clr_config_init_gid(const char *, struct lxc_conf *);
+static int clr_config_init_gid(const char *, struct lxc_conf *, void *);
 
 static int set_config_ephemeral(const char *, const char *, struct lxc_conf *,
                                void *);
 static int get_config_ephemeral(const char *, char *, int, struct lxc_conf *);
-static int clr_config_ephemeral(const char *, struct lxc_conf *);
+static int clr_config_ephemeral(const char *, struct lxc_conf *, void *);
 
 static int set_config_syslog(const char *, const char *, struct lxc_conf *,
                             void *);
 static int get_config_syslog(const char *, char *, int, struct lxc_conf *);
-static int clr_config_syslog(const char *, struct lxc_conf *);
+static int clr_config_syslog(const char *, struct lxc_conf *, void *);
 
 static int set_config_no_new_privs(const char *, const char *,
                                   struct lxc_conf *, void *);
 static int get_config_no_new_privs(const char *, char *, int,
                                   struct lxc_conf *);
-static int clr_config_no_new_privs(const char *, struct lxc_conf *);
+static int clr_config_no_new_privs(const char *, struct lxc_conf *, void *);
 
 static int set_config_limit(const char *, const char *, struct lxc_conf *,
                            void *);
 static int get_config_limit(const char *, char *, int, struct lxc_conf *);
-static int clr_config_limit(const char *, struct lxc_conf *);
+static int clr_config_limit(const char *, struct lxc_conf *, void *);
 
 static struct lxc_config_t config[] = {
        { "lxc.arch",                 set_config_personality,          get_config_personality,       clr_config_personality,       },
@@ -1131,7 +1132,7 @@ static int set_config_network_ipv4(const char *key, const char *value,
        char *addr = NULL, *bcast = NULL, *prefix = NULL;
 
        if (lxc_config_value_empty(value))
-               return clr_config_network_item(key, lxc_conf);
+               return clr_config_network_item(key, lxc_conf, NULL);
 
        /* lxc.network.* without an index */
        if (!data)
@@ -2146,7 +2147,7 @@ static int set_config_fstab(const char *key, const char *value,
                            struct lxc_conf *lxc_conf, void *data)
 {
        if (lxc_config_value_empty(value)) {
-               clr_config_fstab(key, lxc_conf);
+               clr_config_fstab(key, lxc_conf, NULL);
                return -1;
        }
 
@@ -2470,7 +2471,7 @@ static int set_config_includefiles(const char *key, const char *value,
 {
        /* Set config value to default. */
        if (lxc_config_value_empty(value)) {
-               clr_config_includefiles(key, lxc_conf);
+               clr_config_includefiles(key, lxc_conf, NULL);
                return 0;
        }
 
@@ -2529,7 +2530,7 @@ static int set_config_utsname(const char *key, const char *value,
        struct utsname *utsname;
 
        if (lxc_config_value_empty(value)) {
-               clr_config_utsname(key, lxc_conf);
+               clr_config_utsname(key, lxc_conf, NULL);
                return 0;
        }
 
@@ -3980,38 +3981,44 @@ static int get_config_limit(const char *key, char *retv, int inlen,
 }
 
 /* Callbacks to clear config items. */
-static inline int clr_config_personality(const char *key, struct lxc_conf *c)
+static inline int clr_config_personality(const char *key, struct lxc_conf *c,
+                                        void *data)
 {
        c->personality = -1;
        return 0;
 }
 
-static inline int clr_config_pts(const char *key, struct lxc_conf *c)
+static inline int clr_config_pts(const char *key, struct lxc_conf *c,
+                                void *data)
 {
        c->pts = 0;
        return 0;
 }
 
-static inline int clr_config_tty(const char *key, struct lxc_conf *c)
+static inline int clr_config_tty(const char *key, struct lxc_conf *c,
+                                void *data)
 {
        c->tty = 0;
        return 0;
 }
 
-static inline int clr_config_ttydir(const char *key, struct lxc_conf *c)
+static inline int clr_config_ttydir(const char *key, struct lxc_conf *c,
+                                   void *data)
 {
        free(c->ttydir);
        c->ttydir = NULL;
        return 0;
 }
 
-static inline int clr_config_kmsg(const char *key, struct lxc_conf *c)
+static inline int clr_config_kmsg(const char *key, struct lxc_conf *c,
+                                 void *data)
 {
        c->kmsg = 0;
        return 0;
 }
 
-static inline int clr_config_lsm_aa_profile(const char *key, struct lxc_conf *c)
+static inline int clr_config_lsm_aa_profile(const char *key, struct lxc_conf *c,
+                                           void *data)
 {
        free(c->lsm_aa_profile);
        c->lsm_aa_profile = NULL;
@@ -4019,125 +4026,145 @@ static inline int clr_config_lsm_aa_profile(const char *key, struct lxc_conf *c)
 }
 
 static inline int clr_config_lsm_aa_incomplete(const char *key,
-                                              struct lxc_conf *c)
+                                              struct lxc_conf *c, void *data)
 {
        c->lsm_aa_allow_incomplete = 0;
        return 0;
 }
 
-static inline int clr_config_lsm_se_context(const char *key, struct lxc_conf *c)
+static inline int clr_config_lsm_se_context(const char *key, struct lxc_conf *c,
+                                           void *data)
 {
        free(c->lsm_se_context);
        c->lsm_se_context = NULL;
        return 0;
 }
 
-static inline int clr_config_cgroup(const char *key, struct lxc_conf *c)
+static inline int clr_config_cgroup(const char *key, struct lxc_conf *c,
+                                   void *data)
 {
        return lxc_clear_cgroups(c, key);
 }
 
-static inline int clr_config_idmaps(const char *key, struct lxc_conf *c)
+static inline int clr_config_idmaps(const char *key, struct lxc_conf *c,
+                                   void *data)
 {
        return lxc_clear_idmaps(c);
 }
 
-static inline int clr_config_loglevel(const char *key, struct lxc_conf *c)
+static inline int clr_config_loglevel(const char *key, struct lxc_conf *c,
+                                     void *data)
 {
        c->loglevel = LXC_LOG_LEVEL_NOTSET;
        return 0;
 }
 
-static inline int clr_config_logfile(const char *key, struct lxc_conf *c)
+static inline int clr_config_logfile(const char *key, struct lxc_conf *c,
+                                    void *data)
 {
        free(c->logfile);
        c->logfile = NULL;
        return 0;
 }
 
-static inline int clr_config_mount(const char *key, struct lxc_conf *c)
+static inline int clr_config_mount(const char *key, struct lxc_conf *c,
+                                  void *data)
 {
        return lxc_clear_mount_entries(c);
 }
 
-static inline int clr_config_mount_auto(const char *key, struct lxc_conf *c)
+static inline int clr_config_mount_auto(const char *key, struct lxc_conf *c,
+                                       void *data)
 {
        return lxc_clear_automounts(c);
 }
 
-static inline int clr_config_fstab(const char *key, struct lxc_conf *c)
+static inline int clr_config_fstab(const char *key, struct lxc_conf *c,
+                                  void *data)
 {
        free(c->fstab);
        c->fstab = NULL;
        return 0;
 }
 
-static inline int clr_config_rootfs(const char *key, struct lxc_conf *c)
+static inline int clr_config_rootfs(const char *key, struct lxc_conf *c,
+                                   void *data)
 {
        free(c->rootfs.path);
        c->rootfs.path = NULL;
        return 0;
 }
 
-static inline int clr_config_rootfs_mount(const char *key, struct lxc_conf *c)
+static inline int clr_config_rootfs_mount(const char *key, struct lxc_conf *c,
+                                         void *data)
 {
        free(c->rootfs.mount);
        c->rootfs.mount = NULL;
        return 0;
 }
 
-static inline int clr_config_rootfs_options(const char *key, struct lxc_conf *c)
+static inline int clr_config_rootfs_options(const char *key, struct lxc_conf *c,
+                                           void *data)
 {
        free(c->rootfs.options);
        c->rootfs.options = NULL;
        return 0;
 }
 
-static inline int clr_config_rootfs_backend(const char *key, struct lxc_conf *c)
+static inline int clr_config_rootfs_backend(const char *key, struct lxc_conf *c,
+                                           void *data)
 {
        free(c->rootfs.bdev_type);
        c->rootfs.bdev_type = NULL;
        return 0;
 }
 
-static inline int clr_config_pivotdir(const char *key, struct lxc_conf *c)
+static inline int clr_config_pivotdir(const char *key, struct lxc_conf *c,
+                                     void *data)
 {
        return 0;
 }
 
-static inline int clr_config_utsname(const char *key, struct lxc_conf *c)
+static inline int clr_config_utsname(const char *key, struct lxc_conf *c,
+                                    void *data)
 {
        free(c->utsname);
        c->utsname = NULL;
        return 0;
 }
 
-static inline int clr_config_hooks(const char *key, struct lxc_conf *c)
+static inline int clr_config_hooks(const char *key, struct lxc_conf *c,
+                                  void *data)
 {
        return lxc_clear_hooks(c, key);
 }
 
-static inline int clr_config_network_item(const char *key, struct lxc_conf *c)
+static inline int clr_config_network_item(const char *key, struct lxc_conf *c,
+                                         void *data)
 {
        return lxc_clear_nic(c, key + 12);
 }
 
-static inline int clr_config_network(const char *key, struct lxc_conf *c)
+static inline int clr_config_network(const char *key, struct lxc_conf *c,
+                                    void *data)
 {
        return lxc_clear_config_network(c);
 }
 
-static inline int clr_config_cap_drop(const char *key, struct lxc_conf *c)
+static inline int clr_config_cap_drop(const char *key, struct lxc_conf *c,
+                                     void *data)
 {
        return lxc_clear_config_caps(c);
 }
 
-static inline int clr_config_cap_keep(const char *key, struct lxc_conf *c)
+static inline int clr_config_cap_keep(const char *key, struct lxc_conf *c,
+                                     void *data)
 {
        return lxc_clear_config_keepcaps(c);
 }
 
-static inline int clr_config_console(const char *key, struct lxc_conf *c)
+static inline int clr_config_console(const char *key, struct lxc_conf *c,
+                                    void *data)
 {
        free(c->console.path);
        c->console.path = NULL;
@@ -4145,45 +4172,51 @@ static inline int clr_config_console(const char *key, struct lxc_conf *c)
 }
 
 static inline int clr_config_console_logfile(const char *key,
-                                            struct lxc_conf *c)
+                                            struct lxc_conf *c, void *data)
 {
        free(c->console.log_path);
        c->console.log_path = NULL;
        return 0;
 }
 
-static inline int clr_config_seccomp(const char *key, struct lxc_conf *c)
+static inline int clr_config_seccomp(const char *key, struct lxc_conf *c,
+                                    void *data)
 {
        free(c->seccomp);
        c->seccomp = NULL;
        return 0;
 }
 
-static inline int clr_config_autodev(const char *key, struct lxc_conf *c)
+static inline int clr_config_autodev(const char *key, struct lxc_conf *c,
+                                    void *data)
 {
        c->autodev = 1;
        return 0;
 }
 
-static inline int clr_config_haltsignal(const char *key, struct lxc_conf *c)
+static inline int clr_config_haltsignal(const char *key, struct lxc_conf *c,
+                                       void *data)
 {
        c->haltsignal = 0;
        return 0;
 }
 
-static inline int clr_config_rebootsignal(const char *key, struct lxc_conf *c)
+static inline int clr_config_rebootsignal(const char *key, struct lxc_conf *c,
+                                         void *data)
 {
        c->rebootsignal = 0;
        return 0;
 }
 
-static inline int clr_config_stopsignal(const char *key, struct lxc_conf *c)
+static inline int clr_config_stopsignal(const char *key, struct lxc_conf *c,
+                                       void *data)
 {
        c->stopsignal = 0;
        return 0;
 }
 
-static inline int clr_config_start(const char *key, struct lxc_conf *c)
+static inline int clr_config_start(const char *key, struct lxc_conf *c,
+                                  void *data)
 {
        if (strcmp(key + 10, "auto") == 0)
                c->start_auto = 0;
@@ -4195,66 +4228,77 @@ static inline int clr_config_start(const char *key, struct lxc_conf *c)
        return 0;
 }
 
-static inline int clr_config_syslog(const char *key, struct lxc_conf *c)
+static inline int clr_config_syslog(const char *key, struct lxc_conf *c,
+                                   void *data)
 {
        free(c->syslog);
        c->syslog = NULL;
        return 0;
 }
 
-static inline int clr_config_monitor(const char *key, struct lxc_conf *c)
+static inline int clr_config_monitor(const char *key, struct lxc_conf *c,
+                                    void *data)
 {
        c->monitor_unshare = 0;
        return 0;
 }
 
-static inline int clr_config_group(const char *key, struct lxc_conf *c)
+static inline int clr_config_group(const char *key, struct lxc_conf *c,
+                                  void *data)
 {
        return lxc_clear_groups(c);
 }
 
-static inline int clr_config_environment(const char *key, struct lxc_conf *c)
+static inline int clr_config_environment(const char *key, struct lxc_conf *c,
+                                        void *data)
 {
        return lxc_clear_environment(c);
 }
 
-static inline int clr_config_init_cmd(const char *key, struct lxc_conf *c)
+static inline int clr_config_init_cmd(const char *key, struct lxc_conf *c,
+                                     void *data)
 {
        free(c->init_cmd);
        c->init_cmd = NULL;
        return 0;
 }
 
-static inline int clr_config_init_uid(const char *key, struct lxc_conf *c)
+static inline int clr_config_init_uid(const char *key, struct lxc_conf *c,
+                                     void *data)
 {
        c->init_uid = 0;
        return 0;
 }
 
-static inline int clr_config_init_gid(const char *key, struct lxc_conf *c)
+static inline int clr_config_init_gid(const char *key, struct lxc_conf *c,
+                                     void *data)
 {
        c->init_gid = 0;
        return 0;
 }
 
-static inline int clr_config_ephemeral(const char *key, struct lxc_conf *c)
+static inline int clr_config_ephemeral(const char *key, struct lxc_conf *c,
+                                      void *data)
 {
        c->ephemeral = 0;
        return 0;
 }
 
-static inline int clr_config_no_new_privs(const char *key, struct lxc_conf *c)
+static inline int clr_config_no_new_privs(const char *key, struct lxc_conf *c,
+                                         void *data)
 {
        c->no_new_privs = false;
        return 0;
 }
 
-static inline int clr_config_limit(const char *key, struct lxc_conf *c)
+static inline int clr_config_limit(const char *key, struct lxc_conf *c,
+                                  void *data)
 {
        return lxc_clear_limits(c, key);
 }
 
-static inline int clr_config_includefiles(const char *key, struct lxc_conf *c)
+static inline int clr_config_includefiles(const char *key, struct lxc_conf *c,
+                                         void *data)
 {
        lxc_clear_includes(c);
        return 0;
index 7714fd60d9d597d6c0aaf726640e71bae6cdcfad..5dab2d9f90b12e46a624ef052450af557ead792e 100644 (file)
@@ -34,7 +34,7 @@ struct lxc_list;
 typedef int (*config_set_cb)(const char *, const char *, struct lxc_conf *,
                             void *data);
 typedef int (*config_get_cb)(const char *, char *, int, struct lxc_conf *);
-typedef int (*config_clr_cb)(const char *key, struct lxc_conf *c);
+typedef int (*config_clr_cb)(const char *, struct lxc_conf *c, void *data);
 struct lxc_config_t {
        char *name;
        config_set_cb set;
index 3387dbbf37eda324d04a93f65f48a0fcbec8bfdf..8e25359113e77f08d9d2bec1a1908424c1a4a8c4 100644 (file)
@@ -1722,7 +1722,7 @@ static bool do_lxcapi_clear_config_item(struct lxc_container *c,
         * implemented.
         */
        if (config && config->clr)
-               ret = config->clr(key, c->lxc_conf);
+               ret = config->clr(key, c->lxc_conf, NULL);
        if (!ret)
                do_clear_unexp_config_line(c->lxc_conf, key);