O1.2 - Make relays figure out their own IPv6 address
See Proposal 312: Tor Relay Automatic IPv6 Address Discovery: https://gitweb.torproject.org/torspec.git/tree/proposals/312-relay-auto-ipv6-addr.txt The child tickets are in proposal section order, but they will probably be implemented in this order: Dependencies: * Propose and implement IPv6 ORPort reachability checks on relays (O1.1, legacy/trac#33048) Pre-Implementation: * Test IPv4 Address Detection using Chutney (O1.3, legacy/trac#33250) * Detailed Address Resolution Logs Explicit IPv6 Configurations: * Make the Address torrc Option Support IPv6 Literals * Use Advertised ORPort IPv4 and IPv6 Addresses in Descriptors * Use Local Interface IPv6 Address Directory Authority Security: * Stop Directory Authorities Resolving *Port Hostnames * Limit Directory Authority Addresses to Address and ORPort Remote IPv6 Information: * Make the Address torrc Option Resolve IPv6 Hostnames * Use Own Hostname IPv6 Addresses * Use Directory Header IPv6 Addresses * Update Directory Spec for IPv6 X-Your-Address-Is Auto IPv6 ORPort: * Automatically Enable an IPv6 ORPort * Add an AddressDisableIPv6 torrc option * Publish IPv4 Descriptor on Guessed IPv6 Reachability Failure Internal Testing: * Test Relay IPv6 Addresses Discovery using Chutney (O1.3, legacy/trac#33251) Public Tor Network Testing: * Test Relay IPv6 Addresses Discovery on the Tor Network * Ask Relay Operators to Test IPv6 Addresses Discovery Children: * [x] #33679 Make sure every address function that takes for_listening supports IPv6 * [x] #33073 Write a proposal for Tor Relays to Automatically Find their IPv6 Address * [x] #5940 Figure out own IPv6 address * [x] #33091 Remove redundant checks in ip_address_changed() * [x] #32720 How much bandwidth does a user use to bootstrap and maintain dir info? How has that changed over time? * [x] #33233 Prop 312: 3.2.1. Make the Address torrc Option Support IPv6 Literals * [x] #33234 Prop 312: 3.2.1. Make the Address torrc Option Resolve IPv6 Hostnames * [x] #33235 Prop 312: 3.2.1. Test Address torrc Option Configurations * [x] #33236 Prop 312: 3.2.2. Use Advertised ORPort IPv4 Address in Descriptors * [x] #33237 Prop 312: 3.2.2. Stop Directory Authorities Resolving *Port Hostnames * [x] #33238 Prop 312: 3.2.3. Use Local Interface IPv6 Address * [x] #33239 Prop 312: 3.2.3 Limit Directory Authority Addresses to Address and ORPort * [x] #33240 Prop 312: 3.2.4. Use Own Hostname IPv6 Addresses * [x] #33241 Prop 312: 3.2.5. Use Directory Header IPv6 Addresses * [x] #33244 Prop 312: 3.2.5. Use IPv6 Addresses from Directory Servers * [x] #33245 Prop 312: 3.2.6. Add an AddressDisableIPv6 torrc option * [x] #33246 Prop 312: 3.2.7. Automatically Enable an IPv6 ORPort * [x] #33247 Prop 312: 3.2.7. Publish IPv4 Descriptor on Guessed IPv6 Reachability Failure * [x] #33248 Prop 312: 3.5.5. Detailed Address Resolution Logs * [x] #33252 Prop 312: 5.1. Test Relay IPv6 Addresses Discovery on the Tor Network * [x] #33253 Prop 312: 5.1. Ask Relay Operators to Test IPv6 Addresses Discovery * [x] #40022 Prop 312: Relay learn address from NETINFO cell * [x] #40025 Prop 312: Make relay pick IPv4 or/and IPv6 resolved address in descriptor * [x] #33768 Make tor_inet_pton() handle bad addresses consistently on Windows * [x] #33789 Before making changes, move router pick address functions to their own C file
issue