From: Jagannathan Raman <jag.ra...@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.ra...@oracle.com> Signed-off-by: John G Johnson <john.g.john...@oracle.com> Signed-off-by: Elena Ufimtseva <elena.ufimts...@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