|
Tor
0.4.7.0-alpha-dev
|
core/or: Onion routing happens here!
More...Files | |
| file | addr_policy_st.h [code] |
| Address policy structures. | |
| file | address_set.c [code] |
| Implementation for a set of addresses. | |
| file | address_set.h [code] |
| Types to handle sets of addresses. | |
| file | cell_queue_st.h [code] |
| Cell queue structures. | |
| file | cell_st.h [code] |
| Fixed-size cell structure. | |
| file | channel.c [code] |
| 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. | |
| file | channel.h [code] |
| Header file for channel.c. | |
| file | channelpadding.c [code] |
| Link-level padding code. | |
| file | channeltls.c [code] |
| A concrete subclass of channel_t using or_connection_t to transfer cells between Tor instances. | |
| file | channeltls.h [code] |
| Header file for channeltls.c. | |
| file | circuit_st.h [code] |
| Base circuit structure. | |
| file | circuitbuild.c [code] |
| Implements the details of building circuits (by choosing paths, constructing/sending create/extend cells, and so on). | |
| file | circuitbuild.h [code] |
| Header file for circuitbuild.c. | |
| file | circuitlist.c [code] |
| Manage global structures that list and index circuits, and look up circuits within them. | |
| file | circuitlist.h [code] |
| Header file for circuitlist.c. | |
| file | circuitmux.c [code] |
| Circuit mux/cell selection abstraction. | |
| file | circuitmux.h [code] |
| Header file for circuitmux.c. | |
| file | circuitmux_ewma.c [code] |
| EWMA circuit selection as a circuitmux_t policy. | |
| file | circuitmux_ewma.h [code] |
| Header file for circuitmux_ewma.c. | |
| file | circuitpadding.c [code] |
| Circuit-level padding implementation. | |
| file | circuitpadding.h [code] |
| Header file for circuitpadding.c. | |
| file | circuitpadding_machines.c [code] |
| Circuit padding state machines. | |
| file | circuitpadding_machines.h [code] |
| Header file for circuitpadding_machines.c. | |
| file | circuitstats.c [code] |
| 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. | |
| file | circuitstats.h [code] |
| Header file for circuitstats.c. | |
| file | circuituse.c [code] |
| Launch the right sort of circuits and attach the right streams to them. | |
| file | circuituse.h [code] |
| Header file for circuituse.c. | |
| file | command.c [code] |
| Functions for processing incoming cells. | |
| file | command.h [code] |
| Header file for command.c. | |
| file | connection_edge.c [code] |
| Handle edge streams. | |
| file | connection_edge.h [code] |
| Header file for connection_edge.c. | |
| file | connection_or.c [code] |
| Functions to handle OR connections, TLS handshaking, and cells on the network. | |
| file | connection_or.h [code] |
| Header file for connection_or.c. | |
| file | connection_st.h [code] |
| Base connection structure. | |
| file | cpath_build_state_st.h [code] |
| Circuit-build-stse structure. | |
| file | crypt_path.c [code] |
| 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. | |
| file | crypt_path.h [code] |
| Header file for crypt_path.c. | |
| file | crypt_path_reference_st.h [code] |
| reference-counting structure for crypt_path_t | |
| file | crypt_path_st.h [code] |
| Path structures for origin circuits. | |
| file | destroy_cell_queue_st.h [code] |
| Destroy-cell queue structures. | |
| file | dos_config.c [code] |
| Code to interpret the user's configuration of DoS module. | |
| file | dos_config.h [code] |
| Header for core/or/dos_config.c. | |
| file | dos_options.inc [code] |
| Declare configuration options for the DoS module. | |
| file | dos_options_st.h [code] |
| Structure dos_options_t to hold options for the DoS subsystem. | |
| file | dos_sys.c [code] |
| Subsystem definitions for DOS module. | |
| file | dos_sys.h [code] |
| Header for core/or/dos_sys.c. | |
| file | edge_connection_st.h [code] |
| Edge-connection structure. | |
| file | entry_connection_st.h [code] |
| Entry connection structure. | |
| file | entry_port_cfg_st.h [code] |
| Configuration structure for client ports. | |
| file | extend_info_st.h [code] |
| Extend-info structure. | |
| file | extendinfo.c [code] |
| Functions for creating and using extend_info_t objects. | |
| file | extendinfo.h [code] |
| Header for core/or/extendinfo.c. | |
| file | half_edge_st.h [code] |
| Half-open connection structure. | |
| file | listener_connection_st.h [code] |
| Listener connection structure. | |
| file | lttng_circuit.inc [code] |
| 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. | |
| file | ocirc_event.c [code] |
| Publish state change messages for origin circuits. | |
| file | ocirc_event.h [code] |
| Header file for ocirc_event.c. | |
| file | onion.c [code] |
| Functions to queue create cells, and parse and create the CREATE cell and its allies. | |
| file | onion.h [code] |
| Header file for onion.c. | |
| file | or.h [code] |
| Master header file for Tor-specific functionality. | |
| file | or_connection_st.h [code] |
| OR connection structure. | |
| file | or_handshake_certs_st.h [code] |
| OR handshake certs structure. | |
| file | or_handshake_state_st.h [code] |
| OR handshake state structure. | |
| file | or_periodic.c [code] |
| Periodic callbacks for the onion routing subsystem. | |
| file | or_periodic.h [code] |
| Header for core/or/or_periodic.c. | |
| file | or_sys.c [code] |
| Subsystem definitions for OR module. | |
| file | or_sys.h [code] |
| Header for core/or/or_sys.c. | |
| file | orconn_event.c [code] |
| Publish state change messages for OR connections. | |
| file | orconn_event.h [code] |
| Header file for orconn_event.c. | |
| file | origin_circuit_st.h [code] |
| Origin circuit structure. | |
| file | policies.c [code] |
| Code to parse and use address policies and exit policies. | |
| file | policies.h [code] |
| Header file for policies.c. | |
| file | port_cfg_st.h [code] |
| Listener port configuration structure. | |
| file | protover.c [code] |
| Versioning information for different pieces of the Tor protocol. | |
| file | protover.h [code] |
| Headers and type declarations for protover.c. | |
| file | reasons.c [code] |
| Convert circuit, stream, and orconn error reasons to and/or from strings and errno values. | |
| file | reasons.h [code] |
| Header file for reasons.c. | |
| file | relay.c [code] |
| Handle relay cell encryption/decryption, plus packaging and receiving from circuits, plus queuing on circuits. | |
| file | relay.h [code] |
| Header file for relay.c. | |
| file | relay_crypto_st.h [code] |
| Relay-cell encryption state structure. | |
| file | scheduler.c [code] |
| Channel scheduling system: decides which channels should send and receive when. | |
| file | scheduler.h [code] |
| Header file for scheduler*.c. | |
| file | scheduler_kist.c [code] |
| Implements the KIST cell scheduler. | |
| file | scheduler_vanilla.c [code] |
| "Vanilla" (pre-KIST) cell scheduler code. | |
| file | sendme.c [code] |
| Code that is related to SENDME cells both in terms of creating/parsing cells and handling the content. | |
| file | sendme.h [code] |
| Header file for sendme.c. | |
| file | server_port_cfg_st.h [code] |
| Configuration structure for server ports. | |
| file | socks_request_st.h [code] |
| Client request structure. | |
| file | status.c [code] |
| Collect status information and log heartbeat messages. | |
| file | status.h [code] |
| Header for status.c. | |
| file | tor_version_st.h [code] |
| Parsed Tor version structure. | |
| file | trace_probes_circuit.c [code] |
| Tracepoint provider source file for the circuit subsystem. Probes are generated within this C file for LTTng-UST. | |
| file | var_cell_st.h [code] |
| Variable-length cell structure. | |
| file | versions.c [code] |
| Code to manipulate, parse, and compare Tor versions. | |
| file | versions.h [code] |
| 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.