From f1554db05d60bb0d316276d5ca98c1270116af61 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Sun, 6 May 2012 21:17:37 +0200 Subject: [PATCH] Add MG and MG record --- zscan_rr.go | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/zscan_rr.go b/zscan_rr.go index 9c6e94a4..03287d81 100644 --- a/zscan_rr.go +++ b/zscan_rr.go @@ -22,6 +22,9 @@ func setRR(h RR_Header, c chan lex, o, f string) (RR, *ParseError) { case TypeAAAA: r, e = setAAAA(h, c, f) goto Slurp + case TypeHINFO: + r, e = setHINFO(h, c, f) + goto Slurp case TypeNS: r, e = setNS(h, c, o, f) goto Slurp @@ -58,6 +61,9 @@ func setRR(h RR_Header, c chan lex, o, f string) (RR, *ParseError) { case TypeMR: r, e = setMR(h, c, o, f) goto Slurp + case TypeMB: + r, e = setMB(h, c, o, f) + goto Slurp case TypeKX: r, e = setKX(h, c, o, f) goto Slurp @@ -191,7 +197,7 @@ func setRP(h RR_Header, c chan lex, o, f string) (RR, *ParseError) { return rr, nil } -func setMr(h RR_Header, c chan lex, o, f string) (RR, *ParseError) { +func setMR(h RR_Header, c chan lex, o, f string) (RR, *ParseError) { rr := new(RR_MR) rr.Hdr = h @@ -207,6 +213,51 @@ func setMr(h RR_Header, c chan lex, o, f string) (RR, *ParseError) { return rr, nil } +func setMB(h RR_Header, c chan lex, o, f string) (RR, *ParseError) { + rr := new(RR_MB) + rr.Hdr = h + + l := <-c + rr.Mb = l.token + _, ld, ok := IsDomainName(l.token) + if !ok { + return nil, &ParseError{f, "bad MB Mb", l} + } + if rr.Mb[ld-1] != '.' { + rr.Mb = appendOrigin(rr.Mb, o) + } + return rr, nil +} + +func setMG(h RR_Header, c chan lex, o, f string) (RR, *ParseError) { + rr := new(RR_MG) + rr.Hdr = h + + l := <-c + rr.MG = l.token + _, ld, ok := IsDomainName(l.token) + if !ok { + return nil, &ParseError{f, "bad MG Mg", l} + } + if rr.Mg[ld-1] != '.' { + rr.Mg = appendOrigin(rr.Mg, o) + } + return rr, nil +} + +func setHINFO(h RR_Header, c chan lex, f string) (RR, *ParseError) { + rr := new(RR_HINFO) + rr.Hdr = h + + l := <-c + rr.Cpu = l.token + <-c // _BLANK + l = <-c // _STRING + rr.Os = l.token + + return rr, nil +} + func setMX(h RR_Header, c chan lex, o, f string) (RR, *ParseError) { rr := new(RR_MX)