Add AFSDB
This commit is contained in:
parent
969ce4371d
commit
e747b8f46e
27
types.go
27
types.go
|
@ -36,6 +36,7 @@ const (
|
|||
TypeMX uint16 = 15
|
||||
TypeTXT uint16 = 16
|
||||
TypeRP uint16 = 17
|
||||
TypeAFSDB uint16 = 18
|
||||
TypeSIG uint16 = 24
|
||||
TypeKEY uint16 = 25
|
||||
TypeAAAA uint16 = 28
|
||||
|
@ -293,7 +294,7 @@ func (rr *RR_MR) Len() int {
|
|||
|
||||
type RR_MF struct {
|
||||
Hdr RR_Header
|
||||
Mf string `dns:"cdomain-name"`
|
||||
Mf string `dns:"cdomain-name"`
|
||||
}
|
||||
|
||||
func (rr *RR_MF) Header() *RR_Header {
|
||||
|
@ -310,7 +311,7 @@ func (rr *RR_MF) Len() int {
|
|||
|
||||
type RR_MD struct {
|
||||
Hdr RR_Header
|
||||
Md string `dns:"cdomain-name"`
|
||||
Md string `dns:"cdomain-name"`
|
||||
}
|
||||
|
||||
func (rr *RR_MD) Header() *RR_Header {
|
||||
|
@ -344,6 +345,25 @@ func (rr *RR_MX) Len() int {
|
|||
return rr.Hdr.Len() + l + 2
|
||||
}
|
||||
|
||||
type RR_AFSDB struct {
|
||||
Hdr RR_Header
|
||||
Subtype uint16
|
||||
Hostname string `dns:"cdomain-name"`
|
||||
}
|
||||
|
||||
func (rr *RR_AFSDB) Header() *RR_Header {
|
||||
return &rr.Hdr
|
||||
}
|
||||
|
||||
func (rr *RR_AFSDB) String() string {
|
||||
return rr.Hdr.String() + strconv.Itoa(int(rr.Subtype)) + " " + rr.Hostname
|
||||
}
|
||||
|
||||
func (rr *RR_AFSDB) Len() int {
|
||||
l := len(rr.Hostname) + 1
|
||||
return rr.Hdr.Len() + l + 2
|
||||
}
|
||||
|
||||
type RR_NS struct {
|
||||
Hdr RR_Header
|
||||
Ns string `dns:"cdomain-name"`
|
||||
|
@ -1189,8 +1209,11 @@ var rr_mk = map[uint16]func() RR{
|
|||
TypeHINFO: func() RR { return new(RR_HINFO) },
|
||||
TypeMB: func() RR { return new(RR_MB) },
|
||||
TypeMG: func() RR { return new(RR_MG) },
|
||||
TypeMD: func() RR { return new(RR_MD) },
|
||||
TypeMF: func() RR { return new(RR_MF) },
|
||||
TypeMINFO: func() RR { return new(RR_MINFO) },
|
||||
TypeRP: func() RR { return new(RR_RP) },
|
||||
TypeAFSDB: func() RR { return new(RR_AFSDB) },
|
||||
TypeMR: func() RR { return new(RR_MR) },
|
||||
TypeMX: func() RR { return new(RR_MX) },
|
||||
TypeNS: func() RR { return new(RR_NS) },
|
||||
|
|
26
zscan_rr.go
26
zscan_rr.go
|
@ -37,6 +37,9 @@ func setRR(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
case TypeMD:
|
||||
r, e = setMD(h, c, o, f)
|
||||
goto Slurp
|
||||
case TypeAFSDB:
|
||||
r, e = setAFSDB(h, c, o, f)
|
||||
goto Slurp
|
||||
case TypeMX:
|
||||
r, e = setMX(h, c, o, f)
|
||||
goto Slurp
|
||||
|
@ -344,6 +347,29 @@ func setMX(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
return rr, nil
|
||||
}
|
||||
|
||||
func setAFSDB(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
||||
rr := new(RR_AFSDB)
|
||||
rr.Hdr = h
|
||||
|
||||
l := <-c
|
||||
if i, e := strconv.Atoi(l.token); e != nil {
|
||||
return nil, &ParseError{f, "bad AFSDB Subtype", l}
|
||||
} else {
|
||||
rr.Subtype = uint16(i)
|
||||
}
|
||||
<-c // _BLANK
|
||||
l = <-c // _STRING
|
||||
rr.Hostname = l.token
|
||||
_, ld, ok := IsDomainName(l.token)
|
||||
if !ok {
|
||||
return nil, &ParseError{f, "bad AFSDB Hostname", l}
|
||||
}
|
||||
if rr.Hostname[ld-1] != '.' {
|
||||
rr.Hostname = appendOrigin(rr.Hostname, o)
|
||||
}
|
||||
return rr, nil
|
||||
}
|
||||
|
||||
func setKX(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
||||
rr := new(RR_KX)
|
||||
rr.Hdr = h
|
||||
|
|
Loading…
Reference in New Issue