tor
master
|
#include <or.h>
Data Fields | |
circuit_t | base_ |
edge_connection_t * | p_streams |
uint32_t | n_read_circ_bw |
uint32_t | n_written_circ_bw |
uint32_t | n_delivered_read_circ_bw |
uint32_t | n_delivered_written_circ_bw |
uint32_t | n_overhead_read_circ_bw |
uint32_t | n_overhead_written_circ_bw |
cpath_build_state_t * | build_state |
crypt_path_t * | cpath |
rend_data_t * | rend_data |
struct hs_ident_circuit_t * | hs_ident |
struct circuit_guard_state_t * | guard_state |
int | global_origin_circuit_list_idx |
unsigned int | remaining_relay_early_cells: 4 |
unsigned int | is_ancient: 1 |
unsigned int | has_opened: 1 |
path_state_bitfield_t | path_state: 3 |
unsigned int | unusable_for_new_conns: 1 |
uint8_t | pathbias_shouldcount |
streamid_t | pathbias_probe_id |
uint32_t | pathbias_probe_nonce |
unsigned int | hs_circ_has_timed_out: 1 |
unsigned int | relaxed_timeout: 1 |
unsigned int | hs_service_side_rend_circ_has_been_relaunched: 1 |
uint8_t | relay_early_commands [MAX_RELAY_EARLY_CELLS_PER_CIRCUIT] |
int | relay_early_cells_sent |
streamid_t | next_stream_id |
crypto_pk_t * | intro_key |
uint32_t | global_identifier |
unsigned int | isolation_values_set: 1 |
unsigned int | isolation_any_streams_attached: 1 |
uint8_t | isolation_flags_mixed |
smartlist_t * | prepend_policy |
int | circuit_idle_timeout |
Isolation parameters | |
If any streams have been associated with this circ (isolation_values_set == 1), and all streams associated with the circuit have had the same value for some field ((isolation_flags_mixed & ISO_FOO) == 0), then these elements hold the value for that field. Note again that "associated" is not the same as "attached": we preliminarily associate streams with a circuit while the circuit is being launched, so that we can tell whether we need to launch more circuits. | |
uint8_t | client_proto_type |
uint8_t | client_proto_socksver |
uint16_t | dest_port |
tor_addr_t | client_addr |
char * | dest_address |
int | session_group |
unsigned | nym_epoch |
size_t | socks_username_len |
uint8_t | socks_password_len |
char * | socks_username |
char * | socks_password |
uint64_t | associated_isolated_stream_global_id |
An origin_circuit_t holds data necessary to build and use a circuit.
uint64_t associated_isolated_stream_global_id |
Global identifier for the first stream attached here; used by ISO_STREAM.
cpath_build_state_t* build_state |
Build state for this circuit. It includes the intended path length, the chosen exit router, rendezvous information, etc.
int circuit_idle_timeout |
How long do we wait before closing this circuit if it remains completely idle after it was built, in seconds? This value is randomized on a per-circuit basis from CircuitsAvailableTimoeut to 2*CircuitsAvailableTimoeut.
crypt_path_t* cpath |
The doubly-linked list of crypt_path_t entries, one per hop, for this circuit. This includes ciphers for each hop, integrity-checking digests for each hop, and package/delivery windows for each hop.
uint32_t global_identifier |
Quasi-global identifier for this circuit; used for control.c
int global_origin_circuit_list_idx |
Index into global_origin_circuit_list for this circuit. -1 if not present.
struct circuit_guard_state_t* guard_state |
Holds the data that the entry guard system uses to track the status of the guard this circuit is using, and thereby to determine whether this circuit can be used.
unsigned int has_opened |
Set if this circuit has already been opened. Used to detect cannibalized circuits.
unsigned int hs_circ_has_timed_out |
Set iff this is a hidden-service circuit which has timed out according to our current circuit-build timeout, but which has been kept around because it might still succeed in connecting to its destination, and which is not a fully-connected rendezvous circuit.
(We clear this flag for client-side rendezvous circuits when they are 'joined' to the other side's rendezvous circuit, so that connection_ap_handshake_attach_circuit can put client streams on the circuit. We also clear this flag for service-side rendezvous circuits when they are 'joined' to a client's rend circ, but only for symmetry with the client case. Client-side introduction circuits are closed when we get a joined rend circ, and service-side introduction circuits never have this flag set.)
struct hs_ident_circuit_t* hs_ident |
Holds hidden service identifier on either client or service side. This is for both introduction and rendezvous circuit.
unsigned int hs_service_side_rend_circ_has_been_relaunched |
Set iff this is a service-side rendezvous circuit for which a new connection attempt has been launched. We consider launching a new service-side rend circ to a client when the previous one fails; now that we don't necessarily close a service-side rend circ when we launch a new one to the same client, this flag keeps us from launching two retries for the same failed rend circ.
unsigned int is_ancient |
Set if this circuit is insanely old and we already informed the user
unsigned int isolation_any_streams_attached |
True iff any stream has ever been attached to this circuit.
In a better world we could use timestamp_dirty for this, but timestamp_dirty is far too overloaded at the moment.
uint8_t isolation_flags_mixed |
A bitfield of ISO_* flags for every isolation field such that this circuit has had streams with more than one value for that field attached to it.
unsigned int isolation_values_set |
True if we have associated one stream to this circuit, thereby setting the isolation parameters for this circuit. Note that this doesn't necessarily mean that we've attached any streams to the circuit: we may only have marked up this circuit during the launch process.
uint32_t n_delivered_read_circ_bw |
Total known-valid relay cell bytes since last call to control_event_circ_bandwidth_used(). Only used if we're configured to emit CIRC_BW events.
uint32_t n_delivered_written_circ_bw |
Total written relay cell bytes since last call to control_event_circ_bandwidth_used(). Only used if we're configured to emit CIRC_BW events.
uint32_t n_overhead_read_circ_bw |
Total overhead data in all known-valid relay data cells since last call to control_event_circ_bandwidth_used(). Only used if we're configured to emit CIRC_BW events.
uint32_t n_overhead_written_circ_bw |
Total written overhead data in all relay data cells since last call to control_event_circ_bandwidth_used(). Only used if we're configured to emit CIRC_BW events.
uint32_t n_read_circ_bw |
Bytes read on this circuit since last call to control_event_circ_bandwidth_used(). Only used if we're configured to emit CIRC_BW events.
uint32_t n_written_circ_bw |
Bytes written to on this circuit since last call to control_event_circ_bandwidth_used(). Only used if we're configured to emit CIRC_BW events.
streamid_t next_stream_id |
The next stream_id that will be tried when we're attempting to construct a new AP stream originating at this circuit.
edge_connection_t* p_streams |
Linked list of AP streams (or EXIT streams if hidden service) associated with this circuit.
path_state_bitfield_t path_state |
Path bias state machine. Used to ensure integrity of our circuit building and usage accounting. See path_state_t for more details.
streamid_t pathbias_probe_id |
For path probing. Store the temporary probe stream ID for response comparison
uint32_t pathbias_probe_nonce |
For path probing. Store the temporary probe address nonce (in host byte order) for response comparison.
uint8_t pathbias_shouldcount |
Tristate variable to guard against pathbias miscounting due to circuit purpose transitions changing the decision of pathbias_should_count(). This variable is informational only. The current results of pathbias_should_count() are the official decision for pathbias accounting.
smartlist_t* prepend_policy |
A list of addr_policy_t for this circuit in particular. Used by adjust_exit_policy_from_exitpolicy_failure.
unsigned int relaxed_timeout |
Set iff this circuit has been given a relaxed timeout because no circuits have opened. Used to prevent spamming logs.
int relay_early_cells_sent |
How many RELAY_EARLY cells have been sent over this circuit? This is for debugging task 878, too.
uint8_t relay_early_commands[MAX_RELAY_EARLY_CELLS_PER_CIRCUIT] |
What commands were sent over this circuit that decremented the RELAY_EARLY counter? This is for debugging task 878.
unsigned int remaining_relay_early_cells |
How many more relay_early cells can we send on this circuit, according to the specification?
rend_data_t* rend_data |
Holds all rendezvous data on either client or service side.