[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v3 07/31] libxl_qmp: Learned to send FD through QMP to QEMU
Adding the ability to send a file descriptor from libxl to QEMU via the QMP interface. This will be use with the "add-fd" QMP command. Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- tools/libxl/libxl_qmp.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tools/libxl/libxl_qmp.c b/tools/libxl/libxl_qmp.c index 8b3ed94868..e1fcce2291 100644 --- a/tools/libxl/libxl_qmp.c +++ b/tools/libxl/libxl_qmp.c @@ -125,6 +125,9 @@ struct libxl__qmp_handler { int minor; int micro; } version; + + /* File descriptor to send to QEMU on the next command */ + int fd_to_send; }; static int qmp_send(libxl__qmp_handler *qmp, @@ -423,6 +426,8 @@ static libxl__qmp_handler *qmp_init_handler(libxl__gc *gc, uint32_t domid) LIBXL_STAILQ_INIT(&qmp->callback_list); + qmp->fd_to_send = -1; + return qmp; } @@ -648,9 +653,16 @@ static int qmp_send(libxl__qmp_handler *qmp, goto out; } - if (libxl_write_exactly(qmp->ctx, qmp->qmp_fd, buf, strlen(buf), - "QMP command", "QMP socket")) - goto out; + if (qmp->fd_to_send >= 0) { + if (libxl__sendmsg_fds(gc, qmp->qmp_fd, buf, strlen(buf), + 1, &qmp->fd_to_send, "QMP socket")) + goto out; + qmp->fd_to_send = -1; + } else { + if (libxl_write_exactly(qmp->ctx, qmp->qmp_fd, buf, strlen(buf), + "QMP command", "QMP socket")) + goto out; + } if (libxl_write_exactly(qmp->ctx, qmp->qmp_fd, "\r\n", 2, "CRLF", "QMP socket")) goto out; -- Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |