Expand description
§tor-circmgr
circuits through the Tor network on demand.
§Overview
This crate is part of Arti, a project to implement Tor in Rust.
In Tor, a circuit is an encrypted multi-hop tunnel over multiple relays. This crate’s purpose, long-term, is to manage a set of circuits for a client. It should construct circuits in response to a client’s needs, and preemptively construct circuits so as to anticipate those needs. If a client request can be satisfied with an existing circuit, it should return that circuit instead of constructing a new one.
§Compile-time features
-
specific-relay
: Support for connecting to a relay via specifically provided connection instructions, rather than using information from a Tor network directory. -
full
: Enable all features above.
§Experimental and unstable features
Note that the APIs enabled by these features are NOT covered by semantic versioning1 guarantees: we might break them or remove them between patch versions.
-
experimental-api
: Add additional non-stable APIs to our public interfaces. -
experimental
: Enable all the above experimental features.
License: MIT OR Apache-2.0
Remember, semantic versioning is what makes various
cargo
features work reliably. To be explicit: if you wantcargo update
to only make safe changes, then you cannot enable these features. ↩
Re-exports§
pub use isolation::IsolationToken;
Modules§
- build
- Facilities to build circuits directly, instead of via a circuit manager.
- hspool
hs-common
- Manage a pool of circuits for usage with onion services.
- isolation
- Types related to stream isolation
- path
- Code to construct paths through the Tor network
- timeouts
- Code for estimating good values for circuit timeouts.
Structs§
- CircMgr
- A Circuit Manager (CircMgr) manages a set of circuits, returning them when they’re suitable, and launching them if they don’t already exist.
- Circuit
Timing - Configuration for circuit timeouts, expiration, and so on.
- Circuit
Timing Builder - Builder for
CircuitTiming
. - Clock
Skew Events - A stream of
SkewEstimate
events. - First
HopId - A unique cryptographic identifier for a selected guard or fallback directory.
- Path
Config - Rules for building paths over the network.
- Path
Config Builder - Builder for
PathConfig
. - Preemptive
Circuit Config - Configuration for preemptive circuits.
- Preemptive
Circuit Config Builder - Builder for
PreemptiveCircuitConfig
. - Skew
Estimate - An estimate of how skewed our clock is, plus a summary of why we think so.
- Target
Port - A port that we want to connect to as a client.
- Target
Ports - Set of requested target ports, mostly for use in error reporting
- Test
Config testing
- Testing configuration, with public fields
Enums§
- DirInfo
- Represents what we know about the Tor network.
- Error
- An error returned while looking up or building a circuit
- External
Activity - An activity that can succeed or fail, and whose success or failure can be attributed to a guard.
Traits§
- Circ
MgrConfig - Configuration for a circuit manager
- Guard
MgrConfig - Configuration for a guard manager
Type Aliases§
- Result
- A Result type as returned from this crate.