mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-15 04:09:46 +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 = \
|
EXTRA_DIST = \
|
||||||
lxc-ls \
|
lxc-ls \
|
||||||
lxc-restore-net \
|
|
||||||
lxc-top.lua
|
lxc-top.lua
|
||||||
|
|
||||||
if ENABLE_PYTHON
|
if ENABLE_PYTHON
|
||||||
@ -261,8 +260,5 @@ install-exec-local: install-soPROGRAMS
|
|||||||
install-exec-hook:
|
install-exec-hook:
|
||||||
chmod u+s $(DESTDIR)$(libexecdir)/lxc/lxc-user-nic
|
chmod u+s $(DESTDIR)$(libexecdir)/lxc/lxc-user-nic
|
||||||
|
|
||||||
install-data-local:
|
|
||||||
install -c -m 755 lxc-restore-net $(DESTDIR)$(datadir)/lxc
|
|
||||||
|
|
||||||
uninstall-local:
|
uninstall-local:
|
||||||
$(RM) $(DESTDIR)$(libdir)/liblxc.so*
|
$(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("auto");
|
||||||
DECLARE_ARG("--enable-external-sharing");
|
DECLARE_ARG("--enable-external-sharing");
|
||||||
DECLARE_ARG("--enable-external-masters");
|
DECLARE_ARG("--enable-external-masters");
|
||||||
DECLARE_ARG("--action-script");
|
|
||||||
DECLARE_ARG(DATADIR "/lxc/lxc-restore-net");
|
|
||||||
DECLARE_ARG("-D");
|
DECLARE_ARG("-D");
|
||||||
DECLARE_ARG(opts->directory);
|
DECLARE_ARG(opts->directory);
|
||||||
DECLARE_ARG("-o");
|
DECLARE_ARG("-o");
|
||||||
@ -3644,7 +3642,7 @@ static void exec_criu(struct criu_opts *opts)
|
|||||||
|
|
||||||
veth = n->priv.veth_attr.pair;
|
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))
|
if (ret < 0 || ret >= sizeof(buf))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
@ -3656,39 +3654,6 @@ static void exec_criu(struct criu_opts *opts)
|
|||||||
|
|
||||||
argv[argc] = NULL;
|
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 DECLARE_ARG
|
||||||
execv(argv[0], argv);
|
execv(argv[0], argv);
|
||||||
err:
|
err:
|
||||||
|
Loading…
Reference in New Issue
Block a user