32 lines
762 B
Python
32 lines
762 B
Python
import logging
|
|
import re
|
|
import socket
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def try_ipv6_socket():
|
|
"""Determine if system really supports IPv6"""
|
|
if not socket.has_ipv6:
|
|
return False
|
|
try:
|
|
socket.socket(socket.AF_INET6).close()
|
|
return True
|
|
except OSError as exc:
|
|
logger.debug(
|
|
f"Platform supports IPv6, but socket creation failed, "
|
|
f"disabling: {exc}"
|
|
)
|
|
return False
|
|
|
|
|
|
#: Boolean value that indicates if creating an IPv6 socket will succeed.
|
|
has_ipv6 = try_ipv6_socket()
|
|
|
|
|
|
def format_hostname(hostname):
|
|
"""Format hostname for display."""
|
|
if has_ipv6 and re.match(r"\d+.\d+.\d+.\d+", hostname) is not None:
|
|
hostname = f"::ffff:{hostname}"
|
|
return hostname
|