20#define CONFLUX_FOR_EACH_LEG_BEGIN(cfx, var) \
21 SMARTLIST_FOREACH_BEGIN(cfx->legs, conflux_leg_t *, var)
22#define CONFLUX_FOR_EACH_LEG_END(var) \
23 SMARTLIST_FOREACH_END(var)
26#define CONFLUX_NUM_LEGS(cfx) (smartlist_len(cfx->legs))
53 uint8_t relay_command);
65 uint8_t relay_command);
67#define conflux_relay_msg_free(msg) \
68 FREE_AND_NULL(conflux_msg_t, conflux_relay_msg_free_, (msg))
71#ifdef TOR_CONFLUX_PRIVATE
const congestion_control_t * circuit_ccontrol(const circuit_t *circ)
uint64_t conflux_get_max_seq_recv(const conflux_t *cfx)
uint64_t conflux_get_max_seq_sent(const conflux_t *cfx)
conflux_leg_t * conflux_get_leg(conflux_t *cfx, const circuit_t *circ)
void conflux_note_cell_sent(conflux_t *cfx, circuit_t *circ, uint8_t relay_command)
void conflux_update_rtt(conflux_t *cfx, circuit_t *circ, uint64_t rtt_usec)
bool conflux_should_multiplex(int relay_command)
circuit_t * conflux_decide_next_circ(conflux_t *cfx)
uint64_t conflux_get_circ_bytes_allocation(const circuit_t *circ)
void conflux_relay_msg_free_(conflux_msg_t *msg)
circuit_t * conflux_decide_circ_for_send(conflux_t *cfx, circuit_t *orig_circ, uint8_t relay_command)
conflux_msg_t * conflux_dequeue_relay_msg(conflux_t *cfx)
bool conflux_process_relay_msg(conflux_t *cfx, circuit_t *in_circ, crypt_path_t *layer_hint, const relay_msg_t *msg)
int conflux_process_switch_command(circuit_t *in_circ, crypt_path_t *layer_hint, const relay_msg_t *msg)
size_t conflux_handle_oom(size_t bytes_to_remove)
uint64_t conflux_get_total_bytes_allocation(void)
Structure definitions for conflux multipath.
A relay message which contains a relay command and parameters, if any, that is from a relay cell.