<div dir="ltr">The fd for --ps-socket doesn&#39;t have to be a UNIX socket, it can be a TCP socket just fine.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">śr., 30 sty 2019 o 12:25 Martin Wuehrer &lt;<a href="mailto:martin.wuehrer@artech.at">martin.wuehrer@artech.at</a>&gt; napisał(a):<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Radostin,<br>
<br>
Sorry, but I have actually another usecase where the criu-dump and the<br>
pageserver are running on two machines connected via network.<br>
Thus in this case I don&#39;t have the possibility to access the UNIX-<br>
socket from the dumping machine and I need the TCP address and port of<br>
the machine where the pageserver runs.<br>
<br>
But thanks anyway.<br>
<br>
Martin<br>
<br>
On Wed, 2019-01-30 at 11:13 +0000, Radostin Stoyanov wrote:<br>
&gt; Hi Martin,<br>
&gt; <br>
&gt; I remember that I sent a similar patch some time ago<br>
&gt; <br>
&gt; <a href="https://lists.openvz.org/pipermail/criu/2018-February/040352.html" rel="noreferrer" target="_blank">https://lists.openvz.org/pipermail/criu/2018-February/040352.html</a><br>
&gt; <br>
&gt; What do you think about the idea of starting page server via c-lib?<br>
&gt; Another, thing that might be useful is the &#39;--ps-socket&#39; option which<br>
&gt; allows to pass a file descriptor as socket for incoming connection<br>
&gt; (instead of --address and --port)<br>
&gt; <br>
&gt; Radostin<br>
&gt; <br>
&gt; On 30/01/2019 09:34, <a href="mailto:martin.wuehrer@artech.at" target="_blank">martin.wuehrer@artech.at</a> wrote:<br>
&gt; &gt; From: Martin Wührer &lt;<a href="mailto:martin.wuehrer@artech.at" target="_blank">martin.wuehrer@artech.at</a>&gt;<br>
&gt; &gt; <br>
&gt; &gt; According to <a href="https://criu.org/API_compliance" rel="noreferrer" target="_blank">https://criu.org/API_compliance</a>, the C-library<br>
&gt; &gt; doesn&#39;t support the pageserver option.<br>
&gt; &gt; This patch contains the functions<br>
&gt; &gt; `criu_(local_)set_page_server_address_port()`<br>
&gt; &gt; that allow to specify on which ip and tcp-port the pageserver<br>
&gt; &gt; is listening.<br>
&gt; &gt; <br>
&gt; &gt; This patch affects only the c-lib, as criu-rpc already supports the<br>
&gt; &gt; pageserver settings.<br>
&gt; &gt; <br>
&gt; &gt; Signed-off-by: Martin Wührer &lt;<a href="mailto:martin.wuehrer@artech.at" target="_blank">martin.wuehrer@artech.at</a>&gt;<br>
&gt; &gt; ---<br>
&gt; &gt;  lib/c/criu.c | 31 +++++++++++++++++++++++++++++++<br>
&gt; &gt;  lib/c/criu.h |  2 ++<br>
&gt; &gt;  2 files changed, 33 insertions(+)<br>
&gt; &gt; <br>
&gt; &gt; diff --git a/lib/c/criu.c b/lib/c/criu.c<br>
&gt; &gt; index 11dc6e84..6d299835 100644<br>
&gt; &gt; --- a/lib/c/criu.c<br>
&gt; &gt; +++ b/lib/c/criu.c<br>
&gt; &gt; @@ -193,6 +193,11 @@ void criu_local_free_opts(criu_opts *opts)<br>
&gt; &gt;     }<br>
&gt; &gt;     opts-&gt;rpc-&gt;n_external = 0;<br>
&gt; &gt;  <br>
&gt; &gt; +   if(opts-&gt;rpc-&gt;ps) {<br>
&gt; &gt; +           free(opts-&gt;rpc-&gt;ps-&gt;address);<br>
&gt; &gt; +           free(opts-&gt;rpc-&gt;ps);<br>
&gt; &gt; +   }<br>
&gt; &gt; +<br>
&gt; &gt;     free(opts-&gt;rpc-&gt;cgroup_props_file);<br>
&gt; &gt;     free(opts-&gt;rpc-&gt;cgroup_props);<br>
&gt; &gt;     free(opts-&gt;rpc-&gt;parent_img);<br>
&gt; &gt; @@ -1018,6 +1023,32 @@ int criu_add_external(char *key)<br>
&gt; &gt;     return criu_local_add_external(global_opts, key);<br>
&gt; &gt;  }<br>
&gt; &gt;  <br>
&gt; &gt; +int criu_local_set_page_server_address_port(criu_opts *opts, const<br>
&gt; &gt; char *address, int port)<br>
&gt; &gt; +{<br>
&gt; &gt; +   opts-&gt;rpc-&gt;ps = malloc(sizeof(CriuPageServerInfo));<br>
&gt; &gt; +   if (opts-&gt;rpc-&gt;ps) {<br>
&gt; &gt; +           criu_page_server_info__init(opts-&gt;rpc-&gt;ps);<br>
&gt; &gt; +<br>
&gt; &gt; +           opts-&gt;rpc-&gt;ps-&gt;address = strdup(address);<br>
&gt; &gt; +           if (!opts-&gt;rpc-&gt;ps-&gt;address) {<br>
&gt; &gt; +                   free(opts-&gt;rpc-&gt;ps);<br>
&gt; &gt; +                   opts-&gt;rpc-&gt;ps = NULL;<br>
&gt; &gt; +                   goto out;<br>
&gt; &gt; +           }<br>
&gt; &gt; +<br>
&gt; &gt; +           opts-&gt;rpc-&gt;ps-&gt;has_port = true;<br>
&gt; &gt; +           opts-&gt;rpc-&gt;ps-&gt;port = port;<br>
&gt; &gt; +   }<br>
&gt; &gt; +<br>
&gt; &gt; +out:<br>
&gt; &gt; +   return -ENOMEM;<br>
&gt; &gt; +}<br>
&gt; &gt; +<br>
&gt; &gt; +int criu_set_page_server_address_port(const char *address, int<br>
&gt; &gt; port)<br>
&gt; &gt; +{<br>
&gt; &gt; +   return criu_local_set_page_server_address_port(global_opts,<br>
&gt; &gt; address, port);<br>
&gt; &gt; +}<br>
&gt; &gt; +<br>
&gt; &gt;  static CriuResp *recv_resp(int socket_fd)<br>
&gt; &gt;  {<br>
&gt; &gt;     unsigned char *buf = NULL;<br>
&gt; &gt; diff --git a/lib/c/criu.h b/lib/c/criu.h<br>
&gt; &gt; index 8acd342a..ceb30353 100644<br>
&gt; &gt; --- a/lib/c/criu.h<br>
&gt; &gt; +++ b/lib/c/criu.h<br>
&gt; &gt; @@ -97,6 +97,7 @@ void criu_set_ghost_limit(unsigned int limit);<br>
&gt; &gt;  int criu_add_irmap_path(char *path);<br>
&gt; &gt;  int criu_add_inherit_fd(int fd, char *key);<br>
&gt; &gt;  int criu_add_external(char *key);<br>
&gt; &gt; +int criu_set_page_server_address_port(const char *address, int<br>
&gt; &gt; port);<br>
&gt; &gt;  <br>
&gt; &gt;  /*<br>
&gt; &gt;   * The criu_notify_arg_t na argument is an opaque<br>
&gt; &gt; @@ -211,6 +212,7 @@ int criu_local_add_cg_props_file(criu_opts<br>
&gt; &gt; *opts, char *path);<br>
&gt; &gt;  int criu_local_add_cg_dump_controller(criu_opts *opts, char<br>
&gt; &gt; *name);<br>
&gt; &gt;  int criu_local_add_inherit_fd(criu_opts *opts, int fd, char *key);<br>
&gt; &gt;  int criu_local_add_external(criu_opts *opts, char *key);<br>
&gt; &gt; +int criu_local_set_page_server_address_port(criu_opts *opts, const<br>
&gt; &gt; char *address, int port);<br>
&gt; &gt;  <br>
&gt; &gt;  void criu_local_set_notify_cb(criu_opts *opts, int (*cb)(char<br>
&gt; &gt; *action, criu_notify_arg_t na));<br>
&gt; &gt;  <br>
<br>
_______________________________________________<br>
CRIU mailing list<br>
<a href="mailto:CRIU@openvz.org" target="_blank">CRIU@openvz.org</a><br>
<a href="https://lists.openvz.org/mailman/listinfo/criu" rel="noreferrer" target="_blank">https://lists.openvz.org/mailman/listinfo/criu</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature">Paweł Stradomski</div>