    -- |
    --   Data structures to express IPv4, IPv6 and IP range.
    module Data.IP (
        -- * IP data
        IP (..),

        -- ** IPv4
        IPv4,
        toIPv4,
        toIPv4w,
        fromIPv4,
        fromIPv4w,
        fromHostAddress,
        toHostAddress,

        -- ** IPv6
        IPv6,
        toIPv6,
        toIPv6b,
        toIPv6w,
        fromIPv6,
        fromIPv6b,
        fromIPv6w,
        fromHostAddress6,
        toHostAddress6,

        -- ** Converters
        ipv4ToIPv6,
        fromSockAddr,
        toSockAddr,

        -- * IP range data
        IPRange (..),
        AddrRange (addr, mask, mlen),

        -- * Address class
        Addr (..),
        makeAddrRange,
        (>:>),
        isMatchedTo,
        addrRangePair,
        ipv4RangeToIPv6,
    ) where

    import Data.IP.Addr
    import Data.IP.Op
    import Data.IP.Range