QAPI patches patches for 2024-02-12

-----BEGIN PGP SIGNATURE-----
 
 iQJGBAABCAAwFiEENUvIs9frKmtoZ05fOHC0AOuRhlMFAmXJ4PsSHGFybWJydUBy
 ZWRoYXQuY29tAAoJEDhwtADrkYZTDwsP/iEdmZmjoxMedTzec+GGl5QxfMkqLn14
 eX2jXtzLGZMjGMh4lvMaAdn0AJ3VnBOqxly14sMK6TMWGZkNKJpKF+2Cj8IKte1o
 MlpS1N/7rZxew+B9HkulhS+6UFB3Jndsflm2ot4g+rRjohJCw0v0GapEqjQg6CKp
 efJhiPuBSImm2MSx+n4dj8gkcFOMrgo6oc2ZpN0ypvGb4mupPpnNj6v12yZL8FUM
 Enwsk+pBLQWoYxI9MFDGc0gW9ZBlEdP/nVq/PbglD06Urc241AHGYqT7XLT0oHLl
 6NA4v3N4GPdSe6oJdOHDFVR+/uPKiiyrseTdYTSGgAN8gcRtHam4WWhqSDIN3Afl
 y41A9ZKkW51TpdszQ6wCdrgbTH5z6K5vnwWfVTwIgdI0mrDcAGWnc2Yr7m6c3fS8
 /Vz00J7OC0P1nXh0IeRxXExXSmaGUUgS3T/KBXPYr0PQPe7Qd+1eTQN6LaliEMRH
 dRpXQabjLmztMhc5VXCv8ihwa7mNVaEn++uRrdKoWOvIQEp0ZeZfxCzp+/2mGPJ0
 YKJc7Ja260h2Y00/Zu2XiwjdzgG+h+QuJO/3OFsZIV5ftFqSBRMCHiGEfANHidld
 Cpo0efeWWTPdV8BQOirGGr0qtDTmgFMFCZTJMsI/g0m9sMCv0WbTtmWNThwaI3uD
 MKnEGG+KX7vD
 =nhrQ
 -----END PGP SIGNATURE-----

Merge tag 'pull-qapi-2024-02-12' of https://repo.or.cz/qemu/armbru into staging

QAPI patches patches for 2024-02-12

# -----BEGIN PGP SIGNATURE-----
#
# iQJGBAABCAAwFiEENUvIs9frKmtoZ05fOHC0AOuRhlMFAmXJ4PsSHGFybWJydUBy
# ZWRoYXQuY29tAAoJEDhwtADrkYZTDwsP/iEdmZmjoxMedTzec+GGl5QxfMkqLn14
# eX2jXtzLGZMjGMh4lvMaAdn0AJ3VnBOqxly14sMK6TMWGZkNKJpKF+2Cj8IKte1o
# MlpS1N/7rZxew+B9HkulhS+6UFB3Jndsflm2ot4g+rRjohJCw0v0GapEqjQg6CKp
# efJhiPuBSImm2MSx+n4dj8gkcFOMrgo6oc2ZpN0ypvGb4mupPpnNj6v12yZL8FUM
# Enwsk+pBLQWoYxI9MFDGc0gW9ZBlEdP/nVq/PbglD06Urc241AHGYqT7XLT0oHLl
# 6NA4v3N4GPdSe6oJdOHDFVR+/uPKiiyrseTdYTSGgAN8gcRtHam4WWhqSDIN3Afl
# y41A9ZKkW51TpdszQ6wCdrgbTH5z6K5vnwWfVTwIgdI0mrDcAGWnc2Yr7m6c3fS8
# /Vz00J7OC0P1nXh0IeRxXExXSmaGUUgS3T/KBXPYr0PQPe7Qd+1eTQN6LaliEMRH
# dRpXQabjLmztMhc5VXCv8ihwa7mNVaEn++uRrdKoWOvIQEp0ZeZfxCzp+/2mGPJ0
# YKJc7Ja260h2Y00/Zu2XiwjdzgG+h+QuJO/3OFsZIV5ftFqSBRMCHiGEfANHidld
# Cpo0efeWWTPdV8BQOirGGr0qtDTmgFMFCZTJMsI/g0m9sMCv0WbTtmWNThwaI3uD
# MKnEGG+KX7vD
# =nhrQ
# -----END PGP SIGNATURE-----
# gpg: Signature made Mon 12 Feb 2024 09:12:27 GMT
# gpg:                using RSA key 354BC8B3D7EB2A6B68674E5F3870B400EB918653
# gpg:                issuer "armbru@redhat.com"
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" [full]
# gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>" [full]
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653

* tag 'pull-qapi-2024-02-12' of https://repo.or.cz/qemu/armbru:
  MAINTAINERS: Cover qapi/stats.json
  MAINTAINERS: Cover qapi/cxl.json
  qapi/migration: Add missing tls-authz documentation
  qapi: Add missing union tag documentation
  qapi: Move @String out of common.json to discourage reuse
  qapi: Improve documentation of file descriptor socket addresses
  qapi: Plug trivial documentation holes around former simple unions
  qapi/dump: Clean up documentation of DumpGuestMemoryCapability
  qapi/yank: Clean up documentaion of yank
  qga/qapi-schema: Plug trivial documentation holes
  qga/qapi-schema: Clean up documentation of guest-set-vcpus
  qga/qapi-schema: Clean up documentation of guest-set-memory-blocks
  qapi: Require member documentation (with loophole)
  sphinx/qapidoc: Drop code to generate doc for simple union tag
  qapi: Indent tagged doc comment sections properly
  qapi/block-core: Fix BlockLatencyHistogramInfo doc markup
  docs/devel/qapi-code-gen: Tweak doc comment whitespace
  docs/devel/qapi-code-gen: Normalize version refs x.y.0 to just x.y

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2024-02-13 10:54:59 +00:00
commit 61e7a0d27c
31 changed files with 322 additions and 106 deletions

View File

@ -2894,6 +2894,7 @@ S: Supported
F: hw/cxl/ F: hw/cxl/
F: hw/mem/cxl_type3.c F: hw/mem/cxl_type3.c
F: include/hw/cxl/ F: include/hw/cxl/
F: qapi/cxl.json
Dirty Bitmaps Dirty Bitmaps
M: Eric Blake <eblake@redhat.com> M: Eric Blake <eblake@redhat.com>
@ -3320,6 +3321,7 @@ Stats
S: Orphan S: Orphan
F: include/sysemu/stats.h F: include/sysemu/stats.h
F: stats/ F: stats/
F: qapi/stats.json
Streams Streams
M: Edgar E. Iglesias <edgar.iglesias@gmail.com> M: Edgar E. Iglesias <edgar.iglesias@gmail.com>

View File

@ -1508,7 +1508,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

@ -167,6 +167,7 @@ Syntax::
'*doc-required': BOOL, '*doc-required': BOOL,
'*command-name-exceptions': [ STRING, ... ], '*command-name-exceptions': [ STRING, ... ],
'*command-returns-exceptions': [ STRING, ... ], '*command-returns-exceptions': [ STRING, ... ],
'*documentation-exceptions': [ STRING, ... ],
'*member-name-exceptions': [ STRING, ... ] } } '*member-name-exceptions': [ STRING, ... ] } }
The pragma directive lets you control optional generator behavior. The pragma directive lets you control optional generator behavior.
@ -183,6 +184,10 @@ may contain ``"_"`` instead of ``"-"``. Default is none.
Pragma 'command-returns-exceptions' takes a list of commands that may Pragma 'command-returns-exceptions' takes a list of commands that may
violate the rules on permitted return types. Default is none. violate the rules on permitted return types. Default is none.
Pragma 'documentation-exceptions' takes a list of types, commands, and
events whose members / arguments need not be documented. Default is
none.
Pragma 'member-name-exceptions' takes a list of types whose member Pragma 'member-name-exceptions' takes a list of types whose member
names may contain uppercase letters, and ``"_"`` instead of ``"-"``. names may contain uppercase letters, and ``"_"`` instead of ``"-"``.
Default is none. Default is none.
@ -1019,11 +1024,11 @@ For example::
# @device: If the stats are for a virtual block device, the name # @device: If the stats are for a virtual block device, the name
# corresponding to the virtual block device. # corresponding to the virtual block device.
# #
# @node-name: The node name of the device. (since 2.3) # @node-name: The node name of the device. (Since 2.3)
# #
# ... more members ... # ... more members ...
# #
# Since: 0.14.0 # Since: 0.14
## ##
{ 'struct': 'BlockStats', { 'struct': 'BlockStats',
'data': {'*device': 'str', '*node-name': 'str', 'data': {'*device': 'str', '*node-name': 'str',
@ -1035,11 +1040,12 @@ For example::
# Query the @BlockStats for all virtual block devices. # Query the @BlockStats for all virtual block devices.
# #
# @query-nodes: If true, the command will query all the block nodes # @query-nodes: If true, the command will query all the block nodes
# ... explain, explain ... (since 2.3) # ... explain, explain ...
# (Since 2.3)
# #
# Returns: A list of @BlockStats for each virtual block devices. # Returns: A list of @BlockStats for each virtual block devices.
# #
# Since: 0.14.0 # Since: 0.14
# #
# Example: # Example:
# #

View File

@ -168,12 +168,6 @@ class QAPISchemaGenRSTVisitor(QAPISchemaVisitor):
# TODO drop fallbacks when undocumented members are outlawed # TODO drop fallbacks when undocumented members are outlawed
if section.text: if section.text:
defn = section.text defn = section.text
elif (variants and variants.tag_member == section.member
and not section.member.type.doc_type()):
values = section.member.type.member_names()
defn = [nodes.Text('One of ')]
defn.extend(intersperse([nodes.literal('', v) for v in values],
nodes.Text(', ')))
else: else:
defn = [nodes.Text('Not documented')] defn = [nodes.Text('Not documented')]

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

@ -9,7 +9,7 @@
#ifndef QEMU_NET_FILTER_H #ifndef QEMU_NET_FILTER_H
#define QEMU_NET_FILTER_H #define QEMU_NET_FILTER_H
#include "qapi/qapi-types-net.h" #include "qapi/qapi-types-common.h"
#include "qemu/queue.h" #include "qemu/queue.h"
#include "qom/object.h" #include "qom/object.h"
#include "net/queue.h" #include "net/queue.h"

View File

@ -196,6 +196,8 @@
## ##
# @ImageInfoSpecificQCow2Wrapper: # @ImageInfoSpecificQCow2Wrapper:
# #
# @data: image information specific to QCOW2
#
# Since: 1.7 # Since: 1.7
## ##
{ 'struct': 'ImageInfoSpecificQCow2Wrapper', { 'struct': 'ImageInfoSpecificQCow2Wrapper',
@ -204,6 +206,8 @@
## ##
# @ImageInfoSpecificVmdkWrapper: # @ImageInfoSpecificVmdkWrapper:
# #
# @data: image information specific to VMDK
#
# Since: 6.1 # Since: 6.1
## ##
{ 'struct': 'ImageInfoSpecificVmdkWrapper', { 'struct': 'ImageInfoSpecificVmdkWrapper',
@ -212,6 +216,8 @@
## ##
# @ImageInfoSpecificLUKSWrapper: # @ImageInfoSpecificLUKSWrapper:
# #
# @data: image information specific to LUKS
#
# Since: 2.7 # Since: 2.7
## ##
{ 'struct': 'ImageInfoSpecificLUKSWrapper', { 'struct': 'ImageInfoSpecificLUKSWrapper',
@ -223,6 +229,8 @@
## ##
# @ImageInfoSpecificRbdWrapper: # @ImageInfoSpecificRbdWrapper:
# #
# @data: image information specific to RBD
#
# Since: 6.1 # Since: 6.1
## ##
{ 'struct': 'ImageInfoSpecificRbdWrapper', { 'struct': 'ImageInfoSpecificRbdWrapper',
@ -231,6 +239,8 @@
## ##
# @ImageInfoSpecificFileWrapper: # @ImageInfoSpecificFileWrapper:
# #
# @data: image information specific to files
#
# Since: 8.0 # Since: 8.0
## ##
{ 'struct': 'ImageInfoSpecificFileWrapper', { 'struct': 'ImageInfoSpecificFileWrapper',
@ -242,6 +252,8 @@
# A discriminated record of image format specific information # A discriminated record of image format specific information
# structures. # structures.
# #
# @type: block driver name
#
# Since: 1.7 # Since: 1.7
## ##
{ 'union': 'ImageInfoSpecific', { 'union': 'ImageInfoSpecific',
@ -656,9 +668,7 @@
# @bins: list of io request counts corresponding to histogram # @bins: list of io request counts corresponding to histogram
# intervals, one more element than @boundaries has. For the # intervals, one more element than @boundaries has. For the
# example above, @bins may be something like [3, 1, 5, 2], and # example above, @bins may be something like [3, 1, 5, 2], and
# corresponding histogram looks like: # corresponding histogram looks like::
#
# ::
# #
# 5| * # 5| *
# 4| * # 4| *
@ -1094,6 +1104,8 @@
# #
# Block driver specific statistics # Block driver specific statistics
# #
# @driver: block driver name
#
# Since: 4.2 # Since: 4.2
## ##
{ 'union': 'BlockStatsSpecific', { 'union': 'BlockStatsSpecific',
@ -3467,6 +3479,8 @@
## ##
# @BlockdevQcowEncryption: # @BlockdevQcowEncryption:
# #
# @format: encryption format
#
# Since: 2.10 # Since: 2.10
## ##
{ 'union': 'BlockdevQcowEncryption', { 'union': 'BlockdevQcowEncryption',
@ -3501,6 +3515,8 @@
## ##
# @BlockdevQcow2Encryption: # @BlockdevQcow2Encryption:
# #
# @format: encryption format
#
# Since: 2.10 # Since: 2.10
## ##
{ 'union': 'BlockdevQcow2Encryption', { 'union': 'BlockdevQcow2Encryption',
@ -3651,6 +3667,8 @@
## ##
# @SshHostKeyCheck: # @SshHostKeyCheck:
# #
# @mode: How to check the host key
#
# Since: 2.12 # Since: 2.12
## ##
{ 'union': 'SshHostKeyCheck', { 'union': 'SshHostKeyCheck',
@ -4220,6 +4238,8 @@
## ##
# @RbdEncryptionCreateOptions: # @RbdEncryptionCreateOptions:
# #
# @format: Encryption format.
#
# Since: 6.1 # Since: 6.1
## ##
{ 'union': 'RbdEncryptionCreateOptions', { 'union': 'RbdEncryptionCreateOptions',

View File

@ -346,6 +346,8 @@
# Describes a block export, i.e. how single node should be exported on # Describes a block export, i.e. how single node should be exported on
# an external interface. # an external interface.
# #
# @type: Block export type
#
# @id: A unique identifier for the block export (across all export # @id: A unique identifier for the block export (across all export
# types) # types)
# #

View File

@ -498,6 +498,8 @@
## ##
# @ChardevFileWrapper: # @ChardevFileWrapper:
# #
# @data: Configuration info for file chardevs
#
# Since: 1.4 # Since: 1.4
## ##
{ 'struct': 'ChardevFileWrapper', { 'struct': 'ChardevFileWrapper',
@ -506,6 +508,8 @@
## ##
# @ChardevHostdevWrapper: # @ChardevHostdevWrapper:
# #
# @data: Configuration info for device and pipe chardevs
#
# Since: 1.4 # Since: 1.4
## ##
{ 'struct': 'ChardevHostdevWrapper', { 'struct': 'ChardevHostdevWrapper',
@ -514,6 +518,8 @@
## ##
# @ChardevSocketWrapper: # @ChardevSocketWrapper:
# #
# @data: Configuration info for (stream) socket chardevs
#
# Since: 1.4 # Since: 1.4
## ##
{ 'struct': 'ChardevSocketWrapper', { 'struct': 'ChardevSocketWrapper',
@ -522,6 +528,8 @@
## ##
# @ChardevUdpWrapper: # @ChardevUdpWrapper:
# #
# @data: Configuration info for datagram socket chardevs
#
# Since: 1.5 # Since: 1.5
## ##
{ 'struct': 'ChardevUdpWrapper', { 'struct': 'ChardevUdpWrapper',
@ -530,6 +538,8 @@
## ##
# @ChardevCommonWrapper: # @ChardevCommonWrapper:
# #
# @data: Configuration shared across all chardev backends
#
# Since: 2.6 # Since: 2.6
## ##
{ 'struct': 'ChardevCommonWrapper', { 'struct': 'ChardevCommonWrapper',
@ -538,6 +548,8 @@
## ##
# @ChardevMuxWrapper: # @ChardevMuxWrapper:
# #
# @data: Configuration info for mux chardevs
#
# Since: 1.5 # Since: 1.5
## ##
{ 'struct': 'ChardevMuxWrapper', { 'struct': 'ChardevMuxWrapper',
@ -546,6 +558,8 @@
## ##
# @ChardevStdioWrapper: # @ChardevStdioWrapper:
# #
# @data: Configuration info for stdio chardevs
#
# Since: 1.5 # Since: 1.5
## ##
{ 'struct': 'ChardevStdioWrapper', { 'struct': 'ChardevStdioWrapper',
@ -554,6 +568,8 @@
## ##
# @ChardevSpiceChannelWrapper: # @ChardevSpiceChannelWrapper:
# #
# @data: Configuration info for spice vm channel chardevs
#
# Since: 1.5 # Since: 1.5
## ##
{ 'struct': 'ChardevSpiceChannelWrapper', { 'struct': 'ChardevSpiceChannelWrapper',
@ -563,6 +579,8 @@
## ##
# @ChardevSpicePortWrapper: # @ChardevSpicePortWrapper:
# #
# @data: Configuration info for spice port chardevs
#
# Since: 1.5 # Since: 1.5
## ##
{ 'struct': 'ChardevSpicePortWrapper', { 'struct': 'ChardevSpicePortWrapper',
@ -572,6 +590,8 @@
## ##
# @ChardevQemuVDAgentWrapper: # @ChardevQemuVDAgentWrapper:
# #
# @data: Configuration info for qemu vdagent implementation
#
# Since: 6.1 # Since: 6.1
## ##
{ 'struct': 'ChardevQemuVDAgentWrapper', { 'struct': 'ChardevQemuVDAgentWrapper',
@ -581,6 +601,8 @@
## ##
# @ChardevDBusWrapper: # @ChardevDBusWrapper:
# #
# @data: Configuration info for DBus chardevs
#
# Since: 7.0 # Since: 7.0
## ##
{ 'struct': 'ChardevDBusWrapper', { 'struct': 'ChardevDBusWrapper',
@ -590,6 +612,8 @@
## ##
# @ChardevVCWrapper: # @ChardevVCWrapper:
# #
# @data: Configuration info for virtual console chardevs
#
# Since: 1.5 # Since: 1.5
## ##
{ 'struct': 'ChardevVCWrapper', { 'struct': 'ChardevVCWrapper',
@ -598,6 +622,8 @@
## ##
# @ChardevRingbufWrapper: # @ChardevRingbufWrapper:
# #
# @data: Configuration info for ring buffer chardevs
#
# Since: 1.5 # Since: 1.5
## ##
{ 'struct': 'ChardevRingbufWrapper', { 'struct': 'ChardevRingbufWrapper',
@ -608,6 +634,8 @@
# #
# Configuration info for the new chardev backend. # Configuration info for the new chardev backend.
# #
# @type: backend type
#
# Since: 1.4 # Since: 1.4
## ##
{ 'union': 'ChardevBackend', { 'union': 'ChardevBackend',

View File

@ -51,17 +51,6 @@
{ 'enum': 'OnOffSplit', { 'enum': 'OnOffSplit',
'data': [ 'on', 'off', 'split' ] } 'data': [ 'on', 'off', 'split' ] }
##
# @String:
#
# A fat type wrapping 'str', to be embedded in lists.
#
# Since: 1.2
##
{ 'struct': 'String',
'data': {
'str': 'str' } }
## ##
# @StrOrNull: # @StrOrNull:
# #

View File

@ -654,6 +654,8 @@
# The options that are available for all asymmetric key algorithms # The options that are available for all asymmetric key algorithms
# when creating a new QCryptoAkCipher. # when creating a new QCryptoAkCipher.
# #
# @alg: encryption cipher algorithm
#
# Since: 7.1 # Since: 7.1
## ##
{ 'union': 'QCryptoAkCipherOptions', { 'union': 'QCryptoAkCipherOptions',

View File

@ -186,7 +186,7 @@
## ##
# @DumpGuestMemoryCapability: # @DumpGuestMemoryCapability:
# #
# A list of the available formats for dump-guest-memory # @formats: the available formats for dump-guest-memory
# #
# Since: 2.0 # Since: 2.0
## ##

View File

@ -443,6 +443,8 @@
# #
# A discriminated record of NUMA options. (for OptsVisitor) # A discriminated record of NUMA options. (for OptsVisitor)
# #
# @type: NUMA option type
#
# Since: 2.1 # Since: 2.1
## ##
{ 'union': 'NumaOptions', { 'union': 'NumaOptions',
@ -1396,6 +1398,8 @@
## ##
# @PCDIMMDeviceInfoWrapper: # @PCDIMMDeviceInfoWrapper:
# #
# @data: PCDIMMDevice state information
#
# Since: 2.1 # Since: 2.1
## ##
{ 'struct': 'PCDIMMDeviceInfoWrapper', { 'struct': 'PCDIMMDeviceInfoWrapper',
@ -1404,6 +1408,8 @@
## ##
# @VirtioPMEMDeviceInfoWrapper: # @VirtioPMEMDeviceInfoWrapper:
# #
# @data: VirtioPMEM state information
#
# Since: 2.1 # Since: 2.1
## ##
{ 'struct': 'VirtioPMEMDeviceInfoWrapper', { 'struct': 'VirtioPMEMDeviceInfoWrapper',
@ -1412,6 +1418,8 @@
## ##
# @VirtioMEMDeviceInfoWrapper: # @VirtioMEMDeviceInfoWrapper:
# #
# @data: VirtioMEMDevice state information
#
# Since: 2.1 # Since: 2.1
## ##
{ 'struct': 'VirtioMEMDeviceInfoWrapper', { 'struct': 'VirtioMEMDeviceInfoWrapper',
@ -1420,6 +1428,8 @@
## ##
# @SgxEPCDeviceInfoWrapper: # @SgxEPCDeviceInfoWrapper:
# #
# @data: Sgx EPC state information
#
# Since: 6.2 # Since: 6.2
## ##
{ 'struct': 'SgxEPCDeviceInfoWrapper', { 'struct': 'SgxEPCDeviceInfoWrapper',
@ -1428,6 +1438,8 @@
## ##
# @HvBalloonDeviceInfoWrapper: # @HvBalloonDeviceInfoWrapper:
# #
# @data: hv-balloon provided memory state information
#
# Since: 8.2 # Since: 8.2
## ##
{ 'struct': 'HvBalloonDeviceInfoWrapper', { 'struct': 'HvBalloonDeviceInfoWrapper',
@ -1438,6 +1450,8 @@
# #
# Union containing information about a memory device # Union containing information about a memory device
# #
# @type: memory device type
#
# Since: 2.1 # Since: 2.1
## ##
{ 'union': 'MemoryDeviceInfo', { 'union': 'MemoryDeviceInfo',

View File

@ -980,6 +980,10 @@
# 2.9) Previously (since 2.7), this was reported by omitting # 2.9) Previously (since 2.7), this was reported by omitting
# tls-hostname instead. # tls-hostname instead.
# #
# @tls-authz: ID of the 'authz' object subclass that provides access
# control checking of the TLS x509 certificate distinguished name.
# (Since 4.0)
#
# @max-bandwidth: to set maximum speed for migration. maximum speed # @max-bandwidth: to set maximum speed for migration. maximum speed
# in bytes per second. (Since 2.8) # in bytes per second. (Since 2.8)
# #
@ -1630,6 +1634,8 @@
# #
# Migration endpoint configuration. # Migration endpoint configuration.
# #
# @transport: The migration stream transport mechanism
#
# Since: 8.2 # Since: 8.2
## ##
{ 'union': 'MigrationAddress', { 'union': 'MigrationAddress',
@ -1699,24 +1705,24 @@
# #
# Notes: # Notes:
# #
# 1. The 'query-migrate' command should be used to check migration's # 1. The 'query-migrate' command should be used to check
# progress and final result (this information is provided by the # migration's progress and final result (this information is
# 'status' member) # provided by the 'status' member)
# #
# 2. All boolean arguments default to false # 2. All boolean arguments default to false
# #
# 3. The user Monitor's "detach" argument is invalid in QMP and should # 3. The user Monitor's "detach" argument is invalid in QMP and
# not be used # should not be used
# #
# 4. The uri argument should have the Uniform Resource Identifier of # 4. The uri argument should have the Uniform Resource Identifier
# default destination VM. This connection will be bound to default # of default destination VM. This connection will be bound to
# network. # default network.
# #
# 5. For now, number of migration streams is restricted to one, i.e # 5. For now, number of migration streams is restricted to one,
# number of items in 'channels' list is just 1. # i.e number of items in 'channels' list is just 1.
# #
# 6. The 'uri' and 'channels' arguments are mutually exclusive; # 6. The 'uri' and 'channels' arguments are mutually exclusive;
# exactly one of the two should be present. # exactly one of the two should be present.
# #
# Example: # Example:
# #
@ -1781,20 +1787,20 @@
# #
# Notes: # Notes:
# #
# 1. It's a bad idea to use a string for the uri, but it needs # 1. It's a bad idea to use a string for the uri, but it needs to
# to stay compatible with -incoming and the format of the uri # stay compatible with -incoming and the format of the uri is
# is already exposed above libvirt. # already exposed above libvirt.
# #
# 2. QEMU must be started with -incoming defer to allow # 2. QEMU must be started with -incoming defer to allow
# migrate-incoming to be used. # migrate-incoming to be used.
# #
# 3. The uri format is the same as for -incoming # 3. The uri format is the same as for -incoming
# #
# 5. For now, number of migration streams is restricted to one, i.e # 5. For now, number of migration streams is restricted to one,
# number of items in 'channels' list is just 1. # i.e number of items in 'channels' list is just 1.
# #
# 4. The 'uri' and 'channels' arguments are mutually exclusive; # 4. The 'uri' and 'channels' arguments are mutually exclusive;
# exactly one of the two should be present. # exactly one of the two should be present.
# #
# Example: # Example:
# #

View File

@ -348,9 +348,10 @@
# - If file descriptor was not received, GenericError # - If file descriptor was not received, GenericError
# - If @fdset-id is a negative value, GenericError # - If @fdset-id is a negative value, GenericError
# #
# Notes: The list of fd sets is shared by all monitor connections. # Notes:
# The list of fd sets is shared by all monitor connections.
# #
# If @fdset-id is not specified, a new fd set will be created. # If @fdset-id is not specified, a new fd set will be created.
# #
# Since: 1.2 # Since: 1.2
# #
@ -379,10 +380,11 @@
# #
# Since: 1.2 # Since: 1.2
# #
# Notes: The list of fd sets is shared by all monitor connections. # Notes:
# The list of fd sets is shared by all monitor connections.
# #
# If @fd is not specified, all file descriptors in @fdset-id will be # If @fd is not specified, all file descriptors in @fdset-id will
# removed. # be removed.
# #
# Example: # Example:
# #

View File

@ -6,7 +6,6 @@
# = Net devices # = Net devices
## ##
{ 'include': 'common.json' }
{ 'include': 'sockets.json' } { 'include': 'sockets.json' }
## ##
@ -105,6 +104,17 @@
'*addr': 'str', '*addr': 'str',
'*vectors': 'uint32' } } '*vectors': 'uint32' } }
##
# @String:
#
# A fat type wrapping 'str', to be embedded in lists.
#
# Since: 1.2
##
{ 'struct': 'String',
'data': {
'str': 'str' } }
## ##
# @NetdevUserOptions: # @NetdevUserOptions:
# #

View File

@ -31,6 +31,72 @@
'query-tpm-models', 'query-tpm-models',
'query-tpm-types', 'query-tpm-types',
'ringbuf-read' ], 'ringbuf-read' ],
# Types, commands, and events with undocumented members / arguments:
'documentation-exceptions': [
'AbortWrapper',
'AudiodevDriver',
'BlkdebugEvent',
'BlockDirtyBitmapAddWrapper',
'BlockDirtyBitmapMergeWrapper',
'BlockDirtyBitmapWrapper',
'BlockdevBackupWrapper',
'BlockdevDriver',
'BlockdevQcow2EncryptionFormat',
'BlockdevSnapshotInternalWrapper',
'BlockdevSnapshotSyncWrapper',
'BlockdevSnapshotWrapper',
'BlockdevVmdkAdapterType',
'ChardevBackendKind',
'CpuS390Entitlement',
'CpuS390Polarization',
'CpuS390State',
'CxlCorErrorType',
'DisplayProtocol',
'DriveBackupWrapper',
'DummyBlockCoreForceArrays',
'DummyForceArrays',
'DummyVirtioForceArrays',
'GrabToggleKeys',
'GuestPanicInformationHyperV',
'HotKeyMod',
'ImageInfoSpecificKind',
'InputAxis',
'InputButton',
'InputMultiTouchEvent',
'InputMultiTouchType',
'IscsiHeaderDigest',
'IscsiTransport',
'JSONType',
'KeyValueKind',
'MemoryDeviceInfoKind',
'NetClientDriver',
'ObjectType',
'PciMemoryRegion',
'QCryptoAkCipherKeyType',
'QCryptodevBackendServiceType',
'QKeyCode',
'Qcow2OverlapCheckFlags',
'RbdAuthMode',
'RbdImageEncryptionFormat',
'StatsFilter',
'StatsValue',
'String',
'StringWrapper',
'SysEmuTarget',
'ThrottleGroupProperties',
'VncPrimaryAuth',
'VncVencryptSubAuth',
'X86CPURegister32',
'XDbgBlockGraph',
'YankInstanceType',
'blockdev-reopen',
'query-cpu-model-baseline',
'query-cpu-model-comparison',
'query-cpu-model-expansion',
'query-rocker',
'query-rocker-ports',
'query-stats-schemas',
'watchdog-set-action' ],
# Externally visible types whose member names may use uppercase # Externally visible types whose member names may use uppercase
'member-name-exceptions': [ # visible in: 'member-name-exceptions': [ # visible in:
'ACPISlotType', # query-acpi-ospm-status 'ACPISlotType', # query-acpi-ospm-status

View File

@ -53,14 +53,14 @@
# #
# Notes: # Notes:
# #
# 1. Additional arguments depend on the type. # 1. Additional arguments depend on the type.
# #
# 2. For detailed information about this command, please refer to the # 2. For detailed information about this command, please refer to
# 'docs/qdev-device-use.txt' file. # the 'docs/qdev-device-use.txt' file.
# #
# 3. It's possible to list device properties by running QEMU with the # 3. It's possible to list device properties by running QEMU with
# "-device DEVICE,help" command-line argument, where DEVICE is the # the "-device DEVICE,help" command-line argument, where DEVICE
# device's name # is the device's name
# #
# Example: # Example:
# #

View File

@ -5,8 +5,6 @@
# = Socket data types # = Socket data types
## ##
{ 'include': 'common.json' }
## ##
# @NetworkAddressFamily: # @NetworkAddressFamily:
# #
@ -116,9 +114,29 @@
'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:
# #
# @data: internet domain socket address
#
# Since: 1.3 # Since: 1.3
## ##
{ 'struct': 'InetSocketAddressWrapper', { 'struct': 'InetSocketAddressWrapper',
@ -127,6 +145,8 @@
## ##
# @UnixSocketAddressWrapper: # @UnixSocketAddressWrapper:
# #
# @data: UNIX domain socket address
#
# Since: 1.3 # Since: 1.3
## ##
{ 'struct': 'UnixSocketAddressWrapper', { 'struct': 'UnixSocketAddressWrapper',
@ -135,18 +155,22 @@
## ##
# @VsockSocketAddressWrapper: # @VsockSocketAddressWrapper:
# #
# @data: VSOCK domain socket address
#
# Since: 2.8 # Since: 2.8
## ##
{ 'struct': 'VsockSocketAddressWrapper', { 'struct': 'VsockSocketAddressWrapper',
'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:
@ -154,6 +178,8 @@
# Captures the address of a socket, which could also be a named file # Captures the address of a socket, which could also be a named file
# descriptor # descriptor
# #
# @type: Transport type
#
# Note: This type is deprecated in favor of SocketAddress. The # Note: This type is deprecated in favor of SocketAddress. The
# difference between SocketAddressLegacy and SocketAddress is that # difference between SocketAddressLegacy and SocketAddress is that
# the latter has fewer {} on the wire. # the latter has fewer {} on the wire.
@ -167,7 +193,7 @@
'inet': 'InetSocketAddressWrapper', 'inet': 'InetSocketAddressWrapper',
'unix': 'UnixSocketAddressWrapper', 'unix': 'UnixSocketAddressWrapper',
'vsock': 'VsockSocketAddressWrapper', 'vsock': 'VsockSocketAddressWrapper',
'fd': 'StringWrapper' } } 'fd': 'FdSocketAddressWrapper' } }
## ##
# @SocketAddressType: # @SocketAddressType:
@ -180,11 +206,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
## ##
@ -194,7 +216,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
@ -207,4 +229,4 @@
'data': { 'inet': 'InetSocketAddress', 'data': { 'inet': 'InetSocketAddress',
'unix': 'UnixSocketAddress', 'unix': 'UnixSocketAddress',
'vsock': 'VsockSocketAddress', 'vsock': 'VsockSocketAddress',
'fd': 'String' } } 'fd': 'FdSocketAddress' } }

View File

@ -120,6 +120,8 @@
# - which providers to request statistics from # - which providers to request statistics from
# - which named values to return within each provider # - which named values to return within each provider
# #
# @target: the kind of objects to query
#
# Since: 7.1 # Since: 7.1
## ##
{ 'union': 'StatsFilter', { 'union': 'StatsFilter',

View File

@ -102,6 +102,8 @@
## ##
# @TPMPassthroughOptionsWrapper: # @TPMPassthroughOptionsWrapper:
# #
# @data: Information about the TPM passthrough type
#
# Since: 1.5 # Since: 1.5
## ##
{ 'struct': 'TPMPassthroughOptionsWrapper', { 'struct': 'TPMPassthroughOptionsWrapper',
@ -111,6 +113,8 @@
## ##
# @TPMEmulatorOptionsWrapper: # @TPMEmulatorOptionsWrapper:
# #
# @data: Information about the TPM emulator type
#
# Since: 2.11 # Since: 2.11
## ##
{ 'struct': 'TPMEmulatorOptionsWrapper', { 'struct': 'TPMEmulatorOptionsWrapper',

View File

@ -158,6 +158,8 @@
# A discriminated record of operations that can be performed with # A discriminated record of operations that can be performed with
# @transaction. # @transaction.
# #
# @type: the operation to be performed
#
# Since: 1.1 # Since: 1.1
## ##
{ 'union': 'TransactionAction', { 'union': 'TransactionAction',

View File

@ -990,6 +990,8 @@
## ##
# @IntWrapper: # @IntWrapper:
# #
# @data: a numeric key code
#
# Since: 1.3 # Since: 1.3
## ##
{ 'struct': 'IntWrapper', { 'struct': 'IntWrapper',
@ -998,6 +1000,8 @@
## ##
# @QKeyCodeWrapper: # @QKeyCodeWrapper:
# #
# @data: An enumeration of key name
#
# Since: 1.3 # Since: 1.3
## ##
{ 'struct': 'QKeyCodeWrapper', { 'struct': 'QKeyCodeWrapper',
@ -1008,6 +1012,8 @@
# #
# Represents a keyboard key. # Represents a keyboard key.
# #
# @type: key encoding
#
# Since: 1.3 # Since: 1.3
## ##
{ 'union': 'KeyValue', { 'union': 'KeyValue',
@ -1175,6 +1181,8 @@
## ##
# @InputKeyEventWrapper: # @InputKeyEventWrapper:
# #
# @data: Keyboard input event
#
# Since: 2.0 # Since: 2.0
## ##
{ 'struct': 'InputKeyEventWrapper', { 'struct': 'InputKeyEventWrapper',
@ -1183,6 +1191,8 @@
## ##
# @InputBtnEventWrapper: # @InputBtnEventWrapper:
# #
# @data: Pointer button input event
#
# Since: 2.0 # Since: 2.0
## ##
{ 'struct': 'InputBtnEventWrapper', { 'struct': 'InputBtnEventWrapper',
@ -1191,6 +1201,8 @@
## ##
# @InputMoveEventWrapper: # @InputMoveEventWrapper:
# #
# @data: Pointer motion input event
#
# Since: 2.0 # Since: 2.0
## ##
{ 'struct': 'InputMoveEventWrapper', { 'struct': 'InputMoveEventWrapper',
@ -1199,6 +1211,8 @@
## ##
# @InputMultiTouchEventWrapper: # @InputMultiTouchEventWrapper:
# #
# @data: MultiTouch input event
#
# Since: 8.1 # Since: 8.1
## ##
{ 'struct': 'InputMultiTouchEventWrapper', { 'struct': 'InputMultiTouchEventWrapper',

View File

@ -49,6 +49,8 @@
# A yank instance can be yanked with the @yank qmp command to recover # A yank instance can be yanked with the @yank qmp command to recover
# from a hanging QEMU. # from a hanging QEMU.
# #
# @type: yank instance type
#
# Currently implemented yank instances: # Currently implemented yank instances:
# #
# - nbd block device: Yanking it will shut down the connection to the # - nbd block device: Yanking it will shut down the connection to the
@ -74,7 +76,7 @@
# Try to recover from hanging QEMU by yanking the specified instances. # Try to recover from hanging QEMU by yanking the specified instances.
# See @YankInstance for more information. # See @YankInstance for more information.
# #
# Takes a list of @YankInstance as argument. # @instances: the instances to be yanked
# #
# Returns: # Returns:
# - Nothing on success # - Nothing on success

View File

@ -33,7 +33,10 @@
'guest-get-time', 'guest-get-time',
'guest-set-vcpus', 'guest-set-vcpus',
'guest-sync', 'guest-sync',
'guest-sync-delimited' ] } } 'guest-sync-delimited' ],
# Types and commands with undocumented members:
'documentation-exceptions': [
'GuestNVMeSmart' ] } }
## ##
# @guest-sync-delimited: # @guest-sync-delimited:
@ -776,14 +779,15 @@
# Attempt to reconfigure (currently: enable/disable) logical # Attempt to reconfigure (currently: enable/disable) logical
# processors inside the guest. # processors inside the guest.
# #
# The input list is processed node by node in order. In each node # @vcpus: The logical processors to be reconfigured. This list is
# @logical-id is used to look up the guest VCPU, for which @online # processed node by node in order. In each node @logical-id is
# specifies the requested state. The set of distinct @logical-id's is # used to look up the guest VCPU, for which @online specifies the
# only required to be a subset of the guest-supported identifiers. # requested state. The set of distinct @logical-id's is only
# There's no restriction on list length or on repeating the same # required to be a subset of the guest-supported identifiers.
# @logical-id (with possibly different @online field). Preferably the # There's no restriction on list length or on repeating the same
# input list should describe a modified subset of @guest-get-vcpus' # @logical-id (with possibly different @online field). Preferably
# return value. # the input list should describe a modified subset of
# @guest-get-vcpus' return value.
# #
# Returns: The length of the initial sublist that has been # Returns: The length of the initial sublist that has been
# successfully processed. The guest agent maximizes this value. # successfully processed. The guest agent maximizes this value.
@ -934,6 +938,8 @@
# NVMe smart information, based on NVMe specification, section # NVMe smart information, based on NVMe specification, section
# <SMART / Health Information (Log Identifier 02h)> # <SMART / Health Information (Log Identifier 02h)>
# #
# TODO: document members briefly
#
# Since: 7.1 # Since: 7.1
## ##
{ 'struct': 'GuestNVMeSmart', { 'struct': 'GuestNVMeSmart',
@ -968,7 +974,7 @@
# #
# Disk type related smart information. # Disk type related smart information.
# #
# - @nvme: NVMe disk smart # @type: disk bus type
# #
# Since: 7.1 # Since: 7.1
## ##
@ -1163,14 +1169,16 @@
# Attempt to reconfigure (currently: enable/disable) state of memory # Attempt to reconfigure (currently: enable/disable) state of memory
# blocks inside the guest. # blocks inside the guest.
# #
# The input list is processed node by node in order. In each node # @mem-blks: The memory blocks to be reconfigured. This list is
# @phys-index is used to look up the guest MEMORY BLOCK, for which # processed node by node in order. In each node @phys-index is
# @online specifies the requested state. The set of distinct # used to look up the guest MEMORY BLOCK, for which @online
# @phys-index's is only required to be a subset of the guest-supported # specifies the requested state. The set of distinct
# identifiers. There's no restriction on list length or on repeating # @phys-index's is only required to be a subset of the
# the same @phys-index (with possibly different @online field). # guest-supported identifiers. There's no restriction on list
# Preferably the input list should describe a modified subset of # length or on repeating the same @phys-index (with possibly
# @guest-get-memory-blocks' return value. # different @online field). Preferably the input list should
# describe a modified subset of @guest-get-memory-blocks' return
# value.
# #
# Returns: The operation results, it is a list of # Returns: The operation results, it is a list of
# @GuestMemoryBlockResponse, which is corresponding to the input # @GuestMemoryBlockResponse, which is corresponding to the input
@ -1487,6 +1495,8 @@
## ##
# @GuestDeviceType: # @GuestDeviceType:
#
# @pci: PCI device
## ##
{ 'enum': 'GuestDeviceType', { 'enum': 'GuestDeviceType',
'data': [ 'pci' ] } 'data': [ 'pci' ] }
@ -1506,7 +1516,9 @@
## ##
# @GuestDeviceId: # @GuestDeviceId:
# #
# Id of the device - @pci: PCI ID, since: 5.2 # Id of the device
#
# @type: device type
# #
# Since: 5.2 # Since: 5.2
## ##
@ -1688,6 +1700,8 @@
# @major: major device number of disk # @major: major device number of disk
# #
# @minor: minor device number of disk # @minor: minor device number of disk
#
# @stats: I/O statistics
## ##
{ 'struct': 'GuestDiskStatsInfo', { 'struct': 'GuestDiskStatsInfo',
'data': {'name': 'str', 'data': {'name': 'str',
@ -1711,7 +1725,9 @@
## ##
# @GuestCpuStatsType: # @GuestCpuStatsType:
# #
# An enumeration of OS type # Guest operating systems supporting CPU statistics
#
# @linux: Linux
# #
# Since: 7.1 # Since: 7.1
## ##
@ -1768,7 +1784,7 @@
# #
# Get statistics of each CPU in millisecond. # Get statistics of each CPU in millisecond.
# #
# - @linux: Linux style CPU statistics # @type: guest operating system
# #
# Since: 7.1 # Since: 7.1
## ##

View File

@ -238,6 +238,8 @@ class QAPISchemaParser:
pragma.command_name_exceptions = check_list_str(name, value) pragma.command_name_exceptions = check_list_str(name, value)
elif name == 'command-returns-exceptions': elif name == 'command-returns-exceptions':
pragma.command_returns_exceptions = check_list_str(name, value) pragma.command_returns_exceptions = check_list_str(name, value)
elif name == 'documentation-exceptions':
pragma.documentation_exceptions = check_list_str(name, value)
elif name == 'member-name-exceptions': elif name == 'member-name-exceptions':
pragma.member_name_exceptions = check_list_str(name, value) pragma.member_name_exceptions = check_list_str(name, value)
else: else:
@ -739,7 +741,10 @@ class QAPIDoc:
def connect_member(self, member: 'QAPISchemaMember') -> None: def connect_member(self, member: 'QAPISchemaMember') -> None:
if member.name not in self.args: if member.name not in self.args:
# Undocumented TODO outlaw if self.symbol not in member.info.pragma.documentation_exceptions:
raise QAPISemError(member.info,
"%s '%s' lacks documentation"
% (member.role, member.name))
self.args[member.name] = QAPIDoc.ArgSection(self._parser, self.args[member.name] = QAPIDoc.ArgSection(self._parser,
member.name) member.name)
self.args[member.name].connect(member) self.args[member.name].connect(member)

View File

@ -24,6 +24,8 @@ class QAPISchemaPragma:
self.command_name_exceptions: List[str] = [] self.command_name_exceptions: List[str] = []
# Commands allowed to return a non-dictionary # Commands allowed to return a non-dictionary
self.command_returns_exceptions: List[str] = [] self.command_returns_exceptions: List[str] = []
# Types, commands, and events with undocumented members
self.documentation_exceptions: List[str] = []
# Types whose member names may violate case conventions # Types whose member names may violate case conventions
self.member_name_exceptions: List[str] = [] self.member_name_exceptions: List[str] = []

View File

@ -2,6 +2,8 @@
## ##
# @AorB: # @AorB:
# @a: a
# @b: b
# @aa: a # @aa: a
# @bb: b # @bb: b
## ##

View File

@ -3,7 +3,9 @@
# #
# Positive QAPI doc comment tests # Positive QAPI doc comment tests
{ 'pragma': { 'doc-required': true } } { 'pragma': {
'doc-required': true,
'documentation-exceptions': [ 'Enum', 'Variant1', 'Alternate', 'cmd' ] } }
## ##
# = Section # = Section
@ -73,8 +75,8 @@
# @Base: # @Base:
# #
# @base1: # @base1:
# description starts on a new line, # description starts on a new line,
# not indented # minimally indented
## ##
{ 'struct': 'Base', 'data': { 'base1': 'Enum' }, { 'struct': 'Base', 'data': { 'base1': 'Enum' },
'if': { 'all': ['IFALL1', 'IFALL2'] } } 'if': { 'all': ['IFALL1', 'IFALL2'] } }
@ -155,10 +157,10 @@
# TODO: frobnicate # TODO: frobnicate
# Notes: # Notes:
# #
# - Lorem ipsum dolor sit amet # - Lorem ipsum dolor sit amet
# - Ut enim ad minim veniam # - Ut enim ad minim veniam
# #
# Duis aute irure dolor # Duis aute irure dolor
# Example: # Example:
# #
# -> in # -> in

View File

@ -118,7 +118,7 @@ doc symbol=Base
arg=base1 arg=base1
description starts on a new line, description starts on a new line,
not indented minimally indented
doc symbol=Variant1 doc symbol=Variant1
body= body=
A paragraph A paragraph

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();