mirror of
https://github.com/coredns/coredns.git
synced 2025-10-27 16:24:19 -04:00
Add PTR record support for Route53 plugin (#1606)
This fix adds PTR record support for Route53 plugin This fix fixes 1595 Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
This commit is contained in:
@@ -50,6 +50,8 @@ func (rr Route53) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg
|
|||||||
answers = a(qname, output.ResourceRecordSets)
|
answers = a(qname, output.ResourceRecordSets)
|
||||||
case dns.TypeAAAA:
|
case dns.TypeAAAA:
|
||||||
answers = aaaa(qname, output.ResourceRecordSets)
|
answers = aaaa(qname, output.ResourceRecordSets)
|
||||||
|
case dns.TypePTR:
|
||||||
|
answers = ptr(qname, output.ResourceRecordSets)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(answers) == 0 {
|
if len(answers) == 0 {
|
||||||
@@ -93,5 +95,18 @@ func aaaa(zone string, rrss []*route53.ResourceRecordSet) []dns.RR {
|
|||||||
return answers
|
return answers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ptr(zone string, rrss []*route53.ResourceRecordSet) []dns.RR {
|
||||||
|
answers := []dns.RR{}
|
||||||
|
for _, rrs := range rrss {
|
||||||
|
for _, rr := range rrs.ResourceRecords {
|
||||||
|
r := new(dns.PTR)
|
||||||
|
r.Hdr = dns.RR_Header{Name: zone, Rrtype: dns.TypePTR, Class: dns.ClassINET, Ttl: uint32(aws.Int64Value(rrs.TTL))}
|
||||||
|
r.Ptr = aws.StringValue(rr.Value)
|
||||||
|
answers = append(answers, r)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return answers
|
||||||
|
}
|
||||||
|
|
||||||
// Name implements the Handler interface.
|
// Name implements the Handler interface.
|
||||||
func (rr Route53) Name() string { return "route53" }
|
func (rr Route53) Name() string { return "route53" }
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ func (mockedRoute53) ListResourceRecordSets(input *route53.ListResourceRecordSet
|
|||||||
value = "10.2.3.4"
|
value = "10.2.3.4"
|
||||||
case "AAAA":
|
case "AAAA":
|
||||||
value = "2001:db8:85a3::8a2e:370:7334"
|
value = "2001:db8:85a3::8a2e:370:7334"
|
||||||
|
case "PTR":
|
||||||
|
value = "ptr.example.org"
|
||||||
}
|
}
|
||||||
return &route53.ListResourceRecordSetsOutput{
|
return &route53.ListResourceRecordSetsOutput{
|
||||||
ResourceRecordSets: []*route53.ResourceRecordSet{
|
ResourceRecordSets: []*route53.ResourceRecordSet{
|
||||||
@@ -66,6 +68,13 @@ func TestRoute53(t *testing.T) {
|
|||||||
expectedReply: []string{"2001:db8:85a3::8a2e:370:7334"},
|
expectedReply: []string{"2001:db8:85a3::8a2e:370:7334"},
|
||||||
expectedErr: nil,
|
expectedErr: nil,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
qname: "example.org",
|
||||||
|
qtype: dns.TypePTR,
|
||||||
|
expectedCode: dns.RcodeSuccess,
|
||||||
|
expectedReply: []string{"ptr.example.org"},
|
||||||
|
expectedErr: nil,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx := context.TODO()
|
ctx := context.TODO()
|
||||||
@@ -91,6 +100,8 @@ func TestRoute53(t *testing.T) {
|
|||||||
actual = rec.Msg.Answer[i].(*dns.A).A.String()
|
actual = rec.Msg.Answer[i].(*dns.A).A.String()
|
||||||
case dns.TypeAAAA:
|
case dns.TypeAAAA:
|
||||||
actual = rec.Msg.Answer[i].(*dns.AAAA).AAAA.String()
|
actual = rec.Msg.Answer[i].(*dns.AAAA).AAAA.String()
|
||||||
|
case dns.TypePTR:
|
||||||
|
actual = rec.Msg.Answer[i].(*dns.PTR).Ptr
|
||||||
}
|
}
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf("Test %d: Expected answer %s, but got %s", i, expected, actual)
|
t.Errorf("Test %d: Expected answer %s, but got %s", i, expected, actual)
|
||||||
|
|||||||
Reference in New Issue
Block a user