address.c | Functions to use and manipulate the tor_addr_t structure |
address.h [code] | Headers for address.h |
aes.c | Implements the AES cipher (with 128-bit keys and blocks), and a counter-mode stream cipher on top of AES. This code is taken from the main Rijndael distribution. (We include this because many people are running older versions of OpenSSL without AES support.) |
aes.h [code] | Headers for aes.c |
buffers.c | Implements a generic interface buffer. Buffers are fairly opaque string holders that can read to or flush from: memory, file descriptors, or TLS connections |
circuitbuild.c | The actual details of building circuits |
circuitlist.c | Manage the global circuit list |
circuituse.c | Launch the right sort of circuits and attach streams to them |
command.c | Functions for processing incoming cells |
compat.c | Wrappers to make calls more portable. This code defines functions such as tor_malloc, tor_snprintf, get/set various data types, renaming, setting socket options, switching user IDs. It is basically where the non-portable items are conditionally included depending on the platform |
compat.h [code] | |
compat_libevent.c | Wrappers to handle porting between different versions of libevent |
compat_libevent.h [code] | |
config.c | Code to parse and interpret configuration files |
connection.c | General high-level functions to handle reading and writing on connections |
connection_edge.c | Handle edge streams |
connection_or.c | Functions to handle OR connections, TLS handshaking, and cells on the network |
container.c | Implements a smartlist (a resizable array) along with helper functions to use smartlists. Also includes hash table implementations of a string-to-void* map, and of a digest-to-void* map |
container.h [code] | |
control.c | Implementation for Tor's control-socket interface. See doc/spec/control-spec.txt for full details on protocol |
cpuworker.c | Implements a farm of 'CPU worker' processes to perform CPU-intensive tasks in another thread or process, to not interrupt the main thread |
crypto.c | Wrapper functions to present a consistent interface to public-key and symmetric cryptography operations from OpenSSL |
crypto.h [code] | Headers for crypto.c |
directory.c | Code to send and fetch directories and router descriptors via HTTP. Directories use dirserv.c to generate the results; clients use routers.c to parse them |
dirserv.c | Directory server core implementation. Manages directory contents and generates directories |
dirvote.c | Functions to compute directory consensus, and schedule voting |
dns.c | Implements a local cache for DNS results for Tor servers. This is implemented as a wrapper around Adam Langley's eventdns.c code. (We can't just use gethostbyname() and friends because we really need to be nonblocking.) |
dnsserv.c | Implements client-side DNS proxy server code. Note: this is the DNS Server code, not the Server DNS code. Confused? This code runs on client-side, and acts as a DNS server. The code in dns.c, on the other hand, runs on Tor servers, and acts as a DNS client |
eventdns.h [code] | |
eventdns_tor.h [code] | |
geoip.c | Functions related to maintaining an IP-to-country database and to summarizing client connections by country |
hibernate.c | Functions to close listeners, stop allowing new circuits, etc in preparation for closing down or going dormant; and to track bandwidth and time intervals to know when to hibernate and when to stop hibernating |
ht.h [code] | |
log.c | Functions to send messages to log files or the console |
log.h [code] | Headers for log.c |
main.c | Toplevel module. Handles signals, multiplexes between connections, implements main loop, and drives scheduled events |
memarea.c | Implementation for memarea_t, an allocator for allocating lots of small objects that will be freed all at once |
memarea.h [code] | |
mempool.h [code] | Headers for mempool.c |
networkstatus.c | Functions and structures for handling network status documents as a client or cache |
onion.c | Functions to queue create cells, and handle onionskin parsing and creation |
or.h [code] | Master header file for Tor-specific functionality |
policies.c | Code to parse and use address policies and exit policies |
reasons.c | Convert circuit, stream, and orconn error reasons to and/or from strings and errno values |
relay.c | Handle relay cell encryption/decryption, plus packaging and receiving from circuits, plus queuing on circuits |
rendclient.c | Client code to access location-hidden services |
rendcommon.c | Rendezvous implementation: shared code between introducers, services, clients, and rendezvous points |
rendmid.c | Implement introductions points and rendezvous points |
rendservice.c | The hidden-service side of rendezvous functionality |
rephist.c | Basic history and "reputation" functionality to remember which servers have worked in the past, how much bandwidth we've been using, which ports we tend to want, and so on |
router.c | OR functionality, including key maintenance, generating and uploading server descriptors, retrying OR connections |
routerlist.c | Code to maintain and access the global list of routerinfos for known servers |
routerparse.c | Code to parse and validate router descriptors and directories |
sha256.c | |
tor_main.c | Stub module containing a main() function. Allows unit test binary to link against main.c |
torgzip.c | A simple in-memory gzip implementation |
torgzip.h [code] | Headers for torgzip.h |
torint.h [code] | Header file to define uint32_t and friends |
tortls.c | Wrapper functions to present a consistent interface to TLS, SSL, and X.509 functions from OpenSSL |
tortls.h [code] | Headers for tortls.c |
tortls_states.h [code] | |
util.c | Common functions for strings, IO, network, data structures, process control |
util.h [code] | Headers for util.c |