HORIZON HASKELLDocslts/ghc-10.0.x77a86622026-10-31Search packagesCtrl K
Theme: |

GHC 10.0.0.20260917 · lts/ghc-10.0.x · 77a8662 · 2026-10-31

Moduleresolv-0.2.0.3Haskell2010

Network.DNS

This module implements an API for accessing the Domain Name Service (DNS) resolver service via the standard libresolv system library on Unix systems.

Contents
  1. High level API
  2. Mid-level API
  3. Low-level API
  4. Types
  5. Basic types
  6. Names/Labels
  7. Character strings
  8. IP addresses
  9. RR TTL & Class
  10. Message types
  11. Messages
Synopsis
  • Packageresolv-0.2.0.3
  • Exports41
  • LanguageHaskell2010
  • LicenceGPL-2.0-or-later
  • SourceDNS.hs

High level API

valuequeryA :: Name -> IO [(TTL, IPv4)]

Query A record (see RFC 1035, section 3.4.1).

This query returns only exact matches (modulo foldCaseName). E.g. in case of CNAME responses even if the answer section would contain A records for the hostnames pointed to by the CNAME. You can use query if you need more control.

Example1 expression
queryA (Name "www.google.com")[(TTL 72,IPv4 0xd83acde4)]
valuequeryAAAA :: Name -> IO [(TTL, IPv6)]

Query AAAA records (see RFC 3596).

This query returns only exact matches (modulo foldCaseName). E.g. in case of CNAME responses even if the answer section would contain A records for the hostnames pointed to by the CNAME. You can use query if you need more control.

Example1 expression
queryAAAA (Name "www.google.com")[(TTL 299,IPv6 0x2a0014504001081e 0x2004)]
valuequerySRV :: Name -> IO [(TTL, SRV Name)]

Query SRV records (see RFC 2782).

Example1 expression
querySRV (Name "_imap._tcp.gmail.com")[(TTL 21599,SRV {srvPriority = 0, srvWeight = 0, srvPort = 0, srvTarget = Name "."})]
valuequeryTXT :: Name -> IO [(TTL, [CharStr])]

Query TXT records (see RFC 1035, section 3.3.14).

Example1 expression
queryTXT (Name "_mirrors.hackage.haskell.org")[(TTL 299,["0.urlbase=http://hackage.fpcomplete.com/",           "1.urlbase=http://objects-us-west-1.dream.io/hackage-mirror/"])]

Mid-level API

valuequery :: IsLabels n => Class -> n -> TypeSym -> IO (Msg n)

Send a query via res_query(3) and decode its response into a Msg

Throws DnsException in case of resolving or encoding/decoding errors. May throw other IO exceptions in case of network errors.

Example
Example1 expression
query classIN (Name "_mirrors.hackage.haskell.org") TypeTXTJust (Msg{msgHeader = MsgHeader{mhId    = 56694,                                mhFlags = MsgHeaderFlags{mhQR = IsResponse, mhOpcode = 0, mhAA = False,                                                         mhTC = False, mhRD = True, mhRA = True, mhZ = False,                                                         mhAD = False, mhCD = False, mhRCode = 0},                                mhQDCount = 1, mhANCount = 1, mhNSCount = 0, mhARCount = 1},          msgQD = [MsgQuestion (Name "_mirrors.hackage.haskell.org.") (Type 16) (Class 1)],          msgAN = [MsgRR{rrName  = Name "_mirrors.hackage.haskell.org.",                         rrClass = Class 1, rrTTL = TTL 299,                         rrData  = RDataTXT ["0.urlbase=http://hackage.fpcomplete.com/",                                             "1.urlbase=http://objects-us-west-1.dream.io/hackage-mirror/"]}],          msgNS = [],          msgAR = [MsgRR{rrName = Name ".", rrClass = Class 512, rrTTL = TTL 32768, rrData = RDataOPT ""}]      })
datadata DnsException

Exception thrown in case of errors while resolving or encoding/decoding into a Msg.

Constructors

Instances3Eq, Show, Exception

Low-level API

Whether the reentrant DNS resolver C API (e.g. res_nquery(3), res_nsend(3)) is being used.

If this this False, then as a fall-back res_query(3)/res_send(3) are used, protected by a global mutex.

Types

Basic types

Names/Labels

newtypenewtype Name

<domain-name> as per RFC 1035, section 3.3.

A domain-name represented as a series of labels separated by dots.

See also Labels for list-based representation.

NOTE: The Labels type is able to properly represent domain names whose components contain dots which the Name representation cannot.

Constructors

Instances5Eq, Ord, Read, Show, IsLabels
  • Eq NameDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Ord NameDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Read NameDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Show NameDefined in resolv-0.2.0.3 · Network.DNS.Message
  • IsLabels NameDefined in resolv-0.2.0.3 · Network.DNS.Message

Character strings

newtypenewtype CharStr

<character-string> as per RFC 1035, section 3.3.

A sequence of up to 255 octets

The limit of 255 octets is caused by the encoding which uses by a prefixed octet denoting the length.

Constructors

Instances6Eq, Ord, Read, Show, IsString, Binary
  • Eq CharStrDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Ord CharStrDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Read CharStrDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Show CharStrDefined in resolv-0.2.0.3 · Network.DNS.Message
  • IsString CharStrDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Binary CharStrDefined in resolv-0.2.0.3 · Network.DNS.Message

IP addresses

datadata IPv4

An IPv4 address

The IP address is represented in network order, i.e. 127.0.0.1 is represented as (IPv4 0x7f000001).

Constructors

Instances5Eq, Ord, Read, Show, Binary
  • Eq IPv4Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Ord IPv4Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Read IPv4Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Show IPv4Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Binary IPv4Defined in resolv-0.2.0.3 · Network.DNS.Message
datadata IPv6

An IPv6 address

The IP address is represented in network order, i.e. 2606:2800:220:1:248:1893:25c8:1946 is represented as (IPv6 0x2606280002200001 0x248189325c81946).

Constructors

Instances5Eq, Ord, Read, Show, Binary
  • Eq IPv6Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Ord IPv6Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Read IPv6Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Show IPv6Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Binary IPv6Defined in resolv-0.2.0.3 · Network.DNS.Message

RR TTL & Class

newtypenewtype TTL

Cache time-to-live expressed in seconds

Constructors

Instances5Eq, Ord, Read, Show, Binary
  • Eq TTLDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Ord TTLDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Read TTLDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Show TTLDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Binary TTLDefined in resolv-0.2.0.3 · Network.DNS.Message

Message types

newtypenewtype Type

Raw DNS record type code

See also TypeSym

Constructors

Instances5Eq, Ord, Read, Show, Binary
  • Eq TypeDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Ord TypeDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Read TypeDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Show TypeDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Binary TypeDefined in resolv-0.2.0.3 · Network.DNS.Message
datadata TypeSym
Instances6Bounded, Enum, Eq, Ord, Read, Show
  • Bounded TypeSymDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Enum TypeSymDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Eq TypeSymDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Ord TypeSymDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Read TypeSymDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Show TypeSymDefined in resolv-0.2.0.3 · Network.DNS.Message

Messages

datadata Msg l

Represents a DNS message as per RFC 1035

Constructors

Instances6Functor, Foldable, Traversable, Read, Show, Binary
  • Functor MsgDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Foldable MsgDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Traversable MsgDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Read l => Read (Msg l)Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Show l => Show (Msg l)Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Binary l => Binary (Msg l)Defined in resolv-0.2.0.3 · Network.DNS.Message
datadata QR

Encodes whether message is a query or a response

Instances3Eq, Read, Show
  • Eq QRDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Read QRDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Show QRDefined in resolv-0.2.0.3 · Network.DNS.Message
datadata MsgQuestion l

DNS message header section as per RFC 1035, section 4.1.2

Constructors

Instances7Functor, Foldable, Traversable, Eq, Read, Show, …
datadata MsgRR l

DNS resource record section as per RFC 1035, section 4.1.3

Constructors

Instances7Functor, Foldable, Traversable, Eq, Read, Show, …
  • Functor MsgRRDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Foldable MsgRRDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Traversable MsgRRDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Eq l => Eq (MsgRR l)Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Read l => Read (MsgRR l)Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Show l => Show (MsgRR l)Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Binary l => Binary (MsgRR l)Defined in resolv-0.2.0.3 · Network.DNS.Message
datadata RData l
Instances6Functor, Foldable, Traversable, Eq, Read, Show
  • Functor RDataDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Foldable RDataDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Traversable RDataDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Eq l => Eq (RData l)Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Read l => Read (RData l)Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Show l => Show (RData l)Defined in resolv-0.2.0.3 · Network.DNS.Message
datadata SRV l

SRV Record data as per RFC 2782

Instances7Functor, Foldable, Traversable, Eq, Read, Show, …
  • Functor SRVDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Foldable SRVDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Traversable SRVDefined in resolv-0.2.0.3 · Network.DNS.Message
  • Eq l => Eq (SRV l)Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Read l => Read (SRV l)Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Show l => Show (SRV l)Defined in resolv-0.2.0.3 · Network.DNS.Message
  • Binary l => Binary (SRV l)Defined in resolv-0.2.0.3 · Network.DNS.Message