diff --git a/cassandra/util.py b/cassandra/util.py index f188cdcb..45ef0e4f 100644 --- a/cassandra/util.py +++ b/cassandra/util.py @@ -1024,15 +1024,23 @@ else: """ import ctypes - class sockaddr(ctypes.Structure): + """ + Shared struct for ipv4 and ipv6. + + https://msdn.microsoft.com/en-us/library/windows/desktop/ms740496(v=vs.85).aspx + + ``__pad1`` always covers the port. + + When being used for ``sockaddr_in6``, ``ipv4_addr`` actually covers ``sin6_flowinfo``, resulting + in proper alignment for ``ipv6_addr``. + """ _fields_ = [("sa_family", ctypes.c_short), ("__pad1", ctypes.c_ushort), ("ipv4_addr", ctypes.c_byte * 4), ("ipv6_addr", ctypes.c_byte * 16), ("__pad2", ctypes.c_ulong)] - if hasattr(ctypes, 'windll'): WSAStringToAddressA = ctypes.windll.ws2_32.WSAStringToAddressA WSAAddressToStringA = ctypes.windll.ws2_32.WSAAddressToStringA @@ -1043,7 +1051,6 @@ else: WSAStringToAddressA = not_windows WSAAddressToStringA = not_windows - def inet_pton(address_family, ip_string): if address_family == socket.AF_INET: return socket.inet_aton(ip_string) @@ -1066,7 +1073,6 @@ else: raise socket.error('unknown address family') - def inet_ntop(address_family, packed_ip): if address_family == socket.AF_INET: return socket.inet_ntoa(packed_ip)