|
Tor 0.4.9.3-alpha-dev
|
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. | |
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.