summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorteor (Tim Wilson-Brown) <teor2345@gmail.com>2016-03-01 16:41:52 +0100
committerteor (Tim Wilson-Brown) <teor2345@gmail.com>2016-03-01 16:48:16 +0100
commit2120e140093484725ccb7221fa117e2c18795c4b (patch)
tree03d4759f2dc22048d84dde9d9a398cf6f93650f8
parent9fc472e1a8a53a18dfbd5c9cde2f1c268c335e96 (diff)
downloadtor-2120e140093484725ccb7221fa117e2c18795c4b.tar.gz
tor-2120e140093484725ccb7221fa117e2c18795c4b.zip
Allow internal IPv6 addresses in descriptors in private networks
-rw-r--r--changes/bug171534
-rw-r--r--src/or/router.c6
2 files changed, 9 insertions, 1 deletions
diff --git a/changes/bug17153 b/changes/bug17153
new file mode 100644
index 0000000000..15a53c16f7
--- /dev/null
+++ b/changes/bug17153
@@ -0,0 +1,4 @@
+ o Minor bugfixes (test networks, IPv6):
+ - Allow internal IPv6 addresses in descriptors in test networks.
+ Fixes bug 17153; bugfix on 6b4af1071 in 0.2.3.16-alpha.
+ Patch by "teor", reported by "karsten".
diff --git a/src/or/router.c b/src/or/router.c
index 80732c9036..60b03c0b54 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -1941,7 +1941,11 @@ router_build_fresh_descriptor(routerinfo_t **r, extrainfo_t **e)
! p->server_cfg.no_advertise &&
! p->server_cfg.bind_ipv4_only &&
tor_addr_family(&p->addr) == AF_INET6) {
- if (! tor_addr_is_internal(&p->addr, 0)) {
+ /* Like IPv4, if the relay is configured using the default
+ * authorities, disallow internal IPs. Otherwise, allow them. */
+ const int default_auth = (!options->DirAuthorities &&
+ !options->AlternateDirAuthority);
+ if (! tor_addr_is_internal(&p->addr, 0) || ! default_auth) {
ipv6_orport = p;
break;
} else {