aboutsummaryrefslogtreecommitdiff
path: root/crates/tor-circmgr/src/path
Commit message (Collapse)AuthorAgeFilesLines
...
* tor-circmgr: Assign error-handling closure to variable.Gabriela Moldovan2024-05-141-7/+10
| | | | We will soon need to reuse this.
* tor-circmgr: Rename neighbor_exclusion variables for clarity.Gabriela Moldovan2024-05-141-4/+4
| | | | | | I am about to reuse one of these on the "lite" vanguards branch. I am renaming them to make it easier to see which one of the two I will be using.
* tor-circmgr: After building the HS path, assert the length is correct.Gabriela Moldovan2024-05-141-1/+18
| | | | | | One of these assertions currently fails, because we have a bug in the vanguard path builder: if lite vanguards are enabled, we only build 2-hop circuits instead of 3.
* tor-circmgr: Remove TODO expressing doubt about VanguardHsPathBuilder.Gabriela Moldovan2024-05-091-2/+0
| | | | | I don't think it's all wrong, this was left over from the first draft implementation.
* tor-guardmgr: Pass an rng to select_vanguard.Gabriela Moldovan2024-04-051-2/+2
| | | | | This function will need to randomly select a vanguard, so it needs an `Rng`.
* tor-guardmgr: Give VanguardMgr a handle to the runtime.Gabriela Moldovan2024-04-051-2/+2
|
* exitpath: Refactor a test to use tor-relay-usage.Nick Mathewson2024-03-281-20/+14
|
* Remove temporary functions in CheckedRelay.Nick Mathewson2024-03-282-4/+5
|
* 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