blob: e920a044309ec736dd0e1588229db377163d95dc [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.
strict xunion 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`.
StreamId stream_id;
};
enum SocketType {
DATAGRAM = 0;
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`.
StreamId stream_id;
/// Socket options, per `zx_socket_create`.
SocketType socket_type;
};