On Thu, Aug 24, 2017 at 9:18 PM Markus Armbruster <arm...@redhat.com> wrote:
> Cc: "Daniel P. Berrange" <berra...@redhat.com> > Cc: Gerd Hoffmann <kra...@redhat.com> > Cc: Paolo Bonzini <pbonz...@redhat.com> > Signed-off-by: Markus Armbruster <arm...@redhat.com> > Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> > --- > MAINTAINERS | 1 + > Makefile | 4 +- > qapi-schema.json | 152 > +-------------------------------------------------- > qapi/block-core.json | 2 +- > qapi/common.json | 11 ++++ > qapi/sockets.json | 147 > +++++++++++++++++++++++++++++++++++++++++++++++++ > 6 files changed, 164 insertions(+), 153 deletions(-) > create mode 100644 qapi/sockets.json > > diff --git a/MAINTAINERS b/MAINTAINERS > index ccee28b..fb90a19 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -1535,6 +1535,7 @@ M: Paolo Bonzini <pbonz...@redhat.com> > S: Maintained > F: include/qemu/sockets.h > F: util/qemu-sockets.c > +F: qapi/sockets.json > > Throttling infrastructure > M: Alberto Garcia <be...@igalia.com> > diff --git a/Makefile b/Makefile > index 81447b1..ca4a03c 100644 > --- a/Makefile > +++ b/Makefile > @@ -410,8 +410,10 @@ $(SRC_PATH)/qga/qapi-schema.json > $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py) > > qapi-modules = $(SRC_PATH)/qapi-schema.json $(SRC_PATH)/qapi/common.json \ > $(SRC_PATH)/qapi/block.json > $(SRC_PATH)/qapi/block-core.json \ > + $(SRC_PATH)/qapi/crypto.json \ > $(SRC_PATH)/qapi/event.json > $(SRC_PATH)/qapi/introspect.json \ > - $(SRC_PATH)/qapi/crypto.json $(SRC_PATH)/qapi/rocker.json \ > + $(SRC_PATH)/qapi/rocker.json \ > + $(SRC_PATH)/qapi/sockets.json \ > $(SRC_PATH)/qapi/trace.json > > qapi-types.c qapi-types.h :\ > diff --git a/qapi-schema.json b/qapi-schema.json > index add4777..d69b6da 100644 > --- a/qapi-schema.json > +++ b/qapi-schema.json > @@ -79,6 +79,7 @@ > # include it first in qapi-schema.json. > > { 'include': 'qapi/common.json' } > +{ 'include': 'qapi/sockets.json' } > { 'include': 'qapi/crypto.json' } > { 'include': 'qapi/block.json' } > { 'include': 'qapi/rocker.json' } > @@ -1616,26 +1617,6 @@ > { 'command': 'query-iothreads', 'returns': ['IOThreadInfo'] } > > ## > -# @NetworkAddressFamily: > -# > -# The network address family > -# > -# @ipv4: IPV4 family > -# > -# @ipv6: IPV6 family > -# > -# @unix: unix socket > -# > -# @vsock: vsock family (since 2.8) > -# > -# @unknown: otherwise > -# > -# Since: 2.1 > -## > -{ 'enum': 'NetworkAddressFamily', > - 'data': [ 'ipv4', 'ipv6', 'unix', 'vsock', 'unknown' ] } > This enum is actually only used in ui.json after your series. But I suppose it makes more sense in sockets.json - > -## > # @VncBasicInfo: > # > # The basic information for vnc network connection > @@ -3696,17 +3677,6 @@ > '*vectors': 'uint32' } } > > ## > -# @String: > -# > -# A fat type wrapping 'str', to be embedded in lists. > -# > -# Since: 1.2 > -## > -{ 'struct': 'String', > - 'data': { > - 'str': 'str' } } > - > -## > # @NetdevUserOptions: > # > # Use the user mode network stack which requires no administrator > privilege to > @@ -4157,126 +4127,6 @@ > 'data': [ 'all', 'rx', 'tx' ] } > > ## > -# @InetSocketAddressBase: > -# > -# @host: host part of the address > -# @port: port part of the address > -## > -{ 'struct': 'InetSocketAddressBase', > - 'data': { > - 'host': 'str', > - 'port': 'str' } } > - > -## > -# @InetSocketAddress: > -# > -# Captures a socket address or address range in the Internet namespace. > -# > -# @numeric: true if the host/port are guaranteed to be numeric, > -# false if name resolution should be attempted. Defaults to > false. > -# (Since 2.9) > -# > -# @to: If present, this is range of possible addresses, with port > -# between @port and @to. > -# > -# @ipv4: whether to accept IPv4 addresses, default try both IPv4 and IPv6 > -# > -# @ipv6: whether to accept IPv6 addresses, default try both IPv4 and IPv6 > -# > -# Since: 1.3 > -## > -{ 'struct': 'InetSocketAddress', > - 'base': 'InetSocketAddressBase', > - 'data': { > - '*numeric': 'bool', > - '*to': 'uint16', > - '*ipv4': 'bool', > - '*ipv6': 'bool' } } > - > -## > -# @UnixSocketAddress: > -# > -# Captures a socket address in the local ("Unix socket") namespace. > -# > -# @path: filesystem path to use > -# > -# Since: 1.3 > -## > -{ 'struct': 'UnixSocketAddress', > - 'data': { > - 'path': 'str' } } > - > -## > -# @VsockSocketAddress: > -# > -# Captures a socket address in the vsock namespace. > -# > -# @cid: unique host identifier > -# @port: port > -# > -# Note: string types are used to allow for possible future hostname or > -# service resolution support. > -# > -# Since: 2.8 > -## > -{ 'struct': 'VsockSocketAddress', > - 'data': { > - 'cid': 'str', > - 'port': 'str' } } > - > -## > -# @SocketAddressLegacy: > -# > -# Captures the address of a socket, which could also be a named file > descriptor > -# > -# Note: This type is deprecated in favor of SocketAddress. The > -# difference between SocketAddressLegacy and SocketAddress is that the > -# latter is a flat union rather than a simple union. Flat is nicer > -# because it avoids nesting on the wire, i.e. that form has fewer {}. > - > -# > -# Since: 1.3 > -## > -{ 'union': 'SocketAddressLegacy', > - 'data': { > - 'inet': 'InetSocketAddress', > - 'unix': 'UnixSocketAddress', > - 'vsock': 'VsockSocketAddress', > - 'fd': 'String' } } > - > -## > -# @SocketAddressType: > -# > -# Available SocketAddress types > -# > -# @inet: Internet address > -# > -# @unix: Unix domain socket > -# > -# Since: 2.9 > -## > -{ 'enum': 'SocketAddressType', > - 'data': [ 'inet', 'unix', 'vsock', 'fd' ] } > - > -## > -# @SocketAddress: > -# > -# Captures the address of a socket, which could also be a named file > -# descriptor > -# > -# @type: Transport type > -# > -# Since: 2.9 > -## > -{ 'union': 'SocketAddress', > - 'base': { 'type': 'SocketAddressType' }, > - 'discriminator': 'type', > - 'data': { 'inet': 'InetSocketAddress', > - 'unix': 'UnixSocketAddress', > - 'vsock': 'VsockSocketAddress', > - 'fd': 'String' } } > - > -## > # @getfd: > # > # Receive a file descriptor via SCM rights and assign it a name > diff --git a/qapi/block-core.json b/qapi/block-core.json > index 833c602..5379674 100644 > --- a/qapi/block-core.json > +++ b/qapi/block-core.json > @@ -4,8 +4,8 @@ > # == QAPI block core definitions (vm unrelated) > ## > > -# QAPI common definitions > { 'include': 'common.json' } > +{ 'include': 'sockets.json' } > > ## > # @SnapshotInfo: > diff --git a/qapi/common.json b/qapi/common.json > index 8355d5a..862e73f 100644 > --- a/qapi/common.json > +++ b/qapi/common.json > @@ -162,3 +162,14 @@ > ## > { 'enum': 'OnOffSplit', > 'data': [ 'on', 'off', 'split' ] } > + > +## > +# @String: > +# > +# A fat type wrapping 'str', to be embedded in lists. > +# > +# Since: 1.2 > +## > +{ 'struct': 'String', > + 'data': { > + 'str': 'str' } } > diff --git a/qapi/sockets.json b/qapi/sockets.json > new file mode 100644 > index 0000000..ac022c6 > --- /dev/null > +++ b/qapi/sockets.json > @@ -0,0 +1,147 @@ > +# -*- Mode: Python -*- > + > +## > +# = Socket data types > +## > + > +{ 'include': 'common.json' } > + > +## > +# @NetworkAddressFamily: > +# > +# The network address family > +# > +# @ipv4: IPV4 family > +# > +# @ipv6: IPV6 family > +# > +# @unix: unix socket > +# > +# @vsock: vsock family (since 2.8) > +# > +# @unknown: otherwise > +# > +# Since: 2.1 > +## > +{ 'enum': 'NetworkAddressFamily', > + 'data': [ 'ipv4', 'ipv6', 'unix', 'vsock', 'unknown' ] } > + > +## > +# @InetSocketAddressBase: > +# > +# @host: host part of the address > +# @port: port part of the address > +## > +{ 'struct': 'InetSocketAddressBase', > + 'data': { > + 'host': 'str', > + 'port': 'str' } } > + > +## > +# @InetSocketAddress: > +# > +# Captures a socket address or address range in the Internet namespace. > +# > +# @numeric: true if the host/port are guaranteed to be numeric, > +# false if name resolution should be attempted. Defaults to > false. > +# (Since 2.9) > +# > +# @to: If present, this is range of possible addresses, with port > +# between @port and @to. > +# > +# @ipv4: whether to accept IPv4 addresses, default try both IPv4 and IPv6 > +# > +# @ipv6: whether to accept IPv6 addresses, default try both IPv4 and IPv6 > +# > +# Since: 1.3 > +## > +{ 'struct': 'InetSocketAddress', > + 'base': 'InetSocketAddressBase', > + 'data': { > + '*numeric': 'bool', > + '*to': 'uint16', > + '*ipv4': 'bool', > + '*ipv6': 'bool' } } > + > +## > +# @UnixSocketAddress: > +# > +# Captures a socket address in the local ("Unix socket") namespace. > +# > +# @path: filesystem path to use > +# > +# Since: 1.3 > +## > +{ 'struct': 'UnixSocketAddress', > + 'data': { > + 'path': 'str' } } > + > +## > +# @VsockSocketAddress: > +# > +# Captures a socket address in the vsock namespace. > +# > +# @cid: unique host identifier > +# @port: port > +# > +# Note: string types are used to allow for possible future hostname or > +# service resolution support. > +# > +# Since: 2.8 > +## > +{ 'struct': 'VsockSocketAddress', > + 'data': { > + 'cid': 'str', > + 'port': 'str' } } > + > +## > +# @SocketAddressLegacy: > +# > +# Captures the address of a socket, which could also be a named file > descriptor > +# > +# Note: This type is deprecated in favor of SocketAddress. The > +# difference between SocketAddressLegacy and SocketAddress is that the > +# latter is a flat union rather than a simple union. Flat is nicer > +# because it avoids nesting on the wire, i.e. that form has fewer {}. > + > +# > +# Since: 1.3 > +## > +{ 'union': 'SocketAddressLegacy', > + 'data': { > + 'inet': 'InetSocketAddress', > + 'unix': 'UnixSocketAddress', > + 'vsock': 'VsockSocketAddress', > + 'fd': 'String' } } > + > +## > +# @SocketAddressType: > +# > +# Available SocketAddress types > +# > +# @inet: Internet address > +# > +# @unix: Unix domain socket > +# > +# Since: 2.9 > +## > +{ 'enum': 'SocketAddressType', > + 'data': [ 'inet', 'unix', 'vsock', 'fd' ] } > + > +## > +# @SocketAddress: > +# > +# Captures the address of a socket, which could also be a named file > +# descriptor > +# > +# @type: Transport type > +# > +# Since: 2.9 > +## > +{ 'union': 'SocketAddress', > + 'base': { 'type': 'SocketAddressType' }, > + 'discriminator': 'type', > + 'data': { 'inet': 'InetSocketAddress', > + 'unix': 'UnixSocketAddress', > + 'vsock': 'VsockSocketAddress', > + 'fd': 'String' } } > -- > 2.7.5 > > > -- Marc-André Lureau