<br />

Added: 16

## **STRUCTS**

### BeginTransfer

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=96)*

Body for [fuchsia.overnet.protocol](https://fuchsia.dev/reference/fuchsia.overnet.protocol/)/[StreamControl.begin_transfer](https://fuchsia.dev/reference/fuchsia.overnet.protocol/#StreamControl.begin_transfer).

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `new_destination_node` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#NodeId` | The new owner of this stream endpoint. | No default |
| `transfer_key` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#TransferKey` | A key to identify this transfer of ownership. | No default |

### ChannelHandle

*Defined in [fuchsia.overnet.protocol/zircon_proxy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/zircon_proxy.fidl;l=33)*

A proxied channel.

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `rights` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#ChannelRights` | The handle rights that are given to this handle. | No default |
| `stream_ref` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#StreamRef` | The Overnet proxy stream that was created to carry this channel. The protocol over said stream will be a `ZirconChannel`. | No default |

### ConnectToService

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=47)*

Create a new stream, labelled `stream_id`, to communicate with the
advertised service `service_name`.

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `service_name` | `string:255` | Which service to connect to. | No default |
| `stream_ref` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#StreamRef` | On which QUIC stream will this service connection be formed. | No default |
| `rights` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#ChannelRights` | The channel rights for this connection. | No default |
| `options` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#ConnectToServiceOptions` | Ancillary options for this connection. | No default |

### Empty

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=43)*

\<EMPTY\>

### EventPairHandle

*Defined in [fuchsia.overnet.protocol/zircon_proxy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/zircon_proxy.fidl;l=62)*

A proxied eventpair.

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `rights` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#EventPairRights` | The handle rights that are given to this handle. | No default |
| `stream_ref` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#StreamRef` | The Overnet proxy stream that was created to carry this eventpair. No payloads will be sent over this stream, however transport and signal control messages will be per the normal StreamControl/SignalUpdate protocols used for all handle types. | No default |

### NodeId

*Defined in [fuchsia.overnet.protocol/labels.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/labels.fidl;l=17)*

Address of a node on the overlay network.

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `id` | `uint64` |   | No default |

### OpenTransfer

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=63)*

Create a new stream, labelled `stream_id`, to finalize the transfer
labelled `transfer_key`.

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `stream_id` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#StreamId` | On which QUIC stream will this service connection be formed. | No default |
| `transfer_key` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#TransferKey` | Transfer key tracking the transfer. | No default |

### SocketHandle

*Defined in [fuchsia.overnet.protocol/zircon_proxy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/zircon_proxy.fidl;l=51)*

A proxied socket.

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `rights` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#SocketRights` | The handle rights that are given to this handle. | No default |
| `stream_ref` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#StreamRef` | The Overnet proxy stream that was created to carry this socket. The protocol over said stream will be a `ZirconSocket`. | No default |
| `socket_type` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#SocketType` | Socket options, per `zx_socket_create`. | No default |

### StreamId

*Defined in [fuchsia.overnet.protocol/labels.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/labels.fidl;l=12)*

Identifies a single overnet stream between two processes on the Overnet
mesh.

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `id` | `uint64` |   | No default |

### TransferInitiator

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=120)*

Body for [fuchsia.overnet.protocol](https://fuchsia.dev/reference/fuchsia.overnet.protocol/)/[StreamRef.transfer_initiator](https://fuchsia.dev/reference/fuchsia.overnet.protocol/#StreamRef.transfer_initiator).

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `stream_id` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#StreamId` | The drain stream for this transfer. Buffered messages from the old proxy end will be sent via this unidirectional QUIC stream and should be processed *prior* to processing any messages from the new endpoint. | No default |
| `new_destination_node` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#NodeId` | The peer node id for this proxy that we should reach out to. Note that this *may* be the same node that receives this message. | No default |
| `transfer_key` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#TransferKey` | A key to identify this transfer of ownership. | No default |

### TransferWaiter

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=133)*

Body for [fuchsia.overnet.protocol](https://fuchsia.dev/reference/fuchsia.overnet.protocol/)/[StreamRef.transfer_waiter](https://fuchsia.dev/reference/fuchsia.overnet.protocol/#StreamRef.transfer_waiter).

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `stream_id` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#StreamId` | The drain stream for this transfer. Buffered messages from the old proxy end will be sent via this unidirectional QUIC stream and should be processed *prior* to processing any messages from the new endpoint. | No default |
| `transfer_key` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#TransferKey` | A key to identify this transfer of ownership. | No default |

### ZirconChannelMessage

*Defined in [fuchsia.overnet.protocol/zircon_proxy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/zircon_proxy.fidl;l=13)*

A single message proxied from a Zircon channel over an Overnet stream.

<br />

| Field | Type | Description | Default |
|---|---|---|---|
| `bytes` | `vector<uint8>:65536` | Bytes part of the payload. | No default |
| `handles` | `vector<https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#ZirconHandle>:64` | Handles part of the payload. | No default |

## **ENUMS**

### SocketType [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

Type: `uint32`

*Defined in [fuchsia.overnet.protocol/zircon_proxy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/zircon_proxy.fidl;l=43)*

The type of socket being communicated via [fuchsia.overnet.protocol](https://fuchsia.dev/reference/fuchsia.overnet.protocol/)/[SocketHandle](https://fuchsia.dev/reference/fuchsia.overnet.protocol/#SocketHandle).

<br />

| Name | Value | Description |
|---|---|---|
| ### DATAGRAM | `0` | A datagram oriented socket. |
| ### STREAM | `1` | A stream oriented socket. |

## **TABLES**

### ConfigRequest

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=29)*

Overall connection configuration request

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|

### ConfigResponse

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=33)*

Overall connection configuration response - sent as the first response
message on the connection stream.

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|

### ConnectToServiceOptions

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=59)*

Options for service connection formation.

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|

### PeerDescription

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=71)*

Description of a single node.

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `services` | `vector<string:255>` | The set of services published by this node. |

### SignalUpdate

*Defined in [fuchsia.overnet.protocol/zircon_proxy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/zircon_proxy.fidl;l=114)*

Signal state updates.
Transported as a side channel for each handle type, these propagate some signal bits.

<br />

| Ordinal | Field | Type | Description |
|---|---|---|---|
| ### 1 | `assert_signals` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#Signals` | Update some signals |

## **UNIONS**

### PeerMessage [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=19)*

Peer-to-peer protocol between two Overnet nodes.
Client QUIC connections send this xunion to servers over QUIC stream 0.

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `connect_to_service` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#ConnectToService` | Request to create a channel to a service exported by this peer. |
| ### 2 | `update_node_description` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#PeerDescription` | Update this peers description on the server. |
| ### 4 | `open_transfer` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#OpenTransfer` | Open a transfered stream. |

<br />

### PeerReply [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=38)*

Reply messages for PeerMessage, where appropriate.
The ConfigResponse message must have been sent already.

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `update_link_status_ack` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#Empty` | Acknowledge an UpdateLinkStatus message |

<br />

### StreamControl [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=80)*

Stream control message: sent instead of usual stream frames if the frame
type is 1 (StreamControl).
TODO: consider defining the stream framing format in FIDL also.

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `begin_transfer` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#BeginTransfer` | A transfer is beginning: the sending node would like to transfer control. |
| ### 2 | `ack_transfer` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#Empty` | Acknowledge a begin_transfer - the sender has seen a previously sent begin_transfer, and responded to it. This should be the last message sent on a regular stream. |
| ### 3 | `end_transfer` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#Empty` | End a transfer - signal that a drain stream has finished draining. This should be the last message sent on a drain stream. |
| ### 4 | `shutdown` | `https://fuchsia.dev/reference/zx//https://fuchsia.dev/reference/zx#Result` | Shutdown the stream with some status. |

<br />

### StreamRef [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.overnet.protocol/peer_protocol.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=106)*

A StreamRef identifies a new proxied stream, and details how that stream
will come to be on the receiving node.

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `creating` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#StreamId` | A new proxy is being created, and the other end of the proxy is on the sending node. This is the simple case, and we just communicate the QUIC stream ID that will be used to carry traffic. |
| ### 2 | `transfer_initiator` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#TransferInitiator` | An existing proxy is being transferred to this node. This node should initiate communication with the peer. |
| ### 3 | `transfer_waiter` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#TransferWaiter` | An existing proxy is being transferred to this node. This node should await contact from the peer. |

<br />

### ZirconHandle [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

*Defined in [fuchsia.overnet.protocol/zircon_proxy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/zircon_proxy.fidl;l=23)*

A single handle to be proxied.
Not all Zircon types are supported.

| Ordinal | Variant | Type | Description |
|---|---|---|---|
| ### 1 | `channel` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#ChannelHandle` | A proxied channel. |
| ### 2 | `socket` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#SocketHandle` | A proxied socket. |
| ### 3 | `event_pair` | `https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#EventPairHandle` | A proxied eventpair. |

<br />

## **BITS**

### ChannelRights [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

Type: `uint32`

*Defined in [fuchsia.overnet.protocol/zircon_proxy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/zircon_proxy.fidl;l=75)*

Channel rights.
Overnet treats rights as per-object type, to reduce the space of things that can be communicated
over its wire format. Transfer rights are always assumed present.

<br />

| Name | Value | Description |
|---|---|---|
| ### READ | 1 |   |
| ### WRITE | 2 |   |

### EventPairRights [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

Type: `uint32`

*Defined in [fuchsia.overnet.protocol/zircon_proxy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/zircon_proxy.fidl;l=93)*

EventPair rights.
Overnet treats rights as per-object type, to reduce the space of things that can be communicated
over its wire format. Transfer rights are always assumed present.

<br />

| Name | Value | Description |
|---|---|---|
| ### DO_NOT_USE | 2147483648 |   |

### Signals [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

Type: `uint32`

*Defined in [fuchsia.overnet.protocol/zircon_proxy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/zircon_proxy.fidl;l=101)*

Signals that can be propagated.
These are deliberately chosen to be different bits than defined in Zircon, to force mapping code
to exist, and minimize the chance that Zircon ABI accidentally becomes Overnet protocol.

<br />

| Name | Value | Description |
|---|---|---|
| ### USER_0 | 1 |   |
| ### USER_1 | 2 |   |
| ### USER_2 | 4 |   |
| ### USER_3 | 8 |   |
| ### USER_4 | 16 |   |
| ### USER_5 | 32 |   |
| ### USER_6 | 64 |   |
| ### USER_7 | 128 |   |

### SocketRights [strict](https://fuchsia.dev/fuchsia-src/reference/fidl/language/language#strict-vs-flexible)

Type: `uint32`

*Defined in [fuchsia.overnet.protocol/zircon_proxy.fidl](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/zircon_proxy.fidl;l=84)*

Socket rights.
Overnet treats rights as per-object type, to reduce the space of things that can be communicated
over its wire format. Transfer rights are always assumed present.

<br />

| Name | Value | Description |
|---|---|---|
| ### READ | 1 |   |
| ### WRITE | 2 |   |

## **CONSTANTS**

| Name | Value | Type | Description |
|---|---|---|---|
| [MAX_SERVICE_NAME_LENGTH](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/peer_protocol.fidl;l=14) | `https://fuchsia.dev/reference/fuchsia.io//https://fuchsia.dev/reference/fuchsia.io#MAX_NAME_LENGTH` | `uint64` |   |
| [TRANSFER_KEY_LENGTH](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/labels.fidl;l=22) | `16` | `uint32` | Length of a transfer key. |

## **ALIASES**

| Name | Value | Description |
|---|---|---|
| [TransferKey](https://cs.opensource.google/fuchsia/fuchsia/+/main:sdk/fidl/fuchsia.overnet.protocol/labels.fidl;l=27) | `array`\[`https://fuchsia.dev/reference/fidl/fuchsia.overnet.protocol#TRANSFER_KEY_LENGTH`\] | A transfer key is used when moving a stream endpoint from one node to another. It identifies a single transfer, should be unique (so, made from random bytes), and should be discarded at the end of the transfer. |