Skip to content
Snippets Groups Projects
Unverified Commit bac8bc0f authored by teor's avatar teor
Browse files

router: Refactor IPv6 ORPort function logic

Return early when there is no suitable IPv6 ORPort.
Show the address and port on error, using a convenience function.

Code simplification and refactoring.

Cleanup after 32588.
parent 861337fd
No related branches found
No related tags found
No related merge requests found
......@@ -1460,20 +1460,21 @@ router_get_advertised_ipv6_or_ap(const or_options_t *options,
return;
}
/* Like IPv4, if the relay is configured using the default
* authorities, disallow internal IPs. Otherwise, allow them. */
/* If the relay is configured using the default authorities, disallow
* internal IPs. Otherwise, allow them. For IPv4 ORPorts and DirPorts,
* this check is done in resolve_my_address(). See #33681. */
const int default_auth = using_default_dir_authorities(options);
if (! tor_addr_is_internal(addr, 0) || ! default_auth) {
tor_addr_copy(&ipv6_ap_out->addr, addr);
ipv6_ap_out->port = port;
} else {
char addrbuf[TOR_ADDR_BUF_LEN];
if (tor_addr_is_internal(addr, 0) && default_auth) {
log_warn(LD_CONFIG,
"Unable to use configured IPv6 address \"%s\" in a "
"Unable to use configured IPv6 ORPort \"%s\" in a "
"descriptor. Skipping it. "
"Try specifying a globally reachable address explicitly.",
tor_addr_to_str(addrbuf, addr, sizeof(addrbuf), 1));
fmt_addrport(addr, port));
return;
}
tor_addr_copy(&ipv6_ap_out->addr, addr);
ipv6_ap_out->port = port;
}
/** Return the port that we should advertise as our DirPort;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment