[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 7/8] char: refactor parsing of socket address inf
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PATCH v3 7/8] char: refactor parsing of socket address information |
Date: |
Fri, 22 Dec 2017 13:45:26 +0000 |
To prepare for handling more address types, refactor the parsing of
socket address information to make it more robust and extensible.
Signed-off-by: Daniel P. Berrange <address@hidden>
---
chardev/char-socket.c | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/chardev/char-socket.c b/chardev/char-socket.c
index 6013972f72..9113ea0169 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -987,21 +987,25 @@ static void qemu_chr_parse_socket(QemuOpts *opts,
ChardevBackend *backend,
SocketAddressLegacy *addr;
ChardevSocket *sock;
+ if ((!!path + !!host) != 1) {
+ error_setg(errp,
+ "Exactly one of 'path' or 'host' required");
+ return;
+ }
+
backend->type = CHARDEV_BACKEND_KIND_SOCKET;
- if (!path) {
- if (!host) {
- error_setg(errp, "chardev: socket: no host given");
+ if (path) {
+ if (tls_creds) {
+ error_setg(errp, "TLS can only be used over TCP socket");
return;
}
+ } else if (host) {
if (!port) {
error_setg(errp, "chardev: socket: no port given");
return;
}
} else {
- if (tls_creds) {
- error_setg(errp, "TLS can only be used over TCP socket");
- return;
- }
+ g_assert_not_reached();
}
sock = backend->u.socket.data = g_new0(ChardevSocket, 1);
@@ -1027,7 +1031,7 @@ static void qemu_chr_parse_socket(QemuOpts *opts,
ChardevBackend *backend,
addr->type = SOCKET_ADDRESS_LEGACY_KIND_UNIX;
q_unix = addr->u.q_unix.data = g_new0(UnixSocketAddress, 1);
q_unix->path = g_strdup(path);
- } else {
+ } else if (host) {
addr->type = SOCKET_ADDRESS_LEGACY_KIND_INET;
addr->u.inet.data = g_new(InetSocketAddress, 1);
*addr->u.inet.data = (InetSocketAddress) {
@@ -1040,6 +1044,8 @@ static void qemu_chr_parse_socket(QemuOpts *opts,
ChardevBackend *backend,
.has_ipv6 = qemu_opt_get(opts, "ipv6"),
.ipv6 = qemu_opt_get_bool(opts, "ipv6", 0),
};
+ } else {
+ g_assert_not_reached();
}
sock->addr = addr;
}
--
2.14.3
- [Qemu-devel] [PATCH v3 0/8] Enable passing pre-opened chardev socket FDs, Daniel P. Berrange, 2017/12/22
- [Qemu-devel] [PATCH v3 1/8] cutils: add qemu_strtoi & qemu_strtoui parsers for int/unsigned int types, Daniel P. Berrange, 2017/12/22
- [Qemu-devel] [PATCH v3 2/8] sockets: move fd_is_socket() into common sockets code, Daniel P. Berrange, 2017/12/22
- [Qemu-devel] [PATCH v3 3/8] sockets: pull code for testing IP availability out of specific test, Daniel P. Berrange, 2017/12/22
- [Qemu-devel] [PATCH v3 4/8] sockets: strengthen test suite IP protocol availability checks, Daniel P. Berrange, 2017/12/22
- [Qemu-devel] [PATCH v3 5/8] sockets: check that the named file descriptor is a socket, Daniel P. Berrange, 2017/12/22
- [Qemu-devel] [PATCH v3 7/8] char: refactor parsing of socket address information,
Daniel P. Berrange <=
- [Qemu-devel] [PATCH v3 6/8] sockets: allow SocketAddress 'fd' to reference numeric file descriptors, Daniel P. Berrange, 2017/12/22
- [Qemu-devel] [PATCH v3 8/8] char: allow passing pre-opened socket file descriptor at startup, Daniel P. Berrange, 2017/12/22
- Re: [Qemu-devel] [PATCH v3 0/8] Enable passing pre-opened chardev socket FDs, no-reply, 2017/12/22