This is a clone/fork of https://github.com/miekg/dns
Go to file
Miek Gieben 0c0b97f72b Parsing fix for lines starting with class or TTL
name.   IN SOA  a6.nstld.com. hostmaster.nic.name ....
              IN 7200   NS      j6.nstld.com.
              7200 IN     NS      k6.nstld.com.

Wasn't handled properly
2012-02-27 18:48:53 +01:00
ex remove todos, it is working already 2012-02-26 20:09:03 +01:00
t Put this in a example test function 2012-02-17 20:37:19 +01:00
.gitignore Tweak gitignore 2012-02-11 17:44:14 +01:00
LICENSE update license date 2012-02-18 15:52:11 +01:00
README.markdown Parsing speed increase of facter 2/3 2012-02-21 22:41:00 +01:00
TODO.markdown Fix setting the rdlength for compressed names 2012-02-26 18:23:21 +01:00
client.go Elegant Tsig handling in the server 2012-02-26 22:38:15 +01:00
client_test.go gofmt 2012-01-12 23:17:34 +01:00
clientconfig.go gofmt 2011-12-09 21:45:57 +01:00
defaults.go gofmt 2012-02-23 19:37:08 +01:00
dns.go gofmt 2012-02-23 19:37:08 +01:00
dns_test.go gofmt 2012-02-23 19:37:08 +01:00
dnssec.go Validation fixes, still not perfect, but much nicer 2012-02-25 22:04:29 +01:00
dnssec_test.go Fix the Makefile-less go version of dns 2012-02-05 10:53:15 +01:00
dyn_test.go gofmt 2011-12-09 21:45:57 +01:00
edns.go Fixes for the new presentation of txt records 2012-02-13 15:59:40 +01:00
keygen.go Fixes for weekly.2012-01-20 2012-01-20 12:24:05 +01:00
kscan.go gofmt 2012-02-23 19:37:08 +01:00
label_test.go Force the root label to have 0 labels 2012-02-14 22:26:18 +01:00
labels.go gofmt 2012-02-23 19:37:08 +01:00
msg.go Fix setting the rdlength for compressed names 2012-02-26 18:23:21 +01:00
nsec3.go Also look at the msg header when validating 2012-02-25 19:12:02 +01:00
nsec3_test.go Make all tests fully qualified 2012-01-08 15:34:42 +01:00
parse_test.go Parsing fix for lines starting with class or TTL 2012-02-27 18:48:53 +01:00
rawmsg.go Fix setting the rdlength for compressed names 2012-02-26 18:23:21 +01:00
scanner.go go fmt and line nr tweak 2012-02-21 22:43:24 +01:00
server.go Elegant Tsig handling in the server 2012-02-26 22:38:15 +01:00
server_test.go Txt record parsing works -- need to look at the on-the-wire stuff 2012-02-12 21:50:02 +01:00
tsig.go gofmt 2012-01-28 00:35:37 +01:00
types.go Validation fixes, still not perfect, but much nicer 2012-02-25 22:04:29 +01:00
update.go Docs 2012-01-26 22:52:29 +01:00
xfr.go Fix the tests, but they now fail 2012-01-11 14:44:54 +01:00
zscan.go Parsing fix for lines starting with class or TTL 2012-02-27 18:48:53 +01:00
zscan_rr.go Validation fixes, still not perfect, but much nicer 2012-02-25 22:04:29 +01:00

README.markdown

Alternative (more granular) approach to a DNS library.

Less is more.

Complete and usable DNS library. Most widely used 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.

Goals:

  • KISS;
  • Symmetric API: client and server side should be very similar;
  • Small API, if its easy to code in Go, don't make a function for it.

Features:

  • UDP/TCP queries, IPv4 and IPv6;
  • RFC 1035 zone file parsing;
  • Fast:
    • reply speed around 35/40K qps (Faster hardware -> more qps);
    • Parsing RRs (zone files) with 80/90K RR/s, that's 5M records in about 58 seconds;
    • This is expected to be optimized further.
  • Client and server side programming (mimicking the net/http package);
  • Asynchronous queries/replies for client and server;
  • DNSSEC;
  • EDNS0, NSID;
  • AXFR/IXFR;
  • TSIG;
  • DNS name compression.

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

go build dns

Sample programs can be found in the ex directory. They can be build with: make -C ex, or also with the go tool.

Have fun!

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

Supported RFCs

All of them:

  • 103{4,5} - DNS standard
  • 1982 - Serial Arithmetic
  • 1876 - LOC record (incomplete)
  • 1995 - IXFR
  • 1996 - DNS notify
  • 2136 - DNS Update (dynamic updates)
  • 2181 - RRset definition
  • 2537 - RSAMD5 DNS keys
  • 2065 - DNSSEC (updated in later RFCs)
  • 2671 - EDNS record
  • 2782 - SRV record
  • 2845 - TSIG record
  • 2915 - NAPTR record
  • 3110 - RSASHA1 DNS keys
  • 3225 - DO bit (DNSSEC OK)
  • 340{1,2,3} - NAPTR record
  • 3445 - Limiting the scope of (DNS)KEY
  • 3597 - Unkown RRs
  • 403{3,4,5} - DNSSEC + validation functions
  • 4255 - SSHFP record
  • 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
  • 5933 - GOST
  • 5936 - AXFR
  • xxxx - ECDSA
  • xxxx - URI record

Loosely based upon:

  • ldns
  • NSD
  • Net::DNS
  • GRONG