Add an EnforceDistinctSubnets option so that clients who know what they are doing (mainly people with private testing networks) can disable our same-/16 detection.

svn:r8504
This commit is contained in:
Nick Mathewson
2006-09-25 22:12:54 +00:00
parent 01f9e97d43
commit 49ad1eefa1
6 changed files with 21 additions and 4 deletions
+1
View File
@@ -152,6 +152,7 @@ static config_var_t _option_vars[] = {
VAR("DirPort", UINT, DirPort, "0"),
OBSOLETE("DirPostPeriod"),
VAR("DirServer", LINELIST, DirServers, NULL),
VAR("EnforceDistinctSubnets", BOOL, EnforceDistinctSubnets,"1"),
VAR("EntryNodes", STRING, EntryNodes, NULL),
VAR("ExcludeNodes", STRING, ExcludeNodes, NULL),
VAR("ExitNodes", STRING, ExitNodes, NULL),
+2
View File
@@ -1581,6 +1581,8 @@ typedef struct {
char *ServerDNSResolvConfFile; /**< If provided, we configure our internal
* resolver from the file here rather than from
* /etc/resolv.conf (Unix) or the registry (Windows). */
int EnforceDistinctSubnets; /** If true, don't allow multiple routers in the
* same network zone in the same circuit. */
} or_options_t;
/** Persistent state for an onion router, as saved to disk. */
+3 -1
View File
@@ -629,10 +629,12 @@ routerlist_add_family(smartlist_t *sl, routerinfo_t *router)
{
routerinfo_t *r;
config_line_t *cl;
or_options_t *options = get_options();
/* First, add any routers with similar network addresses.
* XXX It's possible this will be really expensive; we'll see. */
routerlist_add_network_family(sl, router);
if (options->EnforceDistinctSubnets)
routerlist_add_network_family(sl, router);
if (!router->declared_family)
return;