#include <or.h>
Data Fields | |
circuit_t | _base |
struct circuit_t * | next_active_on_p_conn |
struct circuit_t * | prev_active_on_p_conn |
circid_t | p_circ_id |
cell_queue_t | p_conn_cells |
or_connection_t * | p_conn |
edge_connection_t * | n_streams |
edge_connection_t * | resolving_streams |
crypto_cipher_env_t * | p_crypto |
crypto_cipher_env_t * | n_crypto |
crypto_digest_env_t * | p_digest |
crypto_digest_env_t * | n_digest |
struct or_circuit_t * | rend_splice |
char | rend_token [REND_TOKEN_LEN] |
char | handshake_digest [DIGEST_LEN] |
unsigned int | remaining_relay_early_cells: 4 |
unsigned int | is_first_hop: 1 |
uint32_t | processed_cells |
uint64_t | total_cell_waiting_time |
cell_ewma_t | p_cell_ewma |
struct circuit_t* or_circuit_t::next_active_on_p_conn [read] |
Next circuit in the doubly-linked ring of circuits waiting to add cells to p_conn. NULL if we have no cells pending, or if we're not linked to an OR connection.
Referenced by circuit_set_p_circid_orconn(), HT_HEAD(), and next_circ_on_conn_p().
struct circuit_t* or_circuit_t::prev_active_on_p_conn [read] |
Previous circuit in the doubly-linked ring of circuits waiting to add cells to p_conn. NULL if we have no cells pending, or if we're not linked to an OR connection.
Referenced by prev_circ_on_conn_p().
The circuit_id used in the previous (backward) hop of this circuit.
Referenced by _circuit_mark_for_close(), assert_circuit_ok(), assign_onionskin_to_cpuworker(), circuit_dump_by_conn(), circuit_expire_old_circuits_serverside(), circuit_get_by_circid_orconn_impl(), circuit_receive_relay_cell(), HT_HEAD(), onion_pending_remove(), onionskin_answer(), relay_send_command_from_edge(), rend_mid_establish_intro(), rend_mid_establish_rendezvous(), rend_mid_introduce(), and rend_mid_rendezvous().
Queue of cells waiting to be transmitted on p_conn.
Referenced by append_cell_to_circuit_queue(), circuit_free(), circuit_set_p_circid_orconn(), connection_or_flush_from_first_active_circuit(), dump_cell_pool_usage(), and HT_HEAD().
The OR connection that is previous in this circuit.
Referenced by _circuit_mark_for_close(), assert_circuit_ok(), assign_onionskin_to_cpuworker(), circuit_expire_old_circuits_serverside(), circuit_get_by_circid_orconn_impl(), circuit_package_relay_cell(), circuit_receive_relay_cell(), circuit_unlink_all_from_or_conn(), connection_exit_begin_conn(), HT_HEAD(), make_circuit_active_on_conn(), make_circuit_inactive_on_conn(), next_circ_on_conn_p(), onion_next_task(), onionskin_answer(), and prev_circ_on_conn_p().
Linked list of Exit streams associated with this circuit.
Referenced by _circuit_mark_for_close(), assert_circuit_ok(), circuit_consider_stop_edge_reading(), circuit_detach_stream(), circuit_expire_old_circuits_serverside(), connection_exit_connect_dir(), dns_found_answer(), dns_resolve(), and set_streams_blocked_on_circ().
Linked list of Exit streams associated with this circuit that are still being resolved.
Referenced by _circuit_mark_for_close(), circuit_detach_stream(), circuit_expire_old_circuits_serverside(), circuit_free_all(), and dns_resolve().
The cipher used by intermediate hops for cells heading toward the OP.
Referenced by assert_circuit_ok(), circuit_free(), circuit_package_relay_cell(), and onionskin_answer().
The cipher used by intermediate hops for cells heading away from the OP.
Referenced by assert_circuit_ok(), circuit_free(), and onionskin_answer().
The integrity-checking digest used by intermediate hops, for cells packaged here and heading towards the OP.
Referenced by assert_circuit_ok(), circuit_free(), circuit_package_relay_cell(), and onionskin_answer().
The integrity-checking digest used by intermediate hops, for cells packaged at the OP and arriving here.
Referenced by assert_circuit_ok(), circuit_free(), and onionskin_answer().
struct or_circuit_t* or_circuit_t::rend_splice [read] |
Points to spliced circuit if purpose is REND_ESTABLISHED, and circuit is not marked for close.
Referenced by _circuit_mark_for_close(), assert_circuit_ok(), circuit_free(), circuit_receive_relay_cell(), and rend_mid_rendezvous().
char or_circuit_t::rend_token[REND_TOKEN_LEN] |
A hash of location-hidden service's PK if purpose is INTRO_POINT, or a rendezvous cookie if purpose is REND_POINT_WAITING. Filled with zeroes otherwise. ???? move to a subtype or adjunct structure? Wastes 20 bytes. -NM
Referenced by rend_mid_establish_intro(), rend_mid_establish_rendezvous(), and rend_mid_rendezvous().
char or_circuit_t::handshake_digest[DIGEST_LEN] |
Stores KH for the handshake.
Referenced by onionskin_answer(), and rend_mid_establish_intro().
unsigned int or_circuit_t::remaining_relay_early_cells |
How many more relay_early cells can we send on this circuit, according to the specification?
Referenced by command_process_relay_cell(), and or_circuit_new().
unsigned int or_circuit_t::is_first_hop |
True iff this circuit was made with a CREATE_FAST cell.
Referenced by circuit_expire_old_circuits_serverside(), connection_exit_begin_conn(), and onionskin_answer().
uint32_t or_circuit_t::processed_cells |
Number of cells that were removed from circuit queue; reset every time when writing buffer stats to disk.
Referenced by connection_or_flush_from_first_active_circuit(), and rep_hist_buffer_stats_add_circ().
Total time in milliseconds that cells spent in both app-ward and exit-ward queues of this circuit; reset every time when writing buffer stats to disk.
Referenced by connection_or_flush_from_first_active_circuit(), and rep_hist_buffer_stats_add_circ().
The EWMA count for the number of cells flushed from the p_conn_cells queue.
Referenced by assert_active_circuits_ok(), make_circuit_active_on_conn(), make_circuit_inactive_on_conn(), and or_circuit_new().