diff --git a/Network/DNS/Decode.hs b/Network/DNS/Decode.hs
--- a/Network/DNS/Decode.hs
+++ b/Network/DNS/Decode.hs
@@ -16,7 +16,7 @@
 import qualified Data.ByteString.Lazy as BL
 import Data.Conduit (($$), Source)
 import Data.Conduit.Network (sourceSocket)
-import Data.IP (toIPv4, toIPv6)
+import Data.IP (toIPv4, toIPv6b)
 import Data.Traversable (traverse)
 import Data.Typeable (Typeable)
 import Network (Socket)
@@ -157,11 +157,7 @@
   where
     ignoreLength = BS.tail
 decodeRData A len  = (RD_A . toIPv4) <$> getNBytes len
-decodeRData AAAA len  = (RD_AAAA . toIPv6 . combine) <$> getNBytes len
-  where
-    combine [] = []
-    combine [_] = fail "combine"
-    combine (a:b:cs) =  a * 256 + b : combine cs
+decodeRData AAAA len  = (RD_AAAA . toIPv6b) <$> getNBytes len
 decodeRData SOA _ = RD_SOA <$> decodeDomain
                            <*> decodeDomain
                            <*> decodeSerial
diff --git a/Network/DNS/Encode.hs b/Network/DNS/Encode.hs
--- a/Network/DNS/Encode.hs
+++ b/Network/DNS/Encode.hs
@@ -12,7 +12,7 @@
 import Data.Bits ((.|.), bit, shiftL)
 import qualified Data.ByteString.Char8 as BS
 import Data.ByteString.Lazy.Char8 (ByteString)
-import Data.IP (fromIPv4, fromIPv6)
+import Data.IP (fromIPv4, fromIPv6b)
 import Data.Monoid (Monoid, mappend, mconcat)
 import Network.DNS.Internal
 import Network.DNS.StateBinary
@@ -121,7 +121,7 @@
 encodeRDATA :: RDATA -> SPut
 encodeRDATA rd = case rd of
     (RD_A ip)          -> mconcat $ map putInt8 (fromIPv4 ip)
-    (RD_AAAA ip)       -> mconcat $ map putInt16 (fromIPv6 ip)
+    (RD_AAAA ip)       -> mconcat $ map putInt8 (fromIPv6b ip)
     (RD_NS dom)        -> encodeDomain dom
     (RD_CNAME dom)     -> encodeDomain dom
     (RD_DNAME dom)     -> encodeDomain dom
diff --git a/dns.cabal b/dns.cabal
--- a/dns.cabal
+++ b/dns.cabal
@@ -1,5 +1,5 @@
 Name:                   dns
-Version:                1.4.4
+Version:                1.4.5
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
@@ -33,7 +33,7 @@
                       , conduit >= 1.1
                       , conduit-extra >= 1.1
                       , containers
-                      , iproute >= 1.2.4
+                      , iproute >= 1.3.2
                       , mtl
                       , network >= 2.3
                       , random
