add TSIG as a type
This commit is contained in:
parent
3de30d5834
commit
9155d632f5
3
Makefile
3
Makefile
|
@ -17,20 +17,17 @@ include $(GOROOT)/src/Make.pkg
|
||||||
all: package
|
all: package
|
||||||
gomake -C dnssec package
|
gomake -C dnssec package
|
||||||
gomake -C resolver package
|
gomake -C resolver package
|
||||||
# gomake -C xfr package
|
|
||||||
# gomake -C strconv package
|
# gomake -C strconv package
|
||||||
|
|
||||||
install: $(INSTALLFILES)
|
install: $(INSTALLFILES)
|
||||||
gomake -C dnssec install
|
gomake -C dnssec install
|
||||||
gomake -C resolver install
|
gomake -C resolver install
|
||||||
# gomake -C xfr package
|
|
||||||
# gomake -C strconv install
|
# gomake -C strconv install
|
||||||
|
|
||||||
dnstest:
|
dnstest:
|
||||||
gotest
|
gotest
|
||||||
gomake -C dnssec test
|
gomake -C dnssec test
|
||||||
gomake -C resolver test
|
gomake -C resolver test
|
||||||
# gomake -C xfr test
|
|
||||||
# gomake -C strconv test
|
# gomake -C strconv test
|
||||||
|
|
||||||
_examples:
|
_examples:
|
||||||
|
|
1
dns.go
1
dns.go
|
@ -10,6 +10,7 @@
|
||||||
// * 1876 - LOC record (incomplete)
|
// * 1876 - LOC record (incomplete)
|
||||||
// * 1995 - IXFR
|
// * 1995 - IXFR
|
||||||
// * 2671 - EDNS
|
// * 2671 - EDNS
|
||||||
|
// * 2845 - TSIG
|
||||||
// * 2915 - NAPTR record (incomplete)
|
// * 2915 - NAPTR record (incomplete)
|
||||||
// * 3225 - DO bit (DNSSEC OK)
|
// * 3225 - DO bit (DNSSEC OK)
|
||||||
// * 4033/4034/4035 - DNSSEC + validation functions
|
// * 4033/4034/4035 - DNSSEC + validation functions
|
||||||
|
|
|
@ -58,13 +58,6 @@ func NewQuerier(res *Resolver) (ch chan DnsMsg) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start a new xfr as a goroutine, return a channel.
|
|
||||||
// Channel will be closed when the axfr is finished, until
|
|
||||||
// that time new messages will appear on the channel
|
|
||||||
func NewXfer(res *Resolver) (ch chan DnsMsg) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// The query function.
|
// The query function.
|
||||||
func query(res *Resolver, msg chan DnsMsg) {
|
func query(res *Resolver, msg chan DnsMsg) {
|
||||||
// TODO port number, error checking, robustness
|
// TODO port number, error checking, robustness
|
||||||
|
@ -135,6 +128,20 @@ func query(res *Resolver, msg chan DnsMsg) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Start a new xfr as a goroutine, return a channel.
|
||||||
|
// Channel will be closed when the axfr is finished, until
|
||||||
|
// that time new messages will appear on the channel
|
||||||
|
func NewXfer(res *Resolver) (ch chan DnsMsg) {
|
||||||
|
ch = make(chan DnsMsg)
|
||||||
|
go axfr(res, ch)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func axfr(res *Resolver, msg chan DnsMsg) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Send a request on the connection and hope for a reply.
|
// Send a request on the connection and hope for a reply.
|
||||||
// Up to res.Attempts attempts.
|
// Up to res.Attempts attempts.
|
||||||
func exchange_udp(c net.Conn, m []byte, r *Resolver) (*dns.Msg, os.Error) {
|
func exchange_udp(c net.Conn, m []byte, r *Resolver) (*dns.Msg, os.Error) {
|
||||||
|
|
25
types.go
25
types.go
|
@ -59,6 +59,7 @@ const (
|
||||||
TypeNSEC3 = 50
|
TypeNSEC3 = 50
|
||||||
TypeNSEC3PARAM = 51
|
TypeNSEC3PARAM = 51
|
||||||
|
|
||||||
|
TypeTSIG = 250
|
||||||
// valid Question.qtype only
|
// valid Question.qtype only
|
||||||
TypeIXFR = 251
|
TypeIXFR = 251
|
||||||
TypeAXFR = 252
|
TypeAXFR = 252
|
||||||
|
@ -80,6 +81,10 @@ const (
|
||||||
RcodeNameError = 3
|
RcodeNameError = 3
|
||||||
RcodeNotImplemented = 4
|
RcodeNotImplemented = 4
|
||||||
RcodeRefused = 5
|
RcodeRefused = 5
|
||||||
|
// Tsig errors
|
||||||
|
RcodeBadSig = 16
|
||||||
|
RcodeBadKey = 17
|
||||||
|
RcodeBadTime = 18
|
||||||
)
|
)
|
||||||
|
|
||||||
// The wire format for the DNS packet header.
|
// The wire format for the DNS packet header.
|
||||||
|
@ -479,6 +484,26 @@ func (rr *RR_NSEC3PARAM) String() string {
|
||||||
// Salt with strings.ToUpper()
|
// Salt with strings.ToUpper()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RR_TSIG struct {
|
||||||
|
Hdr RR_Header
|
||||||
|
Algoritim string "domain-name"
|
||||||
|
TimeSigned [3]uint16 // uint48 *sigh*
|
||||||
|
Fudge uint16
|
||||||
|
MACSize uint16
|
||||||
|
MAC string
|
||||||
|
Error uint16
|
||||||
|
OtherLen uint16
|
||||||
|
OtherData string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rr *RR_TSIG) Header() *RR_Header {
|
||||||
|
return &rr.Hdr
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rr *RR_TSIG) String() string {
|
||||||
|
return rr.Hdr.String() + "TODO"
|
||||||
|
}
|
||||||
|
|
||||||
// Translate the RRSIG's incep. and expir. time to the correct date.
|
// Translate the RRSIG's incep. and expir. time to the correct date.
|
||||||
// Taking into account serial arithmetic (RFC 1982)
|
// Taking into account serial arithmetic (RFC 1982)
|
||||||
func timeToDate(t uint32) string {
|
func timeToDate(t uint32) string {
|
||||||
|
|
Loading…
Reference in New Issue