Merge branch 'fix-changelogs' into 'main'
[tor.git] / src / trunnel / conflux.trunnel
blob4f1855faf3c4cda2793d9041c582df9a18d0c448
1 /*
2  * This file contains the definition for the Conflux related cells. See
3  * proposal 329.
4  */
6 /* No Opinion means the endpoint can choose whatever it thinks is best. */
7 const CONFLUX_UX_NO_OPINION = 0x00;
8 /* Min latency always only uses the lowest RTT */
9 const CONFLUX_UX_MIN_LATENCY = 0x01;
10 /* Min latency always only uses the lowest RTT */
11 const CONFLUX_UX_LOW_MEM_LATENCY = 0x02;
12 /* Use a high-throughput algorithm that maximizes throughput
13  * by using the full congestion window of all circuits, at the expense
14  * of more reordering queue at the receiver */
15 const CONFLUX_UX_HIGH_THROUGHPUT  = 0x03;
16 /* THRPT_LO uses a high-throughput algorithm that tries to minimize
17  * out-of-order queues at the receiver */
18 const CONFLUX_UX_LOW_MEM_THROUGHPUT  = 0x04;
20 /* The RELAY_CONFLUX_LINK definition. */
21 struct trn_cell_conflux_link {
22   /* Version field. */
23   u8 version IN [0x01];
25   /* Payload */
26   u8 payload[];
29 /* The RELAY_CIRCUIT_LINKED definition. */
30 struct trn_cell_conflux_linked {
31   /* Version field. */
32   u8 version IN [0x01];
34   /* Payload of the cell. */
35   u8 payload[];
38 /* The RELAY_CONFLUX_LINKED_ACK definition. */
39 struct trn_cell_conflux_linked_ack {
40   /* Payload. At the moment, empty. */
41   u8 payload[];
44 /* The RELAY_CONFLUX_SWITCH definition. */
45 struct trn_cell_conflux_switch {
46   /* Relative sequence number. */
47   u32 seqnum;
50 /* The payload version 1 of RELAY_CONFLUX_LINK and RELAY_CIRCUIT_LINKED cells.
51  * */
52 struct trn_cell_conflux_link_payload_v1 {
53   /* Used to identify the other conflux to link with. */
54   u8 nonce[32];
56   /* Last sequence number sent and received. */
57   u64 last_seqno_sent;
58   u64 last_seqno_recv;
60   /* Desired user experience behavior */
61   u8 desired_ux IN [CONFLUX_UX_NO_OPINION,
62                    CONFLUX_UX_MIN_LATENCY,
63                    CONFLUX_UX_LOW_MEM_LATENCY,
64                    CONFLUX_UX_LOW_MEM_THROUGHPUT,
65                    CONFLUX_UX_HIGH_THROUGHPUT];