mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-15 02:19:39 +00:00
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:
parent
40962b642d
commit
cba98d127b
@ -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*
|
||||
|
@ -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
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user