Data Fields
or_connection_t Struct Reference

#include <or_connection_st.h>

Data Fields

connection_t base_
char identity_digest [DIGEST_LEN]
char * ext_or_conn_id
char * ext_or_auth_correct_client_hash
char * ext_or_transport
char * nickname
struct tor_tls_ttls
int tls_error
channel_tls_t * chan
tor_addr_t real_addr
unsigned int is_canonical:1
unsigned int is_outgoing:1
unsigned int proxy_type:2
unsigned int wide_circ_ids:1
unsigned int have_noted_bootstrap_problem:1
unsigned int tracked_for_dos_mitigation: 1
uint16_t link_proto
uint16_t idle_timeout
time_t timestamp_lastempty
token_bucket_rw_t bucket
uint64_t bytes_xmitted
uint64_t bytes_xmitted_by_tls

Detailed Description

Subtype of connection_t for an "OR connection" – that is, one that speaks cells over TLS.

Definition at line 17 of file or_connection_st.h.

Field Documentation

◆ bucket

token_bucket_rw_t or_connection_t::bucket

Used for rate limiting when the connection is in state CONN_OPEN.

Definition at line 82 of file or_connection_st.h.

Referenced by connection_or_update_token_buckets_helper().

◆ chan

channel_tls_t* or_connection_t::chan

◆ ext_or_auth_correct_client_hash

char* or_connection_t::ext_or_auth_correct_client_hash

This is the ClientHash value we expect to receive from the client during the Extended ORPort authentication protocol. We compute it upon receiving the ClientNoce from the client, and we compare it with the acual ClientHash value sent by the client.

Definition at line 31 of file or_connection_st.h.

◆ ext_or_conn_id

char* or_connection_t::ext_or_conn_id

Extended ORPort connection identifier.

Definition at line 25 of file or_connection_st.h.

Referenced by connection_or_remove_from_ext_or_id_map(), and connection_or_set_ext_or_identifier().

◆ ext_or_transport

char* or_connection_t::ext_or_transport

String carrying the name of the pluggable transport (e.g. "obfs2") that is obfuscating this connection. If no pluggable transports are used, it's NULL.

Definition at line 35 of file or_connection_st.h.

◆ handshake_state

or_handshake_state_t* or_connection_t::handshake_state

◆ have_noted_bootstrap_problem

unsigned int or_connection_t::have_noted_bootstrap_problem

True iff this connection has had its bootstrap failure logged with control_event_bootstrap_problem.

Definition at line 65 of file or_connection_st.h.

Referenced by MOCK_IMPL().

◆ identity_digest

char or_connection_t::identity_digest[DIGEST_LEN]

Hash of the public RSA key for the other side's identity key, or zeroes if the other side hasn't shown us a valid identity key.

Definition at line 22 of file or_connection_st.h.

Referenced by connection_or_check_canonicity(), connection_or_clear_identity(), connection_or_client_learned_peer_id(), and connection_or_update_token_buckets_helper().

◆ idle_timeout

uint16_t or_connection_t::idle_timeout

How long can this connection sit with no circuits on it before we close it? Based on IDLE_CIRCUIT_TIMEOUT_{NON,}CANONICAL and on is_canonical, randomized.

Definition at line 73 of file or_connection_st.h.

◆ is_canonical

unsigned int or_connection_t::is_canonical

Should this connection be used for extending circuits to the server matching the identity_digest field? Set to true if we're pretty sure we aren't getting MITMed, either because we're connected to an address listed in a server descriptor, or because an authenticated NETINFO cell listed the address we're connected to as recognized.

Definition at line 57 of file or_connection_st.h.

Referenced by connection_or_group_set_badness_().

◆ is_outgoing

unsigned int or_connection_t::is_outgoing

True iff this is an outgoing connection.

Definition at line 60 of file or_connection_st.h.

◆ link_proto

uint16_t or_connection_t::link_proto

What protocol version are we using? 0 for "none negotiated yet."

Definition at line 71 of file or_connection_st.h.

Referenced by connection_fetch_var_cell_from_buf().

◆ nickname

char* or_connection_t::nickname

Nickname of OR on other side (if any).

Definition at line 37 of file or_connection_st.h.

◆ proxy_type

unsigned int or_connection_t::proxy_type


Definition at line 61 of file or_connection_st.h.

Referenced by connection_or_finished_connecting().

◆ real_addr

tor_addr_t or_connection_t::real_addr

The actual address that this connection came from or went to. The addr field is prone to getting overridden by the address from the router descriptor matching identity_digest.

Definition at line 47 of file or_connection_st.h.

Referenced by connection_or_check_canonicity().

◆ timestamp_lastempty

time_t or_connection_t::timestamp_lastempty

When was the outbuf last completely empty?

Definition at line 80 of file or_connection_st.h.

◆ tls

struct tor_tls_t* or_connection_t::tls

◆ tls_error

int or_connection_t::tls_error

Last tor_tls error code.

Definition at line 40 of file or_connection_st.h.

◆ tracked_for_dos_mitigation

unsigned int or_connection_t::tracked_for_dos_mitigation

True iff this is a client connection and its address has been put in the geoip cache and handled by the DoS mitigation subsystem. We use this to insure we have a coherent count of concurrent connection.

Definition at line 69 of file or_connection_st.h.

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