Skip to content
Branch: master
Clone or download
tmthrgd and miekg Change the single in flight key for Client.Exchange (#943)
Previously it was possible for two different questions to hit the same
single in flight entry if the type or class isn't in the relevant
XToString map. This could happen for a proxy server or similar.
Latest commit cfee849 Apr 10, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dnsutil util.TrimDomainName() fails when origin doesn't end in dot (#559) Nov 8, 2017
vendor/golang.org/x Run dep ensure -update (#770) Oct 5, 2018
.codecov.yml
.gitignore gitignore update Oct 15, 2013
.travis.yml
AUTHORS add AUTHOR file Feb 10, 2014
CONTRIBUTORS Correctly set the Source IP to the received Destination IP (#524) Sep 29, 2017
COPYRIGHT Remove all copyright notices Sep 11, 2014
Gopkg.lock Run dep ensure -update (#770) Oct 5, 2018
Gopkg.toml Run dep ensure -update (#770) Oct 5, 2018
LICENSE Update the copy right for the original GO files May 12, 2013
Makefile.fuzz Add fuzzing framework (#580) Nov 23, 2017
Makefile.release Release: plain push is also needed Jan 10, 2018
README.md Added github.com/peterzen/goresolver (#917) Mar 4, 2019
acceptfunc.go
acceptfunc_test.go
client.go Change the single in flight key for Client.Exchange (#943) Apr 10, 2019
client_test.go Prevent timeout in TestConcurrentExchanges (#862) Dec 4, 2018
clientconfig.go Use for range loops instead of manual for loops (#937) Mar 18, 2019
clientconfig_test.go fix: panicing on options parsing. (#642) Mar 1, 2018
dane.go Improve performance by addressing some low hanging fruit. (#444) Feb 2, 2017
defaults.go Add a message truncation implementation (#854) Mar 24, 2019
dns.go Use an interface method for IsDuplicate (#883) Jan 6, 2019
dns_bench_test.go ZoneParser: error on parsing an IPv6 address in an A record (#923) Mar 9, 2019
dns_test.go Properly calculate compressed message lengths (#833) Nov 29, 2018
dnssec.go Use for range loops instead of manual for loops (#937) Mar 18, 2019
dnssec_keygen.go 458+dep (#591) Nov 27, 2017
dnssec_keyscan.go Use new(big.Int) instead of big.NewInt(0) (#938) Mar 13, 2019
dnssec_privkey.go
dnssec_test.go Eliminate lexer goroutines (#792) Oct 15, 2018
doc.go
duplicate.go Fixed a misspelling. (#906) Feb 1, 2019
duplicate_generate.go Fixed a misspelling. (#906) Feb 1, 2019
duplicate_test.go Use an interface method for IsDuplicate (#883) Jan 6, 2019
dyn_test.go
edns.go Use for range loops instead of manual for loops (#937) Mar 18, 2019
edns_test.go
example_test.go fix a stupid mistake "undefined: zone" Sep 30, 2015
format.go Add checks on data length for A and AAAA records (#919) Mar 12, 2019
format_test.go Add checks on data length for A and AAAA records (#919) Mar 12, 2019
fuzz.go Add fuzzing framework (#580) Nov 23, 2017
generate.go Add new ZoneParser API (#794) Oct 20, 2018
generate_test.go Add new ZoneParser API (#794) Oct 20, 2018
issue_test.go Tests updates (#556) Nov 8, 2017
labels.go Use for range loops instead of manual for loops (#937) Mar 18, 2019
labels_test.go
leak_test.go Revert doh (#800) Nov 1, 2018
length_test.go Reduce compression memory use with map[string]uint16 (#852) Dec 1, 2018
listen_go111.go
listen_go_not111.go Use correct build constraints for listen_*.go files (#750) Sep 26, 2018
msg.go Use for range loops instead of manual for loops (#937) Mar 18, 2019
msg_generate.go Move RR header packing out of generated code (#885) Jan 3, 2019
msg_helpers.go Fix Len(rr) for dynamic update for A/AAAA/L32 RRs (#951) Mar 28, 2019
msg_helpers_test.go Fix unpackString bug: 127 DEL is unprintable (#755) Sep 27, 2018
msg_test.go Fix Len(rr) for dynamic update for A/AAAA/L32 RRs (#951) Mar 28, 2019
msg_truncate.go
msg_truncate_test.go Add a message truncation implementation (#854) Mar 24, 2019
nsecx.go Hoist SHA1 check in HashName Nov 29, 2018
nsecx_test.go Add a HashName benchmark Nov 28, 2018
parse_test.go
privaterr.go
privaterr_test.go
remote_test.go
reverse.go Move all reversed map creation into reverse.go (#889) Jan 4, 2019
rr_test.go Eliminate lexer goroutines (#792) Oct 15, 2018
sanitize.go Avoid calling RR.Header more than once per RR (#891) Jan 4, 2019
sanitize_test.go
scan.go Remove pointless casts (#895) Jan 4, 2019
scan_rr.go ZoneParser: error on parsing an IPv6 address in an A record (#923) Mar 9, 2019
scan_test.go ZoneParser: error on parsing an IPv6 address in an A record (#923) Mar 9, 2019
serve_mux.go Rework and optimise ServeMux (#754) Sep 27, 2018
serve_mux_test.go Rework and optimise ServeMux (#754) Sep 27, 2018
server.go Simplify TCP reading (#935) Mar 11, 2019
server_test.go review Nov 28, 2018
sig0.go Use new(big.Int) instead of big.NewInt(0) (#938) Mar 13, 2019
sig0_test.go Lowercase all error msg from the tests Nov 26, 2015
singleinflight.go Prevent timeout in TestConcurrentExchanges (#862) Dec 4, 2018
smimea.go
tlsa.go
tsig.go Use an interface method for parsing zone file records (#886) Jan 6, 2019
tsig_test.go Remove pointless casts (#895) Jan 4, 2019
types.go Use for range loops instead of manual for loops (#937) Mar 18, 2019
types_generate.go
types_test.go Fix String formatting of RP record (#914) Feb 28, 2019
udp.go Rollback PR #738 because it breaks compatibility with Windows (#765) Sep 29, 2018
udp_test.go Rollback PR #738 because it breaks compatibility with Windows (#765) Sep 29, 2018
udp_windows.go Simplify and unify various returns (#893) Jan 4, 2019
update.go Avoid calling RR.Header more than once per RR (#891) Jan 4, 2019
update_test.go ClassANY: don't convert CLASS255 to ANY (#618) Jan 7, 2018
version.go Release 1.1.8 Mar 31, 2019
version_test.go Add semver (#595) Dec 6, 2017
xfr.go
zduplicate.go
zmsg.go
ztypes.go Fix Len(rr) for dynamic update for A/AAAA/L32 RRs (#951) Mar 28, 2019

README.md

Build Status Code Coverage Go Report Card

Alternative (more granular) approach to a DNS library

Less is more.

Complete and usable DNS library. All Resource Records are supported, including the DNSSEC types. It follows a lean and mean philosophy. If there is stuff you should know as a DNS programmer there isn't a convenience function for it. Server side and client side programming is supported, i.e. you can build servers and resolvers with it.

We try to keep the "master" branch as sane as possible and at the bleeding edge of standards, avoiding breaking changes wherever reasonable. We support the last two versions of Go.

Goals

  • KISS;
  • Fast;
  • Small API. If it's easy to code in Go, don't make a function for it.

Users

A not-so-up-to-date-list-that-may-be-actually-current:

Send pull request if you want to be listed here.

Features

  • UDP/TCP queries, IPv4 and IPv6
  • RFC 1035 zone file parsing ($INCLUDE, $ORIGIN, $TTL and $GENERATE (for all record types) are supported
  • Fast
  • Server side programming (mimicking the net/http package)
  • Client side programming
  • DNSSEC: signing, validating and key generation for DSA, RSA, ECDSA and Ed25519
  • EDNS0, NSID, Cookies
  • AXFR/IXFR
  • TSIG, SIG(0)
  • DNS over TLS (DoT): encrypted connection between client and server over TCP
  • DNS name compression

Have fun!

Miek Gieben - 2010-2012 - miek@miek.nl DNS Authors 2012-

Building

Building is done with the go tool. If you have setup your GOPATH correctly, the following should work:

go get github.com/miekg/dns
go build github.com/miekg/dns

Examples

A short "how to use the API" is at the beginning of doc.go (this also will show when you call godoc github.com/miekg/dns).

Example programs can be found in the github.com/miekg/exdns repository.

Supported RFCs

all of them

  • 103{4,5} - DNS standard
  • 1348 - NSAP record (removed the record)
  • 1982 - Serial Arithmetic
  • 1876 - LOC record
  • 1995 - IXFR
  • 1996 - DNS notify
  • 2136 - DNS Update (dynamic updates)
  • 2181 - RRset definition - there is no RRset type though, just []RR
  • 2537 - RSAMD5 DNS keys
  • 2065 - DNSSEC (updated in later RFCs)
  • 2671 - EDNS record
  • 2782 - SRV record
  • 2845 - TSIG record
  • 2915 - NAPTR record
  • 2929 - DNS IANA Considerations
  • 3110 - RSASHA1 DNS keys
  • 3225 - DO bit (DNSSEC OK)
  • 340{1,2,3} - NAPTR record
  • 3445 - Limiting the scope of (DNS)KEY
  • 3597 - Unknown RRs
  • 403{3,4,5} - DNSSEC + validation functions
  • 4255 - SSHFP record
  • 4343 - Case insensitivity
  • 4408 - SPF record
  • 4509 - SHA256 Hash in DS
  • 4592 - Wildcards in the DNS
  • 4635 - HMAC SHA TSIG
  • 4701 - DHCID
  • 4892 - id.server
  • 5001 - NSID
  • 5155 - NSEC3 record
  • 5205 - HIP record
  • 5702 - SHA2 in the DNS
  • 5936 - AXFR
  • 5966 - TCP implementation recommendations
  • 6605 - ECDSA
  • 6725 - IANA Registry Update
  • 6742 - ILNP DNS
  • 6840 - Clarifications and Implementation Notes for DNS Security
  • 6844 - CAA record
  • 6891 - EDNS0 update
  • 6895 - DNS IANA considerations
  • 6975 - Algorithm Understanding in DNSSEC
  • 7043 - EUI48/EUI64 records
  • 7314 - DNS (EDNS) EXPIRE Option
  • 7477 - CSYNC RR
  • 7828 - edns-tcp-keepalive EDNS0 Option
  • 7553 - URI record
  • 7858 - DNS over TLS: Initiation and Performance Considerations
  • 7871 - EDNS0 Client Subnet
  • 7873 - Domain Name System (DNS) Cookies
  • 8080 - EdDSA for DNSSEC
  • 8499 - DNS Terminology

Loosely Based Upon

You can’t perform that action at this time.