blob: a48f23f04ca4d525a714921cc249ba03f3df5730 [file] [log] [blame]
// Copyright 2018 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.overnet.protocol;
using zx;
/// A single message proxied from a Zircon channel over an Overnet stream.
struct ZirconChannelMessage {
/// Bytes part of the payload.
vector<uint8>:zx.CHANNEL_MAX_MSG_BYTES bytes;
/// Handles part of the payload.
vector<ZirconHandle>:zx.CHANNEL_MAX_MSG_HANDLES handles;
};
/// A single handle to be proxied.
/// Not all Zircon types are supported.
union ZirconHandle {
/// A proxied channel.
1: ChannelHandle channel;
/// A proxied socket.
2: SocketHandle socket;
};
/// A proxied channel.
struct ChannelHandle {
/// The Overnet proxy stream that was created to carry this channel.
/// The protocol over said stream will be a `ZirconChannel`.
StreamRef stream_ref;
};
/// The type of socket being communicated via [`fuchsia.overnet.protocol/SocketHandle`].
enum SocketType {
/// A datagram oriented socket.
DATAGRAM = 0;
/// A stream oriented socket.
STREAM = 1;
};
/// A proxied socket.
struct SocketHandle {
/// The Overnet proxy stream that was created to carry this socket.
/// The protocol over said stream will be a `ZirconSocket`.
StreamRef stream_ref;
/// Socket options, per `zx_socket_create`.
SocketType socket_type;
};