Tor chooses at most one entry guard per family
In choose_good_entry_server(), we do
/* and exclude current entry guards, if applicable */
if (options->UseEntryGuards && entry_guards) {
SMARTLIST_FOREACH(entry_guards, entry_guard_t *, entry,
{
if ((r = router_get_by_digest(entry->identity))) {
smartlist_add(excluded, r);
routerlist_add_family(excluded, r);
}
});
}
That routerlist_add_family() line means that we do not consider any nodes to be a new guard if they're in the family of one of our current guards.
Is that a good idea (due to increased diversity)? Bad idea (due to decreased diversity)? Scary idea? What were we thinking?
Note that "family" includes "in the same /16".