summaryrefslogtreecommitdiff
path: root/crates/tor-circmgr/src/path
Commit message (Collapse)AuthorAgeFilesLines
* tor-circmgr: Fix a clippy warning.Gabriela Moldovan2024-03-211-2/+2
|
* tor-circmgr: If full vanguards are enabled, apply exclusions to the extra ↵Gabriela Moldovan2024-03-211-7/+7
| | | | hop too (fmt).
* tor-circmgr: If full vanguards are enabled, apply exclusions to the extra ↵Gabriela Moldovan2024-03-211-5/+9
| | | | hop too.
* tor-circmgr: Rewrite RelayExclusion building using exclude_identities().Gabriela Moldovan2024-03-211-19/+7
|
* tor-circmgr: Add function for building a RelayExclusion from a slice of relays.Gabriela Moldovan2024-03-211-0/+14
|
* tor-guardmgr: Make Vanguard::select_relay take a RelayExclusion.Gabriela Moldovan2024-03-211-3/+31
| | | | | | | This enables us to prevent the same relay from being picked in consecutive positions in a path. Part of #1340
* tor-circmgr: Clarify that stub circuits are sometimes 4-hop circuits.Gabriela Moldovan2024-03-201-1/+1
|
* tor-circmgr: Move HsPathBuilder trait impl closer to struct definition.Gabriela Moldovan2024-03-201-35/+35
| | | | This is just code movement to make the code a bit easier to follow.
* tor-circmgr: Add allow(unused) for functions only used on particular feature ↵Gabriela Moldovan2024-03-201-0/+2
| | | | sets.
* tor-circmgr: Move ExitPathBuilder::from_chosen_exit under the test mod.Gabriela Moldovan2024-03-201-10/+13
| | | | | `ExitPathBuilder` is now `pub(crate)`, so we need to move this under the `test` module to fix the "unused" clippy warning.
* tor-circmgr: Make the path module crate-private.Gabriela Moldovan2024-03-203-12/+12
| | | | | | | | | | | | | | We're not currently using any of the path builders outside of `tor-circmgr`, so let's make them crate-private for now. Care must be taken if/when we decide to make them public again. For instance, the `HsPathBuilder` exposes two path building functions, one that uses vanguards, and one that doesn't. We want to strongly encourage the use of the vanguards-aware version of the function whenever the `vanguards` feature is enabled, without breaking any of its existing non-vanguard uses. Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/2046#note_3010217
* tor-circmgr: Reference #1339 in a TODO.Gabriela Moldovan2024-03-201-0/+2
|
* tor-circmgr: Move HsPathBuilder docs to the module-level.Gabriela Moldovan2024-03-201-39/+41
|
* tor-circmgr: Unconditionally define VanguardMode.Gabriela Moldovan2024-03-201-1/+2
|
* tor-circmgr: Apply deferred cargo fmt.Gabriela Moldovan2024-03-201-9/+2
|
* tor-circmgr: Rename pick_path to pick_path_with_vanguards.Gabriela Moldovan2024-03-201-4/+4
| | | | | | When the `vanguards` feature is enabled, we define `pick_path_with_vanguards` instead of `pick_path`, rather than conditionally defining 2 different versions of the same function.
* tor-circmgr: Remove unnecessary AnonymousPathBuilder impl.Gabriela Moldovan2024-03-201-30/+15
| | | | | | | | Instead of the `B: AnonymousPathBuilder` argument, `select_guard` now takes separate arguments for the values it previously obtained by calling the methods of `AnonymousPathBuilder`. This enables us to remove the mostly unnecessary `AnonymousPathBuilder` implementation of `VanguardHsPathBuilder`.
* tor-circmgr: Remove an addressed TODO.Gabriela Moldovan2024-03-201-5/+0
| | | | | This was addressed by extracting the guard selection from `pick_path()` into `select_guard()`.
* tor-circmgr: Talk about vanguards path selection in HsPathBuilder docs.Gabriela Moldovan2024-03-201-3/+23
|
* tor-circmgr: Implement vanguard path selection in HsPathBuilder.Gabriela Moldovan2024-03-201-8/+120
| | | | Part of #1279
* tor-circmgr: Give pick_path a VanguardMgr.Gabriela Moldovan2024-03-201-0/+4
|
* tor-circmgr: Tell HsPathBuilder what kind of circuit stub is needed.Gabriela Moldovan2024-03-201-3/+11
|
* tor-circmgr: Move pick_path out of AnonymousCircuitBuilder.Gabriela Moldovan2024-03-142-25/+57
| | | | This enables us to make `AnonymousCircuitBuilder` private.
* tor-circmgr: Improve the HsPathBuilder docs.Gabriela Moldovan2024-03-141-0/+20
|
* tor-circmgr: Remove unused require_stability.Gabriela Moldovan2024-03-141-13/+1
|
* tor-circmgr: Add a TODO about vanguards path selection.Gabriela Moldovan2024-03-141-0/+24
|
* tor-circmge: Remove AnyRelayForOnionService.Gabriela Moldovan2024-03-141-34/+0
|
* tor-circmgr: Add a new hspath module for building onion service circuits.Gabriela Moldovan2024-03-141-0/+76
|
* tor-circmgr: Implement AnonymousPathBuilder for ExitPathBuilder.Gabriela Moldovan2024-03-141-161/+24
|
* Run maint/add_warning.Nick Mathewson2024-03-132-0/+2
|
* circmgr: Rename "any exit" code to reflect its real purposeNick Mathewson2024-03-121-7/+10
| | | | | (These functionalities are for onion service circuits, and don't actually need to go to an exit at all.)
* circmgr: Begin porting path selection to tor-relay-selectionNick Mathewson2024-03-122-189/+132
| | | | | This covers the easy cases, where we are selecting relays at random based on a selector.
* Mark code with "TODO #504" and "TODO #789".Nick Mathewson2024-02-222-0/+11
| | | | | | | | I've done this by looking for every non-test instance of pick_relays or pick_n_relays, and for every non-test usage of any non-ID-related method on Relay or UncheckedRelay. Part of #504.
* Add a couple of TODOs about Stable-based path selection.Nick Mathewson2024-02-201-0/+4
|
* When building paths, require the Stable flag as appropriateNick Mathewson2024-02-201-0/+21
| | | | | | | | | | | | The Stable flag means that circuits build through a given relay are not likely to get closed precipitously. (Currently, the authorities guess this by looking at the relay's mean time between failures.) Generally speaking, paths must be Stable if: * They are going to get used for a rendezvous point. * They are going to get used for an introduction point. * They are going to get used for exiting to a member of long_lived_ports.
* Require the Fast flag on all randomly selected relays.Nick Mathewson2024-02-201-9/+16
| | | | | | This matches the behavior of C tor. Part of #1100.
* Only pick Fast-flagged relays as directory cachesNick Mathewson2024-02-201-1/+3
| | | | | | Matches the behavior of C tor. Part of #1100.
* Require that guards are Fast and Stable.Nick Mathewson2024-02-201-1/+1
| | | | | | This matches the behavior of C tor. Part of #1100.
* arti-client: add exit selection with GeoIP country codeseta2023-09-181-1/+54
| | | | | | | | | | | | | | | | | | | | This threads the country codes work through the rest of the codebase: - `tor-dirmgr` will now enable GeoIP with the embedded database when the `geoip` future is enabled - This can be extended later using the `DirMgrConfig` to allow specifying a custom database; this is not done here, though - `tor-circmgr`'s `SupportedCircUsage` and `TargetCircUsage` fields gain new `country_code` members to allow filtering circuits by country - These are `()` in builds where the `geoip` feature is not enabled -- doing it this way means we don't have to copy and paste huge swathes of code, since we can't use `#[cfg]` in patterns - `ExitPathBuilder` gains (hacked-in) support for choosing a relay with the correct country code - Due to the lack of conjuction, we just copy and paste a small bit, pending further refactoring - `StreamPrefs` now lets you specify a country code, letting embedders make use of the feature
* Run maint/add_warning to add lint block everywhereIan Jackson2023-08-232-0/+2
|
* Run maint/add_warning to actually apply new lint allowsIan Jackson2023-07-102-0/+2
|
* ExitPath: Add an explanation of WeightRole::Exit on non-exit circsNick Mathewson2023-04-121-0/+7
| | | | | | | | | In one case, we use WeightRole::Exit on circuits that can't actually be used to exit. This commit adds a comment to explain why, so that we don't wonder about it in the future, and we have some indication of whether it's still appropriate. Closes #785
* circmgr: Mark a number of internal APIs as hs-only.Nick Mathewson2023-04-061-0/+4
| | | | | | This resolves a few dead-code warnings. Closes #801.
* circmgr: Expand an incomplete comment in exitpath.rsNick Mathewson2023-04-061-2/+6
|
* circmgr: Add a usage for building the beginning of an hs circNick Mathewson2023-03-221-1/+44
| | | | | This only builds the first 3 hops. It can be extended to a fourth hop later -- or not, depending on the circuit kind.
* Allow clippy::unchecked_duration_subtraction in testsNick Mathewson2023-01-272-0/+2
| | | | | This panics on error, and we're fine with a panic on misbehavior in tests.
* test lint blocks: Add many many automaticallyIan Jackson2022-12-121-1/+8
| | | | | This is precisely the result of running the rune in maint/adhoc-add-lint-blocks.
* Refactor external guardmgr APIs: Stop taking NetDir arguments.Nick Mathewson2022-11-082-13/+5
| | | | | | | | | These arguments were used only for legacy (testing) purposes; the tests now use `TestNetDirProvider`. This lets us simplify our internal logic for passing a `NetDir` to our samples, and prepare for having a `BridgeSet` to pass there instead. This is a breaking change to `guardmgr` and `circmgr`.
* guardmgr config: Introduce and require new GuardMgrConfig traitIan Jackson2022-11-032-2/+6
| | | | | It doesn't seem to me like it makes sense to provide the backward compatibility here.
* Circmgr: construct paths using either Relay or OwnedCircTargetNick Mathewson2022-10-241-24/+80
| | | | | | | | | | | Previously we could only use Relay for this case, which won't work any more: a Bridge is not a `tor_netdir::Relay`. Instead we allow the GuardMgr to give us something that knows how to convert itself into an OwnedCircTarget. This change required a far amount of follow-on revisions and refactoring, but it should all be internal to the path-building logic.