Allow binding to IPv6 (if present)

If an interface has an IPv6 address record associated with it then, and only then, prefer that.

Otherwise AF_INET is used (Ipv4 address)
This commit is contained in:
Tristan B. Velloza Kildaire 2024-11-03 17:54:59 +02:00 committed by GitHub
parent d002a75f34
commit f55004a574
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -412,6 +412,11 @@ class TCPServerInterface(Interface):
def get_address_for_if(name): def get_address_for_if(name):
import RNS.vendor.ifaddr.niwrapper as netinfo import RNS.vendor.ifaddr.niwrapper as netinfo
ifaddr = netinfo.ifaddresses(name) ifaddr = netinfo.ifaddresses(name)
# IPv6 preference (if present)
if(netinfo.AF_INET6 in ifaddr):
return ifaddr[netinfo.AF_INET6][0]["addr"]
return ifaddr[netinfo.AF_INET][0]["addr"] return ifaddr[netinfo.AF_INET][0]["addr"]
@staticmethod @staticmethod