git » chasquid » commit b65ec36

test/util/minidns: Support priority in MX records

author Alberto Bertogli
2025-04-11 12:00:30 UTC
committer Alberto Bertogli
2025-04-11 13:17:17 UTC
parent 9524d307eb481d7169f48e071bdc02124fca9c37

test/util/minidns: Support priority in MX records

minidns supports MX records, but today it hard-codes priority=10.

This is limiting when creating test scenarios that depend on having
different MX priorities.

This patch adds support for specifying the priority in MX records.

test/t-14-tls_tracking/zones +2 -2
test/t-16-spf/zones.t0 +2 -2
test/t-16-spf/zones.t1 +2 -2
test/util/minidns/minidns.go +15 -4

diff --git a/test/t-14-tls_tracking/zones b/test/t-14-tls_tracking/zones
index 76711dc..0e515d4 100644
--- a/test/t-14-tls_tracking/zones
+++ b/test/t-14-tls_tracking/zones
@@ -1,11 +1,11 @@
 # srv-a zone
 srv-a A    127.0.0.1
 srv-a AAAA ::1
-srv-a MX   srv-a
+srv-a MX   10 srv-a
 srv-a TXT  v=spf1 a
 
 # srv-b zone
 srv-b A    127.0.0.1
 srv-b AAAA ::1
-srv-b MX   srv-b
+srv-b MX   10 srv-b
 srv-b TXT  v=spf1 a
diff --git a/test/t-16-spf/zones.t0 b/test/t-16-spf/zones.t0
index 76711dc..0e515d4 100644
--- a/test/t-16-spf/zones.t0
+++ b/test/t-16-spf/zones.t0
@@ -1,11 +1,11 @@
 # srv-a zone
 srv-a A    127.0.0.1
 srv-a AAAA ::1
-srv-a MX   srv-a
+srv-a MX   10 srv-a
 srv-a TXT  v=spf1 a
 
 # srv-b zone
 srv-b A    127.0.0.1
 srv-b AAAA ::1
-srv-b MX   srv-b
+srv-b MX   10 srv-b
 srv-b TXT  v=spf1 a
diff --git a/test/t-16-spf/zones.t1 b/test/t-16-spf/zones.t1
index 5f18ca9..bb61daa 100644
--- a/test/t-16-spf/zones.t1
+++ b/test/t-16-spf/zones.t1
@@ -3,11 +3,11 @@
 # srv-a zone
 srv-a A    127.0.0.1
 srv-a AAAA ::1
-srv-a MX   srv-a
+srv-a MX   10 srv-a
 srv-a TXT  v=spf1 -all
 
 # srv-b zone
 srv-b A    127.0.0.1
 srv-b AAAA ::1
-srv-b MX   srv-b
+srv-b MX   10 srv-b
 srv-b TXT  v=spf1 a
diff --git a/test/util/minidns/minidns.go b/test/util/minidns/minidns.go
index 0205c54..4c625ba 100644
--- a/test/util/minidns/minidns.go
+++ b/test/util/minidns/minidns.go
@@ -10,7 +10,7 @@
 // For example:
 //
 //	blah A  1.2.3.4
-//	blah MX mx1
+//	blah MX 10 mx1
 //
 // Supported types: A, AAAA, MX, TXT.
 //
@@ -26,6 +26,7 @@ import (
 	"net"
 	"os"
 	"regexp"
+	"strconv"
 	"strings"
 	"sync"
 
@@ -280,13 +281,23 @@ func (m *miniDNS) loadZones(f *os.File) {
 			body = aaaa
 		case "mx":
 			qType = dnsmessage.TypeMX
-			if !strings.HasPrefix(value, ".") {
+			if !strings.HasSuffix(value, ".") {
 				value += "."
 			}
 
+			// MX records value are in the form of "<preference> <host>".
+			prefS, host, ok := strings.Cut(value, " ")
+			if !ok {
+				log.Fatalf("line %d: invalid MX value %q", lineno, value)
+			}
+			pref, err := strconv.ParseUint(prefS, 10, 16)
+			if err != nil {
+				log.Fatalf("line %d: invalid MX preference %q", lineno, prefS)
+			}
+
 			body = &dnsmessage.MXResource{
-				Pref: 10,
-				MX:   dnsmessage.MustNewName(value),
+				Pref: uint16(pref),
+				MX:   dnsmessage.MustNewName(host),
 			}
 		case "txt":
 			qType = dnsmessage.TypeTXT