ClassANY: don't convert CLASS255 to ANY (#618)

* ClassANY: don't convert CLASS255 to ANY

Class "ANY" is wireformat only. In zonefile you can use CLASS255, but
when String-ing we convert this into "ANY" which is wrong. I.e. this
means we can't read back our own update.

Bit of a kludge to work around this, as I'm not sure we can just remove
ANY from the ClassToString map.
This commit is contained in:
Miek Gieben 2018-01-07 17:57:04 +00:00 committed by GitHub
parent ac8cd7878c
commit dcdbddd810
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 12 additions and 7 deletions

View File

@ -273,8 +273,11 @@ func (t Type) String() string {
// String returns the string representation for the class c. // String returns the string representation for the class c.
func (c Class) String() string { func (c Class) String() string {
if c1, ok := ClassToString[uint16(c)]; ok { if s, ok := ClassToString[uint16(c)]; ok {
return c1 // Only emit mnemonics when they are unambiguous, specically ANY is in both.
if _, ok := StringToType[s]; !ok {
return s
}
} }
return "CLASS" + strconv.Itoa(int(c)) return "CLASS" + strconv.Itoa(int(c))
} }

View File

@ -433,6 +433,7 @@ func TestParseClass(t *testing.T) {
// ClassANY can not occur in zone files // ClassANY can not occur in zone files
// "t.example.com. ANY A 127.0.0.1": "t.example.com. 3600 ANY A 127.0.0.1", // "t.example.com. ANY A 127.0.0.1": "t.example.com. 3600 ANY A 127.0.0.1",
"t.example.com. NONE A 127.0.0.1": "t.example.com. 3600 NONE A 127.0.0.1", "t.example.com. NONE A 127.0.0.1": "t.example.com. 3600 NONE A 127.0.0.1",
"t.example.com. CLASS255 A 127.0.0.1": "t.example.com. 3600 CLASS255 A 127.0.0.1",
} }
for i, o := range tests { for i, o := range tests {
rr, err := NewRR(i) rr, err := NewRR(i)

View File

@ -577,6 +577,7 @@ func zlexer(s *scan, c chan lex) {
return return
} }
l.value = zRrtpe l.value = zRrtpe
rrtype = true
l.torc = t l.torc = t
} }
} }
@ -600,7 +601,7 @@ func zlexer(s *scan, c chan lex) {
c <- l c <- l
} }
stri = 0 stri = 0
// I reverse space stuff here
if !space && !commt { if !space && !commt {
l.value = zBlank l.value = zBlank
l.token = " " l.token = " "

View File

@ -119,15 +119,15 @@ func TestPreReqAndRemovals(t *testing.T) {
;example.org. IN SOA ;example.org. IN SOA
;; ANSWER SECTION: ;; ANSWER SECTION:
name_used. 0 ANY ANY name_used. 0 CLASS255 ANY
name_not_used. 0 NONE ANY name_not_used. 0 NONE ANY
rrset_used1. 0 ANY A rrset_used1. 0 CLASS255 A
rrset_used2. 3600 IN A 127.0.0.1 rrset_used2. 3600 IN A 127.0.0.1
rrset_not_used. 0 NONE A rrset_not_used. 0 NONE A
;; AUTHORITY SECTION: ;; AUTHORITY SECTION:
remove1. 0 ANY ANY remove1. 0 CLASS255 ANY
remove2. 0 ANY A remove2. 0 CLASS255 A
remove3. 0 NONE A 127.0.0.1 remove3. 0 NONE A 127.0.0.1
insert. 3600 IN A 127.0.0.1 insert. 3600 IN A 127.0.0.1
` `