summaryrefslogtreecommitdiff
path: root/internal/dns/rr_mx.go
blob: 2f49f86be7501468bb4350ded406e27e3f154e4b (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
package dns

import "fmt"

// https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.9
type MX struct {
	Pref uint16
	Mx   Name
}

func (mx *MX) Type() uint16 { return TypeMX }

func (mx *MX) Pack(p *packer) error {
	p.writeUint16(mx.Pref)
	return p.writeName(mx.Mx)
}

func (mx *MX) Unpack(u *unpacker, length uint16) error {
	var err error
	mx.Pref, err = u.readUint16()
	if err != nil {
		return err
	}
	mx.Mx, err = u.readName()
	return err
}

func (mx *MX) String() string {
	return fmt.Sprintf("%d %s", mx.Pref, mx.Mx.String())
}