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