// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.io2;

/// Auxiliary data for the POSIX socket representation of a node.
/// The selection of this variant in [`Representation`] implies that the
/// connection speaks the [`fuchsia.posix.socket/Control`] protocol.
table PosixSocketInfo {
    /// The backing transport for the socket.
    /// The rights on this socket should correspond to the rights on the
    /// node connection.
    1: handle<socket> socket;
};
