diff --git a/src/lxc/criu.c b/src/lxc/criu.c index a1b7d407b..94b9ce485 100644 --- a/src/lxc/criu.c +++ b/src/lxc/criu.c @@ -185,6 +185,9 @@ static void exec_criu(struct criu_opts *opts) if (opts->user->verbose) static_args++; + if (opts->user->action_script) + static_args += 2; + ret = snprintf(log, PATH_MAX, "%s/%s.log", opts->user->directory, opts->action); if (ret < 0 || ret >= PATH_MAX) { ERROR("logfile name too long\n"); @@ -235,6 +238,11 @@ static void exec_criu(struct criu_opts *opts) if (opts->user->verbose) DECLARE_ARG("-vvvvvv"); + if (opts->user->action_script) { + DECLARE_ARG("--action-script"); + DECLARE_ARG(opts->user->action_script); + } + if (strcmp(opts->action, "dump") == 0 || strcmp(opts->action, "pre-dump") == 0) { char pid[32], *freezer_relative; diff --git a/src/lxc/lxccontainer.h b/src/lxc/lxccontainer.h index ecc66e226..bde4912bd 100644 --- a/src/lxc/lxccontainer.h +++ b/src/lxc/lxccontainer.h @@ -891,6 +891,11 @@ struct migrate_opts { * won't if e.g. you rsync the filesystems between two machines. */ bool preserves_inodes; + + /* Path to an executable script that will be registered as a criu + * "action script" + */ + char *action_script; }; /*!