qapi: Improve documentation of file descriptor socket addresses

SocketAddress branch @fd is documented in enum SocketAddressType,
unlike the other branches.  That's because the branch's type is String
from common.json.

Use a local copy of String, so we can put the documentation in the
usual place.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20240205074709.3613229-14-armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Markus Armbruster 2024-02-05 08:47:07 +01:00
parent 2fecccbc84
commit 4edb196e20
4 changed files with 31 additions and 15 deletions

View File

@ -1504,7 +1504,7 @@ static void qemu_chr_parse_socket(QemuOpts *opts, ChardevBackend *backend,
}; };
} else { } else {
addr->type = SOCKET_ADDRESS_TYPE_FD; addr->type = SOCKET_ADDRESS_TYPE_FD;
addr->u.fd.data = g_new(String, 1); addr->u.fd.data = g_new(FdSocketAddress, 1);
addr->u.fd.data->str = g_strdup(fd); addr->u.fd.data->str = g_strdup(fd);
} }
sock->addr = addr; sock->addr = addr;

View File

@ -11,6 +11,7 @@
#ifndef QEMU_VHOST_VSOCK_COMMON_H #ifndef QEMU_VHOST_VSOCK_COMMON_H
#define QEMU_VHOST_VSOCK_COMMON_H #define QEMU_VHOST_VSOCK_COMMON_H
#include "qapi/qapi-types-common.h"
#include "hw/virtio/virtio.h" #include "hw/virtio/virtio.h"
#include "hw/virtio/vhost.h" #include "hw/virtio/vhost.h"
#include "qom/object.h" #include "qom/object.h"

View File

@ -5,8 +5,6 @@
# = Socket data types # = Socket data types
## ##
{ 'include': 'common.json' }
## ##
# @NetworkAddressFamily: # @NetworkAddressFamily:
# #
@ -116,6 +114,24 @@
'cid': 'str', 'cid': 'str',
'port': 'str' } } 'port': 'str' } }
##
# @FdSocketAddress:
#
# A file descriptor name or number.
#
# @str: decimal is for file descriptor number, otherwise it's a file
# descriptor name. Named file descriptors are permitted in
# monitor commands, in combination with the 'getfd' command.
# Decimal file descriptors are permitted at startup or other
# contexts where no monitor context is active.
#
#
# Since: 1.2
##
{ 'struct': 'FdSocketAddress',
'data': {
'str': 'str' } }
## ##
# @InetSocketAddressWrapper: # @InetSocketAddressWrapper:
# #
@ -147,12 +163,14 @@
'data': { 'data': 'VsockSocketAddress' } } 'data': { 'data': 'VsockSocketAddress' } }
## ##
# @StringWrapper: # @FdSocketAddressWrapper:
#
# @data: file descriptor name or number
# #
# Since: 1.3 # Since: 1.3
## ##
{ 'struct': 'StringWrapper', { 'struct': 'FdSocketAddressWrapper',
'data': { 'data': 'String' } } 'data': { 'data': 'FdSocketAddress' } }
## ##
# @SocketAddressLegacy: # @SocketAddressLegacy:
@ -173,7 +191,7 @@
'inet': 'InetSocketAddressWrapper', 'inet': 'InetSocketAddressWrapper',
'unix': 'UnixSocketAddressWrapper', 'unix': 'UnixSocketAddressWrapper',
'vsock': 'VsockSocketAddressWrapper', 'vsock': 'VsockSocketAddressWrapper',
'fd': 'StringWrapper' } } 'fd': 'FdSocketAddressWrapper' } }
## ##
# @SocketAddressType: # @SocketAddressType:
@ -186,11 +204,7 @@
# #
# @vsock: VMCI address # @vsock: VMCI address
# #
# @fd: decimal is for file descriptor number, otherwise a file # @fd: Socket file descriptor
# descriptor name. Named file descriptors are permitted in
# monitor commands, in combination with the 'getfd' command.
# Decimal file descriptors are permitted at startup or other
# contexts where no monitor context is active.
# #
# Since: 2.9 # Since: 2.9
## ##
@ -200,7 +214,7 @@
## ##
# @SocketAddress: # @SocketAddress:
# #
# Captures the address of a socket, which could also be a named file # Captures the address of a socket, which could also be a socket file
# descriptor # descriptor
# #
# @type: Transport type # @type: Transport type
@ -213,4 +227,4 @@
'data': { 'inet': 'InetSocketAddress', 'data': { 'inet': 'InetSocketAddress',
'unix': 'UnixSocketAddress', 'unix': 'UnixSocketAddress',
'vsock': 'VsockSocketAddress', 'vsock': 'VsockSocketAddress',
'fd': 'String' } } 'fd': 'FdSocketAddress' } }

View File

@ -1464,7 +1464,8 @@ SocketAddress *socket_address_flatten(SocketAddressLegacy *addr_legacy)
break; break;
case SOCKET_ADDRESS_TYPE_FD: case SOCKET_ADDRESS_TYPE_FD:
addr->type = SOCKET_ADDRESS_TYPE_FD; addr->type = SOCKET_ADDRESS_TYPE_FD;
QAPI_CLONE_MEMBERS(String, &addr->u.fd, addr_legacy->u.fd.data); QAPI_CLONE_MEMBERS(FdSocketAddress, &addr->u.fd,
addr_legacy->u.fd.data);
break; break;
default: default:
abort(); abort();