diff options
author | xiaoqiang zhao <zxq_yx_007@163.com> | 2020-05-16 11:13:25 +0800 |
---|---|---|
committer | Daniel P. Berrangé <berrange@redhat.com> | 2020-05-20 10:34:40 +0100 |
commit | 776b97d3605ed0fc94443048fdf988c7725e38a9 (patch) | |
tree | 2d8f731e49c1900ccb7c7f4e1e63d6a9c3590125 /chardev/char-socket.c | |
parent | f2465433b43fb87766d79f42191607dac4aed5b4 (diff) | |
download | qemu-776b97d3605ed0fc94443048fdf988c7725e38a9.zip qemu-776b97d3605ed0fc94443048fdf988c7725e38a9.tar.gz qemu-776b97d3605ed0fc94443048fdf988c7725e38a9.tar.bz2 |
qemu-sockets: add abstract UNIX domain socket support
unix_listen/connect_saddr now support abstract address types
two aditional BOOL switches are introduced:
tight: whether to set @addrlen to the minimal string length,
or the maximum sun_path length. default is TRUE
abstract: whether we use abstract address. default is FALSE
cli example:
-monitor unix:/tmp/unix.socket,abstract,tight=off
OR
-chardev socket,path=/tmp/unix.socket,id=unix1,abstract,tight=on
Signed-off-by: xiaoqiang zhao <zxq_yx_007@163.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Diffstat (limited to 'chardev/char-socket.c')
-rw-r--r-- | chardev/char-socket.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 232e0a8..e77699d 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -1380,6 +1380,8 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend, const char *host = qemu_opt_get(opts, "host"); const char *port = qemu_opt_get(opts, "port"); const char *fd = qemu_opt_get(opts, "fd"); + bool tight = qemu_opt_get_bool(opts, "tight", true); + bool abstract = qemu_opt_get_bool(opts, "abstract", false); SocketAddressLegacy *addr; ChardevSocket *sock; @@ -1431,6 +1433,8 @@ 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); + q_unix->tight = tight; + q_unix->abstract = abstract; } else if (host) { addr->type = SOCKET_ADDRESS_LEGACY_KIND_INET; addr->u.inet.data = g_new(InetSocketAddress, 1); |