{-|
  IP routing table is a tree of 'IPRange'
  to search one of them on the longest
  match base. It is a kind of TRIE with one
  way branching removed. Both IPv4 and IPv6
  are supported.

  For more information, see:
      <http://www.mew.org/~kazu/proj/iproute/>
-}
module Data.IP.RouteTable (
  -- * Documentation
  -- ** Routable class
    Routable (..)
  -- ** Type for IP routing table
  , IPRTable
  -- ** Functions to manipulate an IP routing table
  , empty, insert, delete
  , I.lookup
  , I.lookupKeyValue
  , I.lookupAll
  , findMatch
  , fromList, toList
  , foldlWithKey
  , foldrWithKey
  ) where

import Data.IP.RouteTable.Internal as I
