-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Library to deal with IPv6 address text representation. -- -- Library to deal with IPv6 address text representation, canonization -- and manipulations. @package IPv6Addr @version 0.2 -- | Dealing with IPv6 address's text representation, canonization and -- manipulations. module Text.IPv6Addr.Types type IPv6Addr = Text data IPv6AddrToken -- | A four hexadecimal digits group representing a 16-Bit chunk SixteenBits :: Text -> IPv6AddrToken -- | An all zeros 16-Bit chunk AllZeros :: IPv6AddrToken -- | A separator between 16-Bit chunks Colon :: IPv6AddrToken -- | A double-colon stands for a unique compression of many consecutive -- 16-Bit chunks DoubleColon :: IPv6AddrToken -- | An embedded IPv4 address as representation of the last 32-Bit IPv4Addr :: Text -> IPv6AddrToken data IPv4AddrToken Dot :: IPv4AddrToken EightBits :: Text -> IPv4AddrToken instance Eq IPv6AddrToken instance Show IPv6AddrToken instance Eq IPv4AddrToken instance Show IPv4AddrToken -- | Dealing with IPv6 address text representation, canonization and -- manipulations. module Text.IPv6Addr.Internal colon :: Text -> Maybe IPv6AddrToken doubleColon :: Text -> Maybe IPv6AddrToken sixteenBits :: Text -> Maybe IPv6AddrToken ipv4Addr :: Text -> Maybe IPv6AddrToken expandTokens :: [IPv6AddrToken] -> [IPv6AddrToken] -- | Returns Just one of the valid IPv6AddrToken, or Nothing. maybeIPv6AddrToken :: Text -> Maybe IPv6AddrToken -- | Returns Just a list of IPv6AddrToken, or Nothing. maybeIPv6AddrTokens :: Text -> Maybe [IPv6AddrToken] -- | Given an arbitrary list of IPv6AddrToken, returns the -- corresponding Text. ipv6TokensToText :: [IPv6AddrToken] -> Maybe Text -- | Returns True if a list of IPv6AddrToken constitutes a valid -- IPv6 Address. isIPv6Addr :: [IPv6AddrToken] -> Bool -- | This 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. maybeTokIPv6Addr :: Text -> Maybe [IPv6AddrToken] -- | Returns Just the list of tokenized pure IPv6 address, always rewriting -- an embedded IPv4 address if present. maybeTokPureIPv6Addr :: Text -> Maybe [IPv6AddrToken] -- | Rewrites Just an embedded IPv4Addr into the corresponding list -- of pure IPv6Addr tokens. -- --
-- ipv4AddrToIPv6AddrTokens (IPv4Addr "127.0.0.1") == [SixteenBits "7f0",Colon,SixteenBits "1"] --ipv4AddrToIPv6AddrTokens :: IPv6AddrToken -> [IPv6AddrToken] fromDoubleColon :: [IPv6AddrToken] -> [IPv6AddrToken] toDoubleColon :: [IPv6AddrToken] -> [IPv6AddrToken] networkInterfacesIPv6AddrList :: IO [(String, IPv6)] -- | Dealing with IPv6 address text representation, canonization and -- manipulations. module Text.IPv6Addr type IPv6Addr = Text -- | Returns Just the text representation of a canonized IPv6Addr in -- conformation with RFC 5952, or Nothing. -- --
-- maybeIPv6Addr "0:0::FFFF:192.0.2.128" == Just "::ffff:192.0.2.128" --maybeIPv6Addr :: Text -> Maybe IPv6Addr -- | Returns Just a pure IPv6Addr, or Nothing. -- --
-- maybePureIPv6Addr "::ffff:192.0.2.128" == Just "::ffff:c000:280" --maybePureIPv6Addr :: Text -> Maybe IPv6Addr -- | Returns Just a pure and expanded IPv6Addr, or Nothing. -- --
-- maybeFullIPv6Addr "::ffff:192.0.2.128" == Just "0000:0000:0000:0000:0000:ffff:c000:0280" --maybeFullIPv6Addr :: Text -> Maybe IPv6Addr -- | Returns Just the canonized IPv6Addr of the given network -- interface, or Nothing. -- --
-- getIPv6AddrOf "eth0" --getIPv6AddrOf :: String -> IO (Maybe IPv6Addr) -- | Dealing with IPv6 address's text representation, canonization and -- manipulations. module Text.IPv6Addr.Manip -- | Returns an arbitrary SixteenBits token based on a mask "____", -- each underscore being replaced by a random hexadecimal digit. -- --
-- sixteenBitsArbToken "_f__" == Just (SixteenBits "bfd4") --sixteenBitsArbToken :: String -> IO (Maybe IPv6AddrToken) -- | Given a MAC address, returns the corresponding IPv6AddrToken -- list, or an empty list. -- --
-- macAddrToIPv6AddrTokens "fa:1d:58:cc:95:16" == [SixteenBits "fa1d",Colon,SixteenBits "58cc",Colon,SixteenBits "9516"] --macAddrToIPv6AddrTokens :: Text -> [IPv6AddrToken] -- | Given a valid name of a local network interface, returns Just the list -- of tokens of the interface's IPv6 address. getTokIPv6AddrOf :: String -> IO (Maybe [IPv6AddrToken]) -- | Given the valid name of a local network interface, returns the -- corresponding list of IPv6AddrToken of the interface's MAC -- Address. getTokMacAddrOf :: String -> IO (Maybe [IPv6AddrToken])