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