[1/2] rpc: Add interface for --tcp-close option

Submitted by Radostin Stoyanov on Jan. 6, 2019, 3:44 p.m.

Details

Message ID 20190106154427.11356-1-rstoyanov1@gmail.com
State Accepted
Series "Series without cover letter"
Headers show

Commit Message

Radostin Stoyanov Jan. 6, 2019, 3:44 p.m.
Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
---
 criu/cr-service.c |  3 +++
 images/rpc.proto  |  1 +
 lib/c/criu.c      | 11 +++++++++++
 lib/c/criu.h      |  2 ++
 4 files changed, 17 insertions(+)

Patch hide | download patch | download mbox

diff --git a/criu/cr-service.c b/criu/cr-service.c
index 532a87c81..37cc6f7df 100644
--- a/criu/cr-service.c
+++ b/criu/cr-service.c
@@ -437,6 +437,9 @@  static int setup_opts_from_req(int sk, CriuOpts *req)
 	if (req->has_tcp_skip_in_flight)
 		opts.tcp_skip_in_flight = req->tcp_skip_in_flight;
 
+	if (req->has_tcp_close)
+		opts.tcp_close = req->tcp_close;
+
 	if (req->has_weak_sysctls)
 		opts.weak_sysctls = req->weak_sysctls;
 
diff --git a/images/rpc.proto b/images/rpc.proto
index abf2f5d79..5c8226d25 100644
--- a/images/rpc.proto
+++ b/images/rpc.proto
@@ -112,6 +112,7 @@  message criu_opts {
 	optional int32			status_fd		= 49;
 	optional bool			orphan_pts_master	= 50;
 	optional string			config_file		= 51;
+	optional bool			tcp_close		= 52;
 }
 
 message criu_dump_resp {
diff --git a/lib/c/criu.c b/lib/c/criu.c
index ff9c9b87e..b70da4d81 100644
--- a/lib/c/criu.c
+++ b/lib/c/criu.c
@@ -321,6 +321,17 @@  void criu_set_tcp_skip_in_flight(bool tcp_skip_in_flight)
 	criu_local_set_tcp_skip_in_flight(global_opts, tcp_skip_in_flight);
 }
 
+void criu_local_set_tcp_close(criu_opts *opts, bool tcp_close)
+{
+	opts->rpc->has_tcp_close	= true;
+	opts->rpc->tcp_close		= tcp_close;
+}
+
+void criu_set_tcp_close(bool tcp_close)
+{
+	criu_local_set_tcp_close(global_opts, tcp_close);
+}
+
 void criu_local_set_weak_sysctls(criu_opts *opts, bool val)
 {
 	opts->rpc->has_weak_sysctls = true;
diff --git a/lib/c/criu.h b/lib/c/criu.h
index ae8683bc9..672246526 100644
--- a/lib/c/criu.h
+++ b/lib/c/criu.h
@@ -66,6 +66,7 @@  void criu_set_ext_unix_sk(bool ext_unix_sk);
 int criu_add_unix_sk(unsigned int inode);
 void criu_set_tcp_established(bool tcp_established);
 void criu_set_tcp_skip_in_flight(bool tcp_skip_in_flight);
+void criu_set_tcp_close(bool tcp_close);
 void criu_set_weak_sysctls(bool val);
 void criu_set_evasive_devices(bool evasive_devices);
 void criu_set_shell_job(bool shell_job);
@@ -175,6 +176,7 @@  void criu_local_set_ext_unix_sk(criu_opts *opts, bool ext_unix_sk);
 int criu_local_add_unix_sk(criu_opts *opts, unsigned int inode);
 void criu_local_set_tcp_established(criu_opts *opts, bool tcp_established);
 void criu_local_set_tcp_skip_in_flight(criu_opts *opts, bool tcp_skip_in_flight);
+void criu_local_set_tcp_close(criu_opts *opts, bool tcp_close);
 void criu_local_set_weak_sysctls(criu_opts *opts, bool val);
 void criu_local_set_evasive_devices(criu_opts *opts, bool evasive_devices);
 void criu_local_set_shell_job(criu_opts *opts, bool shell_job);

Comments

Andrei Vagin Jan. 19, 2019, 4:30 a.m.
Applied, thanks!

On Sun, Jan 06, 2019 at 03:44:26PM +0000, Radostin Stoyanov wrote:
> Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com>
> ---
>  criu/cr-service.c |  3 +++
>  images/rpc.proto  |  1 +
>  lib/c/criu.c      | 11 +++++++++++
>  lib/c/criu.h      |  2 ++
>  4 files changed, 17 insertions(+)
> 
> diff --git a/criu/cr-service.c b/criu/cr-service.c
> index 532a87c81..37cc6f7df 100644
> --- a/criu/cr-service.c
> +++ b/criu/cr-service.c
> @@ -437,6 +437,9 @@ static int setup_opts_from_req(int sk, CriuOpts *req)
>  	if (req->has_tcp_skip_in_flight)
>  		opts.tcp_skip_in_flight = req->tcp_skip_in_flight;
>  
> +	if (req->has_tcp_close)
> +		opts.tcp_close = req->tcp_close;
> +
>  	if (req->has_weak_sysctls)
>  		opts.weak_sysctls = req->weak_sysctls;
>  
> diff --git a/images/rpc.proto b/images/rpc.proto
> index abf2f5d79..5c8226d25 100644
> --- a/images/rpc.proto
> +++ b/images/rpc.proto
> @@ -112,6 +112,7 @@ message criu_opts {
>  	optional int32			status_fd		= 49;
>  	optional bool			orphan_pts_master	= 50;
>  	optional string			config_file		= 51;
> +	optional bool			tcp_close		= 52;
>  }
>  
>  message criu_dump_resp {
> diff --git a/lib/c/criu.c b/lib/c/criu.c
> index ff9c9b87e..b70da4d81 100644
> --- a/lib/c/criu.c
> +++ b/lib/c/criu.c
> @@ -321,6 +321,17 @@ void criu_set_tcp_skip_in_flight(bool tcp_skip_in_flight)
>  	criu_local_set_tcp_skip_in_flight(global_opts, tcp_skip_in_flight);
>  }
>  
> +void criu_local_set_tcp_close(criu_opts *opts, bool tcp_close)
> +{
> +	opts->rpc->has_tcp_close	= true;
> +	opts->rpc->tcp_close		= tcp_close;
> +}
> +
> +void criu_set_tcp_close(bool tcp_close)
> +{
> +	criu_local_set_tcp_close(global_opts, tcp_close);
> +}
> +
>  void criu_local_set_weak_sysctls(criu_opts *opts, bool val)
>  {
>  	opts->rpc->has_weak_sysctls = true;
> diff --git a/lib/c/criu.h b/lib/c/criu.h
> index ae8683bc9..672246526 100644
> --- a/lib/c/criu.h
> +++ b/lib/c/criu.h
> @@ -66,6 +66,7 @@ void criu_set_ext_unix_sk(bool ext_unix_sk);
>  int criu_add_unix_sk(unsigned int inode);
>  void criu_set_tcp_established(bool tcp_established);
>  void criu_set_tcp_skip_in_flight(bool tcp_skip_in_flight);
> +void criu_set_tcp_close(bool tcp_close);
>  void criu_set_weak_sysctls(bool val);
>  void criu_set_evasive_devices(bool evasive_devices);
>  void criu_set_shell_job(bool shell_job);
> @@ -175,6 +176,7 @@ void criu_local_set_ext_unix_sk(criu_opts *opts, bool ext_unix_sk);
>  int criu_local_add_unix_sk(criu_opts *opts, unsigned int inode);
>  void criu_local_set_tcp_established(criu_opts *opts, bool tcp_established);
>  void criu_local_set_tcp_skip_in_flight(criu_opts *opts, bool tcp_skip_in_flight);
> +void criu_local_set_tcp_close(criu_opts *opts, bool tcp_close);
>  void criu_local_set_weak_sysctls(criu_opts *opts, bool val);
>  void criu_local_set_evasive_devices(criu_opts *opts, bool evasive_devices);
>  void criu_local_set_shell_job(criu_opts *opts, bool shell_job);
> -- 
> 2.20.1
> 
> _______________________________________________
> CRIU mailing list
> CRIU@openvz.org
> https://lists.openvz.org/mailman/listinfo/criu