Expand description
§tor-netdir
Represents a clients’-eye view of the Tor network.
§Overview
The tor-netdir crate wraps objects from tor-netdoc, and combines
them to provide a unified view of the relays on the network.
It is responsible for representing a client’s knowledge of the
network’s state and who is on it.
This crate is part of Arti, a project to implement Tor in Rust. Its purpose is to expose an abstract view of a Tor network and the relays in it, so that higher-level crates don’t need to know about the particular documents that describe the network and its properties.
There are two intended users for this crate.  First, producers
like tor-dirmgr create NetDir objects fill them with
information from the Tor network directory.  Later, consumers
like tor-circmgr use NetDirs to select relays for random
paths through the Tor network.
§Limitations
Only modern consensus methods and microdescriptor consensuses are supported.
License: MIT OR Apache-2.0
Modules§
- details
- Functionality for exposing details about a relay that most users should avoid.
- err 🔒
- Declare error type for tor-netdir
- hsdir_params 🔒hs-common
- Compute which time period and shared random value from a consensus to use at any given time.
- hsdir_ring 🔒hs-common
- Functions and type for implementing the onion service directory ring.
- params
- Implements a usable view of Tor network parameters.
- testnettesting
- Support for unit tests, in this crate and elsewhere.
- testprovidertesting
- A testing implementation of NetDirProvider.
- weight 🔒
- Functions for applying the correct weights to relays when choosing a relay at random.
Structs§
- DirEventIter 
- An iterator over the variants of DirEvent
- FamilyRules 
- Configuration for which listed family information to use when deciding whether relays belong to the same family.
- HsDirParams hs-common
- Parameters for generating and using an HsDir ring.
- HsDirs 🔒 hs-common
- Collection of hidden service directories (or parameters for them)
- NetDir
- A view of the Tor directory, suitable for use in building circuits.
- NetdirProvider Shutdown 
- The network directory provider is shutting down without giving us the netdir we asked for.
- PartialNetDir 
- A partially build NetDir – it can’t be unwrapped until it has enough information to build safe paths.
- Relay
- A view of a relay on the Tor network, suitable for building circuits.
- RelayWeight 
- An opaque type representing the weight with which a relay or set of relays will be selected for a given role.
- RouterStatus 🔒Idx 
- Index into the consensus relays
- SubnetConfig 
- Configuration for determining when two relays have addresses “too close” in the network.
- UncheckedRelay 
- A relay that we haven’t checked for validity or usability in routing.
Enums§
- DirEvent
- An event that a NetDirProvidercan broadcast to indicate that a change in the status of its directory.
- Error
- An error returned by the network directory code
- HsDirOp
- An operation for which we might be requesting a hidden service directory.
- OnionDirLookup Error hs-common
- An error returned when looking up onion service directories.
- RelayLookup Error hs-common
- An error value returned from NetDir::by_ids_detailed.
- Timeliness
- How “timely” must a network directory be?
- WeightRole 
- Possible ways to weight relays when selecting them a random.
Traits§
- ConsensusRelays 🔒
- Extension trait to provide index-type-safe .c_relays()method
- MdReceiver
- A partial or full network directory that we can download microdescriptors for.
- NetDirProvider 
- An object that can provide NetDirs, as well as inform consumers when they might have changed.
- UpcastArcNet DirProvider 
- Helper trait: allows any Arc<X>to be upcast to aArc<dyn NetDirProvider>if X is an implementation or supertrait of NetDirProvider.
Type Aliases§
- Result
- A Result using the Error type from the tor-netdir crate