update readme

This commit is contained in:
Miek Gieben 2011-07-22 19:39:36 +02:00
parent ab6e700ce1
commit 412a3a3f3e
3 changed files with 82 additions and 80 deletions

View File

@ -5,13 +5,13 @@ supported including DNSSEC types.
Feaures:
* EDNS0 (see edns.go)
* UDP/TCP queries, IPv4 and IPv6
* TSIG
* EDNS0 (see edns.go)
* AXFR (and IXFR probably)
* Client and server side programming (mimicking the http package)
* Asynchronous queries (client/server)
* RFC 1035 zone file parsing (work in progress)
* RFC 1035 zone file parsing (everything, except multiline records work)
Sample programs can be found in the `_examples` directory. They can
be build with: `make examples` (after the dns package has been installed)
@ -49,6 +49,7 @@ Miek Gieben - 2010, 2011 - miek@miek.nl
* 5155 - NSEC
* 5933 - GOST
* 5936 - AXFR
* xxxx - ECCDSA
## Loosely based upon:

2
TODO
View File

@ -1,7 +1,6 @@
Issues:
* Check the network order, it works now, but this is on Intel??
* Make the testsuite work with public DNS servers
* pack/Unpack smaller. EDNS 'n stuff can be folded in???
* Compression. Take stuff from Jan Mercl
Todo:
@ -9,6 +8,7 @@ Todo:
* HIP RR (needs list of domain names, need slice stuff for that)
* Is subdomain, is glue helper functions for this kind of stuff
* Cleanups
* Fix multiline RR when parsing
Examples:
* Test impl of nameserver, with a small zone, 1 KSK and online signing

155
zparse.go
View File

@ -66,6 +66,7 @@ func Zparse(q io.Reader) (z *Zone, err os.Error) {
z = new(Zone)
data := string(buf)
// guardian
if data[len(data)-1] != '\n' {
data += "\n"
}
@ -78,10 +79,10 @@ func Zparse(q io.Reader) (z *Zone, err os.Error) {
hdr := new(RR_Header)
// line 82 "zparse.go"
// line 83 "zparse.go"
cs = z_start
// line 85 "zparse.go"
// line 86 "zparse.go"
{
if p == pe { goto _test_eof }
switch cs {
@ -96,7 +97,7 @@ tr27:
rr.A = net.ParseIP(rdf[0])
z.Push(rr)
}
// line 77 "zparse.rl"
// line 78 "zparse.rl"
{ lines++ }
goto st54
tr32:
@ -118,7 +119,7 @@ tr32:
rr.AAAA = net.ParseIP(rdf[0])
z.Push(rr)
}
// line 77 "zparse.rl"
// line 78 "zparse.rl"
{ lines++ }
goto st54
tr43:
@ -131,7 +132,7 @@ tr43:
rr.Cname = rdf[0]
z.Push(rr)
}
// line 77 "zparse.rl"
// line 78 "zparse.rl"
{ lines++ }
goto st54
tr52:
@ -147,7 +148,7 @@ tr52:
rr.PublicKey = rdf[3]
z.Push(rr)
}
// line 77 "zparse.rl"
// line 78 "zparse.rl"
{ lines++ }
goto st54
tr55:
@ -163,7 +164,7 @@ tr55:
rr.Digest = rdf[3]
z.Push(rr)
}
// line 77 "zparse.rl"
// line 78 "zparse.rl"
{ lines++ }
goto st54
tr59:
@ -177,7 +178,7 @@ tr59:
rr.Mx = rdf[1]
z.Push(rr)
}
// line 77 "zparse.rl"
// line 78 "zparse.rl"
{ lines++ }
goto st54
tr63:
@ -190,7 +191,7 @@ tr63:
rr.Ns = rdf[0]
z.Push(rr)
}
// line 77 "zparse.rl"
// line 78 "zparse.rl"
{ lines++ }
goto st54
tr70:
@ -211,7 +212,7 @@ tr70:
rr.Signature = rdf[9]
z.Push(rr)
}
// line 77 "zparse.rl"
// line 78 "zparse.rl"
{ lines++ }
goto st54
tr75:
@ -230,11 +231,11 @@ tr75:
rr.Minttl = uint32(atoi(rdf[6]))
z.Push(rr)
}
// line 77 "zparse.rl"
// line 78 "zparse.rl"
{ lines++ }
goto st54
tr85:
// line 77 "zparse.rl"
// line 78 "zparse.rl"
{ lines++ }
goto st54
st54:
@ -242,7 +243,7 @@ st54:
if p == pe { goto _test_eof54 }
fallthrough
case 54:
// line 246 "zparse.go"
// line 247 "zparse.go"
switch data[p] {
case 9: goto st1
case 10: goto tr85
@ -266,7 +267,7 @@ st0:
cs = 0;
goto _out;
tr82:
// line 73 "zparse.rl"
// line 74 "zparse.rl"
{ hdr.Name = data[mark:p] }
goto st1
st1:
@ -274,7 +275,7 @@ st1:
if p == pe { goto _test_eof1 }
fallthrough
case 1:
// line 278 "zparse.go"
// line 279 "zparse.go"
switch data[p] {
case 9: goto st1
case 32: goto st1
@ -300,9 +301,9 @@ case 1:
if 48 <= data[p] && data[p] <= 57 { goto tr2 }
goto st0
tr2:
// line 75 "zparse.rl"
// line 76 "zparse.rl"
{ /* ... */ }
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st2
st2:
@ -310,7 +311,7 @@ st2:
if p == pe { goto _test_eof2 }
fallthrough
case 2:
// line 314 "zparse.go"
// line 315 "zparse.go"
switch data[p] {
case 9: goto tr12
case 32: goto tr12
@ -318,7 +319,7 @@ case 2:
if 48 <= data[p] && data[p] <= 57 { goto st2 }
goto st0
tr12:
// line 76 "zparse.rl"
// line 77 "zparse.rl"
{ ttl := atoi(data[mark:p]); hdr.Ttl = uint32(ttl) }
goto st3
st3:
@ -326,7 +327,7 @@ st3:
if p == pe { goto _test_eof3 }
fallthrough
case 3:
// line 330 "zparse.go"
// line 331 "zparse.go"
switch data[p] {
case 9: goto st3
case 32: goto st3
@ -351,7 +352,7 @@ case 3:
}
goto st0
tr3:
// line 75 "zparse.rl"
// line 76 "zparse.rl"
{ /* ... */ }
goto st4
st4:
@ -359,7 +360,7 @@ st4:
if p == pe { goto _test_eof4 }
fallthrough
case 4:
// line 363 "zparse.go"
// line 364 "zparse.go"
switch data[p] {
case 10: goto st0
case 65: goto tr25
@ -367,7 +368,7 @@ case 4:
}
goto tr24
tr24:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st5
st5:
@ -375,11 +376,11 @@ st5:
if p == pe { goto _test_eof5 }
fallthrough
case 5:
// line 379 "zparse.go"
// line 380 "zparse.go"
if data[p] == 10 { goto tr27 }
goto st5
tr25:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st6
st6:
@ -387,7 +388,7 @@ st6:
if p == pe { goto _test_eof6 }
fallthrough
case 6:
// line 391 "zparse.go"
// line 392 "zparse.go"
switch data[p] {
case 10: goto tr27
case 65: goto st7
@ -413,7 +414,7 @@ case 8:
if data[p] == 10 { goto tr27 }
goto tr30
tr30:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st9
st9:
@ -421,11 +422,11 @@ st9:
if p == pe { goto _test_eof9 }
fallthrough
case 9:
// line 425 "zparse.go"
// line 426 "zparse.go"
if data[p] == 10 { goto tr32 }
goto st9
tr16:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st10
st10:
@ -433,7 +434,7 @@ st10:
if p == pe { goto _test_eof10 }
fallthrough
case 10:
// line 437 "zparse.go"
// line 438 "zparse.go"
switch data[p] {
case 72: goto st11
case 78: goto st14
@ -452,11 +453,11 @@ case 11:
}
goto st0
tr80:
// line 76 "zparse.rl"
// line 77 "zparse.rl"
{ ttl := atoi(data[mark:p]); hdr.Ttl = uint32(ttl) }
goto st12
tr35:
// line 74 "zparse.rl"
// line 75 "zparse.rl"
{ hdr.Class = Str_class[data[mark:p]] }
goto st12
st12:
@ -464,7 +465,7 @@ st12:
if p == pe { goto _test_eof12 }
fallthrough
case 12:
// line 468 "zparse.go"
// line 469 "zparse.go"
switch data[p] {
case 9: goto st12
case 32: goto st12
@ -532,7 +533,7 @@ case 17:
if data[p] == 10 { goto st0 }
goto tr41
tr41:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st18
st18:
@ -540,11 +541,11 @@ st18:
if p == pe { goto _test_eof18 }
fallthrough
case 18:
// line 544 "zparse.go"
// line 545 "zparse.go"
if data[p] == 10 { goto tr43 }
goto st18
tr5:
// line 75 "zparse.rl"
// line 76 "zparse.rl"
{ /* ... */ }
goto st19
st19:
@ -552,7 +553,7 @@ st19:
if p == pe { goto _test_eof19 }
fallthrough
case 19:
// line 556 "zparse.go"
// line 557 "zparse.go"
switch data[p] {
case 78: goto st20
case 83: goto st26
@ -608,7 +609,7 @@ case 24:
if data[p] == 10 { goto st0 }
goto tr50
tr50:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st25
st25:
@ -616,7 +617,7 @@ st25:
if p == pe { goto _test_eof25 }
fallthrough
case 25:
// line 620 "zparse.go"
// line 621 "zparse.go"
if data[p] == 10 { goto tr52 }
goto st25
st26:
@ -627,7 +628,7 @@ case 26:
if data[p] == 10 { goto st0 }
goto tr53
tr53:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st27
st27:
@ -635,11 +636,11 @@ st27:
if p == pe { goto _test_eof27 }
fallthrough
case 27:
// line 639 "zparse.go"
// line 640 "zparse.go"
if data[p] == 10 { goto tr55 }
goto st27
tr8:
// line 75 "zparse.rl"
// line 76 "zparse.rl"
{ /* ... */ }
goto st28
st28:
@ -647,7 +648,7 @@ st28:
if p == pe { goto _test_eof28 }
fallthrough
case 28:
// line 651 "zparse.go"
// line 652 "zparse.go"
switch data[p] {
case 88: goto st29
case 120: goto st29
@ -661,7 +662,7 @@ case 29:
if data[p] == 10 { goto st0 }
goto tr57
tr57:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st30
st30:
@ -669,11 +670,11 @@ st30:
if p == pe { goto _test_eof30 }
fallthrough
case 30:
// line 673 "zparse.go"
// line 674 "zparse.go"
if data[p] == 10 { goto tr59 }
goto st30
tr9:
// line 75 "zparse.rl"
// line 76 "zparse.rl"
{ /* ... */ }
goto st31
st31:
@ -681,7 +682,7 @@ st31:
if p == pe { goto _test_eof31 }
fallthrough
case 31:
// line 685 "zparse.go"
// line 686 "zparse.go"
switch data[p] {
case 83: goto st32
case 115: goto st32
@ -695,7 +696,7 @@ case 32:
if data[p] == 10 { goto st0 }
goto tr61
tr61:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st33
st33:
@ -703,11 +704,11 @@ st33:
if p == pe { goto _test_eof33 }
fallthrough
case 33:
// line 707 "zparse.go"
// line 708 "zparse.go"
if data[p] == 10 { goto tr63 }
goto st33
tr10:
// line 75 "zparse.rl"
// line 76 "zparse.rl"
{ /* ... */ }
goto st34
st34:
@ -715,7 +716,7 @@ st34:
if p == pe { goto _test_eof34 }
fallthrough
case 34:
// line 719 "zparse.go"
// line 720 "zparse.go"
switch data[p] {
case 82: goto st35
case 114: goto st35
@ -759,7 +760,7 @@ case 38:
if data[p] == 10 { goto st0 }
goto tr68
tr68:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st39
st39:
@ -767,11 +768,11 @@ st39:
if p == pe { goto _test_eof39 }
fallthrough
case 39:
// line 771 "zparse.go"
// line 772 "zparse.go"
if data[p] == 10 { goto tr70 }
goto st39
tr11:
// line 75 "zparse.rl"
// line 76 "zparse.rl"
{ /* ... */ }
goto st40
st40:
@ -779,7 +780,7 @@ st40:
if p == pe { goto _test_eof40 }
fallthrough
case 40:
// line 783 "zparse.go"
// line 784 "zparse.go"
switch data[p] {
case 79: goto st41
case 111: goto st41
@ -803,7 +804,7 @@ case 42:
if data[p] == 10 { goto st0 }
goto tr73
tr73:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st43
st43:
@ -811,11 +812,11 @@ st43:
if p == pe { goto _test_eof43 }
fallthrough
case 43:
// line 815 "zparse.go"
// line 816 "zparse.go"
if data[p] == 10 { goto tr75 }
goto st43
tr18:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st44
st44:
@ -823,14 +824,14 @@ st44:
if p == pe { goto _test_eof44 }
fallthrough
case 44:
// line 827 "zparse.go"
// line 828 "zparse.go"
switch data[p] {
case 83: goto st11
case 115: goto st11
}
goto st0
tr19:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st45
st45:
@ -838,16 +839,16 @@ st45:
if p == pe { goto _test_eof45 }
fallthrough
case 45:
// line 842 "zparse.go"
// line 843 "zparse.go"
switch data[p] {
case 78: goto st11
case 110: goto st11
}
goto st0
tr4:
// line 75 "zparse.rl"
// line 76 "zparse.rl"
{ /* ... */ }
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st46
st46:
@ -855,7 +856,7 @@ st46:
if p == pe { goto _test_eof46 }
fallthrough
case 46:
// line 859 "zparse.go"
// line 860 "zparse.go"
switch data[p] {
case 72: goto st47
case 78: goto st14
@ -874,7 +875,7 @@ case 47:
}
goto st0
tr77:
// line 74 "zparse.rl"
// line 75 "zparse.rl"
{ hdr.Class = Str_class[data[mark:p]] }
goto st48
st48:
@ -882,7 +883,7 @@ st48:
if p == pe { goto _test_eof48 }
fallthrough
case 48:
// line 886 "zparse.go"
// line 887 "zparse.go"
switch data[p] {
case 9: goto st48
case 32: goto st48
@ -904,7 +905,7 @@ case 48:
if 48 <= data[p] && data[p] <= 57 { goto tr79 }
goto st0
tr79:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st49
st49:
@ -912,7 +913,7 @@ st49:
if p == pe { goto _test_eof49 }
fallthrough
case 49:
// line 916 "zparse.go"
// line 917 "zparse.go"
switch data[p] {
case 9: goto tr80
case 32: goto tr80
@ -920,9 +921,9 @@ case 49:
if 48 <= data[p] && data[p] <= 57 { goto st49 }
goto st0
tr6:
// line 75 "zparse.rl"
// line 76 "zparse.rl"
{ /* ... */ }
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st50
st50:
@ -930,16 +931,16 @@ st50:
if p == pe { goto _test_eof50 }
fallthrough
case 50:
// line 934 "zparse.go"
// line 935 "zparse.go"
switch data[p] {
case 83: goto st47
case 115: goto st47
}
goto st0
tr7:
// line 75 "zparse.rl"
// line 76 "zparse.rl"
{ /* ... */ }
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st51
st51:
@ -947,14 +948,14 @@ st51:
if p == pe { goto _test_eof51 }
fallthrough
case 51:
// line 951 "zparse.go"
// line 952 "zparse.go"
switch data[p] {
case 78: goto st47
case 110: goto st47
}
goto st0
tr86:
// line 72 "zparse.rl"
// line 73 "zparse.rl"
{ mark = p }
goto st52
st52:
@ -962,7 +963,7 @@ st52:
if p == pe { goto _test_eof52 }
fallthrough
case 52:
// line 966 "zparse.go"
// line 967 "zparse.go"
switch data[p] {
case 9: goto tr82
case 32: goto tr82
@ -1047,7 +1048,7 @@ case 53:
_out: {}
}
// line 122 "zparse.rl"
// line 123 "zparse.rl"
if eof > -1 {