úÎ*ñ)      provisionalmichel.boucey@gmail.com%>An embedded IPv4 address as representation of the last 32-Bit QA double-colon stands for a unique compression of many consecutive 16-Bit chunks "A separator between 16-Bit chunks An all zeros 16-Bit chunk <A four hexadecimal digits group representing a 16-Bit chunk Some useful tokens 2Returns an IPv4 address as an IPv6 address token. Returns a SixteenBits token. Returns a random  token. E.g. sixteenBitsRand "d" may produce  "d7b5". Returns Just an , or Nothing. V maybeIPv6Addr "D045::00Da:0fA9:0:0:230.34.110.80" == Just "d045:0:da:fa9::e622:6e50" 3Returns Just an expanded IPv6 address, or Nothing. Returns Just one of the valid , or Nothing. Returns the corresponding Text of an IPv6 address token. Given an arbitrary list of , returns the corresponding Text. Returns True if a list of # constitutes a valid IPv6 Address. Returns Just a list of , or Nothing. QThis is the main function which returns Just the list of a tokenized IPv6 address's Z text representation validated against RFC 4291 and canonized (rewritten) in conformation  with RFC 5952, or Nothing. LAn embedded IPv4 address have to be rewritten to output a pure IPv6 Address N text representation in hexadecimal digits. But some well-known prefixed IPv6 P addresses have to keep visible in their text representation the fact that they B deals with IPv4 to IPv6 transition process (RFC 5952 Section 5): "IPv4-compatible IPv6 address like  ::1.2.3.4 IPv4-mapped IPv6 address like ::ffff:1.2.3.4 IPv4-translated address like ::ffff:0:1.2.3.4 IPv4-translatable address like 64:ff9b::1.2.3.4 ISATAP address like fe80::5efe:1.2.3.4 Rewrites Just an embedded P into the corresponding list of pure IPv6Addr tokens, or returns an empty list. ^ ipv4AddrToIPv6AddrTokens (IPv4Addr "127.0.0.1") == [SixteenBits "7f0",Colon,SixteenBits "1"] !"/Given a MAC address, returns the corresponding  list, or an empty list. w macAddrToIPv6AddrTokens "fa:1d:58:cc:95:16" == [SixteenBits "fa1d",Colon,SixteenBits "58cc",Colon,SixteenBits "9516"] #$DGiven a valid name of a local network interface, e.g. getIPv6AddrOf "eth0", return Just the interface's IPv6 address. aGiven a valid name of a local network interface, returns Just the list of tokens of the interface's IPv6 address. UGiven the valid name of a local network interface, returns the corresponding list of  of the interface's MAC Address.       %      !"#$%&' IPv6Addr-0.1 Text.IPv6Addr IPv6AddrTokenIPv4Addr DoubleColonColonAllZeros SixteenBitsIPv6AddrsixteenBitsRand maybeIPv6AddrmaybeExpIPv6Addripv6TokensToText isIPv6AddrmaybeIPv6AddrTokensmaybeTokIPv6Addripv4AddrToIPv6AddrTokensmacAddrToIPv6AddrTokens getIPv6AddrOfgetTokIPv6AddrOfgetTokMacAddrOf IPv4AddrToken EightBitsDot tokenizeBydoteightBitsToken ipv4Tokenipv4Addrcolon doubleColon sixteenBitsmaybeIPv6AddrTokenipv6TokenToTextipv4AddrRewritefromDoubleColon toDoubleColonnetworkInterfacesIPv6AddrListnetworkInterfacesMacAddrList