parse RT
This commit is contained in:
parent
a9126f1b54
commit
9c429db88f
29
zscan_rr.go
29
zscan_rr.go
|
@ -37,6 +37,12 @@ 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 TypeMG:
|
||||
r, e = setMG(h, c, o, f)
|
||||
goto Slurp
|
||||
case TypeRT:
|
||||
r, e = setRT(h, c, o, f)
|
||||
goto Slurp
|
||||
case TypeAFSDB:
|
||||
r, e = setAFSDB(h, c, o, f)
|
||||
goto Slurp
|
||||
|
@ -349,6 +355,29 @@ func setMX(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
return rr, nil
|
||||
}
|
||||
|
||||
func setRT(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
||||
rr := new(RR_RT)
|
||||
rr.Hdr = h
|
||||
|
||||
l := <-c
|
||||
if i, e := strconv.Atoi(l.token); e != nil {
|
||||
return nil, &ParseError{f, "bad RT Preference", l}
|
||||
} else {
|
||||
rr.Preference = uint16(i)
|
||||
}
|
||||
<-c // _BLANK
|
||||
l = <-c // _STRING
|
||||
rr.Host = l.token
|
||||
_, ld, ok := IsDomainName(l.token)
|
||||
if !ok {
|
||||
return nil, &ParseError{f, "bad RT Host", l}
|
||||
}
|
||||
if rr.Host[ld-1] != '.' {
|
||||
rr.Host= appendOrigin(rr.Host, o)
|
||||
}
|
||||
return rr, nil
|
||||
}
|
||||
|
||||
func setAFSDB(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
||||
rr := new(RR_AFSDB)
|
||||
rr.Hdr = h
|
||||
|
|
Loading…
Reference in New Issue