| # -*- Mode: Python -*- |
| # vim: filetype=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 |
| # |
| # @keep-alive: enable keep-alive when connecting to this socket. Not supported |
| # for passive sockets. (Since 4.2) |
| # |
| # @mptcp: enable multi-path TCP. (Since 6.1) |
| # |
| # Since: 1.3 |
| ## |
| { 'struct': 'InetSocketAddress', |
| 'base': 'InetSocketAddressBase', |
| 'data': { |
| '*numeric': 'bool', |
| '*to': 'uint16', |
| '*ipv4': 'bool', |
| '*ipv6': 'bool', |
| '*keep-alive': 'bool', |
| '*mptcp': { 'type': 'bool', 'if': 'HAVE_IPPROTO_MPTCP' } } } |
| |
| ## |
| # @UnixSocketAddress: |
| # |
| # Captures a socket address in the local ("Unix socket") namespace. |
| # |
| # @path: filesystem path to use |
| # @abstract: if true, this is a Linux abstract socket address. @path |
| # will be prefixed by a null byte, and optionally padded |
| # with null bytes. Defaults to false. (Since 5.1) |
| # @tight: if false, pad an abstract socket address with enough null |
| # bytes to make it fill struct sockaddr_un member sun_path. |
| # Defaults to true. (Since 5.1) |
| # |
| # Since: 1.3 |
| ## |
| { 'struct': 'UnixSocketAddress', |
| 'data': { |
| 'path': 'str', |
| '*abstract': { 'type': 'bool', 'if': 'CONFIG_LINUX' }, |
| '*tight': { 'type': 'bool', 'if': 'CONFIG_LINUX' } } } |
| |
| ## |
| # @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' } } |
| |
| ## |
| # @InetSocketAddressWrapper: |
| # |
| # Since: 1.3 |
| ## |
| { 'struct': 'InetSocketAddressWrapper', |
| 'data': { 'data': 'InetSocketAddress' } } |
| |
| ## |
| # @UnixSocketAddressWrapper: |
| # |
| # Since: 1.3 |
| ## |
| { 'struct': 'UnixSocketAddressWrapper', |
| 'data': { 'data': 'UnixSocketAddress' } } |
| |
| ## |
| # @VsockSocketAddressWrapper: |
| # |
| # Since: 2.8 |
| ## |
| { 'struct': 'VsockSocketAddressWrapper', |
| 'data': { 'data': 'VsockSocketAddress' } } |
| |
| ## |
| # @StringWrapper: |
| # |
| # Since: 1.3 |
| ## |
| { 'struct': 'StringWrapper', |
| 'data': { 'data': 'String' } } |
| |
| ## |
| # @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 has fewer {} on the wire. |
| # |
| # Since: 1.3 |
| ## |
| { 'union': 'SocketAddressLegacy', |
| 'base': { 'type': 'SocketAddressType' }, |
| 'discriminator': 'type', |
| 'data': { |
| 'inet': 'InetSocketAddressWrapper', |
| 'unix': 'UnixSocketAddressWrapper', |
| 'vsock': 'VsockSocketAddressWrapper', |
| 'fd': 'StringWrapper' } } |
| |
| ## |
| # @SocketAddressType: |
| # |
| # Available SocketAddress types |
| # |
| # @inet: Internet address |
| # |
| # @unix: Unix domain socket |
| # |
| # @vsock: VMCI address |
| # |
| # @fd: decimal is for file descriptor number, otherwise 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: 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' } } |