diff options
author | Nick Mathewson <nickm@torproject.org> | 2019-11-05 08:05:49 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2019-11-05 08:05:49 -0500 |
commit | 8933789fef0e2014852df6ae55b5435b9d3256b2 (patch) | |
tree | 03cba4960d76656fd248e60d4d749152bdc62340 /src/core | |
parent | 60d5ff303d65bb7caf5c064675c661faac4cecf1 (diff) | |
parent | aac80a004f91a453733fed0ba62c00d7d1e2b76d (diff) | |
download | tor-8933789fef0e2014852df6ae55b5435b9d3256b2.tar.gz tor-8933789fef0e2014852df6ae55b5435b9d3256b2.zip |
Merge branch 'doxygen_libs'
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/core.dox | 14 | ||||
-rw-r--r-- | src/core/crypto/core_crypto.dox | 8 | ||||
-rw-r--r-- | src/core/mainloop/core_mainloop.dox | 12 | ||||
-rw-r--r-- | src/core/or/core_or.dox | 64 | ||||
-rw-r--r-- | src/core/proto/core_proto.dox | 8 |
5 files changed, 96 insertions, 10 deletions
diff --git a/src/core/core.dox b/src/core/core.dox index 1352daebd3..11bf55cb78 100644 --- a/src/core/core.dox +++ b/src/core/core.dox @@ -1,8 +1,20 @@ /** -@dir core +@dir /core @brief core: main loop and onion routing functionality The "core" directory has the central protocols for Tor, which every client and relay must implement in order to perform onion routing. +It is divided into three lower-level pieces: + + - \refdir{core/crypto} -- Tor-specific cryptography. + + - \refdir{core/proto} -- Protocol encoding/decoding. + + - \refdir{core/mainloop} -- A connection-oriented asynchronous mainloop. + +and one high-level piece: + + - \refdir{core/or} -- Implements onion routing itself. + **/ diff --git a/src/core/crypto/core_crypto.dox b/src/core/crypto/core_crypto.dox index e5acdd6528..28ece92bb8 100644 --- a/src/core/crypto/core_crypto.dox +++ b/src/core/crypto/core_crypto.dox @@ -1,4 +1,8 @@ /** -@dir core/crypto -@brief core/crypto +@dir /core/crypto +@brief core/crypto: Tor-specific cryptography + +This module implements Tor's circuit-construction crypto and Tor's +relay crypto. + **/ diff --git a/src/core/mainloop/core_mainloop.dox b/src/core/mainloop/core_mainloop.dox index 9b32cb7f60..28cd42bf60 100644 --- a/src/core/mainloop/core_mainloop.dox +++ b/src/core/mainloop/core_mainloop.dox @@ -1,4 +1,12 @@ /** -@dir core/mainloop -@brief core/mainloop +@dir /core/mainloop +@brief core/mainloop: Non-onion-routing mainloop functionality + +This module uses the event-loop code of \refdir{lib/evloop} to implement an +asynchronous connection-oriented protocol handler. + +The layering here is imperfect: the code here was split from \refdir{core/or} +without refactoring how the two modules call one another. Probably many +functions should be moved and refactored. + **/ diff --git a/src/core/or/core_or.dox b/src/core/or/core_or.dox index 1289a85c80..705e9b5436 100644 --- a/src/core/or/core_or.dox +++ b/src/core/or/core_or.dox @@ -1,4 +1,62 @@ /** -@dir core/or -@brief core/or -**/ +@dir /core/or +@brief 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. diff --git a/src/core/proto/core_proto.dox b/src/core/proto/core_proto.dox index 3e1e4ddb6d..13ce751a76 100644 --- a/src/core/proto/core_proto.dox +++ b/src/core/proto/core_proto.dox @@ -1,4 +1,8 @@ /** -@dir core/proto -@brief core/proto +@dir /core/proto +@brief core/proto: Protocol encoding/decoding + +These functions should (but do not always) exist at a lower level than most +of the rest of core. + **/ |