Domain Name Service (DNS) lookup via the libresolv standard library routines

Version on this page:
LTS Haskell 22.29:
Stackage Nightly 2024-07-18:
Latest on Hackage:

See all snapshots resolv appears in

GPL-2.0-only licensed by Herbert Valerio Riedel
Maintained by [email protected]
This version can be pinned in stack with:resolv-,4484

Module documentation for

This package implements an API for accessing the Domain Name Service (DNS) resolver service via the standard libresolv system library (whose API is often available directly via the standard libc C library) on Unix systems.

This package also includes support for decoding message record types as defined in the following RFCs:

  • RFC 1035: Domain Names - Implementation And Specification

  • RFC 1183: New DNS RR Definitions

  • RFC 2782: A DNS RR for specifying the location of services (DNS SRV)

  • RFC 2915: The Naming Authority Pointer (NAPTR) DNS Resource Record

  • RFC 3596: DNS Extensions to Support IP Version 6

  • RFC 4034: Resource Records for the DNS Security Extensions

  • RFC 4255: Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints

  • RFC 4408: Sender Policy Framework (SPF) for Authorizing Use of Domains in E-Mail, Version 1

  • RFC 5155: DNS Security (DNSSEC) Hashed Authenticated Denial of Existence

  • RFC 6844: DNS Certification Authority Authorization (CAA) Resource Record

  • RFC 6891: Extension Mechanisms for DNS (EDNS(0))

  • RFC 7553: The Uniform Resource Identifier (URI) DNS Resource Record

For Windows, the package windns provides a compatible subset of this package's API.


Revision history for resolv

  • Clarify/relax licensing terms

  • Improve Autoconf script

  • Use Autoconf to detect which library (if any) to link for res_query(3)
  • Use reentrant res_nquery(3) API if available and signal via new resIsReentrant :: Bool constant
  • Expose DnsException and QR

  • First version. Released on an unsuspecting world.