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