blob: 3886ed9a1f3ba7b04edf3a4f199e0679a5e4ff76 (
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
import (
"fmt"
"net/netip"
)
type A struct {
Addr netip.Addr
}
func (a *A) Type() uint16 {
return TypeA
}
func (a *A) Pack(p *packer) error {
b := a.Addr.As4()
p.buf = append(p.buf, b[:]...)
return nil
}
func (a *A) Unpack(u *unpacker, length uint16) error {
if length != 4 {
return fmt.Errorf("dns: A rdata length %d != 4", length)
}
if u.off+4 > len(u.buf) {
return fmt.Errorf("dns: short A rdata")
}
a.Addr = netip.AddrFrom4([4]byte(u.buf[u.off : u.off+4]))
u.off += 4
return nil
}
func (a *A) String() string { return a.Addr.String() }
|