import socket
import struct
def analyze_ipv6_address(addr_str):
print(f"Analyzing address: {addr_str}")
addr_bytes = socket.inet_pton(socket.AF_INET6, addr_str)
segments = struct.unpack('>8H', addr_bytes)
print(f"Segments: {[hex(s) for s in segments]}")
print(f"Segments (decimal): {list(segments)}")
interface_segments = segments[4:8]
print(f"Interface ID segments (4-7): {[hex(s) for s in interface_segments]}")
non_zero_interface = [(i+4, seg) for i, seg in enumerate(interface_segments) if seg != 0]
print(f"Non-zero interface segments: {non_zero_interface}")
print(f"Is interface empty? {len(non_zero_interface) == 0}")
return segments, non_zero_interface
if __name__ == "__main__":
analyze_ipv6_address("2001:db8:85a3::8a2e:370:7334")