• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..08-Jun-2018-

LICENSEH A D08-Jun-20181.6 KiB3326

README.mdH A D08-Jun-20184.4 KiB154126

client.goH A D08-Jun-20189.6 KiB386295

clientconfig.goH A D08-Jun-20182.2 KiB10085

defaults.goH A D08-Jun-20187.8 KiB279192

dns.goH A D08-Jun-20182.3 KiB10170

dnssec.goH A D08-Jun-201816.5 KiB665519

dnssec_keygen.goH A D08-Jun-20183.8 KiB157132

dnssec_keyscan.goH A D08-Jun-20185.4 KiB250219

dnssec_privkey.goH A D08-Jun-20182.7 KiB8670

doc.goH A D08-Jun-20189 KiB2521

edns.goH A D08-Jun-201814.1 KiB506374

format.goH A D08-Jun-20182.5 KiB9786

labels.goH A D08-Jun-20183.3 KiB163121

msg.goH A D08-Jun-201851.6 KiB1,9461,659

nsecx.goH A D08-Jun-20182.6 KiB11385

privaterr.goH A D08-Jun-20183.3 KiB11879

rawmsg.goH A D08-Jun-20182.1 KiB9670

sanitize.goH A D08-Jun-20182 KiB8559

scanner.goH A D08-Jun-2018808 4434

server.goH A D08-Jun-201818.7 KiB691513

sig0.goH A D08-Jun-20185 KiB217185

singleinflight.goH A D08-Jun-20181.4 KiB5836

tlsa.goH A D08-Jun-20182.1 KiB8774

tsig.goH A D08-Jun-20187.9 KiB321258

types.goH A D08-Jun-201828 KiB1,3291,102

udp.goH A D08-Jun-20181.5 KiB5942

udp_linux.goH A D08-Jun-20182.1 KiB7451

udp_other.goH A D08-Jun-2018535 189

udp_windows.goH A D08-Jun-2018965 3521

update.goH A D08-Jun-20182.8 KiB9571

xfr.goH A D08-Jun-20185.9 KiB245191

zgenerate.goH A D08-Jun-20183.7 KiB159134

zscan.goH A D08-Jun-201822.9 KiB975834

zscan_rr.goH A D08-Jun-201850.8 KiB2,2712,072

ztypes.goH A D08-Jun-201823.3 KiB843828

README.md

1[![Build Status](https://travis-ci.org/miekg/dns.svg?branch=master)](https://travis-ci.org/miekg/dns)
2
3# Alternative (more granular) approach to a DNS library
4
5> Less is more.
6
7Complete and usable DNS library. All widely used Resource Records are
8supported, including the DNSSEC types. It follows a lean and mean philosophy.
9If there is stuff you should know as a DNS programmer there isn't a convenience
10function for it. Server side and client side programming is supported, i.e. you
11can build servers and resolvers with it.
12
13We try to keep the "master" branch as sane as possible and at the bleeding edge
14of standards, avoiding breaking changes wherever reasonable. We support the last
15two versions of Go, currently: 1.4 and 1.5.
16
17# Goals
18
19* KISS;
20* Fast;
21* Small API, if its easy to code in Go, don't make a function for it.
22
23# Users
24
25A not-so-up-to-date-list-that-may-be-actually-current:
26
27* https://cloudflare.com
28* https://github.com/abh/geodns
29* http://www.statdns.com/
30* http://www.dnsinspect.com/
31* https://github.com/chuangbo/jianbing-dictionary-dns
32* http://www.dns-lg.com/
33* https://github.com/fcambus/rrda
34* https://github.com/kenshinx/godns
35* https://github.com/skynetservices/skydns
36* https://github.com/DevelopersPL/godnsagent
37* https://github.com/duedil-ltd/discodns
38* https://github.com/StalkR/dns-reverse-proxy
39* https://github.com/tianon/rawdns
40* https://mesosphere.github.io/mesos-dns/
41* https://pulse.turbobytes.com/
42* https://play.google.com/store/apps/details?id=com.turbobytes.dig
43* https://github.com/fcambus/statzone
44* https://github.com/benschw/dns-clb-go
45* https://github.com/corny/dnscheck for http://public-dns.tk/
46* https://namesmith.io
47* https://github.com/miekg/unbound
48* https://github.com/miekg/exdns
49
50Send pull request if you want to be listed here.
51
52# Features
53
54* UDP/TCP queries, IPv4 and IPv6;
55* RFC 1035 zone file parsing ($INCLUDE, $ORIGIN, $TTL and $GENERATE (for all record types) are supported;
56* Fast:
57    * Reply speed around ~ 80K qps (faster hardware results in more qps);
58    * Parsing RRs ~ 100K RR/s, that's 5M records in about 50 seconds;
59* Server side programming (mimicking the net/http package);
60* Client side programming;
61* DNSSEC: signing, validating and key generation for DSA, RSA and ECDSA;
62* EDNS0, NSID;
63* AXFR/IXFR;
64* TSIG, SIG(0);
65* DNS name compression;
66* Depends only on the standard library.
67
68Have fun!
69
70Miek Gieben  -  2010-2012  -  <miek@miek.nl>
71
72# Building
73
74Building is done with the `go` tool. If you have setup your GOPATH
75correctly, the following should work:
76
77    go get github.com/miekg/dns
78    go build github.com/miekg/dns
79
80## Examples
81
82A short "how to use the API" is at the beginning of doc.go (this also will show
83when you call `godoc github.com/miekg/dns`).
84
85Example programs can be found in the `github.com/miekg/exdns` repository.
86
87## Supported RFCs
88
89*all of them*
90
91* 103{4,5} - DNS standard
92* 1348 - NSAP record (removed the record)
93* 1982 - Serial Arithmetic
94* 1876 - LOC record
95* 1995 - IXFR
96* 1996 - DNS notify
97* 2136 - DNS Update (dynamic updates)
98* 2181 - RRset definition - there is no RRset type though, just []RR
99* 2537 - RSAMD5 DNS keys
100* 2065 - DNSSEC (updated in later RFCs)
101* 2671 - EDNS record
102* 2782 - SRV record
103* 2845 - TSIG record
104* 2915 - NAPTR record
105* 2929 - DNS IANA Considerations
106* 3110 - RSASHA1 DNS keys
107* 3225 - DO bit (DNSSEC OK)
108* 340{1,2,3} - NAPTR record
109* 3445 - Limiting the scope of (DNS)KEY
110* 3597 - Unknown RRs
111* 4025 - IPSECKEY
112* 403{3,4,5} - DNSSEC + validation functions
113* 4255 - SSHFP record
114* 4343 - Case insensitivity
115* 4408 - SPF record
116* 4509 - SHA256 Hash in DS
117* 4592 - Wildcards in the DNS
118* 4635 - HMAC SHA TSIG
119* 4701 - DHCID
120* 4892 - id.server
121* 5001 - NSID
122* 5155 - NSEC3 record
123* 5205 - HIP record
124* 5702 - SHA2 in the DNS
125* 5936 - AXFR
126* 5966 - TCP implementation recommendations
127* 6605 - ECDSA
128* 6725 - IANA Registry Update
129* 6742 - ILNP DNS
130* 6840 - Clarifications and Implementation Notes for DNS Security
131* 6844 - CAA record
132* 6891 - EDNS0 update
133* 6895 - DNS IANA considerations
134* 6975 - Algorithm Understanding in DNSSEC
135* 7043 - EUI48/EUI64 records
136* 7314 - DNS (EDNS) EXPIRE Option
137* 7553 - URI record
138* xxxx - EDNS0 DNS Update Lease (draft)
139
140## Loosely based upon
141
142* `ldns`
143* `NSD`
144* `Net::DNS`
145* `GRONG`
146
147## TODO
148
149* privatekey.Precompute() when signing?
150* Last remaining RRs: APL, ATMA, A6, NSAP and NXT.
151* Missing in parsing: ISDN, UNSPEC, NSAP and ATMA.
152* NSEC(3) cover/match/closest enclose.
153* Replies with TC bit are not parsed to the end.
154