+##
+# @SocketAddressFlatType:
+#
+# Available SocketAddressFlat types
+#
+# @inet: Internet address
+#
+# @unix: Unix domain socket
+#
+# Since: 2.9
+##
+{ 'enum': 'SocketAddressFlatType',
+ 'data': [ 'inet', 'unix', 'vsock', 'fd' ] }
+
+##
+# @SocketAddressFlat:
+#
+# Captures the address of a socket
+#
+# @type: Transport type
+#
+# This is just like SocketAddress, except it's a flat union rather
+# than a simple union. Nicer because it avoids nesting on the wire,
+# i.e. this form has fewer {}.
+#
+# Since: 2.9
+##
+{ 'union': 'SocketAddressFlat',
+ 'base': { 'type': 'SocketAddressFlatType' },
+ 'discriminator': 'type',
+ 'data': { 'inet': 'InetSocketAddress',
+ 'unix': 'UnixSocketAddress',
+ 'vsock': 'VsockSocketAddress',
+ 'fd': 'String' } }
+