or_circuit_t Struct Reference

#include <or.h>


Data Fields

circuit_t _base
struct circuit_tnext_active_on_p_conn
struct circuit_tprev_active_on_p_conn
circid_t p_circ_id
cell_queue_t p_conn_cells
or_connection_tp_conn
edge_connection_tn_streams
edge_connection_tresolving_streams
crypto_cipher_env_tp_crypto
crypto_cipher_env_tn_crypto
crypto_digest_env_tp_digest
crypto_digest_env_tn_digest
struct or_circuit_trend_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


Detailed Description

An or_circuit_t holds information needed to implement a circuit at an OR.

Field Documentation

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().

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().

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().

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().

Stores KH for the handshake.

Referenced by onionskin_answer(), and rend_mid_establish_intro().

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().

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().

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().


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

Generated on Tue May 25 00:31:16 2010 for tor by  doxygen 1.5.6