|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC 1/4] libxl: 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>
---
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 d03cb51668..5bf5236240 100644
--- a/tools/libxl/libxl_qmp.c
+++ b/tools/libxl/libxl_qmp.c
@@ -80,6 +80,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,
@@ -378,6 +381,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;
}
@@ -602,9 +607,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 |