aboutsummaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2019-11-05 08:05:49 -0500
committerNick Mathewson <nickm@torproject.org>2019-11-05 08:05:49 -0500
commit8933789fef0e2014852df6ae55b5435b9d3256b2 (patch)
tree03cba4960d76656fd248e60d4d749152bdc62340 /src/core
parent60d5ff303d65bb7caf5c064675c661faac4cecf1 (diff)
parentaac80a004f91a453733fed0ba62c00d7d1e2b76d (diff)
downloadtor-8933789fef0e2014852df6ae55b5435b9d3256b2.tar.gz
tor-8933789fef0e2014852df6ae55b5435b9d3256b2.zip
Merge branch 'doxygen_libs'
Diffstat (limited to 'src/core')
-rw-r--r--src/core/core.dox14
-rw-r--r--src/core/crypto/core_crypto.dox8
-rw-r--r--src/core/mainloop/core_mainloop.dox12
-rw-r--r--src/core/or/core_or.dox64
-rw-r--r--src/core/proto/core_proto.dox8
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.
+
**/