# -*- 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)
#
# Since: 1.3
##
{ 'struct': 'InetSocketAddress',
  'base': 'InetSocketAddressBase',
  'data': {
    '*numeric':  'bool',
    '*to': 'uint16',
    '*ipv4': 'bool',
    '*ipv6': 'bool',
    '*keep-alive': 'bool' } }

##
# @UnixSocketAddress:
#
# Captures a socket address in the local ("Unix socket") namespace.
#
# @path: filesystem path to use
# @tight: pass a socket address length confined to the minimum length of the
#         abstract string, rather than the full sockaddr_un record length
#         (only matters for abstract sockets, default true). (Since 5.1)
# @abstract: whether this is an abstract address, default false. (Since 5.1)
#
# Since: 1.3
##
{ 'struct': 'UnixSocketAddress',
  'data': {
    'path': 'str',
    '*tight': 'bool',
    '*abstract': 'bool' } }

##
# @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
#
# @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' } }
