# -*- Mode: Python -*-
+# vim: filetype=python
##
# = Socket data types
##
# @InetSocketAddress:
#
-# Captures a socket address or address range in the Internet namespace.
+# 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)
+# @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.
+# between @port and @to.
#
-# @ipv4: whether to accept IPv4 addresses, default try both IPv4 and IPv6
+# @ipv4: whether to accept IPv4 addresses, default try both IPv4 and
+# IPv6
#
-# @ipv6: whether to accept IPv6 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)
+# @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
##
'*to': 'uint16',
'*ipv4': 'bool',
'*ipv6': 'bool',
- '*keep-alive': '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
-# @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)
+#
+# @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',
- '*tight': 'bool',
- '*abstract': 'bool' } }
+ '*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.
+# service resolution support.
#
# Since: 2.8
##
'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
+# 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 {}.
-
+# 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': 'InetSocketAddress',
- 'unix': 'UnixSocketAddress',
- 'vsock': 'VsockSocketAddress',
- 'fd': 'String' } }
+ 'inet': 'InetSocketAddressWrapper',
+ 'unix': 'UnixSocketAddressWrapper',
+ 'vsock': 'VsockSocketAddressWrapper',
+ 'fd': 'StringWrapper' } }
##
# @SocketAddressType:
#
# Available SocketAddress types
#
-# @inet: Internet address
+# @inet: Internet address
#
-# @unix: Unix domain socket
+# @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.
+# @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
##
# Captures the address of a socket, which could also be a named file
# descriptor
#
-# @type: Transport type
+# @type: Transport type
#
# Since: 2.9
##