úÎ3T17!       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     provisionalmichel.boucey@gmail.com!"#$ 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. JThis is the main function which returns Just the list of a tokenized IPv6  address'?s text representation validated against RFC 4291 and canonized , in conformation with RFC 5952, or Nothing. JReturns Just the list of tokenized pure IPv6 address, always rewriting an # embedded IPv4 address if present. &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 K addresses have to keep visible in their text representation the fact that G they 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 % into the corresponding list of pure  IPv6Addr tokens. ^ ipv4AddrToIPv6AddrTokens (IPv4Addr "127.0.0.1") == [SixteenBits "7f0",Colon,SixteenBits "1"]     provisionalmichel.boucey@gmail.com4Returns Just the text representation of a canonized   , in conformation with RFC 5952, or Nothing. D maybeIPv6Addr "0:0::FFFF:192.0.2.128" == Just "::ffff:192.0.2.128" Returns Just a pure  , or Nothing. B maybePureIPv6Addr "::ffff:192.0.2.128" == Just "::ffff:c000:280" !Returns Just a pure and expanded  , or Nothing. Z maybeFullIPv6Addr "::ffff:192.0.2.128" == Just "0000:0000:0000:0000:0000:ffff:c000:0280" Returns Just the canonized  ! of the given network interface,  or Nothing.  getIPv6AddrOf "eth0"    provisionalmichel.boucey@gmail.comReturns an arbitrary  token based on a mask "____", each : underscore being replaced by a random hexadecimal digit. 9 sixteenBitsArbToken "_f__" == Just (SixteenBits "bfd4") '/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"] (JGiven a valid name of a local network interface, returns Just the list of  tokens of the interface's IPv6 address. 3Given the valid name of a local network interface, # returns the corresponding list of  of the interface's MAC Address.     )      !"#$%&'()*+,-. IPv6Addr-0.2Text.IPv6Addr.TypesText.IPv6Addr.Internal Text.IPv6AddrText.IPv6Addr.Manip IPv4AddrToken EightBitsDot IPv6AddrTokenIPv4Addr DoubleColonColonAllZeros SixteenBitsIPv6Addripv4Addrcolon doubleColon sixteenBits expandTokensmaybeIPv6AddrTokenipv6TokensToText isIPv6AddrmaybeIPv6AddrTokensmaybeTokIPv6AddrmaybeTokPureIPv6Addripv4AddrToIPv6AddrTokensfromDoubleColon toDoubleColonnetworkInterfacesIPv6AddrList maybeIPv6AddrmaybePureIPv6AddrmaybeFullIPv6Addr getIPv6AddrOfsixteenBitsArbTokenmacAddrToIPv6AddrTokensgetTokIPv6AddrOfgetTokMacAddrOf tokenizeBydoteightBitsToken ipv4Tokenipv6TokenToTextipv4AddrRewrite ipv6AddrRandnetworkInterfacesMacAddrList