diff --git a/criu/config.c b/criu/config.c index 089a70038..89cc17620 100644 --- a/criu/config.c +++ b/criu/config.c @@ -802,3 +802,36 @@ bad_arg: long_opts[idx].name, optarg); return 1; } + +int check_options() +{ + if (opts.tcp_established_ok) + pr_info("Will dump/restore TCP connections\n"); + if (opts.tcp_skip_in_flight) + pr_info("Will skip in-flight TCP connections\n"); + if (opts.tcp_close) + pr_info("Will drop all TCP connections on restore\n"); + if (opts.link_remap_ok) + pr_info("Will allow link remaps on FS\n"); + if (opts.weak_sysctls) + pr_info("Will skip non-existant sysctls on restore\n"); + + if (opts.deprecated_ok) + pr_info("Turn deprecated stuff ON\n"); + else if (getenv("CRIU_DEPRECATED")) { + pr_info("Turn deprecated stuff ON via env\n"); + opts.deprecated_ok = true; + } + + if (!opts.restore_detach && opts.restore_sibling) { + pr_err("--restore-sibling only makes sense with --restore-detach\n"); + return 1; + } + + if (check_namespace_opts()) { + pr_err("Error: namespace flags conflict\n"); + return 1; + } + + return 0; +} diff --git a/criu/cr-service.c b/criu/cr-service.c index 37cc6f7df..231a37f30 100644 --- a/criu/cr-service.c +++ b/criu/cr-service.c @@ -639,8 +639,6 @@ static int setup_opts_from_req(int sk, CriuOpts *req) if (req->orphan_pts_master) opts.orphan_pts_master = true; - if (check_namespace_opts()) - goto err; /* Evaluate additional configuration file a second time to overwrite * all RPC settings. */ @@ -650,7 +648,10 @@ static int setup_opts_from_req(int sk, CriuOpts *req) if (i) goto err; } + log_set_loglevel(opts.log_level); + if (check_options()) + goto err; return 0; diff --git a/criu/crtools.c b/criu/crtools.c index a0077e5ab..0a1483b06 100644 --- a/criu/crtools.c +++ b/criu/crtools.c @@ -110,31 +110,8 @@ int main(int argc, char *argv[], char *envp[]) return cr_service_work(atoi(argv[2])); } - if (opts.deprecated_ok) - pr_msg("Turn deprecated stuff ON\n"); - if (opts.tcp_skip_in_flight) - pr_msg("Will skip in-flight TCP connections\n"); - if (opts.tcp_established_ok) - pr_info("Will dump TCP connections\n"); - if (opts.link_remap_ok) - pr_info("Will allow link remaps on FS\n"); - if (opts.weak_sysctls) - pr_msg("Will skip non-existant sysctls on restore\n"); - - if (getenv("CRIU_DEPRECATED")) { - pr_msg("Turn deprecated stuff ON via env\n"); - opts.deprecated_ok = true; - } - - if (check_namespace_opts()) { - pr_msg("Error: namespace flags conflict\n"); + if (check_options()) return 1; - } - - if (!opts.restore_detach && opts.restore_sibling) { - pr_msg("--restore-sibling only makes sense with --restore-detach\n"); - return 1; - } if (opts.imgs_dir == NULL) SET_CHAR_OPTS(imgs_dir, "."); diff --git a/criu/include/cr_options.h b/criu/include/cr_options.h index c722e3ae2..9f152fac0 100644 --- a/criu/include/cr_options.h +++ b/criu/include/cr_options.h @@ -144,6 +144,7 @@ extern struct cr_options opts; char *rpc_cfg_file; extern int parse_options(int argc, char **argv, bool *usage_error, bool *has_exec_cmd, int state); +extern int check_options(); extern void init_opts(); #endif /* __CR_OPTIONS_H__ */