xref: /openbmc/qemu/qapi/sockets.json (revision 1723d6b1)
1a2ff5a48SMarkus Armbruster# -*- Mode: Python -*-
2a2ff5a48SMarkus Armbruster
3a2ff5a48SMarkus Armbruster##
4a2ff5a48SMarkus Armbruster# = Socket data types
5a2ff5a48SMarkus Armbruster##
6a2ff5a48SMarkus Armbruster
7a2ff5a48SMarkus Armbruster{ 'include': 'common.json' }
8a2ff5a48SMarkus Armbruster
9a2ff5a48SMarkus Armbruster##
10a2ff5a48SMarkus Armbruster# @NetworkAddressFamily:
11a2ff5a48SMarkus Armbruster#
12a2ff5a48SMarkus Armbruster# The network address family
13a2ff5a48SMarkus Armbruster#
14a2ff5a48SMarkus Armbruster# @ipv4: IPV4 family
15a2ff5a48SMarkus Armbruster#
16a2ff5a48SMarkus Armbruster# @ipv6: IPV6 family
17a2ff5a48SMarkus Armbruster#
18a2ff5a48SMarkus Armbruster# @unix: unix socket
19a2ff5a48SMarkus Armbruster#
20a2ff5a48SMarkus Armbruster# @vsock: vsock family (since 2.8)
21a2ff5a48SMarkus Armbruster#
22a2ff5a48SMarkus Armbruster# @unknown: otherwise
23a2ff5a48SMarkus Armbruster#
24a2ff5a48SMarkus Armbruster# Since: 2.1
25a2ff5a48SMarkus Armbruster##
26a2ff5a48SMarkus Armbruster{ 'enum': 'NetworkAddressFamily',
27a2ff5a48SMarkus Armbruster  'data': [ 'ipv4', 'ipv6', 'unix', 'vsock', 'unknown' ] }
28a2ff5a48SMarkus Armbruster
29a2ff5a48SMarkus Armbruster##
30a2ff5a48SMarkus Armbruster# @InetSocketAddressBase:
31a2ff5a48SMarkus Armbruster#
32a2ff5a48SMarkus Armbruster# @host: host part of the address
33a2ff5a48SMarkus Armbruster# @port: port part of the address
34a2ff5a48SMarkus Armbruster##
35a2ff5a48SMarkus Armbruster{ 'struct': 'InetSocketAddressBase',
36a2ff5a48SMarkus Armbruster  'data': {
37a2ff5a48SMarkus Armbruster    'host': 'str',
38a2ff5a48SMarkus Armbruster    'port': 'str' } }
39a2ff5a48SMarkus Armbruster
40a2ff5a48SMarkus Armbruster##
41a2ff5a48SMarkus Armbruster# @InetSocketAddress:
42a2ff5a48SMarkus Armbruster#
43a2ff5a48SMarkus Armbruster# Captures a socket address or address range in the Internet namespace.
44a2ff5a48SMarkus Armbruster#
45a2ff5a48SMarkus Armbruster# @numeric: true if the host/port are guaranteed to be numeric,
46a2ff5a48SMarkus Armbruster#           false if name resolution should be attempted. Defaults to false.
47a2ff5a48SMarkus Armbruster#           (Since 2.9)
48a2ff5a48SMarkus Armbruster#
49a2ff5a48SMarkus Armbruster# @to: If present, this is range of possible addresses, with port
50a2ff5a48SMarkus Armbruster#      between @port and @to.
51a2ff5a48SMarkus Armbruster#
52a2ff5a48SMarkus Armbruster# @ipv4: whether to accept IPv4 addresses, default try both IPv4 and IPv6
53a2ff5a48SMarkus Armbruster#
54a2ff5a48SMarkus Armbruster# @ipv6: whether to accept IPv6 addresses, default try both IPv4 and IPv6
55a2ff5a48SMarkus Armbruster#
56a2ff5a48SMarkus Armbruster# Since: 1.3
57a2ff5a48SMarkus Armbruster##
58a2ff5a48SMarkus Armbruster{ 'struct': 'InetSocketAddress',
59a2ff5a48SMarkus Armbruster  'base': 'InetSocketAddressBase',
60a2ff5a48SMarkus Armbruster  'data': {
61a2ff5a48SMarkus Armbruster    '*numeric':  'bool',
62a2ff5a48SMarkus Armbruster    '*to': 'uint16',
63a2ff5a48SMarkus Armbruster    '*ipv4': 'bool',
64a2ff5a48SMarkus Armbruster    '*ipv6': 'bool' } }
65a2ff5a48SMarkus Armbruster
66a2ff5a48SMarkus Armbruster##
67a2ff5a48SMarkus Armbruster# @UnixSocketAddress:
68a2ff5a48SMarkus Armbruster#
69a2ff5a48SMarkus Armbruster# Captures a socket address in the local ("Unix socket") namespace.
70a2ff5a48SMarkus Armbruster#
71a2ff5a48SMarkus Armbruster# @path: filesystem path to use
72a2ff5a48SMarkus Armbruster#
73a2ff5a48SMarkus Armbruster# Since: 1.3
74a2ff5a48SMarkus Armbruster##
75a2ff5a48SMarkus Armbruster{ 'struct': 'UnixSocketAddress',
76a2ff5a48SMarkus Armbruster  'data': {
77a2ff5a48SMarkus Armbruster    'path': 'str' } }
78a2ff5a48SMarkus Armbruster
79a2ff5a48SMarkus Armbruster##
80a2ff5a48SMarkus Armbruster# @VsockSocketAddress:
81a2ff5a48SMarkus Armbruster#
82a2ff5a48SMarkus Armbruster# Captures a socket address in the vsock namespace.
83a2ff5a48SMarkus Armbruster#
84a2ff5a48SMarkus Armbruster# @cid: unique host identifier
85a2ff5a48SMarkus Armbruster# @port: port
86a2ff5a48SMarkus Armbruster#
87a2ff5a48SMarkus Armbruster# Note: string types are used to allow for possible future hostname or
88a2ff5a48SMarkus Armbruster# service resolution support.
89a2ff5a48SMarkus Armbruster#
90a2ff5a48SMarkus Armbruster# Since: 2.8
91a2ff5a48SMarkus Armbruster##
92a2ff5a48SMarkus Armbruster{ 'struct': 'VsockSocketAddress',
93a2ff5a48SMarkus Armbruster  'data': {
94a2ff5a48SMarkus Armbruster    'cid': 'str',
95a2ff5a48SMarkus Armbruster    'port': 'str' } }
96a2ff5a48SMarkus Armbruster
97a2ff5a48SMarkus Armbruster##
98a2ff5a48SMarkus Armbruster# @SocketAddressLegacy:
99a2ff5a48SMarkus Armbruster#
100a2ff5a48SMarkus Armbruster# Captures the address of a socket, which could also be a named file descriptor
101a2ff5a48SMarkus Armbruster#
102a2ff5a48SMarkus Armbruster# Note: This type is deprecated in favor of SocketAddress.  The
103a2ff5a48SMarkus Armbruster# difference between SocketAddressLegacy and SocketAddress is that the
104a2ff5a48SMarkus Armbruster# latter is a flat union rather than a simple union. Flat is nicer
105a2ff5a48SMarkus Armbruster# because it avoids nesting on the wire, i.e. that form has fewer {}.
106a2ff5a48SMarkus Armbruster
107a2ff5a48SMarkus Armbruster#
108a2ff5a48SMarkus Armbruster# Since: 1.3
109a2ff5a48SMarkus Armbruster##
110a2ff5a48SMarkus Armbruster{ 'union': 'SocketAddressLegacy',
111a2ff5a48SMarkus Armbruster  'data': {
112a2ff5a48SMarkus Armbruster    'inet': 'InetSocketAddress',
113a2ff5a48SMarkus Armbruster    'unix': 'UnixSocketAddress',
114a2ff5a48SMarkus Armbruster    'vsock': 'VsockSocketAddress',
115a2ff5a48SMarkus Armbruster    'fd': 'String' } }
116a2ff5a48SMarkus Armbruster
117a2ff5a48SMarkus Armbruster##
118a2ff5a48SMarkus Armbruster# @SocketAddressType:
119a2ff5a48SMarkus Armbruster#
120a2ff5a48SMarkus Armbruster# Available SocketAddress types
121a2ff5a48SMarkus Armbruster#
122a2ff5a48SMarkus Armbruster# @inet:  Internet address
123a2ff5a48SMarkus Armbruster#
124a2ff5a48SMarkus Armbruster# @unix:  Unix domain socket
125a2ff5a48SMarkus Armbruster#
126*1723d6b1SDaniel P. Berrange# @vsock: VMCI address
127*1723d6b1SDaniel P. Berrange#
128*1723d6b1SDaniel P. Berrange# @fd: decimal is for file descriptor number, otherwise a file descriptor name.
129*1723d6b1SDaniel P. Berrange#      Named file descriptors are permitted in monitor commands, in combination
130*1723d6b1SDaniel P. Berrange#      with the 'getfd' command. Decimal file descriptors are permitted at
131*1723d6b1SDaniel P. Berrange#      startup or other contexts where no monitor context is active.
132*1723d6b1SDaniel P. Berrange#
133a2ff5a48SMarkus Armbruster# Since: 2.9
134a2ff5a48SMarkus Armbruster##
135a2ff5a48SMarkus Armbruster{ 'enum': 'SocketAddressType',
136a2ff5a48SMarkus Armbruster  'data': [ 'inet', 'unix', 'vsock', 'fd' ] }
137a2ff5a48SMarkus Armbruster
138a2ff5a48SMarkus Armbruster##
139a2ff5a48SMarkus Armbruster# @SocketAddress:
140a2ff5a48SMarkus Armbruster#
141a2ff5a48SMarkus Armbruster# Captures the address of a socket, which could also be a named file
142a2ff5a48SMarkus Armbruster# descriptor
143a2ff5a48SMarkus Armbruster#
144a2ff5a48SMarkus Armbruster# @type:       Transport type
145a2ff5a48SMarkus Armbruster#
146a2ff5a48SMarkus Armbruster# Since: 2.9
147a2ff5a48SMarkus Armbruster##
148a2ff5a48SMarkus Armbruster{ 'union': 'SocketAddress',
149a2ff5a48SMarkus Armbruster  'base': { 'type': 'SocketAddressType' },
150a2ff5a48SMarkus Armbruster  'discriminator': 'type',
151a2ff5a48SMarkus Armbruster  'data': { 'inet': 'InetSocketAddress',
152a2ff5a48SMarkus Armbruster            'unix': 'UnixSocketAddress',
153a2ff5a48SMarkus Armbruster            'vsock': 'VsockSocketAddress',
154a2ff5a48SMarkus Armbruster            'fd': 'String' } }
155