{-|
  Data structures to express IPv4, IPv6 and IP range.
-}
module Data.IP (
  -- * IP data
    IP (..)
  -- ** IPv4
  , IPv4, toIPv4, fromIPv4, fromHostAddress, toHostAddress
  -- ** IPv6
  , IPv6, toIPv6, toIPv6b, fromIPv6, fromIPv6b, fromHostAddress6, toHostAddress6
  -- ** Converters
  , ipv4ToIPv6
  , fromSockAddr
  -- * 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