Skip to content

Make sure that a circuit doesn't use relays in the same family (#43)

Lunar requested to merge lunar/arti:pu/fix-arti-48 into main

This implements Relay::in_same_family which is in turn used by ExitPathBuilder::pick_path` to avoid picking relays in the same family.

Compared to the original C implementation, we are missing support for options EnforceDistinctSubnets and NodeFamilySets.

This has only been very lightly tested so far. It feels like a small test framework is missing to verify some properties of the path selection algorithm.

I'm both quite new to Rust and to Tor internals, I'll gladly welcome suggestions for improvements.

Merge request reports