From: Tycho Andersen Date: Mon, 13 Apr 2015 18:54:27 +0000 (+0000) Subject: c/r: use criu option instead of lxc-restore-net X-Git-Tag: lxc-2.0.0.beta1~305 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cba98d127bf490b018a016b792ae05fd2d29c5ee;p=thirdparty%2Flxc.git c/r: use criu option instead of lxc-restore-net 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 Acked-by: Serge E. Hallyn --- diff --git a/src/lxc/Makefile.am b/src/lxc/Makefile.am index b1e56b939..d8e460bda 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 @@ -261,8 +260,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 6ae3c1988..000000000 --- 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 4d73b4c58..d6826abcb 100644 --- a/src/lxc/lxccontainer.c +++ b/src/lxc/lxccontainer.c @@ -3591,8 +3591,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"); @@ -3644,7 +3642,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; @@ -3656,39 +3654,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 execv(argv[0], argv); err: