diff --git a/Data/IP.hs b/Data/IP.hs
--- a/Data/IP.hs
+++ b/Data/IP.hs
@@ -11,6 +11,7 @@
   -- ** Converters
   , ipv4ToIPv6
   , fromSockAddr
+  , toSockAddr
   -- * IP range data
   , IPRange (..)
   , AddrRange (addr, mask, mlen)
diff --git a/Data/IP/Addr.hs b/Data/IP/Addr.hs
--- a/Data/IP/Addr.hs
+++ b/Data/IP/Addr.hs
@@ -529,3 +529,10 @@
 fromSockAddr (SockAddrInet  pn   ha)    = Just (IPv4 (fromHostAddress  ha),  pn)
 fromSockAddr (SockAddrInet6 pn _ ha6 _) = Just (IPv6 (fromHostAddress6 ha6), pn)
 fromSockAddr _                          = Nothing
+
+-- | Convert 'IP' to 'SockAddr'.
+--
+--   Since: 1.7.8.
+toSockAddr :: (IP, PortNumber) -> SockAddr
+toSockAddr (IPv4 addr4, pn) = SockAddrInet  pn   (toHostAddress  addr4)
+toSockAddr (IPv6 addr6, pn) = SockAddrInet6 pn 0 (toHostAddress6 addr6) 0
diff --git a/Data/IP/Op.hs b/Data/IP/Op.hs
--- a/Data/IP/Op.hs
+++ b/Data/IP/Op.hs
@@ -67,7 +67,7 @@
 a >:> b = mlen a <= mlen b && (addr b `masked` mask a) == addr a
 
 {-|
-  The 'toMatchedTo' function take an 'Addr' address and an 'AddrRange',
+  The 'isMatchedTo' function take an 'Addr' address and an 'AddrRange',
   and returns 'True' if the range contains the address.
 
 >>> ("127.0.2.0" :: IPv4) `isMatchedTo` makeAddrRange "127.0.2.1" 24
diff --git a/iproute.cabal b/iproute.cabal
--- a/iproute.cabal
+++ b/iproute.cabal
@@ -1,5 +1,5 @@
 Name:                   iproute
-Version:                1.7.7
+Version:                1.7.8
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
