:7&      !"#$% provisionalmichel.boucey@gmail.comNone>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.comNone Returns & one of the valid , or '. (Returns the corresponding Text of an IPv6 address token. Given an arbitrary list of , returns the corresponding Text. Returns ) if a list of # constitutes a valid IPv6 Address. Returns & a list of , or '. (This is the main function which returns & the list of a tokenized IPv6 F address text representation validated against RFC 4291 and canonized # in conformation with RFC 5952, or '. Returns &> 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 & an embedded % into the corresponding list of pure  IPv6Addr tokens. ^ ipv4AddrToIPv6AddrTokens (IPv4Addr "127.0.0.1") == [SixteenBits "7f0",Colon,SixteenBits "1"] #+,-./012345678 9: (;*   #+,-./012345678 9: (;* provisionalmichel.boucey@gmail.comNoneReturns & an arbitrary  token based on a mask "____", each : underscore being replaced by a random hexadecimal digit. 9 sixteenBitsArbToken "_f__" == Just (SixteenBits "bfd4") Generates a partial  with n  /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"] 9Given a valid name of a local network interface, returns & the list of  tokens of the interface's IPv6 address, or '. 1Given a valid name of a local network interface,  returns & the corresponding list of  of the interface's MAC Address,  or '. < < provisionalmichel.boucey@gmail.comNone Returns &( the text representation of a canonized  # in conformation with RFC 5952, or '. O maybeIPv6Addr "0:0::FFFF:192.0.2.128" == Just (IPv6Addr "::ffff:192.0.2.128") !Returns & a pure , or '. M maybePureIPv6Addr "::ffff:192.0.2.128" == Just (IPv6Addr "::ffff:c000:280") "Returns & a pure and expanded , or '. e maybeFullIPv6Addr "::ffff:192.0.2.128" == Just (IPv6Addr "0000:0000:0000:0000:0000:ffff:c000:0280") #Returns &I the reverse lookup domain name corresponding of the given IPv6 address, ' as define in RFC 3596 Section 2.5, or '. w ip6arpa "4321:0:1:2:3:4:567:89ab" == Just "b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.ip6.arpa." $Returns & the canonized ! of the given network interface,  or Nothing.  getIPv6AddrOf "eth0" %Returns a random   !"#$% !"#$% !"$#% !"#$%=       !"#$%&'()*+,*+-./0123456789:;<=>?@ABCDE IPv6Addr-0.3Text.IPv6Addr.TypesText.IPv6Addr.InternalText.IPv6Addr.Manip Text.IPv6Addr IPv6AddrTokenIPv4Addr DoubleColonColonAllZeros SixteenBitsIPv6Addr IPv4AddrToken EightBitsDotcolon doubleColonipv4Addr sixteenBits expandTokensmaybeIPv6AddrTokenipv6TokensToText isIPv6AddrmaybeIPv6AddrTokensmaybeTokIPv6AddrmaybeTokPureIPv6Addripv4AddrToIPv6AddrTokensfromDoubleColon toDoubleColonipv6TokensToIPv6AddrnetworkInterfacesIPv6AddrListsixteenBitsArbTokenpartialRandAddrmacAddrToIPv6AddrTokensgetTokIPv6AddrOfgetTokMacAddrOf maybeIPv6AddrmaybePureIPv6AddrmaybeFullIPv6Addrip6arpa getIPv6AddrOf randIPv6Addrbase Data.MaybeJustNothingipv6TokenToTextghc-prim GHC.TypesTrueipv4AddrRewritetokdottokcolon tokdcolontok0tok4x0tok1tokfffftok64tokff9btokfe80tok5efetok200 tokenizedBydoteightBitsToken ipv4Token countIPv4AddrnetworkInterfacesMacAddrList