Crate tor_netdir

Source
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.
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.

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.
HsDirParamshs-common
Parameters for generating and using an HsDir ring.
NetDir
A view of the Tor directory, suitable for use in building circuits.
NetdirProviderShutdown
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.
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 NetDirProvider can 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.
OnionDirLookupErrorhs-common
An error returned when looking up onion service directories.
RelayLookupErrorhs-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§

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.
UpcastArcNetDirProvider
Helper trait: allows any Arc<X> to be upcast to a Arc<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