summaryrefslogtreecommitdiffhomepage
path: root/Network/DNS/Response.hs
diff options
context:
space:
mode:
authorGravatar Kazu Yamamoto <kazu@iij.ad.jp>2010-03-17 22:25:49 +0900
committerGravatar Kazu Yamamoto <kazu@iij.ad.jp>2010-03-17 22:25:49 +0900
commit825e27472ab361f9fdb46146c44cd56a571ed947 (patch)
treef1bb569356a69887e6e229c9601dee7a2709c2f4 /Network/DNS/Response.hs
parent8923a95ae272bb6565962803d533f26a52b6463c (diff)
adding API
Diffstat (limited to 'Network/DNS/Response.hs')
-rw-r--r--Network/DNS/Response.hs14
1 files changed, 12 insertions, 2 deletions
diff --git a/Network/DNS/Response.hs b/Network/DNS/Response.hs
index 1ef8973..fa4cdf4 100644
--- a/Network/DNS/Response.hs
+++ b/Network/DNS/Response.hs
@@ -92,14 +92,24 @@ decodeRR = do
decodeRLen = getInt16
decodeRData :: TYPE -> Int -> SGet RDATA
-decodeRData NS _ = RD_NS <$> decodeDomain
+decodeRData NS _ = RD_NS <$> decodeDomain
+decodeRData MX _ = RD_MX <$> decodePreference <*> decodeDomain
+ where
+ decodePreference = getInt16
+decodeRData CNAME _ = RD_CNAME <$> decodeDomain
decodeRData A len = (RD_A . toIPv4) <$> getNBytes len
decodeRData AAAA len = (RD_AAAA . toIPv6 . combine) <$> getNBytes len
where
combine [] = []
combine [_] = error "combine"
combine (a:b:cs) = a * 256 + b : combine cs
-decodeRData CNAME _ = RD_CNAME <$> decodeDomain
+decodeRData SOA _ = RD_SOA <$> decodeDomain
+ <*> decodeDomain
+ <*> getInt32
+ <*> getInt32
+ <*> getInt32
+ <*> getInt32
+ <*> getInt32
decodeRData _ len = RD_OTH <$> getNBytes len
----------------------------------------------------------------