Tor 0.4.9.0-alpha-dev
Data Fields
conflux_t Struct Reference

#include <conflux_st.h>

Data Fields

struct conflux_params_t params
 
smartlist_tlegs
 
smartlist_tooo_q
 
uint64_t last_seq_delivered
 
uint64_t cells_until_switch
 
struct conflux_leg_tcurr_leg
 
struct conflux_leg_tprev_leg
 
uint8_t nonce [DIGEST256_LEN]
 
bool in_full_teardown
 
unsigned int num_leg_launch
 

Detailed Description

Fields for conflux multipath support

Definition at line 86 of file conflux_st.h.

Field Documentation

◆ cells_until_switch

uint64_t cells_until_switch

The estimated remaining number of cells we can send on this circuit before we are allowed to switch legs.

Definition at line 113 of file conflux_st.h.

Referenced by conflux_can_switch().

◆ curr_leg

struct conflux_leg_t* curr_leg

Current circuit leg. Only use this with conflux_get_circ_for_leg() for bounds checking.

Definition at line 117 of file conflux_st.h.

Referenced by conflux_decide_next_circ().

◆ in_full_teardown

bool in_full_teardown

Indicate if this conflux set is in full teardown. We mark it at the first close in case of a total teardown so we avoid recursive calls of circuit mark for close.

Definition at line 129 of file conflux_st.h.

Referenced by conflux_decide_next_circ(), and conflux_mark_all_for_close().

◆ last_seq_delivered

uint64_t last_seq_delivered

Absolute sequence number of cells delivered to streams since start. (ie: this is updated after dequeue from the ooo_q priority queue).

Definition at line 108 of file conflux_st.h.

Referenced by validate_unlinked_legs().

◆ legs

smartlist_t* legs

List of all linked conflux_leg_t for this set. Once a leg is in that list, it can be used to transmit data.

Definition at line 93 of file conflux_st.h.

Referenced by conflux_get_leg(), conflux_mark_all_for_close(), get_exit_for_nonce(), and linked_circuit_free().

◆ nonce

uint8_t nonce[DIGEST256_LEN]

The nonce that joins these

Definition at line 124 of file conflux_st.h.

Referenced by cfx_add_leg(), conflux_log_set(), linked_pool_add(), unlinked_pool_add(), and unlinked_pool_del().

◆ num_leg_launch

unsigned int num_leg_launch

Number of leg launch that we've done for this set. We keep this value because there is a maximum allowed in order to avoid side channel(s).

Definition at line 133 of file conflux_st.h.

Referenced by launch_leg_is_allowed().

◆ ooo_q

smartlist_t* ooo_q

Out-of-order priority queue of conflux_cell_t *, heapified on conflux_cell_t.seq number (lowest at top of heap).

XXX: We are most likely to insert cells at either the head or the tail. Verify that is fast-path wrt smartlist priority queues, and not a memmove nightmare. If so, we may need a real linked list, or a packed_cell_t list.

Definition at line 103 of file conflux_st.h.

Referenced by linked_circuit_free().

◆ params

struct conflux_params_t params

Cached parameters for this circuit

Definition at line 88 of file conflux_st.h.

◆ prev_leg

struct conflux_leg_t* prev_leg

Previous circuit leg. Only use this with conflux_get_circ_for_leg() for bounds checking.

Definition at line 121 of file conflux_st.h.

Referenced by conflux_can_switch().


The documentation for this struct was generated from the following file: