dns-3.0.2: DNS library in Haskell

Safe HaskellNone
LanguageHaskell2010

Network.DNS.Types

Contents

Description

Data types for DNS Query and Response. For more information, see http://www.ietf.org/rfc/rfc1035.

Synopsis

Resource Records

data ResourceRecord #

Raw data format for resource records.

Constructors

ResourceRecord 

Fields

Types

type Domain = ByteString #

Type for domain.

type CLASS = Word16 #

Resource record class.

classIN :: CLASS #

Resource record class for the Internet.

type TTL = Word32 #

Time to live in second.

Resource Record Types

data TYPE where #

Types for resource records.

Bundled Patterns

pattern A :: TYPE

IPv4 address

pattern NS :: TYPE

An authoritative name serve

pattern CNAME :: TYPE

The canonical name for an alias

pattern SOA :: TYPE

Marks the start of a zone of authority

pattern NULL :: TYPE

A null RR (EXPERIMENTAL)

pattern PTR :: TYPE

A domain name pointer

pattern MX :: TYPE

Mail exchange

pattern TXT :: TYPE

Text strings

pattern AAAA :: TYPE

IPv6 Address

pattern SRV :: TYPE

Server Selection (RFC2782)

pattern DNAME :: TYPE

DNAME (RFC6672)

pattern OPT :: TYPE

OPT (RFC6891)

pattern DS :: TYPE

Delegation Signer (RFC4034)

pattern RRSIG :: TYPE

RRSIG (RFC4034)

pattern NSEC :: TYPE

NSEC (RFC4034)

pattern DNSKEY :: TYPE

DNSKEY (RFC4034)

pattern NSEC3 :: TYPE

NSEC3 (RFC5155)

pattern NSEC3PARAM :: TYPE

NSEC3PARAM (RFC5155)

pattern TLSA :: TYPE

TLSA (RFC6698)

pattern CDS :: TYPE

Child DS (RFC7344)

pattern CDNSKEY :: TYPE

DNSKEY(s) the Child wants reflected in DS (RFC7344)

pattern CSYNC :: TYPE

Child-To-Parent Synchronization (RFC7477)

pattern ANY :: TYPE

A request for all records the server/cache has available

Instances
Eq TYPE # 
Instance details

Defined in Network.DNS.Types

Methods

(==) :: TYPE -> TYPE -> Bool #

(/=) :: TYPE -> TYPE -> Bool #

Ord TYPE # 
Instance details

Defined in Network.DNS.Types

Methods

compare :: TYPE -> TYPE -> Ordering #

(<) :: TYPE -> TYPE -> Bool #

(<=) :: TYPE -> TYPE -> Bool #

(>) :: TYPE -> TYPE -> Bool #

(>=) :: TYPE -> TYPE -> Bool #

max :: TYPE -> TYPE -> TYPE #

min :: TYPE -> TYPE -> TYPE #

Show TYPE # 
Instance details

Defined in Network.DNS.Types

Methods

showsPrec :: Int -> TYPE -> ShowS #

show :: TYPE -> String #

showList :: [TYPE] -> ShowS #

fromTYPE :: TYPE -> Word16 #

From type to number.

toTYPE :: Word16 -> TYPE #

From number to type.

Resource Data

data RData #

Raw data format for each type.

Constructors

RD_A IPv4

IPv4 address

RD_NS Domain

An authoritative name serve

RD_CNAME Domain

The canonical name for an alias

RD_SOA Domain Mailbox Word32 Word32 Word32 Word32 Word32

Marks the start of a zone of authority

RD_NULL

A null RR (EXPERIMENTAL). Anything can be in a NULL record, for now we just drop this data.

RD_PTR Domain

A domain name pointer

RD_MX Word16 Domain

Mail exchange

RD_TXT ByteString

Text strings

RD_AAAA IPv6

IPv6 Address

RD_SRV Word16 Word16 Word16 Domain

Server Selection (RFC2782)

RD_DNAME Domain

DNAME (RFC6672)

RD_OPT [OData]

OPT (RFC6891)

RD_DS Word16 Word8 Word8 ByteString

Delegation Signer (RFC4034) RD_RRSIG RD_NSEC

RD_DNSKEY Word16 Word8 Word8 ByteString

DNSKEY (RFC4034) RD_NSEC3 RD_NSEC3PARAM

RD_TLSA Word8 Word8 Word8 ByteString

TLSA (RFC6698) RD_CDS RD_CDNSKEY RD_CSYNC

UnknownRData ByteString

Unknown resource data

Instances
Eq RData # 
Instance details

Defined in Network.DNS.Types

Methods

(==) :: RData -> RData -> Bool #

(/=) :: RData -> RData -> Bool #

Ord RData # 
Instance details

Defined in Network.DNS.Types

Methods

compare :: RData -> RData -> Ordering #

(<) :: RData -> RData -> Bool #

(<=) :: RData -> RData -> Bool #

(>) :: RData -> RData -> Bool #

(>=) :: RData -> RData -> Bool #

max :: RData -> RData -> RData #

min :: RData -> RData -> RData #

Show RData # 
Instance details

Defined in Network.DNS.Types

Methods

showsPrec :: Int -> RData -> ShowS #

show :: RData -> String #

showList :: [RData] -> ShowS #

DNS Message

data DNSMessage #

Raw data format for DNS Query and Response.

Constructors

DNSMessage 

Fields

Instances
Eq DNSMessage # 
Instance details

Defined in Network.DNS.Types

Show DNSMessage # 
Instance details

Defined in Network.DNS.Types

defaultQuery :: DNSMessage #

Default query.

defaultResponse :: DNSMessage #

Default response.

type DNSFormat = DNSMessage #

Deprecated: Use DNSMessage instead

For backward compatibility.

DNS Header

data DNSHeader #

Raw data format for the header of DNS Query and Response.

Constructors

DNSHeader 

Fields

Instances
Eq DNSHeader # 
Instance details

Defined in Network.DNS.Types

Show DNSHeader # 
Instance details

Defined in Network.DNS.Types

type Identifier = Word16 #

An identifier assigned by the program that generates any kind of query.

data QorR #

Query or response.

Constructors

QR_Query

Query.

QR_Response

Response.

Instances
Bounded QorR # 
Instance details

Defined in Network.DNS.Types

Enum QorR # 
Instance details

Defined in Network.DNS.Types

Methods

succ :: QorR -> QorR #

pred :: QorR -> QorR #

toEnum :: Int -> QorR #

fromEnum :: QorR -> Int #

enumFrom :: QorR -> [QorR] #

enumFromThen :: QorR -> QorR -> [QorR] #

enumFromTo :: QorR -> QorR -> [QorR] #

enumFromThenTo :: QorR -> QorR -> QorR -> [QorR] #

Eq QorR # 
Instance details

Defined in Network.DNS.Types

Methods

(==) :: QorR -> QorR -> Bool #

(/=) :: QorR -> QorR -> Bool #

Show QorR # 
Instance details

Defined in Network.DNS.Types

Methods

showsPrec :: Int -> QorR -> ShowS #

show :: QorR -> String #

showList :: [QorR] -> ShowS #

data DNSFlags #

Raw data format for the flags of DNS Query and Response.

Constructors

DNSFlags 

Fields

  • qOrR :: QorR

    Query or response.

  • opcode :: OPCODE

    Kind of query.

  • authAnswer :: Bool

    Authoritative Answer - this bit is valid in responses, and specifies that the responding name server is an authority for the domain name in question section.

  • trunCation :: Bool

    TrunCation - specifies that this message was truncated due to length greater than that permitted on the transmission channel.

  • recDesired :: Bool

    Recursion Desired - this bit may be set in a query and is copied into the response. If RD is set, it directs the name server to pursue the query recursively. Recursive query support is optional.

  • recAvailable :: Bool

    Recursion Available - this be is set or cleared in a response, and denotes whether recursive query support is available in the name server.

  • rcode :: RCODE

    Response code.

  • authenData :: Bool

    Authentic Data (RFC4035).

Instances
Eq DNSFlags # 
Instance details

Defined in Network.DNS.Types

Show DNSFlags # 
Instance details

Defined in Network.DNS.Types

data OPCODE #

Kind of query.

Constructors

OP_STD

A standard query.

OP_INV

An inverse query.

OP_SSR

A server status request.

Instances
Bounded OPCODE # 
Instance details

Defined in Network.DNS.Types

Enum OPCODE # 
Instance details

Defined in Network.DNS.Types

Eq OPCODE # 
Instance details

Defined in Network.DNS.Types

Methods

(==) :: OPCODE -> OPCODE -> Bool #

(/=) :: OPCODE -> OPCODE -> Bool #

Show OPCODE # 
Instance details

Defined in Network.DNS.Types

data RCODE where #

Response code including EDNS0's 12bit ones.

Bundled Patterns

pattern NoErr :: RCODE

No error condition.

pattern FormatErr :: RCODE

Format error - The name server was unable to interpret the query.

pattern ServFail :: RCODE

Server failure - The name server was unable to process this query due to a problem with the name server.

pattern NameErr :: RCODE

Name Error - Meaningful only for responses from an authoritative name server, this code signifies that the domain name referenced in the query does not exist.

pattern NotImpl :: RCODE

Not Implemented - The name server does not support the requested kind of query.

pattern Refused :: RCODE

Refused - The name server refuses to perform the specified operation for policy reasons. For example, a name server may not wish to provide the information to the particular requester, or a name server may not wish to perform a particular operation (e.g., zone transfer) for particular data.

pattern YXDomain :: RCODE

YXDomain - Dynamic update response, a pre-requisite domain that should not exist, does exist.

pattern YXRRSet :: RCODE

YXRRSet - Dynamic update response, a pre-requisite RRSet that should not exist, does exist.

pattern NXRRSet :: RCODE

NXRRSet - Dynamic update response, a pre-requisite RRSet that should exist, does not exist.

pattern NotAuth :: RCODE

NotAuth - Dynamic update response, the server is not authoritative for the zone named in the Zone Section.

pattern NotZone :: RCODE

NotZone - Dynamic update response, a name used in the Prerequisite or Update Section is not within the zone denoted by the Zone Section.

pattern BadOpt :: RCODE

Bad OPT Version (RFC 6891) or TSIG Signature Failure (RFC2845).

Instances
Enum RCODE #

Provide an Enum instance for backwards compatibility

Instance details

Defined in Network.DNS.Types

Eq RCODE # 
Instance details

Defined in Network.DNS.Types

Methods

(==) :: RCODE -> RCODE -> Bool #

(/=) :: RCODE -> RCODE -> Bool #

Show RCODE #

Use https://tools.ietf.org/html/rfc2929#section-2.3 names for DNS RCODEs

Instance details

Defined in Network.DNS.Types

Methods

showsPrec :: Int -> RCODE -> ShowS #

show :: RCODE -> String #

showList :: [RCODE] -> ShowS #

fromRCODE :: RCODE -> Word16 #

From rcode to number.

toRCODE :: Word16 -> RCODE #

From number to rcode.

fromRCODEforHeader :: RCODE -> Word16 #

From rcode to number for header (4bits only).

toRCODEforHeader :: Word16 -> RCODE #

From number in header to rcode (4bits only).

DNS Body

data Question #

Raw data format for DNS questions.

Constructors

Question 

Fields

Instances
Eq Question # 
Instance details

Defined in Network.DNS.Types

Show Question # 
Instance details

Defined in Network.DNS.Types

DNS Error

data DNSError #

An enumeration of all possible DNS errors that can occur.

Constructors

SequenceNumberMismatch

The sequence number of the answer doesn't match our query. This could indicate foul play.

RetryLimitExceeded

The number of retries for the request was exceeded.

TimeoutExpired

TCP fallback request timed out.

UnexpectedRDATA

The answer has the correct sequence number, but returned an unexpected RDATA format.

IllegalDomain

The domain for query is illegal.

FormatError

The name server was unable to interpret the query.

ServerFailure

The name server was unable to process this query due to a problem with the name server.

NameError

This code signifies that the domain name referenced in the query does not exist.

NotImplemented

The name server does not support the requested kind of query.

OperationRefused

The name server refuses to perform the specified operation for policy reasons. For example, a name server may not wish to provide the information to the particular requester, or a name server may not wish to perform a particular operation (e.g., zone transfer) for particular data.

BadOptRecord

The server detected a malformed OPT RR.

BadConfiguration

Configuration is wrong.

NetworkFailure IOException

Network failure.

UnknownDNSError

Error is unknown

Instances
Eq DNSError # 
Instance details

Defined in Network.DNS.Types

Show DNSError # 
Instance details

Defined in Network.DNS.Types

Exception DNSError # 
Instance details

Defined in Network.DNS.Types

EDNS0

data EDNS0 #

EDNS0 infromation defined in RFC 6891.

Instances
Eq EDNS0 # 
Instance details

Defined in Network.DNS.Types

Methods

(==) :: EDNS0 -> EDNS0 -> Bool #

(/=) :: EDNS0 -> EDNS0 -> Bool #

Show EDNS0 # 
Instance details

Defined in Network.DNS.Types

Methods

showsPrec :: Int -> EDNS0 -> ShowS #

show :: EDNS0 -> String #

showList :: [EDNS0] -> ShowS #

defaultEDNS0 :: EDNS0 #

Default information for EDNS0.

>>> defaultEDNS0
EDNS0 {udpSize = 4096, extRCODE = NoError, dnssecOk = False, options = []}

Accessors

udpSize :: EDNS0 -> Word16 #

UDP payload size.

extRCODE :: EDNS0 -> RCODE #

Extended RCODE.

dnssecOk :: EDNS0 -> Bool #

Is DNSSEC OK?

options :: EDNS0 -> [OData] #

EDNS0 option data.

Converters

fromEDNS0 :: EDNS0 -> ResourceRecord #

Generating a resource record for the additional section based on EDNS0. DNSFlags is not generated. Just set the same RCODE to DNSFlags.

toEDNS0 :: DNSFlags -> ResourceRecord -> Maybe EDNS0 #

Generating EDNS0 information from the OPT RR.

EDNS0 option data

data OData #

Optional resource data.

Constructors

OD_ClientSubnet Word8 Word8 IP

Client subnet (RFC7871)

UnknownOData OptCode ByteString

Unknown optional type

Instances
Eq OData # 
Instance details

Defined in Network.DNS.Types

Methods

(==) :: OData -> OData -> Bool #

(/=) :: OData -> OData -> Bool #

Ord OData # 
Instance details

Defined in Network.DNS.Types

Methods

compare :: OData -> OData -> Ordering #

(<) :: OData -> OData -> Bool #

(<=) :: OData -> OData -> Bool #

(>) :: OData -> OData -> Bool #

(>=) :: OData -> OData -> Bool #

max :: OData -> OData -> OData #

min :: OData -> OData -> OData #

Show OData # 
Instance details

Defined in Network.DNS.Types

Methods

showsPrec :: Int -> OData -> ShowS #

show :: OData -> String #

showList :: [OData] -> ShowS #

data OptCode where #

EDNS0 Option Code (RFC 6891).

Bundled Patterns

pattern ClientSubnet :: OptCode

Client subnet (RFC7871)

Instances
Eq OptCode # 
Instance details

Defined in Network.DNS.Types

Methods

(==) :: OptCode -> OptCode -> Bool #

(/=) :: OptCode -> OptCode -> Bool #

Ord OptCode # 
Instance details

Defined in Network.DNS.Types

Show OptCode # 
Instance details

Defined in Network.DNS.Types

fromOptCode :: OptCode -> Word16 #

From option code to number.

toOptCode :: Word16 -> OptCode #

From number to option code.

Other types

type Mailbox = ByteString #

Type for a mailbox encoded on the wire as a DNS name, but the first label is conceptually the user name, and sometimes has internal . characters that are not label separators.