mirror of
https://github.com/bitcoin/bitcoin.git
synced 2024-11-20 10:38:42 +01:00
contrib: recognize CJDNS seeds as such
An IPv6 address from fc00::/8 could be either from the CJDNS network or from a private-unroutable-reserved segment of IPv6. A seed node with such an address must be from the CJDNS network, otherwise other peers will not be able to connect to it.
This commit is contained in:
parent
f9c28330a0
commit
420695c193
@ -61,7 +61,7 @@ def name_to_bip155(addr):
|
|||||||
raise ValueError(f'Invalid I2P {vchAddr}')
|
raise ValueError(f'Invalid I2P {vchAddr}')
|
||||||
elif '.' in addr: # IPv4
|
elif '.' in addr: # IPv4
|
||||||
return (BIP155Network.IPV4, bytes((int(x) for x in addr.split('.'))))
|
return (BIP155Network.IPV4, bytes((int(x) for x in addr.split('.'))))
|
||||||
elif ':' in addr: # IPv6
|
elif ':' in addr: # IPv6 or CJDNS
|
||||||
sub = [[], []] # prefix, suffix
|
sub = [[], []] # prefix, suffix
|
||||||
x = 0
|
x = 0
|
||||||
addr = addr.split(':')
|
addr = addr.split(':')
|
||||||
@ -77,7 +77,14 @@ def name_to_bip155(addr):
|
|||||||
sub[x].append(val & 0xff)
|
sub[x].append(val & 0xff)
|
||||||
nullbytes = 16 - len(sub[0]) - len(sub[1])
|
nullbytes = 16 - len(sub[0]) - len(sub[1])
|
||||||
assert((x == 0 and nullbytes == 0) or (x == 1 and nullbytes > 0))
|
assert((x == 0 and nullbytes == 0) or (x == 1 and nullbytes > 0))
|
||||||
return (BIP155Network.IPV6, bytes(sub[0] + ([0] * nullbytes) + sub[1]))
|
addr_bytes = bytes(sub[0] + ([0] * nullbytes) + sub[1])
|
||||||
|
if addr_bytes[0] == 0xfc:
|
||||||
|
# Assume that seeds with fc00::/8 addresses belong to CJDNS,
|
||||||
|
# not to the publicly unroutable "Unique Local Unicast" network, see
|
||||||
|
# RFC4193: https://datatracker.ietf.org/doc/html/rfc4193#section-8
|
||||||
|
return (BIP155Network.CJDNS, addr_bytes)
|
||||||
|
else:
|
||||||
|
return (BIP155Network.IPV6, addr_bytes)
|
||||||
else:
|
else:
|
||||||
raise ValueError('Could not parse address %s' % addr)
|
raise ValueError('Could not parse address %s' % addr)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user