diff options
author | Kazu Yamamoto <kazu@iij.ad.jp> | 2010-03-17 22:25:49 +0900 |
---|---|---|
committer | Kazu Yamamoto <kazu@iij.ad.jp> | 2010-03-17 22:25:49 +0900 |
commit | 825e27472ab361f9fdb46146c44cd56a571ed947 (patch) | |
tree | f1bb569356a69887e6e229c9601dee7a2709c2f4 /Network/DNS/Response.hs | |
parent | 8923a95ae272bb6565962803d533f26a52b6463c (diff) |
adding API
Diffstat (limited to 'Network/DNS/Response.hs')
-rw-r--r-- | Network/DNS/Response.hs | 14 |
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 ---------------------------------------------------------------- |