[lxc-devel] [lxc/master] further lxc 2.1 preparations
brauner on Github
lxc-bot at linuxcontainers.org
Tue Aug 15 15:57:33 UTC 2017
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 301 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20170815/69af2d99/attachment.bin>
-------------- next part --------------
From 49072f06f746b1957504c62133445ccf04ddb31c Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Thu, 10 Aug 2017 23:42:41 +0200
Subject: [PATCH 1/6] confile: cleanup
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/confile.c | 61 +++++++++++++------------------------------------------
1 file changed, 14 insertions(+), 47 deletions(-)
diff --git a/src/lxc/confile.c b/src/lxc/confile.c
index 4a9dfc5d8..a5cfec9ef 100644
--- a/src/lxc/confile.c
+++ b/src/lxc/confile.c
@@ -139,31 +139,21 @@ static struct lxc_config_t config[] = {
{ "lxc.tty.dir", set_config_tty_dir, get_config_tty_dir, clr_config_tty_dir, },
{ "lxc.tty.max", set_config_tty_max, get_config_tty_max, clr_config_tty_max, },
- /* REMOVE IN LXC 3.0
- legacy pts key
- */
+ /* [START]: REMOVE IN LXC 3.0 */
{ "lxc.pts", set_config_pty_max, get_config_pty_max, clr_config_pty_max, },
-
- /* REMOVE IN LXC 3.0
- legacy devttydir key
- */
{ "lxc.devttydir", set_config_tty_dir, get_config_tty_dir, clr_config_tty_dir, },
-
- /* REMOVE IN LXC 3.0
- legacy tty key
- */
{ "lxc.tty", set_config_tty_max, get_config_tty_max, clr_config_tty_max, },
+ /* [END]: REMOVE IN LXC 3.0 */
{ "lxc.apparmor.profile", set_config_apparmor_profile, get_config_apparmor_profile, clr_config_apparmor_profile, },
{ "lxc.apparmor.allow_incomplete", set_config_apparmor_allow_incomplete, get_config_apparmor_allow_incomplete, clr_config_apparmor_allow_incomplete, },
{ "lxc.selinux.context", set_config_selinux_context, get_config_selinux_context, clr_config_selinux_context, },
- /* REMOVE IN LXC 3.0
- legacy security keys
- */
+ /* [START]: REMOVE IN LXC 3.0 */
{ "lxc.aa_profile", set_config_lsm_aa_profile, get_config_lsm_aa_profile, clr_config_lsm_aa_profile, },
{ "lxc.aa_allow_incomplete", set_config_lsm_aa_incomplete, get_config_lsm_aa_incomplete, clr_config_lsm_aa_incomplete, },
{ "lxc.se_context", set_config_lsm_se_context, get_config_lsm_se_context, clr_config_lsm_se_context, },
+ /* [END]: REMOVE IN LXC 3.0 */
{ "lxc.cgroup", set_config_cgroup, get_config_cgroup, clr_config_cgroup, },
{ "lxc.id_map", set_config_idmaps, get_config_idmaps, clr_config_idmaps, },
@@ -174,27 +164,14 @@ static struct lxc_config_t config[] = {
{ "lxc.rootfs.options", set_config_rootfs_options, get_config_rootfs_options, clr_config_rootfs_options, },
{ "lxc.rootfs.path", set_config_rootfs_path, get_config_rootfs_path, clr_config_rootfs_path, },
- /* REMOVE IN LXC 3.0
- legacy mount key
- */
+ /* [START]: REMOVE IN LXC 3.0 */
{ "lxc.mount", set_config_mount_fstab, get_config_mount_fstab, clr_config_mount_fstab, },
-
- /* REMOVE IN LXC 3.0
- legacy rootfs.backend key
- */
{ "lxc.rootfs.backend", set_config_rootfs_backend, get_config_rootfs_backend, clr_config_rootfs_backend, },
-
- /* REMOVE IN LXC 3.0
- legacy rootfs key
- */
{ "lxc.rootfs", set_config_rootfs_path, get_config_rootfs_path, clr_config_rootfs_path, },
+ { "lxc.utsname", set_config_uts_name, get_config_uts_name, clr_config_uts_name, },
+ /* [END]: REMOVE IN LXC 3.0 */
- /* REMOVE IN LXC 3.0
- legacy utsname key
- */
- { "lxc.utsname", set_config_uts_name, get_config_uts_name, clr_config_uts_name, },
-
- { "lxc.uts.name", set_config_uts_name, get_config_uts_name, clr_config_uts_name, },
+ { "lxc.uts.name", set_config_uts_name, get_config_uts_name, clr_config_uts_name, },
{ "lxc.hook.pre-start", set_config_hooks, get_config_hooks, clr_config_hooks, },
{ "lxc.hook.pre-mount", set_config_hooks, get_config_hooks, clr_config_hooks, },
{ "lxc.hook.mount", set_config_hooks, get_config_hooks, clr_config_hooks, },
@@ -206,9 +183,7 @@ static struct lxc_config_t config[] = {
{ "lxc.hook.destroy", set_config_hooks, get_config_hooks, clr_config_hooks, },
{ "lxc.hook", set_config_hooks, get_config_hooks, clr_config_hooks, },
- /* REMOVE IN LXC 3.0
- legacy security keys
- */
+ /* [START]: REMOVE IN LXC 3.0 */
{ "lxc.network.type", set_config_network_legacy_type, get_config_network_legacy_item, clr_config_network_legacy_item, },
{ "lxc.network.flags", set_config_network_legacy_flags, get_config_network_legacy_item, clr_config_network_legacy_item, },
{ "lxc.network.link", set_config_network_legacy_link, get_config_network_legacy_item, clr_config_network_legacy_item, },
@@ -226,6 +201,7 @@ static struct lxc_config_t config[] = {
{ "lxc.network.ipv6", set_config_network_legacy_ipv6, get_config_network_legacy_item, clr_config_network_legacy_item, },
{ "lxc.network.", set_config_network_legacy_nic, get_config_network_legacy_item, clr_config_network_legacy_item, },
{ "lxc.network", set_config_network_legacy, get_config_network_legacy, clr_config_network_legacy, },
+ /* [END]: REMOVE IN LXC 3.0 */
{ "lxc.net.type", set_config_net_type, get_config_net_type, clr_config_net_type, },
{ "lxc.net.flags", set_config_net_flags, get_config_net_flags, clr_config_net_flags, },
@@ -252,22 +228,13 @@ static struct lxc_config_t config[] = {
{ "lxc.include", set_config_includefiles, get_config_includefiles, clr_config_includefiles, },
{ "lxc.autodev", set_config_autodev, get_config_autodev, clr_config_autodev, },
- /* REMOVE IN LXC 3.0
- legacy seccomp key
- */
+ /* [START]: REMOVE IN LXC 3.0 */
{ "lxc.seccomp", set_config_seccomp_profile, get_config_seccomp_profile, clr_config_seccomp_profile, },
-
- /* REMOVE IN LXC 3.0
- legacy console key
- */
{ "lxc.console", set_config_console_path, get_config_console_path, clr_config_console_path, },
-
- /* REMOVE IN LXC 3.0
- legacy singal keys
- */
{ "lxc.haltsignal", set_config_signal_halt, get_config_signal_halt, clr_config_signal_halt, },
{ "lxc.rebootsignal", set_config_signal_reboot, get_config_signal_reboot, clr_config_signal_reboot, },
{ "lxc.stopsignal", set_config_signal_stop, get_config_signal_stop, clr_config_signal_stop, },
+ /* [END]: REMOVE IN LXC 3.0 */
{ "lxc.signal.halt", set_config_signal_halt, get_config_signal_halt, clr_config_signal_halt, },
{ "lxc.signal.reboot", set_config_signal_reboot, get_config_signal_reboot, clr_config_signal_reboot, },
@@ -281,7 +248,7 @@ static struct lxc_config_t config[] = {
{ "lxc.ephemeral", set_config_ephemeral, get_config_ephemeral, clr_config_ephemeral, },
{ "lxc.no_new_privs", set_config_no_new_privs, get_config_no_new_privs, clr_config_no_new_privs, },
- /* REMOVE IN LXC 3.0: legacy keys [START]*/
+ /* [START]: REMOVE IN LXC 3.0 */
{ "lxc.syslog", set_config_log_syslog, get_config_log_syslog, clr_config_log_syslog, },
{ "lxc.loglevel", set_config_log_level, get_config_log_level, clr_config_log_level, },
{ "lxc.logfile", set_config_log_file, get_config_log_file, clr_config_log_file, },
@@ -289,7 +256,7 @@ static struct lxc_config_t config[] = {
{ "lxc.init_uid", set_config_init_uid, get_config_init_uid, clr_config_init_uid, },
{ "lxc.init_gid", set_config_init_gid, get_config_init_gid, clr_config_init_gid, },
{ "lxc.limit", set_config_limit, get_config_limit, clr_config_limit, },
- /* REMOVE IN LXC 3.0: legacy keys [END]*/
+ /* [END]: REMOVE IN LXC 3.0 */
{ "lxc.log.syslog", set_config_log_syslog, get_config_log_syslog, clr_config_log_syslog, },
{ "lxc.log.level", set_config_log_level, get_config_log_level, clr_config_log_level, },
From 70c1e708fa948596e72d041738947f7e637cc9c7 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Thu, 10 Aug 2017 23:48:59 +0200
Subject: [PATCH 2/6] confile: non-functional changes
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/confile.c | 37 ++++++++++++++++++++-----------------
src/lxc/confile.h | 2 ++
2 files changed, 22 insertions(+), 17 deletions(-)
diff --git a/src/lxc/confile.c b/src/lxc/confile.c
index a5cfec9ef..cd77e875a 100644
--- a/src/lxc/confile.c
+++ b/src/lxc/confile.c
@@ -4,6 +4,8 @@
*
* Authors:
* Daniel Lezcano <daniel.lezcano at free.fr>
+ * Serge Hallyn <serge at hallyn.com>
+ * Christian Brauner <christian.brauner at ubuntu.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -19,39 +21,40 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+
#define _GNU_SOURCE
-#define __STDC_FORMAT_MACROS /* Required for PRIu64 to work. */
+#define __STDC_FORMAT_MACROS
+#include <ctype.h>
+#include <dirent.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <inttypes.h>
+#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <syslog.h>
+#include <time.h>
#include <unistd.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <ctype.h>
-#include <inttypes.h> /* Required for PRIu64 to work. */
-#include <signal.h>
+#include <arpa/inet.h>
+#include <net/if.h>
+#include <netinet/in.h>
+#include <sys/param.h>
#include <sys/stat.h>
#include <sys/types.h>
-#include <sys/param.h>
#include <sys/utsname.h>
-#include <arpa/inet.h>
-#include <netinet/in.h>
-#include <net/if.h>
-#include <time.h>
-#include <dirent.h>
-#include <syslog.h>
-#include "parse.h"
+#include "conf.h"
#include "config.h"
#include "confile.h"
#include "confile_legacy.h"
#include "confile_utils.h"
-#include "utils.h"
#include "log.h"
-#include "conf.h"
-#include "network.h"
#include "lxcseccomp.h"
+#include "network.h"
+#include "parse.h"
#include "storage.h"
+#include "utils.h"
#if HAVE_IFADDRS_H
#include <ifaddrs.h>
diff --git a/src/lxc/confile.h b/src/lxc/confile.h
index 047e0ee6c..8c4991f0e 100644
--- a/src/lxc/confile.h
+++ b/src/lxc/confile.h
@@ -5,6 +5,8 @@
*
* Authors:
* Daniel Lezcano <daniel.lezcano at free.fr>
+ * Serge Hallyn <serge at hallyn.com>
+ * Christian Brauner <christian.brauner at ubuntu.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
From 01f55c40982b424ae56bd8753616faecfe8a3456 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Fri, 11 Aug 2017 00:11:34 +0200
Subject: [PATCH 3/6] confile: rework lxc_list_net()
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/confile.c | 152 +++++++++++++++++++------------------------------
src/lxc/confile.h | 9 ++-
src/lxc/lxccontainer.c | 2 +-
3 files changed, 69 insertions(+), 94 deletions(-)
diff --git a/src/lxc/confile.c b/src/lxc/confile.c
index cd77e875a..91e90cac7 100644
--- a/src/lxc/confile.c
+++ b/src/lxc/confile.c
@@ -435,98 +435,6 @@ static int set_config_net_type(const char *key, const char *value,
return 0;
}
-/*
- * If you have p="lxc.net.0.link", pass it p+8
- * to get back '0' (the index of the nic).
- */
-static int get_network_netdev_idx(const char *key)
-{
- int ret, idx;
-
- if (*key < '0' || *key > '9')
- return -1;
-
- ret = sscanf(key, "%d", &idx);
- if (ret != 1)
- return -1;
-
- return idx;
-}
-
-/*
- * If you have p="lxc.net.0", pass this p+8 and it will return
- * the netdev of the first configured nic.
- */
-static struct lxc_netdev *get_netdev_from_key(const char *key,
- struct lxc_list *network)
-{
- int idx;
- struct lxc_list *it;
- int i = 0;
- struct lxc_netdev *netdev = NULL;
-
- idx = get_network_netdev_idx(key);
- if (idx == -1)
- return NULL;
-
- lxc_list_for_each(it, network) {
- if (idx == i++) {
- netdev = it->elem;
- break;
- }
- }
-
- return netdev;
-}
-
-extern int lxc_list_nicconfigs(struct lxc_conf *c, const char *key, char *retv,
- int inlen)
-{
- struct lxc_netdev *netdev;
- int len;
- int fulllen = 0;
-
- netdev = get_netdev_from_key(key + 8, &c->network);
- if (!netdev)
- return -1;
-
- if (!retv)
- inlen = 0;
- else
- memset(retv, 0, inlen);
-
- strprint(retv, inlen, "type\n");
- strprint(retv, inlen, "script.up\n");
- strprint(retv, inlen, "script.down\n");
- if (netdev->type != LXC_NET_EMPTY) {
- strprint(retv, inlen, "flags\n");
- strprint(retv, inlen, "link\n");
- strprint(retv, inlen, "name\n");
- strprint(retv, inlen, "hwaddr\n");
- strprint(retv, inlen, "mtu\n");
- strprint(retv, inlen, "ipv6.address\n");
- strprint(retv, inlen, "ipv6.gateway\n");
- strprint(retv, inlen, "ipv4.address\n");
- strprint(retv, inlen, "ipv4.gateway\n");
- }
-
- switch (netdev->type) {
- case LXC_NET_VETH:
- strprint(retv, inlen, "veth.pair\n");
- break;
- case LXC_NET_MACVLAN:
- strprint(retv, inlen, "macvlan.mode\n");
- break;
- case LXC_NET_VLAN:
- strprint(retv, inlen, "vlan.id\n");
- break;
- case LXC_NET_PHYS:
- break;
- }
-
- return fulllen;
-}
-
static int set_config_net_flags(const char *key, const char *value,
struct lxc_conf *lxc_conf, void *data)
{
@@ -3734,6 +3642,66 @@ static struct lxc_config_t *get_network_config_ops(const char *key,
return NULL;
}
+int lxc_list_net(struct lxc_conf *c, const char *key, char *retv, int inlen)
+{
+ int len;
+ const char *idxstring;
+ struct lxc_config_t *config;
+ struct lxc_netdev *netdev;
+ int fulllen = 0;
+ ssize_t idx = -1;
+ char *deindexed_key = NULL;
+
+ idxstring = key + 8;
+ if (!isdigit(*idxstring))
+ return -1;
+
+ config = get_network_config_ops(key, c, &idx, &deindexed_key);
+ if (!config || idx < 0)
+ return -1;
+
+ netdev = lxc_get_netdev_by_idx(c, (unsigned int)idx, false);
+ free(deindexed_key);
+ if (!netdev)
+ return -1;
+
+ if (!retv)
+ inlen = 0;
+ else
+ memset(retv, 0, inlen);
+
+ strprint(retv, inlen, "type\n");
+ strprint(retv, inlen, "script.up\n");
+ strprint(retv, inlen, "script.down\n");
+ if (netdev->type != LXC_NET_EMPTY) {
+ strprint(retv, inlen, "flags\n");
+ strprint(retv, inlen, "link\n");
+ strprint(retv, inlen, "name\n");
+ strprint(retv, inlen, "hwaddr\n");
+ strprint(retv, inlen, "mtu\n");
+ strprint(retv, inlen, "ipv6.address\n");
+ strprint(retv, inlen, "ipv6.gateway\n");
+ strprint(retv, inlen, "ipv4.address\n");
+ strprint(retv, inlen, "ipv4.gateway\n");
+ }
+
+ switch (netdev->type) {
+ case LXC_NET_VETH:
+ strprint(retv, inlen, "veth.pair\n");
+ break;
+ case LXC_NET_MACVLAN:
+ strprint(retv, inlen, "macvlan.mode\n");
+ break;
+ case LXC_NET_VLAN:
+ strprint(retv, inlen, "vlan.id\n");
+ break;
+ case LXC_NET_PHYS:
+ break;
+ }
+
+ return fulllen;
+}
+
/*
* Config entry is something like "lxc.net.0.ipv4" the key 'lxc.net.'
* was found. So we make sure next comes an integer, find the right callback
diff --git a/src/lxc/confile.h b/src/lxc/confile.h
index 8c4991f0e..a5c2e36bf 100644
--- a/src/lxc/confile.h
+++ b/src/lxc/confile.h
@@ -38,6 +38,7 @@ typedef int (*config_set_cb)(const char *, const char *, struct lxc_conf *,
typedef int (*config_get_cb)(const char *, char *, int, struct lxc_conf *,
void *);
typedef int (*config_clr_cb)(const char *, struct lxc_conf *c, void *data);
+
struct lxc_config_t {
char *name;
config_set_cb set;
@@ -46,7 +47,13 @@ struct lxc_config_t {
};
extern struct lxc_config_t *lxc_getconfig(const char *key);
-extern int lxc_list_nicconfigs(struct lxc_conf *c, const char *key, char *retv, int inlen);
+
+/* List all configuration items associated with a given network. For example
+ * pass "lxc.net.[i]" to retrieve all configuration items associated with
+ * the network associated with index [i].
+ */
+extern int lxc_list_net(struct lxc_conf *c, const char *key, char *retv,
+ int inlen);
extern int lxc_listconfigs(char *retv, int inlen);
extern int lxc_config_read(const char *file, struct lxc_conf *conf, bool from_include);
extern int append_unexp_config_line(const char *line, struct lxc_conf *conf);
diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
index 44b4068d2..025ac4e17 100644
--- a/src/lxc/lxccontainer.c
+++ b/src/lxc/lxccontainer.c
@@ -2261,7 +2261,7 @@ static int do_lxcapi_get_keys(struct lxc_container *c, const char *key, char *re
return -1;
int ret = -1;
if (strncmp(key, "lxc.net.", 8) == 0)
- ret = lxc_list_nicconfigs(c->lxc_conf, key, retv, inlen);
+ ret = lxc_list_net(c->lxc_conf, key, retv, inlen);
else if (strncmp(key, "lxc.network.", 12) == 0)
ret = lxc_list_nicconfigs_legacy(c->lxc_conf, key, retv, inlen);
container_mem_unlock(c);
From 3aea1a764305bc8ce32aa1e33254e42186a9d171 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Fri, 11 Aug 2017 00:13:25 +0200
Subject: [PATCH 4/6] confile: non-functional changes
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/confile.h | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/lxc/confile.h b/src/lxc/confile.h
index a5c2e36bf..191676ffb 100644
--- a/src/lxc/confile.h
+++ b/src/lxc/confile.h
@@ -33,11 +33,12 @@
struct lxc_conf;
struct lxc_list;
-typedef int (*config_set_cb)(const char *, const char *, struct lxc_conf *,
+typedef int (*config_set_cb)(const char *key, const char *value,
+ struct lxc_conf *conf, void *data);
+typedef int (*config_get_cb)(const char *key, char *value, int inlen,
+ struct lxc_conf *conf, void *data);
+typedef int (*config_clr_cb)(const char *key, struct lxc_conf *conf,
void *data);
-typedef int (*config_get_cb)(const char *, char *, int, struct lxc_conf *,
- void *);
-typedef int (*config_clr_cb)(const char *, struct lxc_conf *c, void *data);
struct lxc_config_t {
char *name;
From cfc67626817dc65e397cfc9904498771536de82b Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Fri, 11 Aug 2017 00:19:10 +0200
Subject: [PATCH 5/6] confile: lxc_listconfigs -> lxc_list_config_items
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/confile.c | 42 +++++++++++++++++++++---------------------
src/lxc/confile.h | 2 +-
src/lxc/confile_utils.c | 1 -
src/lxc/lxccontainer.c | 2 +-
src/tests/config_jump_table.c | 4 ++--
5 files changed, 25 insertions(+), 26 deletions(-)
diff --git a/src/lxc/confile.c b/src/lxc/confile.c
index 91e90cac7..6f863e5da 100644
--- a/src/lxc/confile.c
+++ b/src/lxc/confile.c
@@ -366,27 +366,6 @@ extern struct lxc_config_t *lxc_getconfig(const char *key)
return NULL;
}
-int lxc_listconfigs(char *retv, int inlen)
-{
- size_t i;
- int len;
- int fulllen = 0;
-
- if (!retv)
- inlen = 0;
- else
- memset(retv, 0, inlen);
-
- for (i = 0; i < config_size; i++) {
- char *s = config[i].name;
- if (s[strlen(s) - 1] == '.')
- continue;
- strprint(retv, inlen, "%s\n", s);
- }
-
- return fulllen;
-}
-
static int set_config_net(const char *key, const char *value,
struct lxc_conf *lxc_conf, void *data)
{
@@ -4506,3 +4485,24 @@ static int get_config_net_ipv6_address(const char *key, char *retv, int inlen,
return fulllen;
}
+
+int lxc_list_config_items(char *retv, int inlen)
+{
+ size_t i;
+ int len;
+ int fulllen = 0;
+
+ if (!retv)
+ inlen = 0;
+ else
+ memset(retv, 0, inlen);
+
+ for (i = 0; i < config_size; i++) {
+ char *s = config[i].name;
+ if (s[strlen(s) - 1] == '.')
+ continue;
+ strprint(retv, inlen, "%s\n", s);
+ }
+
+ return fulllen;
+}
diff --git a/src/lxc/confile.h b/src/lxc/confile.h
index 191676ffb..ef0343945 100644
--- a/src/lxc/confile.h
+++ b/src/lxc/confile.h
@@ -55,7 +55,7 @@ extern struct lxc_config_t *lxc_getconfig(const char *key);
*/
extern int lxc_list_net(struct lxc_conf *c, const char *key, char *retv,
int inlen);
-extern int lxc_listconfigs(char *retv, int inlen);
+extern int lxc_list_config_items(char *retv, int inlen);
extern int lxc_config_read(const char *file, struct lxc_conf *conf, bool from_include);
extern int append_unexp_config_line(const char *line, struct lxc_conf *conf);
diff --git a/src/lxc/confile_utils.c b/src/lxc/confile_utils.c
index 332b98ae8..fa3f64598 100644
--- a/src/lxc/confile_utils.c
+++ b/src/lxc/confile_utils.c
@@ -680,4 +680,3 @@ bool parse_limit_value(const char **value, unsigned long *res)
return true;
}
-
diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
index 025ac4e17..a02e93e77 100644
--- a/src/lxc/lxccontainer.c
+++ b/src/lxc/lxccontainer.c
@@ -2249,7 +2249,7 @@ WRAP_API_1(char *, lxcapi_get_running_config_item, const char *)
static int do_lxcapi_get_keys(struct lxc_container *c, const char *key, char *retv, int inlen)
{
if (!key)
- return lxc_listconfigs(retv, inlen);
+ return lxc_list_config_items(retv, inlen);
/*
* Support 'lxc.net.<idx>', i.e. 'lxc.net.0'
* This is an intelligent result to show which keys are valid given
diff --git a/src/tests/config_jump_table.c b/src/tests/config_jump_table.c
index f2f70dd33..1fb244d42 100644
--- a/src/tests/config_jump_table.c
+++ b/src/tests/config_jump_table.c
@@ -38,7 +38,7 @@ int main(int argc, char *argv[])
int fulllen = 0, inlen = 0, ret = EXIT_FAILURE;
char *key, *keys, *saveptr = NULL;
- fulllen = lxc_listconfigs(NULL, inlen);
+ fulllen = lxc_list_config_items(NULL, inlen);
keys = malloc(sizeof(char) * fulllen + 1);
if (!keys) {
@@ -46,7 +46,7 @@ int main(int argc, char *argv[])
exit(ret);
}
- if (lxc_listconfigs(keys, fulllen) != fulllen) {
+ if (lxc_list_config_items(keys, fulllen) != fulllen) {
lxc_error("%s\n", "failed to retrieve configuration keys");
goto on_error;
}
From a5448c1530ba3778f8a14edc0c4a232db6cbe04b Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Fri, 11 Aug 2017 00:30:09 +0200
Subject: [PATCH 6/6] confile: move lxc_list_net()
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/confile.c | 120 ++++++++++++++++++++++++-------------------------
src/lxc/lxccontainer.c | 2 +-
2 files changed, 61 insertions(+), 61 deletions(-)
diff --git a/src/lxc/confile.c b/src/lxc/confile.c
index 6f863e5da..032051555 100644
--- a/src/lxc/confile.c
+++ b/src/lxc/confile.c
@@ -3621,66 +3621,6 @@ static struct lxc_config_t *get_network_config_ops(const char *key,
return NULL;
}
-int lxc_list_net(struct lxc_conf *c, const char *key, char *retv, int inlen)
-{
- int len;
- const char *idxstring;
- struct lxc_config_t *config;
- struct lxc_netdev *netdev;
- int fulllen = 0;
- ssize_t idx = -1;
- char *deindexed_key = NULL;
-
- idxstring = key + 8;
- if (!isdigit(*idxstring))
- return -1;
-
- config = get_network_config_ops(key, c, &idx, &deindexed_key);
- if (!config || idx < 0)
- return -1;
-
- netdev = lxc_get_netdev_by_idx(c, (unsigned int)idx, false);
- free(deindexed_key);
- if (!netdev)
- return -1;
-
- if (!retv)
- inlen = 0;
- else
- memset(retv, 0, inlen);
-
- strprint(retv, inlen, "type\n");
- strprint(retv, inlen, "script.up\n");
- strprint(retv, inlen, "script.down\n");
- if (netdev->type != LXC_NET_EMPTY) {
- strprint(retv, inlen, "flags\n");
- strprint(retv, inlen, "link\n");
- strprint(retv, inlen, "name\n");
- strprint(retv, inlen, "hwaddr\n");
- strprint(retv, inlen, "mtu\n");
- strprint(retv, inlen, "ipv6.address\n");
- strprint(retv, inlen, "ipv6.gateway\n");
- strprint(retv, inlen, "ipv4.address\n");
- strprint(retv, inlen, "ipv4.gateway\n");
- }
-
- switch (netdev->type) {
- case LXC_NET_VETH:
- strprint(retv, inlen, "veth.pair\n");
- break;
- case LXC_NET_MACVLAN:
- strprint(retv, inlen, "macvlan.mode\n");
- break;
- case LXC_NET_VLAN:
- strprint(retv, inlen, "vlan.id\n");
- break;
- case LXC_NET_PHYS:
- break;
- }
-
- return fulllen;
-}
-
/*
* Config entry is something like "lxc.net.0.ipv4" the key 'lxc.net.'
* was found. So we make sure next comes an integer, find the right callback
@@ -4506,3 +4446,63 @@ int lxc_list_config_items(char *retv, int inlen)
return fulllen;
}
+
+int lxc_list_net(struct lxc_conf *c, const char *key, char *retv, int inlen)
+{
+ int len;
+ const char *idxstring;
+ struct lxc_config_t *config;
+ struct lxc_netdev *netdev;
+ int fulllen = 0;
+ ssize_t idx = -1;
+ char *deindexed_key = NULL;
+
+ idxstring = key + 8;
+ if (!isdigit(*idxstring))
+ return -1;
+
+ config = get_network_config_ops(key, c, &idx, &deindexed_key);
+ if (!config || idx < 0)
+ return -1;
+
+ netdev = lxc_get_netdev_by_idx(c, (unsigned int)idx, false);
+ free(deindexed_key);
+ if (!netdev)
+ return -1;
+
+ if (!retv)
+ inlen = 0;
+ else
+ memset(retv, 0, inlen);
+
+ strprint(retv, inlen, "type\n");
+ strprint(retv, inlen, "script.up\n");
+ strprint(retv, inlen, "script.down\n");
+ if (netdev->type != LXC_NET_EMPTY) {
+ strprint(retv, inlen, "flags\n");
+ strprint(retv, inlen, "link\n");
+ strprint(retv, inlen, "name\n");
+ strprint(retv, inlen, "hwaddr\n");
+ strprint(retv, inlen, "mtu\n");
+ strprint(retv, inlen, "ipv6.address\n");
+ strprint(retv, inlen, "ipv6.gateway\n");
+ strprint(retv, inlen, "ipv4.address\n");
+ strprint(retv, inlen, "ipv4.gateway\n");
+ }
+
+ switch (netdev->type) {
+ case LXC_NET_VETH:
+ strprint(retv, inlen, "veth.pair\n");
+ break;
+ case LXC_NET_MACVLAN:
+ strprint(retv, inlen, "macvlan.mode\n");
+ break;
+ case LXC_NET_VLAN:
+ strprint(retv, inlen, "vlan.id\n");
+ break;
+ case LXC_NET_PHYS:
+ break;
+ }
+
+ return fulllen;
+}
diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
index a02e93e77..34696069c 100644
--- a/src/lxc/lxccontainer.c
+++ b/src/lxc/lxccontainer.c
@@ -2260,7 +2260,7 @@ static int do_lxcapi_get_keys(struct lxc_container *c, const char *key, char *re
if (container_mem_lock(c))
return -1;
int ret = -1;
- if (strncmp(key, "lxc.net.", 8) == 0)
+ if (!strncmp(key, "lxc.net.", 8))
ret = lxc_list_net(c->lxc_conf, key, retv, inlen);
else if (strncmp(key, "lxc.network.", 12) == 0)
ret = lxc_list_nicconfigs_legacy(c->lxc_conf, key, retv, inlen);
More information about the lxc-devel
mailing list