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_auth_correct_client_hash
char * ext_or_transport
char * nickname
struct tor_tls_ttls
int tls_error
channel_tls_t * chan
tor_addr_port_t canonical_orport
unsigned int is_canonical:1
unsigned int is_outgoing:1
unsigned int proxy_type:3
unsigned int wide_circ_ids:1
unsigned int potentially_used_for_bootstrapping:1
unsigned int have_noted_bootstrap_problem:1
unsigned int tracked_for_dos_mitigation: 1
unsigned int is_pt: 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 22 of file or_connection_st.h.

Field Documentation

◆ bucket

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

Definition at line 101 of file or_connection_st.h.

Referenced by connection_or_update_token_buckets_helper().

◆ canonical_orport

tor_addr_port_t canonical_orport

The "canonical" address and port for this relay's ORPort, if this is a known relay.

An ORPort is "canonical" in this sense only if it is the same ORPort that is listed for this identity in the consensus we have.

This field may be set on outbound connections for any relay, and on inbound connections after authentication. If we don't know the relay's identity, or if we don't have the relay's identity in our consensus, we leave this address as UNSPEC.

Definition at line 62 of file or_connection_st.h.

◆ chan

channel_tls_t* chan

◆ ext_or_auth_correct_client_hash

char* 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 ClientNonce from the client, and we compare it with the actual ClientHash value sent by the client.

Definition at line 34 of file or_connection_st.h.

◆ ext_or_transport

char* 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 38 of file or_connection_st.h.

◆ handshake_state

or_handshake_state_t* handshake_state

◆ have_noted_bootstrap_problem

unsigned int have_noted_bootstrap_problem

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

Definition at line 82 of file or_connection_st.h.

Referenced by control_event_bootstrap_prob_or().

◆ identity_digest

char 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 27 of file or_connection_st.h.

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

◆ idle_timeout

uint16_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 92 of file or_connection_st.h.

◆ is_canonical

unsigned int 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 69 of file or_connection_st.h.

Referenced by connection_or_group_set_badness_().

◆ is_outgoing

unsigned int is_outgoing

True iff this is an outgoing connection.

Definition at line 72 of file or_connection_st.h.

◆ is_pt

unsigned int is_pt

True iff this connection is using a pluggable transport

Definition at line 88 of file or_connection_st.h.

◆ link_proto

uint16_t link_proto

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

Definition at line 90 of file or_connection_st.h.

Referenced by connection_fetch_var_cell_from_buf().

◆ nickname

char* nickname

Nickname of OR on other side (if any).

Definition at line 40 of file or_connection_st.h.

◆ potentially_used_for_bootstrapping

unsigned int potentially_used_for_bootstrapping

True iff a failure on this connection indicates a possible bootstrapping problem. We set this as true if we notice that this connection could handle a pending origin circuit, or if we launch it to handle an origin circuit.

Definition at line 79 of file or_connection_st.h.

Referenced by control_event_bootstrap_prob_or().

◆ proxy_type

unsigned int proxy_type


Definition at line 73 of file or_connection_st.h.

Referenced by connection_or_finished_connecting(), and connection_or_finished_flushing().

◆ timestamp_lastempty

time_t timestamp_lastempty

When was the outbuf last completely empty?

Definition at line 99 of file or_connection_st.h.

◆ tls

struct tor_tls_t* tls

◆ tls_error

int tls_error

Last tor_tls error code.

Definition at line 43 of file or_connection_st.h.

◆ tracked_for_dos_mitigation

unsigned int 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 86 of file or_connection_st.h.

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