An implementation of BIP155 addrv2
messages. To ease review it is split in a few logical changes and submitted as separate, smaller, PRs.
The current one for review is: #19954
Preparation changes
Commits:
-
test: add an edge case test for CSubNet
(merged via #19351) -
net: improve encapsulation of CNetAddr
(merged via #19360) -
net: document enum Network
(merged via #19534) -
net: save the network type explicitly in CNetAddr
(merged via #19534)
Change CNetAddr::ip
to have flexible size
Commits:
-
net: change CNetAddr::ip to have flexible size
(merged via #19628)
Implement addrv2
(un)serializing
Add support to serialize CNetAddr
and CAddress
in ADDRv2 format. Invoke that from CAddrMan
serialization methods. Commits:
-
net: move HasPrefix() so it can be reused
(merged via #19845) -
test: move HasReason() so it can be reused
(merged via #19845) -
net: CNetAddr: add support to (un)serialize as ADDRv2
(merged via #19845) -
net: recognize TORv3/I2P/CJDNS networks
(merged via #19845) -
net: CAddress & CAddrMan: (un)serialize as ADDRv2
(merged via #19954)
Advertise support
Advertise ADDRv2
support to peers, handle incoming ADDRv2
messages and send to peers in that format if they have advertised support. Commits:
-
net: advertise support for ADDRv2 via new message
(merged via #19954)
All the steps to get Tor v3 support are outlined in issue#18884 Tor v3 support, this PR is one of them.