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() }