summaryrefslogtreecommitdiff
path: root/internal/dns/rr_unknown.go
blob: 77ae46d4785584aa1a5019f93d7ce8b219b25b25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package dns

// https://datatracker.ietf.org/doc/html/rfc3597

import "fmt"

type Unknown struct {
	RRType uint16
	Data   []byte
}

func (u *Unknown) Type() uint16 {
	return u.RRType
}

func (u *Unknown) Pack(p *packer) error {
	p.buf = append(p.buf, u.Data...)
	return nil
}

func (u *Unknown) Unpack(ru *unpacker, length uint16) error {
	if ru.off+int(length) > len(ru.buf) {
		return fmt.Errorf("dns: short unknown rdata")
	}

	u.Data = make([]byte, length)
	copy(u.Data, ru.buf[ru.off:ru.off+int(length)])
	ru.off += int(length)
	return nil
}

func (u *Unknown) String() string {
	return fmt.Sprintf("\\# %d %x", len(u.Data), u.Data)
}