Tor 0.4.9.3-alpha-dev
Loading...
Searching...
No Matches
or Directory Reference

core/or: Onion routing happens here!

More...

Files

 addr_policy_st.h
 Address policy structures.
 
 address_set.c
 Implementation for a set of addresses.
 
 address_set.h
 Types to handle sets of addresses.
 
 cell_queue_st.h
 Cell queue structures.
 
 cell_st.h
 Fixed-size cell structure.
 
 channel.c
 OR/OP-to-OR channel abstraction layer. A channel's job is to transfer cells from Tor instance to Tor instance. Currently, there is only one implementation of the channel abstraction: in channeltls.c.
 
 channel.h
 Header file for channel.c.
 
 channelpadding.c
 Link-level padding code.
 
 channelpadding.h
 
 channeltls.c
 A concrete subclass of channel_t using or_connection_t to transfer cells between Tor instances.
 
 channeltls.h
 Header file for channeltls.c.
 
 circuit_st.h
 Base circuit structure.
 
 circuitbuild.c
 Implements the details of building circuits (by choosing paths, constructing/sending create/extend cells, and so on).
 
 circuitbuild.h
 Header file for circuitbuild.c.
 
 circuitlist.c
 Manage global structures that list and index circuits, and look up circuits within them.
 
 circuitlist.h
 Header file for circuitlist.c.
 
 circuitmux.c
 Circuit mux/cell selection abstraction.
 
 circuitmux.h
 Header file for circuitmux.c.
 
 circuitmux_ewma.c
 EWMA circuit selection as a circuitmux_t policy.
 
 circuitmux_ewma.h
 Header file for circuitmux_ewma.c.
 
 circuitpadding.c
 Circuit-level padding implementation.
 
 circuitpadding.h
 Header file for circuitpadding.c.
 
 circuitpadding_machines.c
 Circuit padding state machines.
 
 circuitpadding_machines.h
 Header file for circuitpadding_machines.c.
 
 circuitstats.c
 Maintains and analyzes statistics about circuit built times, so we can tell how long we may need to wait for a fast circuit to be constructed.
 
 circuitstats.h
 Header file for circuitstats.c.
 
 circuituse.c
 Launch the right sort of circuits and attach the right streams to them.
 
 circuituse.h
 Header file for circuituse.c.
 
 command.c
 Functions for processing incoming cells.
 
 command.h
 Header file for command.c.
 
 conflux.c
 Conflux multipath core algorithms.
 
 conflux.h
 Public APIs for conflux multipath support.
 
 conflux_cell.c
 XXX: Write a brief introduction to this module.
 
 conflux_cell.h
 Header file for conflux_cell.c.
 
 conflux_params.c
 
 conflux_params.h
 Header file for conflux_params.c.
 
 conflux_pool.c
 Conflux circuit pool management.
 
 conflux_pool.h
 Header file for conflux_pool.c.
 
 conflux_st.h
 Structure definitions for conflux multipath.
 
 conflux_sys.c
 Register the conflux pool for early initialization.
 
 conflux_sys.h
 Header file for conflux_sys.c.
 
 conflux_util.c
 Conflux utility functions for stream blocking and management.
 
 conflux_util.h
 Header file for conflux_util.c.
 
 congestion_control_common.c
 Common code used by all congestion control algorithms.
 
 congestion_control_common.h
 Public APIs for congestion control.
 
 congestion_control_flow.c
 Code that implements flow control for congestion controlled circuits.
 
 congestion_control_flow.h
 APIs for stream flow control on congestion controlled circuits.
 
 congestion_control_st.h
 Structure definitions for congestion control.
 
 congestion_control_vegas.c
 Code that implements the TOR_VEGAS congestion control algorithm from Proposal #324.
 
 congestion_control_vegas.h
 Private-ish APIs for the TOR_VEGAS congestion control algorithm.
 
 connection_edge.c
 Handle edge streams.
 
 connection_edge.h
 Header file for connection_edge.c.
 
 connection_or.c
 Functions to handle OR connections, TLS handshaking, and cells on the network.
 
 connection_or.h
 Header file for connection_or.c.
 
 connection_st.h
 Base connection structure.
 
 cpath_build_state_st.h
 Circuit-build-stse structure.
 
 crypt_path.c
 Functions dealing with layered circuit encryption. This file aims to provide an API around the crypt_path_t structure which holds crypto information about a specific hop of a circuit.
 
 crypt_path.h
 Header file for crypt_path.c.
 
 crypt_path_reference_st.h
 reference-counting structure for crypt_path_t
 
 crypt_path_st.h
 Path structures for origin circuits.
 
 destroy_cell_queue_st.h
 Destroy-cell queue structures.
 
 dos.c
 
 dos.h
 
 dos_config.c
 Code to interpret the user's configuration of DoS module.
 
 dos_config.h
 Header for core/or/dos_config.c.
 
 dos_options.inc
 Declare configuration options for the DoS module.
 
 dos_options_st.h
 Structure dos_options_t to hold options for the DoS subsystem.
 
 dos_sys.c
 Subsystem definitions for DOS module.
 
 dos_sys.h
 Header for core/or/dos_sys.c.
 
 edge_connection_st.h
 Edge-connection structure.
 
 entry_connection_st.h
 Entry connection structure.
 
 entry_port_cfg_st.h
 Configuration structure for client ports.
 
 extend_info_st.h
 Extend-info structure.
 
 extendinfo.c
 Functions for creating and using extend_info_t objects.
 
 extendinfo.h
 Header for core/or/extendinfo.c.
 
 half_edge_st.h
 Half-open connection structure.
 
 listener_connection_st.h
 Listener connection structure.
 
 lttng_cc.inc
 LTTng tracing probe declaration for the congestion control subsystem. It is in this .inc file due to the non C standard syntax and the way we guard the header with the LTTng specific TRACEPOINT_HEADER_MULTI_READ.
 
 lttng_circuit.inc
 LTTng tracing probe declaration for the circuit subsystem. It is in this .inc file due to the non C standard syntax and the way we guard the header with the LTTng specific TRACEPOINT_HEADER_MULTI_READ.
 
 ocirc_event.c
 Publish state change messages for origin circuits.
 
 ocirc_event.h
 Header file for ocirc_event.c.
 
 onion.c
 Functions to queue create cells, and parse and create the CREATE cell and its allies.
 
 onion.h
 Header file for onion.c.
 
 or.h
 Master header file for Tor-specific functionality.
 
 or_circuit_st.h
 
 or_connection_st.h
 OR connection structure.
 
 or_handshake_certs_st.h
 OR handshake certs structure.
 
 or_handshake_state_st.h
 OR handshake state structure.
 
 or_periodic.c
 Periodic callbacks for the onion routing subsystem.
 
 or_periodic.h
 Header for core/or/or_periodic.c.
 
 or_sys.c
 Subsystem definitions for OR module.
 
 or_sys.h
 Header for core/or/or_sys.c.
 
 orconn_event.c
 Publish state change messages for OR connections.
 
 orconn_event.h
 Header file for orconn_event.c.
 
 origin_circuit_st.h
 Origin circuit structure.
 
 policies.c
 Code to parse and use address policies and exit policies.
 
 policies.h
 Header file for policies.c.
 
 port_cfg_st.h
 Listener port configuration structure.
 
 protover.c
 Versioning information for different pieces of the Tor protocol.
 
 protover.h
 Headers and type declarations for protover.c.
 
 reasons.c
 Convert circuit, stream, and orconn error reasons to and/or from strings and errno values.
 
 reasons.h
 Header file for reasons.c.
 
 relay.c
 Handle relay cell encryption/decryption, plus packaging and receiving from circuits, plus queuing on circuits.
 
 relay.h
 Header file for relay.c.
 
 relay_msg.c
 Encoding relay messages into cells.
 
 relay_msg.h
 Header file for relay_msg.c.
 
 relay_msg_st.h
 A relay message which contains a relay command and parameters, if any, that is from a relay cell.
 
 scheduler.c
 Channel scheduling system: decides which channels should send and receive when.
 
 scheduler.h
 Header file for scheduler*.c.
 
 scheduler_kist.c
 Implements the KIST cell scheduler.
 
 scheduler_vanilla.c
 "Vanilla" (pre-KIST) cell scheduler code.
 
 sendme.c
 Code that is related to SENDME cells both in terms of creating/parsing cells and handling the content.
 
 sendme.h
 Header file for sendme.c.
 
 server_port_cfg_st.h
 Configuration structure for server ports.
 
 socks_request_st.h
 Client request structure.
 
 status.c
 Collect status information and log heartbeat messages.
 
 status.h
 Header for status.c.
 
 tor_version_st.h
 Parsed Tor version structure.
 
 trace_probes_cc.c
 Tracepoint provider source file for the cc subsystem. Probes are generated within this C file for LTTng-UST.
 
 trace_probes_cc.h
 
 trace_probes_circuit.c
 Tracepoint provider source file for the circuit subsystem. Probes are generated within this C file for LTTng-UST.
 
 trace_probes_circuit.h
 
 var_cell_st.h
 Variable-length cell structure.
 
 versions.c
 Code to manipulate, parse, and compare Tor versions.
 
 versions.h
 Header file for versions.c.
 

Detailed Description

core/or: Onion routing happens here!

This is the central part of Tor that handles the core tasks of onion routing: building circuit, handling circuits, attaching circuit to streams, moving data around, and so forth.

Some aspects of this module should probably be refactored into others.

Notable files here include:

channel.c : Generic channel implementation. Channels handle sending and receiving cells among tor nodes.

channeltls.c : Channel implementation for TLS-based OR connections. Uses connection_or.c.

circuitbuild.c : Code for constructing circuits and choosing their paths. (Note: this module could plausibly be split into handling the client side, the server side, and the path generation aspects of circuit building.)

circuitlist.c : Code for maintaining and navigating the global list of circuits.

circuitmux.c : Generic circuitmux implementation. A circuitmux handles deciding, for a particular channel, which circuit should write next.

circuitmux_ewma.c : A circuitmux implementation based on the EWMA (exponentially weighted moving average) algorithm.

circuituse.c : Code to actually send and receive data on circuits.

command.c : Handles incoming cells on channels.

connection.c : Generic and common connection tools, and implementation for the simpler connection types.

connection_edge.c : Implementation for entry and exit connections.

connection_or.c : Implementation for OR connections (the ones that send cells over TLS).

onion.c : Generic code for generating and responding to CREATE and CREATED cells, and performing the appropriate onion handshakes. Also contains code to manage the server-side onion queue.

relay.c : Handles particular types of relay cells, and provides code to receive, encrypt, route, and interpret relay cells.

scheduler.c : Decides which channel/circuit pair is ready to receive the next cell.