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 <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
This commit is contained in:
Tycho Andersen 2015-04-13 18:54:27 +00:00 committed by Stéphane Graber
parent 40962b642d
commit cba98d127b
3 changed files with 1 additions and 66 deletions

View File

@ -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*

View File

@ -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

View File

@ -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: