Tor 0.4.9.0-alpha-dev
Data Fields
edge_connection_t Struct Reference

#include <edge_connection_st.h>

Data Fields

connection_t base_
 
struct edge_connection_tnext_stream
 
int package_window
 
int deliver_window
 
struct circuit_ton_circuit
 
struct crypt_path_tcpath_layer
 
struct hs_ident_edge_conn_ths_ident
 
uint32_t address_ttl
 
uint32_t begincell_flags
 
streamid_t stream_id
 
uint16_t end_reason
 
uint32_t n_read
 
uint32_t n_written
 
unsigned int is_dns_request:1
 
unsigned int is_reverse_dns_lookup:1
 
unsigned int edge_has_sent_end:1
 
uint64_t dirreq_id
 
token_bucket_rw_t bucket
 
uint64_t drain_start_usec
 
uint32_t drained_bytes
 
uint32_t prev_drained_bytes
 
uint32_t ewma_drain_rate
 
uint32_t ewma_rate_last_sent
 
uint32_t total_bytes_xmit
 
uint8_t num_xoff_recv
 
uint8_t num_xon_recv
 
uint8_t xoff_sent: 1
 
uint8_t xoff_received: 1
 

Detailed Description

Subtype of connection_t for an "edge connection" – that is, an entry (ap) connection, or an exit.

Definition at line 22 of file edge_connection_st.h.

Field Documentation

◆ address_ttl

uint32_t address_ttl

TTL for address-to-addr mapping on exit connection. Exit connections only.

Definition at line 47 of file edge_connection_st.h.

Referenced by send_resolved_cell(), and set_exitconn_info_from_resolve().

◆ base_

connection_t base_

Definition at line 23 of file edge_connection_st.h.

◆ begincell_flags

uint32_t begincell_flags

Definition at line 49 of file edge_connection_st.h.

◆ bucket

Used for rate limiting the read side of this edge connection when congestion control is enabled on its circuit. The XON cell ewma_drain_rate parameter is used to set the bucket limits.

Definition at line 84 of file edge_connection_st.h.

◆ cpath_layer

struct crypt_path_t* cpath_layer

A pointer to which node in the circ this conn exits at. Set for AP connections and for hidden service exit connections. Note that edges that use conflux should use the helpers in conflux_util.c instead of accessing this directly.

Definition at line 40 of file edge_connection_st.h.

Referenced by circuit_detach_stream(), connection_ap_get_begincell_flags(), connection_edge_send_command(), and edge_uses_flow_control().

◆ deliver_window

int deliver_window

How many more relay cells can end at me?

Definition at line 29 of file edge_connection_st.h.

◆ dirreq_id

uint64_t dirreq_id

Unique ID for directory requests; this used to be in connection_t, but that's going away and being used on channels instead. We still tag edge connections with dirreq_id from circuits, so it's copied here.

Definition at line 77 of file edge_connection_st.h.

◆ drain_start_usec

uint64_t drain_start_usec

Monotime timestamp of the last time we sent a flow control message for this edge, used to compute advisory rates

Definition at line 89 of file edge_connection_st.h.

◆ drained_bytes

uint32_t drained_bytes

Number of bytes written since we either emptied our buffers, or sent an advisory drate rate. Can wrap, buf if so, we must reset the usec timestamp above. (Or make this u64, idk).

Definition at line 96 of file edge_connection_st.h.

◆ edge_has_sent_end

unsigned int edge_has_sent_end

For debugging; only used on edge connections. Set once we've set the stream end, and check in connection_about_to_close_connection().

Definition at line 69 of file edge_connection_st.h.

Referenced by connection_edge_about_to_close(), and connection_edge_end().

◆ end_reason

uint16_t end_reason

The reason why this connection is closing; passed to the controller.

Definition at line 56 of file edge_connection_st.h.

◆ ewma_drain_rate

uint32_t ewma_drain_rate

N_EWMA of the drain rate of writes on this edge conn while buffers were present.

Definition at line 103 of file edge_connection_st.h.

Referenced by circuit_send_stream_xon(), and stream_drain_rate_changed().

◆ ewma_rate_last_sent

uint32_t ewma_rate_last_sent

The ewma drain rate the last time we sent an xon.

Definition at line 108 of file edge_connection_st.h.

Referenced by stream_drain_rate_changed().

◆ hs_ident

struct hs_ident_edge_conn_t* hs_ident

Definition at line 45 of file edge_connection_st.h.

◆ is_dns_request

unsigned int is_dns_request

True iff this connection is for a DNS request only.

Definition at line 65 of file edge_connection_st.h.

◆ is_reverse_dns_lookup

unsigned int is_reverse_dns_lookup

True iff this connection is for a PTR DNS request. (exit only)

Definition at line 67 of file edge_connection_st.h.

Referenced by set_exitconn_info_from_resolve().

◆ n_read

uint32_t n_read

Bytes read since last call to control_event_stream_bandwidth_used()

Definition at line 59 of file edge_connection_st.h.

◆ n_written

uint32_t n_written

Bytes written since last call to control_event_stream_bandwidth_used()

Definition at line 62 of file edge_connection_st.h.

◆ next_stream

struct edge_connection_t* next_stream

◆ num_xoff_recv

uint8_t num_xoff_recv

Number of XOFFs received

Definition at line 118 of file edge_connection_st.h.

◆ num_xon_recv

uint8_t num_xon_recv

Number of XONs received

Definition at line 121 of file edge_connection_st.h.

◆ on_circuit

struct circuit_t* on_circuit

◆ package_window

int package_window

How many more relay cells can I send into the circuit?

Definition at line 27 of file edge_connection_st.h.

Referenced by circuit_resume_edge_reading_helper().

◆ prev_drained_bytes

uint32_t prev_drained_bytes

Definition at line 97 of file edge_connection_st.h.

◆ stream_id

streamid_t stream_id

Flags sent or received in the BEGIN cell for this connection The stream ID used for this edge connection on its circuit

Definition at line 52 of file edge_connection_st.h.

Referenced by connection_half_edge_add(), and relay_lookup_conn().

◆ total_bytes_xmit

uint32_t total_bytes_xmit

The following fields are used to count the total bytes sent on this stream, and compare them to the number of XON and XOFFs received, so that clients can check rate limits of XOFF/XON to prevent dropmark attacks.

Definition at line 115 of file edge_connection_st.h.

Referenced by flow_control_note_sent_data().

◆ xoff_received

uint8_t xoff_received

Flag that tells us if an XOFF has been received; cleared when we get an XON. Used to ensure that this edge keeps reads on its edge socket disabled.

Definition at line 131 of file edge_connection_st.h.

Referenced by circuit_resume_edge_reading_helper(), and connection_read_bw_exhausted().

◆ xoff_sent

uint8_t xoff_sent

Flag that tells us if an XOFF has been sent; cleared when we send an XON. Used to avoid sending multiple

Definition at line 126 of file edge_connection_st.h.


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