[lxc-devel] [PATCH] c/r: use criu option instead of lxc-restore-net

Tycho Andersen tycho.andersen at canonical.com
Mon Apr 13 18:54:27 UTC 2015


As of criu 1.5, the --veth-pair argument supports an additional parameter that
is the bridge name to attach to. This enables us to get rid of the goofy
action-script hack that passed bridge names as environment variables.

This patch is on top of the systemd/lxcfs mount rework patch, as we probably
want to wait to use 1.5 options until it has been out for a while and is in
distros.

Signed-off-by: Tycho Andersen <tycho.andersen at canonical.com>
---
 src/lxc/Makefile.am     |  4 ----
 src/lxc/lxc-restore-net | 26 --------------------------
 src/lxc/lxccontainer.c  | 37 +------------------------------------
 3 files changed, 1 insertion(+), 66 deletions(-)
 delete mode 100755 src/lxc/lxc-restore-net

diff --git a/src/lxc/Makefile.am b/src/lxc/Makefile.am
index 8b79c40..a56d504 100644
--- a/src/lxc/Makefile.am
+++ b/src/lxc/Makefile.am
@@ -164,7 +164,6 @@ bin_SCRIPTS = lxc-checkconfig
 
 EXTRA_DIST = \
 	lxc-ls \
-	lxc-restore-net \
 	lxc-top.lua
 
 if ENABLE_PYTHON
@@ -262,8 +261,5 @@ install-exec-local: install-soPROGRAMS
 install-exec-hook:
 	chmod u+s $(DESTDIR)$(libexecdir)/lxc/lxc-user-nic
 
-install-data-local:
-	install -c -m 755 lxc-restore-net $(DESTDIR)$(datadir)/lxc
-
 uninstall-local:
 	$(RM) $(DESTDIR)$(libdir)/liblxc.so*
diff --git a/src/lxc/lxc-restore-net b/src/lxc/lxc-restore-net
deleted file mode 100755
index 6ae3c19..0000000
--- a/src/lxc/lxc-restore-net
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-
-set -e
-
-i=0
-while true; do
-	eval "bridge=\$LXC_CRIU_BRIDGE$i"
-	eval "veth=\$LXC_CRIU_VETH$i"
-
-	if [ -z "$bridge" ] || [ -z "$veth" ]; then
-		exit 0
-	fi
-
-	if [ "$CRTOOLS_SCRIPT_ACTION" = "network-lock" ]; then
-		brctl delif $bridge $veth
-	fi
-
-	if [ "$CRTOOLS_SCRIPT_ACTION" = "network-unlock" ]; then
-		brctl addif $bridge $veth
-		ip link set dev $veth up
-	fi
-
-	i=$((i+1))
-done
-
-exit 1
diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
index d759703..3f50fa6 100644
--- a/src/lxc/lxccontainer.c
+++ b/src/lxc/lxccontainer.c
@@ -3779,8 +3779,6 @@ static void exec_criu(struct criu_opts *opts)
 	DECLARE_ARG("auto");
 	DECLARE_ARG("--enable-external-sharing");
 	DECLARE_ARG("--enable-external-masters");
-	DECLARE_ARG("--action-script");
-	DECLARE_ARG(DATADIR "/lxc/lxc-restore-net");
 	DECLARE_ARG("-D");
 	DECLARE_ARG(opts->directory);
 	DECLARE_ARG("-o");
@@ -3832,7 +3830,7 @@ static void exec_criu(struct criu_opts *opts)
 
 			veth = n->priv.veth_attr.pair;
 
-			ret = snprintf(buf, sizeof(buf), "%s=%s", eth, veth);
+			ret = snprintf(buf, sizeof(buf), "%s=%s@%s", eth, veth, n->link);
 			if (ret < 0 || ret >= sizeof(buf))
 				goto err;
 
@@ -3844,39 +3842,6 @@ static void exec_criu(struct criu_opts *opts)
 
 	argv[argc] = NULL;
 
-	netnr = 0;
-	lxc_list_for_each(it, &opts->c->lxc_conf->network) {
-		struct lxc_netdev *n = it->elem;
-		char veth[128];
-
-		/*
-		 * Here, we set some parameters that lxc-restore-net
-		 * will examine to figure out the right network to
-		 * restore.
-		 */
-		snprintf(buf, sizeof(buf), "LXC_CRIU_BRIDGE%d", netnr);
-		if (setenv(buf, n->link, 1))
-			goto err;
-
-		if (strcmp("restore", opts->action) == 0)
-			strncpy(veth, n->priv.veth_attr.pair, sizeof(veth));
-		else {
-			char *tmp;
-			ret = snprintf(buf, sizeof(buf), "lxc.network.%d.veth.pair", netnr);
-			if (ret < 0 || ret >= sizeof(buf))
-				goto err;
-			tmp = lxcapi_get_running_config_item(opts->c, buf);
-			strncpy(veth, tmp, sizeof(veth));
-			free(tmp);
-		}
-
-		snprintf(buf, sizeof(buf), "LXC_CRIU_VETH%d", netnr);
-		if (setenv(buf, veth, 1))
-			goto err;
-
-		netnr++;
-	}
-
 #undef DECLARE_ARG
 #undef RESIZE_ARGS
 	execv(argv[0], argv);
-- 
2.1.4



More information about the lxc-devel mailing list