aboutsummaryrefslogtreecommitdiff
path: root/qapi
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2020-11-02 10:44:22 +0100
committerDaniel P. Berrangé <berrange@redhat.com>2020-11-03 13:17:25 +0000
commit8acefc79deaab1c7ee2ab07b540b0e3edf0f9f47 (patch)
tree1481759a0b868fe0ecef50509c97feee5063eced /qapi
parentef298e3826e574c712d10e38a5f2a3629d6f5e01 (diff)
downloadqemu-8acefc79deaab1c7ee2ab07b540b0e3edf0f9f47.zip
qemu-8acefc79deaab1c7ee2ab07b540b0e3edf0f9f47.tar.gz
qemu-8acefc79deaab1c7ee2ab07b540b0e3edf0f9f47.tar.bz2
sockets: Make abstract UnixSocketAddress depend on CONFIG_LINUX
The abstract socket namespace is a non-portable Linux extension. An attempt to use it elsewhere should fail with ENOENT (the abstract address looks like a "" pathname, which does not resolve). We report this failure like Failed to connect socket abc: No such file or directory Tolerable, although ENOTSUP would be better. However, introspection lies: it has @abstract regardless of host support. Easy enough to fix: since Linux provides them since 2.2, 'if': 'defined(CONFIG_LINUX)' should do. The above failure becomes Parameter 'backend.data.addr.data.abstract' is unexpected I consider this an improvement. Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Diffstat (limited to 'qapi')
-rw-r--r--qapi/sockets.json14
1 files changed, 8 insertions, 6 deletions
diff --git a/qapi/sockets.json b/qapi/sockets.json
index c0c640a..2e83452 100644
--- a/qapi/sockets.json
+++ b/qapi/sockets.json
@@ -74,18 +74,20 @@
# Captures a socket address in the local ("Unix socket") namespace.
#
# @path: filesystem path to use
-# @tight: pass a socket address length confined to the minimum length of the
-# abstract string, rather than the full sockaddr_un record length
-# (only matters for abstract sockets, default true). (Since 5.1)
-# @abstract: whether this is an abstract address, default false. (Since 5.1)
+# @abstract: if true, this is a Linux abstract socket address. @path
+# will be prefixed by a null byte, and optionally padded
+# with null bytes. Defaults to false. (Since 5.1)
+# @tight: if false, pad an abstract socket address with enough null
+# bytes to make it fill struct sockaddr_un member sun_path.
+# Defaults to true. (Since 5.1)
#
# Since: 1.3
##
{ 'struct': 'UnixSocketAddress',
'data': {
'path': 'str',
- '*tight': 'bool',
- '*abstract': 'bool' } }
+ '*abstract': { 'type': 'bool', 'if': 'defined(CONFIG_LINUX)' },
+ '*tight': { 'type': 'bool', 'if': 'defined(CONFIG_LINUX)' } } }
##
# @VsockSocketAddress: