Convert an RR to its unknown representation

This commit is contained in:
Miek Gieben 2013-01-30 15:55:50 +01:00
parent 19d93e2181
commit 625de563d0
2 changed files with 25 additions and 0 deletions

17
dns.go
View File

@ -207,3 +207,20 @@ func zoneMatch(pattern, zone string) (ok bool) {
}
return
}
// ToRFC3597 converts a known RR to the unknown RR representation
func ToRFC3597(r RR) *RFC3597 {
buf := make([]byte, r.Len()*2)
off, err := PackStruct(r, buf, 0)
if err != nil {
return nil
}
buf = buf[:off]
rawSetRdlength(buf, 0, off)
u := new(RFC3597)
_, err = UnpackStruct(u, buf, 0)
if err != nil {
return nil
}
return u
}

View File

@ -152,3 +152,11 @@ func TestCompressLenght(t *testing.T) {
t.Fatalf("Should be equal")
}
}
func TestToRFC3597(t *testing.T) {
a, _ := NewRR("miek.nl. IN A 10.0.1.1")
x := ToRFC3597(a)
if x.String() != `miek.nl. 3600 IN A \# 4 0a000101` {
t.Fail()
}
}