File List
Here is a list of all documented files with brief descriptions:
 address.cFunctions to use and manipulate the tor_addr_t structure
 address.hHeaders for address.h
 address_set.cImplementation for a set of addresses
 address_set.hTypes to handle sets of addresses
 addressmap.cThe addressmap module manages the processes by which we rewrite addresses in client requess. It handles the MapAddress controller and torrc commands, and the TrackHostExits feature, and the client-side DNS cache (deprecated)
 addsub.cHelpers for addition and subtraction
 addsub.hHeader for addsub.c
 aes.hHeaders for aes.c
 aes_nss.cUse NSS to implement AES_CTR
 aes_openssl.cUse OpenSSL to implement AES_CTR
 alertsock.cUse a socket to alert the main thread from a worker thread
 alertsock.hHeader for alertsock.c
 approx_time.cCache the last result of time(), for performance and testing
 approx_time.hHeader for approx_time.c
 authcert.cCode to maintain directory authorities' certificates
 authcert.hHeader file for authcert.c
 authcert_parse.hHeader file for authcert_parse.c
 authmode.cWhat kind of directory authority are we?
 authmode.hHeader file for directory authority mode
 backtrace.cFunctions to produce backtraces on bugs, crashes, or assertion failures
 backtrace.hHeader for backtrace.c
 binascii.cMiscellaneous functions for encoding and decoding various things in base{16,32,64}
 binascii.hHeader for binascii.c
 bitarray.hImplements a variable-sized (but non-resizeable) bit-array
 bits.cCount the bits in an integer, manipulate powers of 2, etc
 bits.hHeader for bits.c
 bloomfilt.cUses bitarray_t to implement a bloom filter
 bloomfilt.hHeader for bloomfilt.c
 bridges.cCode to manage bridges and bridge selection
 bridges.hHeader file for circuitbuild.c
 btrack.cBootstrap trackers
 btrack_circuit.cBootstrap tracker for origin circuits
 btrack_circuit.hHeader file for btrack_circuit.c
 btrack_orconn.cBootstrap tracker for OR connections
 btrack_orconn.hHeader file for btrack_orconn.c
 btrack_orconn_cevent.cEmit bootstrap status events for OR connections
 btrack_orconn_cevent.hHeader file for btrack_orconn_cevent.c
 btrack_orconn_maps.cHash map implementation for btrack_orconn.c
 btrack_orconn_maps.hHeader file for btrack_orconn_maps.c
 btrack_sys.hDeclare subsystem object for the bootstrap tracker susbystem
 buffers.cImplements a generic buffer interface
 buffers.hHeader file for buffers.c
 buffers_net.cRead and write data on a buf_t object
 buffers_net.hHeader file for buffers_net.c
 buffers_tls.cRead and write data on a tor_tls_t connection from a buf_t object
 buffers_tls.hHeader for buffers_tls.c
 bwauth.cCode to read and apply bandwidth authority data
 bwauth.hHeader file for bwauth.c
 bytes.hInline functions for reading and writing multibyte values from the middle of strings, and for manipulating byte order
 channel.cOR/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.hHeader file for channel.c
 channeltls.cA concrete subclass of channel_t using or_connection_t to transfer cells between Tor instances
 channeltls.hHeader file for channeltls.c
 circpathbias.cCode to track success/failure rates of circuits built through different tor nodes, in an attempt to detect attacks where an attacker deliberately causes circuits to fail until the client choses a path they like
 circuitbuild.cImplements the details of building circuits (by chosing paths, constructing/sending create/extend cells, and so on)
 circuitbuild.hHeader file for circuitbuild.c
 circuitlist.cManage global structures that list and index circuits, and look up circuits within them
 circuitlist.hHeader file for circuitlist.c
 circuitmux.cCircuit mux/cell selection abstraction
 circuitmux.hHeader file for circuitmux.c
 circuitmux_ewma.cEWMA circuit selection as a circuitmux_t policy
 circuitmux_ewma.hHeader file for circuitmux_ewma.c
 circuitpadding.cCircuit-level padding implementation
 circuitpadding.hHeader file for circuitpadding.c
 circuitpadding_machines.cCircuit padding state machines
 circuitpadding_machines.hHeader file for circuitpadding_machines.c
 circuitstats.cMaintains 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.hHeader file for circuitstats.c
 circuituse.cLaunch the right sort of circuits and attach the right streams to them
 circuituse.hHeader file for circuituse.c
 cmp.hMacro definitions for MIN, MAX, and CLAMP
 command.cFunctions for processing incoming cells
 command.hHeader file for command.c
 compat_compiler.hUtility macros to handle different features and behavior in different compilers
 compat_ctype.cLocale-independent character-type inspection (backend)
 compat_ctype.hLocale-independent character-type inspection (header)
 compat_libevent.cWrappers and utility functions for Libevent
 compat_libevent.hHeader for compat_libevent.c
 compat_mutex.cPortable wrapper for platform mutex implementations
 compat_mutex.hHeader for compat_mutex.c
 compat_mutex_pthreads.cImplement the tor_mutex API using pthread_mutex_t
 compat_mutex_winthreads.cImplement the tor_mutex API using CRITICAL_SECTION
 compat_pthreads.cImplementation for the pthreads-based multithreading backend functions
 compat_string.cUseful string-processing functions that some platforms don't provide
 compat_string.hHeader for compat_string.c
 compat_threads.cCross-platform threading and inter-thread communication logic. (Platform-specific parts are written in the other compat_*threads modules.)
 compat_time.cPortable wrappers for finding out the current time, running timers, etc
 compat_time.hFunctions and types for monotonic times
 compat_winthreads.cImplementation for the windows-based multithreading backend functions
 compress.cCommon compression API implementation
 compress.hHeaders for compress.c
 compress_buf.cWorking with compressed data in buffers
 compress_lzma.cCompression backend for LZMA
 compress_lzma.hHeader for compress_lzma.c
 compress_none.cCompression backend for identity compression
 compress_none.hHeader for compress_none.c
 compress_sys.hDeclare subsystem object for the compress module
 compress_zlib.cCompression backend for gzip and zlib
 compress_zlib.hHeader for compress_zlib.c
 compress_zstd.cCompression backend for Zstandard
 compress_zstd.hHeader for compress_zstd.c
 conffile.hRead configuration files from disk, with full include support
 config.cCode to interpret the user's configuration of Tor
 config.hHeader file for config.c
 confline.cFunctions to manipulate a linked list of key-value pairs, of the type used in Tor's configuration files
 confline.hHeader for confline.c
 confparse.cBack-end for parsing and generating key-value files, used to implement the torrc file format and the state file
 confparse.hHeader for confparse.c
 connection.cGeneral high-level functions to handle reading and writing on connections
 connection.hHeader file for connection.c
 connection_edge.cHandle edge streams
 connection_edge.hHeader file for connection_edge.c
 connection_or.cFunctions to handle OR connections, TLS handshaking, and cells on the network
 connection_or.hHeader file for connection_or.c
 consdiff.cConsensus diff implementation, including both the generation and the application of diffs in a minimal ed format
 control.cImplementation for Tor's control-socket interface
 control.hHeader file for control.c
 control_auth.cAuthentication for Tor's control-socket interface
 control_auth.hHeader file for control_auth.c
 control_bootstrap.cProvide bootstrap progress events for the control port
 control_cmd.cImplement various commands for Tor's control-socket interface
 control_cmd.hHeader file for control_cmd.c
 control_cmd_args_st.hDefinition for control_cmd_args_t
 control_events.cImplement the event-reporting part of the controller API
 control_events.hHeader file for control_events.c
 control_fmt.cFormatting functions for controller data
 control_fmt.hHeader file for control_fmt.c
 control_getinfo.cImplementation for miscellaneous controller getinfo commands
 control_proto.cFormatting functions for controller data
 control_proto.hHeader file for control_proto.c
 cpuworker.cUses the workqueue/threadpool code to farm CPU-intensive activities out to subprocesses
 cpuworker.hHeader file for cpuworker.c
 crypt_path.cFunctions 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.hHeader file for crypt_path.c
 crypto_cipher.cSymmetric cryptography (low-level) with AES
 crypto_cipher.hHeaders for crypto_cipher.c
 crypto_curve25519.cWrapper code for a curve25519 implementation
 crypto_curve25519.hHeader for crypto_curve25519.c
 crypto_dh.cBlock of functions related with DH utilities and operations. over Z_p. We aren't using this for any new crypto – EC is more efficient
 crypto_dh.hHeaders for crypto_dh.c
 crypto_dh_openssl.cImplement Tor's Z_p diffie-hellman stuff for OpenSSL
 crypto_digest.cBlock of functions related with digest and xof utilities and operations
 crypto_digest.hHeaders for crypto_digest.c
 crypto_digest_nss.cBlock of functions related with digest and xof utilities and operations (NSS specific implementations)
 crypto_digest_openssl.cBlock of functions related with digest and xof utilities and operations (OpenSSL specific implementations)
 crypto_ed25519.cWrapper code for an ed25519 implementation
 crypto_ed25519.hHeader for crypto_ed25519.c
 crypto_format.cFormatting and parsing code for crypto-related data structures
 crypto_format.hHeader for crypto_format.c
 crypto_hkdf.cBlock of functions related with HKDF utilities and operations
 crypto_hkdf.hHeaders for crypto_hkdf.h
 crypto_init.cInitialize and shut down Tor's crypto library and subsystem
 crypto_init.hHeaders for crypto_init.c
 crypto_nss_mgt.cManage the NSS library (if used)
 crypto_nss_mgt.hHeaders for crypto_nss_mgt.c
 crypto_openssl_mgt.cBlock of functions related to operations from OpenSSL
 crypto_openssl_mgt.hHeaders for crypto_openssl_mgt.c
 crypto_pwbox.cCode for encrypting secrets in a password-protected form and saving them to disk
 crypto_pwbox.hHeader for crypto_pwbox.c
 crypto_rand.cFunctions for initialising and seeding (pseudo-)random number generators, and working with randomness
 crypto_rand.hCommon functions for using (pseudo-)random number generators
 crypto_rand_fast.cA fast strong PRNG for use when our underlying cryptographic library's PRNG isn't fast enough
 crypto_rand_numeric.cFunctions for retrieving uniformly distributed numbers from our PRNGs
 crypto_rsa.cBlock of functions related with RSA utilities and operations
 crypto_rsa.hHeaders for crypto_rsa.c
 crypto_s2k.cFunctions for deriving keys from human-readable passphrases
 crypto_s2k.hHeader for crypto_s2k.c
 crypto_util.cCommon cryptographic utilities
 crypto_util.hCommon functions for cryptographic routines
 cstring.cDecode data that has been written as a C literal
 cstring.hHeader for cstring.c
 ctassert.hCompile-time assertions: CTASSERT(expression)
 daemon.cRun the tor process in the background (unix only)
 daemon.hHeader for daemon.c
 debug.hMacros for debugging our event-trace support
 describe.cFormat short descriptions of relays
 describe.hHeader file for describe.c
 dh_sizes.hDefinitions for sizes of Diffie-Hellman groups elements in Z_p
 di_ops.cFunctions for data-independent operations
 di_ops.hHeaders for di_ops.c
 digest_sizes.hDefinitions for common sizes of cryptographic digests
 digestset.cImplementation for a set of digests
 digestset.hTypes to handle sets of digests, based on bloom filters
 dir.cRead directories, and create directories with restrictive permissions
 dir.hHeader for dir.c
 dircache.hHeader file for dircache.c
 dirclient.hHeader file for dirclient.c
 dircollate.cCollation code for figuring out which identities to vote for in the directory voting process
 dircollate.hHeader file for dircollate.c
 directory.cCode to send and fetch information from directory authorities and caches via HTTP
 directory.hHeader file for directory.c
 dirlist.cCode to maintain our lists of directory authorities and fallback directories
 dirlist.hHeader file for dirlist.c
 dirserv.cDirectory server core implementation. Manages directory contents and generates directory documents
 dirserv.hHeader file for dirserv.c
 dirvote.cFunctions to compute directory consensus, and schedule voting
 dirvote.hHeader file for dirvote.c
 dispatch.hLow-level APIs for message-passing system
 dispatch_cfg.cCreate and configure a dispatch_cfg_t
 dispatch_core.cCore module for sending and receiving messages
 dispatch_new.cCode to construct a dispatch_t from a dispatch_cfg_t
 dispatch_st.hPrivate structures used for the dispatcher module
 dlstatus.hHeader file for dlstatus.c
 dns.cImplements 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.)
 dns.hHeader file for dns.c
 dns_structs.hStructures used in dns.c. Exposed to dns.c, and to the unit tests that declare DNS_PRIVATE
 dnsserv.cImplements client-side DNS proxy server code
 dnsserv.hHeader file for dnsserv.c
 dsigs_parse.hCode to parse and validate detached-signature objects
 entrynodes.cCode to manage our fixed first nodes for various functions
 entrynodes.hHeader file for circuitbuild.c
 env.cInspect and manipulate the environment variables
 env.hHeader for env.c
 escape.cEscape untrusted strings before sending them to the log
 escape.hHeader for escape.c
 events.hHeader file for Tor event tracing
 evloop_sys.cSubsystem definition for the event loop module
 evloop_sys.hDeclare subsystem object for the event loop module
 ext_orport.cCode implementing the Extended ORPort
 fdio.cLow-level compatibility wrappers for fd-based IO
 fdio.hHeader for fdio.c
 files.hWrappers for reading and writing data to files on disk
 fmt_routerstatus.hFormat routerstatus entries for controller, vote, or consensus
 fmt_serverstatus.hHeader file for fmt_serverstatus.c
 fp.cBasic floating-point compatibility and convenience code
 fp.hHeader for fp.c
 fp_pair.cManages data structures for associating pairs of fingerprints. Used to handle combinations of identity/signing-key fingerprints for authorities
 fp_pair.hHeader file for fp_pair.c
 freespace.cFind the available disk space on the current volume
 geoip.cFunctions related to maintaining an IP-to-country database; to summarizing client connections by country to entry guards, bridges, and directory servers; and for statistics on answering network status requests
 geoip.hHeader file for geoip.c
 geoip_stats.hHeader file for geoip_stats.c
 gethostname.cMockable wrapper for gethostname()
 gethostname.hHeader for gethostname.c
 getpass.cCross-platform wrapper to read passphrases from the terminal
 getpass.hHeader for getpass.c
 guardfraction.hHeader file for guardfraction.c
 handles.hMacros for C weak-handle implementation
 hibernate.cFunctions 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
 hibernate.hHeader file for hibernate.c
 hs_cache.cHandle hidden service descriptor caches
 hs_cache.hHeader file for hs_cache.c
 hs_cell.cHidden service API for cell creation and handling
 hs_cell.hHeader file containing cell data for the whole HS subsytem
 hs_circuit.hHeader file containing circuit data for the whole HS subsytem
 hs_circuitmap.cHidden service circuitmap: A hash table that maps binary tokens to introduction and rendezvous circuits; it's used: (a) by relays acting as intro points and rendezvous points (b) by hidden services to find intro and rend circuits and (c) by HS clients to find rendezvous circuits
 hs_circuitmap.hHeader file for hs_circuitmap.c
 hs_client.cImplement next generation hidden service client functionality
 hs_client.hHeader file containing client data for the HS subsytem
 hs_common.cContains code shared between different HS protocol version as well as useful data structures and accessors used by other subsystems. The rendcommon.c should only contains code relating to the v2 protocol
 hs_common.hHeader file containing common data for the whole HS subsytem
 hs_config.cImplement hidden service configuration subsystem
 hs_config.hHeader file containing configuration ABI/API for the HS subsytem
 hs_control.cContains control port event related code
 hs_control.hHeader file containing control port event related code
 hs_descriptor.cHandle hidden service descriptor encoding/decoding
 hs_descriptor.hHeader file for hs_descriptor.c
 hs_ident.cContains circuit and connection identifier code for the whole HS subsytem
 hs_ident.hHeader file containing circuit and connection identifier data for the whole HS subsytem
 hs_intropoint.cImplement next generation introductions point functionality
 hs_intropoint.hHeader file for hs_intropoint.c
 hs_ntor.cImplements the ntor variant used in Tor hidden services
 hs_service.cImplement next generation hidden service functionality
 hs_service.hHeader file containing service data for the HS subsytem
 hs_stats.cKeeps stats about the activity of our onion service(s)
 hs_stats.hHeader file for hs_stats.c
 inaddr.cConvert in_addr and in6_addr to and from strings
 inaddr.hHeader for inaddr.c
 inaddr_st.hDefine in6_addr, its members, and related types on platforms that lack it
 keypin.cFunctions and structures for associating routers' RSA key fingerprints with their ED25519 keys
 keyval.cHandle data encoded as a key=value pair
 keyval.hHeader for keyval.c
 kvline.cManipulating lines of key-value pairs
 kvline.hHeader for kvline.c
 laplace.cImplements a Laplace distribution, used for adding noise to things
 laplace.hHeader for laplace.c
 loadkey.cRead keys from disk, creating as needed
 loadkey.hHeader file for loadkey.c
 lockfile.cImplements lock files to prevent two Tor processes from using the same data directory at the same time
 lockfile.hHeader for lockfile.c
 log.cFunctions to send messages to log files or the console
 log.hHeaders for log.c
 log_sys.cSetup and tear down the logging module
 log_sys.hDeclare subsystem object for the logging module
 logic.hMacros for comparing the boolean value of integers
 main.cInvocation module. Initializes subsystems and runs the main loop
 main.hHeader file for main.c
 mainloop.cToplevel module. Handles signals, multiplexes between connections, implements main loop, and drives scheduled events
 mainloop.hHeader file for mainloop.c
 malloc.cWrappers for C malloc code, and replacements for items that may be missing
 malloc.hHeaders for util_malloc.c
 map.cHash-table implementations of a string-to-void* map, and of a digest-to-void* map
 map.hHeaders for map.c
 map_anon.cManage anonymous mappings
 map_anon.hHeaders for map_anon.c
 memarea.cImplementation for memarea_t, an allocator for allocating lots of small objects that will be freed all at once
 memarea.hHeader for memarea.c
 meminfo.cFunctions to query total memory, and access meta-information about the allocator
 meminfo.hHeader for meminfo.c
 microdesc.cImplements microdescriptors – an abbreviated description of less-frequently-changing router information
 microdesc.hHeader file for microdesc.c
 microdesc_parse.cCode to parse and validate microdescriptors
 microdesc_parse.hHeader file for microdesc_parse.c
 mmap.cCross-platform support for mapping files into our address space
 mmap.hHeader for mmap.c
 msgtypes.hTypes used for messages in the dispatcher code
 muldiv.cInteger math related to multiplication, division, and rounding
 muldiv.hHeader for muldiv.c
 namemap.hHeader for namemap.c
 nettypes.hDeclarations for types used throughout the Tor networking system
 network_sys.cSubsystem object for networking setup
 networkstatus.cFunctions and structures for handling networkstatus documents as a client or as a directory cache
 networkstatus.hHeader file for networkstatus.c
 nickname.cCheck and manipulate relay nicknames
 nickname.hHeader file for nickname.c
 node_select.cCode to choose nodes randomly based on restrictions and weighted probabilities
 node_select.hHeader file for node_select.c
 nodefamily.cCode to manipulate encoded, reference-counted node families. We use these tricks to save space, since these families would otherwise require a large number of tiny allocations
 nodefamily.hHeader file for nodefamily.c
 nodelist.cStructures and functions for tracking what we know about the routers on the Tor network, and correlating information from networkstatus, routerinfo, and microdescs
 nodelist.hHeader file for nodelist.c
 ns_parse.hHeader file for ns_parse.c
 nss_countbytes.cA PRFileDesc layer to let us count the number of bytes bytes actually written on a PRFileDesc
 nss_countbytes.hHeader for nss_countbytes.c, which lets us count the number of bytes actually written on a PRFileDesc
 ntmain.cEntry points for running/configuring Tor as a Windows Service
 ntmain.hHeader file for ntmain.c
 numcpus.cCompute the number of CPUs configured on this system
 numcpus.hHeader for numcpus.c
 ocirc_event.cPublish state change messages for origin circuits
 ocirc_event.hHeader file for ocirc_event.c
 ocirc_event_sys.hDeclare subsystem object for the origin circuit event module
 onion.cFunctions to queue create cells, and parse and create the CREATE cell and its allies
 onion.hHeader file for onion.c
 onion_crypto.cFunctions to handle different kinds of circuit extension crypto
 onion_crypto.hHeader file for onion_crypto.c
 onion_fast.cFunctions implement the CREATE_FAST circuit handshake
 onion_fast.hHeader file for onion_fast.c
 onion_ntor.cImplementation for the ntor handshake
 onion_queue.cFunctions to queue create cells for processing
 onion_queue.hHeader file for onion_queue.c
 onion_tap.cFunctions to implement the original Tor circuit extension handshake (a.k.a TAP)
 onion_tap.hHeader file for onion_tap.c
 or.hMaster header file for Tor-specific functionality
 or_options_st.hThe or_options_t structure, which represents Tor's configuration
 or_periodic.cPeriodic callbacks for the onion routing subsystem
 or_periodic.hHeader for core/or/or_periodic.c
 or_sys.cSubsystem definitions for OR module
 or_sys.hHeader for core/or/or_sys.c
 orconn_event.cPublish state change messages for OR connections
 orconn_event.hHeader file for orconn_event.c
 orconn_event_sys.hDeclare subsystem object for the OR connection event module
 order.cFunctions for finding the n'th element of an array
 order.hHeader for order.c
 parse_int.cConvert strings into the integers they encode, with bounds checking
 parse_int.hHeader for parse_int.c
 parsecommon.cCommon code to parse and validate various type of descriptors
 parsecommon.hHeader file for parsecommon.c
 path.cManipulate strings that contain filesystem paths
 path.hHeader for path.c
 pem.cImplement a trivial version of PEM encoding, for use with NSS
 pem.hHeader for pem.c
 periodic.cGeneric backend for handling periodic events
 pidfile.cRecord this process's PID to disk
 pidfile.hHeader for pidfile.c
 policies.cCode to parse and use address policies and exit policies
 policies.hHeader file for policies.c
 policy_parse.cCode to parse address policies
 policy_parse.hHeader file for policy_parse.c
 predict_ports.cRemember what ports we've needed so we can have circuits ready
 printf.cCompatibility wrappers around snprintf and its friends
 printf.hHeader for printf.c
 prob_distr.cImplements various probability distributions. Almost all code is courtesy of Riastradh
 prob_distr.hHeader for prob_distr.c
 process.cModule for working with other processes
 process.hHeader for process.c
 process_descs.cMake decisions about uploaded descriptors
 process_descs.hHeader file for process_descs.c
 process_sys.cSubsystem object for process setup
 process_sys.hDeclare subsystem object for the process module
 process_unix.cModule for working with Unix processes
 process_unix.hHeader for process_unix.c
 process_win32.cModule for working with Windows processes
 process_win32.hHeader for process_win32.c
 procmon.cProcess-termination monitor functions
 procmon.hHeaders for procmon.c
 protover.cVersioning information for different pieces of the Tor protocol
 protover.hHeaders and type declarations for protover.c
 pub_binding_st.hDeclaration of pub_binding_t
 pubsub.hHeader for OO publish-subscribe functionality
 pubsub_build.cConstruct a dispatch_t in safer, more OO way
 pubsub_build.hHeader used for constructing the OO publish-subscribe facility
 pubsub_builder_st.hPrivate structures used for configuring dispatchers and messages
 pubsub_check.cEnforce various requirements on a pubsub_builder
 pubsub_connect.hHeader for functions that add relationships to a pubsub builder
 pubsub_flags.hFlags that can be set on publish/subscribe messages
 pubsub_macros.hMacros to help with the publish/subscribe dispatch API
 pubsub_publish.cHeader for functions to publish using a pub_binding_t
 qstring.cImplement QuotedString parsing
 qstring.hHeader for qstring.c
 ratelim.cSummarize similar messages that would otherwise flood the logs
 ratelim.hSummarize similar messages that would otherwise flood the logs
 reachability.cRouter reachability testing; run by authorities to tell who is running
 reachability.hHeader file for reachability.c
 reasons.cConvert circuit, stream, and orconn error reasons to and/or from strings and errno values
 reasons.hHeader file for reasons.c
 recommend_pkg.cCode related to the recommended-packages subsystem
 recommend_pkg.hHeader file for recommend_pkg.c
 relay.cHandle relay cell encryption/decryption, plus packaging and receiving from circuits, plus queuing on circuits
 relay.hHeader file for relay.c
 relay_periodic.cPeriodic functions for the relay subsytem
 relay_periodic.hHeader for feature/relay/relay_periodic.c
 relay_sys.cSubsystem definitions for the relay module
 relay_sys.hHeader for feature/relay/relay_sys.c
 rendcache.cHidden service descriptor cache
 rendcache.hHeader file for rendcache.c
 rendclient.cClient code to access location-hidden services
 rendclient.hHeader file for rendclient.c
 rendcommon.cRendezvous implementation: shared code between introducers, services, clients, and rendezvous points
 rendcommon.hHeader file for rendcommon.c
 rendmid.cImplement introductions points and rendezvous points
 rendmid.hHeader file for rendmid.c
 rendparse.cCode to parse and validate v2 hidden service descriptors
 rendservice.cThe hidden-service side of rendezvous functionality
 rendservice.hHeader file for rendservice.c
 rephist.cBasic history and performance-tracking functionality
 rephist.hHeader file for rephist.c
 replaycache.cSelf-scrubbing replay cache for rendservice.c
 replaycache.hHeader file for replaycache.c
 resolve.cUse the libc DNS resolver to convert hostnames into addresses
 resolve.hHeader for resolve.c
 restrict.cDrop privileges from the current process
 restrict.hHeader for restrict.c
 router.cMiscellaneous relay functionality, including RSA key maintenance, generating and uploading server descriptors, picking an address to advertise, and so on
 router.hHeader file for router.c
 routerinfo.hHeader file for routerinfo.c
 routerkeys.cFunctions and structures to handle generating and maintaining the set of keypairs necessary to be an OR
 routerlist.cCode to maintain and access the global list of routerinfos for known servers
 routerlist.hHeader file for routerlist.c
 routermode.hHeader file for routermode.c
 routerparse.cCode to parse and validate consensus documents and votes
 routerparse.hHeader file for routerparse.c
 routerset.cFunctions and structures to handle set-type selection of routers by name, ID, address, etc
 sandbox.cCode to enable sandboxing
 sandbox.hHeader file for sandbox.c
 scanf.cLocale-independent minimal implementation of sscanf()
 scanf.hHeader for scanf.c
 scheduler.cChannel scheduling system: decides which channels should send and receive when
 scheduler.hHeader file for scheduler*.c
 selftest.cRelay self-testing
 selftest.hHeader file for selftest.c
 sendme.cCode that is related to SENDME cells both in terms of creating/parsing cells and handling the content
 sendme.hHeader file for sendme.c
 setuid.cChange the user ID after Tor has started (Unix only)
 setuid.hHeader for setuid.c
 shared_random.cFunctions and data structure needed to accomplish the shared random protocol as defined in proposal #250
 shared_random_client.cThis file contains functions that are from the shared random subsystem but used by many part of tor. The full feature is built as part of the dirauth module
 shared_random_client.hHeader file for shared_random_client.c
 shared_random_state.cFunctions and data structures for the state of the random protocol as defined in proposal #250
 shutdown.cCode to free global resources used by Tor
 shutdown.hHeader file for shutdown.c
 sigcommon.cShared hashing, signing, and signature-checking code for directory objects
 sigcommon.hHeader file for sigcommon.c
 signing.cCode to sign directory objects
 signing.hHeader file for signing.c
 smartlist.cHigher-level functions for the "smartlist" resizeable array abstraction
 smartlist.hHeader for smartlist.c
 smartlist_core.cImplements the core functionality of a smartlist (a resizeable dynamic array). For more functionality and helper functions, see the container library
 smartlist_core.hTop-level declarations for the smartlist_t dynamic array type
 smartlist_foreach.hMacros for iterating over the elements of a smartlist_t
 smartlist_split.cSplit a string into a smartlist_t of substrings
 smartlist_split.hHeader for smartlist_split.c
 socket.cCompatibility and utility functions for working with network sockets
 socket.hHeader for socket.c
 socks5_status.hStatus codes used by the SOCKS5 protocol
 statefile.cHandles parsing and encoding the persistent 'state' file that carries miscellaneous persistent state between Tor invocations
 statefile.hHeader for statefile.c
 status.cCollect status information and log heartbeat messages
 storagedir.cAn abstraction for a directory full of similar files
 storagedir.hHeader for storagedir.c
 testsupport.hMacros to implement mocking and selective exposure for the test code
 threads.hHeader for threads.c
 time.hDefinitions for timing-related constants
 time_fmt.cEncode and decode time in various formats
 time_fmt.hHeader for time_fmt.c
 time_sys.cSubsystem object for monotime setup
 time_sys.hDeclare subsystem object for the time module
 time_to_tm.cConvert to struct tm, portably
 time_to_tm.hHeader for time_to_tm.c
 timers.cWrapper around William Ahern's fast hierarchical timer wheel implementation, to tie it in with a libevent backend
 timers.hHeader for timers.c
 timeval.hDeclarations for timeval-related macros that some platforms are missing
 token_bucket.cFunctions to use and manipulate token buckets, used for rate-limiting on connections and globally
 token_bucket.hHeaders for token_bucket.c
 tor_api.hPublic C API for the Tor network service
 tor_gettimeofday.cImplementat gettimeofday() for windows, and other platforms without it
 tor_gettimeofday.hHeader for tor_gettimeofday.c
 tor_main.cStub module containing a main() function
 torcert.cImplementation for ed25519-signed certificates as used in the Tor protocol
 torerr.cHandling code for unrecoverable emergencies, at a lower level than the logging code
 torerr.hHeaders for torerr.c
 torerr_sys.cSubsystem object for the error handling subsystem
 torerr_sys.hDeclare subsystem object for torerr.c
 torint.hInteger definitions used throughout Tor
 tortls.cWrapper functions to present a consistent interface to TLS, SSL, and X.509 functions from OpenSSL
 tortls.hHeaders for tortls.c
 tortls_nss.cWrapper functions to present a consistent interface to TLS and SSL X.509 functions from NSS
 tortls_sys.hDeclare subsystem object for the tortls module
 trace.cCommon functions for event-tracing implementation
 trace.hHeader for trace.c
 transports.cPluggable Transports related code
 transports.hHeaders for transports.c
 tvdiff.cCompute the difference between timevals, in various units
 tvdiff.hHeader for tvdiff.c
 uname.cLook up a description of the operating system
 uname.hHeader for uname.c
 unparseable.hHeader file for unparseable.c
 userdb.cAccess the POSIX user database
 userdb.hHeader for userdb.c
 util_bug.hMacros to manage assertions, fatal and non-fatal
 util_string.cNon-standard string functions used throughout Tor
 util_string.hHeader for util_string.c
 versions.cCode to manipulate, parse, and compare Tor versions
 versions.hHeader file for versions.c
 voteflags.cAuthority code for deciding the performance thresholds for flags, and assigning flags to routers
 voteflags.hHeader file for voteflags.c
 voting_schedule.cThis file contains functions that are from the directory authority subsystem related to voting specifically but used by many part of tor. The full feature is built as part of the dirauth module
 voting_schedule.hHeader file for voting_schedule.c
 waitpid.cConvenience structures for handlers for handling waitpid()
 waitpid.hHeaders for waitpid.c
 wallclock_sys.hDeclare subsystem object for the wallclock module
 weakrng.cA weak but fast PRNG based on a linear congruential generator
 weakrng.hHeader for weakrng.c
 win32err.cConvert windows error codes to useful C strings
 win32err.hHeader for win32err.c
 winlib.cFind and load windows system libraries
 winlib.hHeader for winlib.c
 winprocess_sys.cSubsystem object for windows process setup
 winprocess_sys.hDeclare subsystem object for winprocess.c
 workqueue.cImplements worker threads, queues of work for them, and mechanisms for them to send answers back to the main thread
 workqueue.hHeader for workqueue.c
 x25519_sizes.hDefinitions for sizes of x25519 keys and elements
 x509.hHeaders for tortls.c
 x509_nss.cWrapper functions to present a consistent interface to X.509 functions from NSS
 x509_openssl.cWrapper functions to present a consistent interface to X.509 functions