package dns import "fmt" type TXT struct { Txt []string } func (t *TXT) Type() uint16 { return TypeTXT } func (t *TXT) Pack(p *packer) error { for _, s := range t.Txt { if len(s) > 255 { return fmt.Errorf("dns: txt string > 255 octets") } p.buf = append(p.buf, byte(len(s))) p.buf = append(p.buf, s...) } return nil } func (t *TXT) Unpack(u *unpacker, length uint16) error { end := u.off + int(length) for u.off < end { if u.off >= len(u.buf) { return fmt.Errorf("dns: short txt") } l := int(u.buf[u.off]) u.off++ if u.off+l > end { return fmt.Errorf("dns: txt string overflow") } t.Txt = append(t.Txt, string(u.buf[u.off:u.off+l])) u.off += l } return nil } func (t *TXT) String() string { return fmt.Sprintf("%v", t.Txt) }