aboutsummaryrefslogtreecommitdiff
path: root/plugin/autopath/cname.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/autopath/cname.go')
-rw-r--r--plugin/autopath/cname.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/plugin/autopath/cname.go b/plugin/autopath/cname.go
new file mode 100644
index 000000000..3b2c60f4e
--- /dev/null
+++ b/plugin/autopath/cname.go
@@ -0,0 +1,25 @@
+package autopath
+
+import (
+ "strings"
+
+ "github.com/miekg/dns"
+)
+
+// cnamer will prefix the answer section with a cname that points from original qname to the
+// name of the first RR. It will also update the question section and put original in there.
+func cnamer(m *dns.Msg, original string) {
+ for _, a := range m.Answer {
+ if strings.EqualFold(original, a.Header().Name) {
+ continue
+ }
+ m.Answer = append(m.Answer, nil)
+ copy(m.Answer[1:], m.Answer)
+ m.Answer[0] = &dns.CNAME{
+ Hdr: dns.RR_Header{Name: original, Rrtype: dns.TypeCNAME, Class: dns.ClassINET, Ttl: a.Header().Ttl},
+ Target: a.Header().Name,
+ }
+ break
+ }
+ m.Question[0].Name = original
+}