summaryrefslogtreecommitdiff
path: root/internal/dns/rr_mx.go
diff options
context:
space:
mode:
authorradhitya <alif@radhitya.org>2026-07-04 14:29:02 +0700
committerradhitya <alif@radhitya.org>2026-07-04 14:29:02 +0700
commit52a0d3845ead07f840e9e99cb4a8c3507c84ab30 (patch)
treeb9a08117bdcb35a1a0e61543b0859db8f4aa6bfd /internal/dns/rr_mx.go
parente9d3659ef41b9b5fd5e7cc7bd04ae3fc07850044 (diff)
fiuh
Diffstat (limited to 'internal/dns/rr_mx.go')
-rw-r--r--internal/dns/rr_mx.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/internal/dns/rr_mx.go b/internal/dns/rr_mx.go
new file mode 100644
index 0000000..2f49f86
--- /dev/null
+++ b/internal/dns/rr_mx.go
@@ -0,0 +1,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())
+}