summaryrefslogtreecommitdiffhomepage
path: root/Network/DNS/Types.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Network/DNS/Types.hs')
-rw-r--r--Network/DNS/Types.hs107
1 files changed, 15 insertions, 92 deletions
diff --git a/Network/DNS/Types.hs b/Network/DNS/Types.hs
index aa32431..fe1f1be 100644
--- a/Network/DNS/Types.hs
+++ b/Network/DNS/Types.hs
@@ -1,92 +1,15 @@
-module Network.DNS.Types where
-
-import Data.Maybe
-import Data.IP
-
-data TYPE = A | AAAA | NS | TXT | MX | UNKNOWN deriving (Eq, Show)
-
-rrDB :: [(TYPE, Int)]
-rrDB = [
- (A, 1)
- , (NS, 2)
- , (MX, 15)
- , (TXT, 16)
- , (AAAA, 28)
- ]
-
-rookup :: (Eq b) => b -> [(a,b)] -> Maybe a
-rookup _ [] = Nothing
-rookup key ((x,y):xys)
- | key == y = Just x
- | otherwise = rookup key xys
-
-intToType :: Int -> TYPE
-intToType n = maybe UNKNOWN id $ rookup n rrDB
-typeToInt :: TYPE -> Int
-typeToInt t = maybe 0 id $ lookup t rrDB
-
-data QorR = QR_Query | QR_Response deriving (Eq, Show)
-
-data OPCODE = OP_STD | OP_INV | OP_SSR deriving (Eq, Show, Enum)
-
-data RCODE = NoErr | FormatErr | ServFail | NameErr | NotImpl | Refused deriving (Eq, Show, Enum)
-
-type Domain = String
-
-data Question = Question {
- qname :: Domain
- , qtype :: TYPE
- } deriving (Eq, Show)
-
-data ResourceRecord = ResourceRecord {
- rrname :: Domain
- , rrtype :: TYPE
- , rrttl :: Int
- , rdlen :: Int
- , rdata :: RDATA
- } deriving (Eq, Show)
-
-data RDATA = RD_NS Domain | RD_A IPv4 | RD_AAAA IPv6 | RD_OTH [Int] deriving (Eq, Show)
-
-data DNSFlags = DNSFlags {
- qOrR :: QorR
- , opcode :: OPCODE
- , authAnswer :: Bool
- , trunCation :: Bool
- , recDesired :: Bool
- , recAvailable :: Bool
- , rcode :: RCODE
- } deriving (Eq, Show)
-
-data DNSHeader = DNSHeader {
- identifier :: Int
- , flags :: DNSFlags
- , qdCount :: Int
- , anCount :: Int
- , nsCount :: Int
- , arCount :: Int
- } deriving (Eq, Show)
-
-data DNSFormat = DNSFormat {
- header :: DNSHeader
- , question :: [Question]
- , answer :: [ResourceRecord]
- , authority :: [ResourceRecord]
- , additional :: [ResourceRecord]
- } deriving (Eq, Show)
-
-defaultQuery :: DNSFormat
-defaultQuery = DNSFormat {
- header = DNSHeader {
- identifier = 0
- , flags = undefined
- , qdCount = 0
- , anCount = 0
- , nsCount = 0
- , arCount = 0
- }
- , question = []
- , answer = []
- , authority = []
- , additional = []
- }
+module Network.DNS.Types (
+ TYPE (..), intToType, typeToInt
+ , QorR (..)
+ , OPCODE (..)
+ , RCODE (..)
+ , Domain
+ , Question (qname,qtype), makeQuestion
+ , ResourceRecord (rrname,rrtype,rrttl,rdlen,rdata)
+ , RDATA (..)
+ , DNSFlags (qOrR,opcode,authAnswer,trunCation,recDesired,recAvailable,rcode)
+ , DNSHeader (identifier,flags,qdCount,anCount,nsCount,arCount)
+ , DNSFormat (header,question,answer,authority,additional)
+ ) where
+
+import Network.DNS.Internal