[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v14 04/21] socket: export socket_get_fd() function
From: |
elena . ufimtseva |
Subject: |
[PATCH v14 04/21] socket: export socket_get_fd() function |
Date: |
Thu, 17 Dec 2020 19:57:51 -0800 |
From: Jagannathan Raman <jag.raman@oracle.com>
Export socket_get_fd() helper function. The function protorype is
changed to be more generic. Use monitor_fd_param() instead of
monitor_fd_get() in order to support named fds as well.
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
Signed-off-by: John G Johnson <john.g.johnson@oracle.com>
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com>
---
include/qemu/sockets.h | 1 +
stubs/monitor.c | 2 +-
tests/test-util-sockets.c | 2 +-
util/qemu-sockets.c | 18 ++++++++++--------
4 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h
index 7d1f813576..d87cf9f1c5 100644
--- a/include/qemu/sockets.h
+++ b/include/qemu/sockets.h
@@ -41,6 +41,7 @@ int unix_listen(const char *path, Error **errp);
int unix_connect(const char *path, Error **errp);
SocketAddress *socket_parse(const char *str, Error **errp);
+int socket_get_fd(const char *fdstr, Error **errp);
int socket_connect(SocketAddress *addr, Error **errp);
int socket_listen(SocketAddress *addr, int num, Error **errp);
void socket_listen_cleanup(int fd, Error **errp);
diff --git a/stubs/monitor.c b/stubs/monitor.c
index 20786ac4ff..6e6850cd3a 100644
--- a/stubs/monitor.c
+++ b/stubs/monitor.c
@@ -3,7 +3,7 @@
#include "monitor/monitor.h"
#include "../monitor/monitor-internal.h"
-int monitor_get_fd(Monitor *mon, const char *name, Error **errp)
+int monitor_fd_param(Monitor *mon, const char *fdname, Error **errp)
{
error_setg(errp, "only QEMU supports file descriptor passing");
return -1;
diff --git a/tests/test-util-sockets.c b/tests/test-util-sockets.c
index 67486055ed..e790a0af25 100644
--- a/tests/test-util-sockets.c
+++ b/tests/test-util-sockets.c
@@ -54,7 +54,7 @@ static int mon_fd = -1;
static const char *mon_fdname;
__thread Monitor *cur_mon;
-int monitor_get_fd(Monitor *mon, const char *fdname, Error **errp)
+int monitor_fd_param(Monitor *mon, const char *fdname, Error **errp)
{
g_assert(cur_mon);
g_assert(mon == cur_mon);
diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index 8af0278f15..694552cb7d 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -1116,16 +1116,12 @@ fail:
return NULL;
}
-static int socket_get_fd(const char *fdstr, int num, Error **errp)
+int socket_get_fd(const char *fdstr, Error **errp)
{
Monitor *cur_mon = monitor_cur();
int fd;
- if (num != 1) {
- error_setg_errno(errp, EINVAL, "socket_get_fd: too many connections");
- return -1;
- }
if (cur_mon) {
- fd = monitor_get_fd(cur_mon, fdstr, errp);
+ fd = monitor_fd_param(cur_mon, fdstr, errp);
if (fd < 0) {
return -1;
}
@@ -1159,7 +1155,7 @@ int socket_connect(SocketAddress *addr, Error **errp)
break;
case SOCKET_ADDRESS_TYPE_FD:
- fd = socket_get_fd(addr->u.fd.str, 1, errp);
+ fd = socket_get_fd(addr->u.fd.str, errp);
break;
case SOCKET_ADDRESS_TYPE_VSOCK:
@@ -1177,6 +1173,12 @@ int socket_listen(SocketAddress *addr, int num, Error
**errp)
int fd;
trace_socket_listen(num);
+
+ if (num != 1) {
+ error_setg_errno(errp, EINVAL, "socket_get_fd: too many connections");
+ return -1;
+ }
+
switch (addr->type) {
case SOCKET_ADDRESS_TYPE_INET:
fd = inet_listen_saddr(&addr->u.inet, 0, num, errp);
@@ -1187,7 +1189,7 @@ int socket_listen(SocketAddress *addr, int num, Error
**errp)
break;
case SOCKET_ADDRESS_TYPE_FD:
- fd = socket_get_fd(addr->u.fd.str, num, errp);
+ fd = socket_get_fd(addr->u.fd.str, errp);
break;
case SOCKET_ADDRESS_TYPE_VSOCK:
--
2.25.GIT
- [PATCH v14 00/21] Initial support for multi-process Qemu, elena . ufimtseva, 2020/12/17
- [PATCH v14 04/21] socket: export socket_get_fd() function,
elena . ufimtseva <=
- [PATCH v14 02/21] multi-process: add configure and usage information, elena . ufimtseva, 2020/12/17
- [PATCH v14 03/21] memory: alloc RAM from file at offset, elena . ufimtseva, 2020/12/17
- [PATCH v14 01/21] multi-process: add the concept description to docs/devel/qemu-multiprocess, elena . ufimtseva, 2020/12/17
- Re: [PATCH v14 00/21] Initial support for multi-process Qemu, Elena Ufimtseva, 2020/12/18
- [PATCH v14 RESEND 06/21] multi-process: setup PCI host bridge for remote device, elena . ufimtseva, 2020/12/18
- [PATCH v14 RESEND 07/21] multi-process: setup a machine object for remote device process, elena . ufimtseva, 2020/12/18
- [PATCH v14 RESEND 05/21] multi-process: Add config option for multi-process QEMU, elena . ufimtseva, 2020/12/18
- [PATCH v14 RESEND 09/21] multi-process: add qio channel read function, elena . ufimtseva, 2020/12/18