diff options
| author | radhitya <alif@radhitya.org> | 2026-07-04 14:29:02 +0700 |
|---|---|---|
| committer | radhitya <alif@radhitya.org> | 2026-07-04 14:29:02 +0700 |
| commit | 52a0d3845ead07f840e9e99cb4a8c3507c84ab30 (patch) | |
| tree | b9a08117bdcb35a1a0e61543b0859db8f4aa6bfd /internal/dns/rr_unknown.go | |
| parent | e9d3659ef41b9b5fd5e7cc7bd04ae3fc07850044 (diff) | |
fiuh
Diffstat (limited to 'internal/dns/rr_unknown.go')
| -rw-r--r-- | internal/dns/rr_unknown.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/internal/dns/rr_unknown.go b/internal/dns/rr_unknown.go new file mode 100644 index 0000000..77ae46d --- /dev/null +++ b/internal/dns/rr_unknown.go @@ -0,0 +1,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) +} |
