From 71ee323651ffed5d09aa22ea8d17eefbac2f6d08 Mon Sep 17 00:00:00 2001 From: Chris O'Haver Date: Wed, 14 Feb 2018 15:11:26 -0500 Subject: plugin/kubernetes: Add upstream @self and loop count (#1484) * add upstream @self and loop count * 1st round of feedback * allow argless upstream * update test * readmes * feedback --- plugin/kubernetes/handler.go | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'plugin/kubernetes/handler.go') diff --git a/plugin/kubernetes/handler.go b/plugin/kubernetes/handler.go index 5c9ccba34..6793b334d 100644 --- a/plugin/kubernetes/handler.go +++ b/plugin/kubernetes/handler.go @@ -11,7 +11,8 @@ import ( // ServeDNS implements the plugin.Handler interface. func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { - state := request.Request{W: w, Req: r} + opt := plugin.Options{} + state := request.Request{W: w, Req: r, Context: ctx} m := new(dns.Msg) m.SetReply(r) @@ -32,24 +33,24 @@ func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.M switch state.QType() { case dns.TypeA: - records, err = plugin.A(&k, zone, state, nil, plugin.Options{}) + records, err = plugin.A(&k, zone, state, nil, opt) case dns.TypeAAAA: - records, err = plugin.AAAA(&k, zone, state, nil, plugin.Options{}) + records, err = plugin.AAAA(&k, zone, state, nil, opt) case dns.TypeTXT: - records, err = plugin.TXT(&k, zone, state, plugin.Options{}) + records, err = plugin.TXT(&k, zone, state, opt) case dns.TypeCNAME: - records, err = plugin.CNAME(&k, zone, state, plugin.Options{}) + records, err = plugin.CNAME(&k, zone, state, opt) case dns.TypePTR: - records, err = plugin.PTR(&k, zone, state, plugin.Options{}) + records, err = plugin.PTR(&k, zone, state, opt) case dns.TypeMX: - records, extra, err = plugin.MX(&k, zone, state, plugin.Options{}) + records, extra, err = plugin.MX(&k, zone, state, opt) case dns.TypeSRV: - records, extra, err = plugin.SRV(&k, zone, state, plugin.Options{}) + records, extra, err = plugin.SRV(&k, zone, state, opt) case dns.TypeSOA: - records, err = plugin.SOA(&k, zone, state, plugin.Options{}) + records, err = plugin.SOA(&k, zone, state, opt) case dns.TypeNS: if state.Name() == zone { - records, extra, err = plugin.NS(&k, zone, state, plugin.Options{}) + records, extra, err = plugin.NS(&k, zone, state, opt) break } fallthrough @@ -57,21 +58,21 @@ func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.M k.Transfer(ctx, state) default: // Do a fake A lookup, so we can distinguish between NODATA and NXDOMAIN - _, err = plugin.A(&k, zone, state, nil, plugin.Options{}) + _, err = plugin.A(&k, zone, state, nil, opt) } if k.IsNameError(err) { if k.Fall.Through(state.Name()) { return plugin.NextOrFailure(k.Name(), k.Next, ctx, w, r) } - return plugin.BackendError(&k, zone, dns.RcodeNameError, state, nil /* err */, plugin.Options{}) + return plugin.BackendError(&k, zone, dns.RcodeNameError, state, nil /* err */, opt) } if err != nil { return dns.RcodeServerFailure, err } if len(records) == 0 { - return plugin.BackendError(&k, zone, dns.RcodeSuccess, state, nil, plugin.Options{}) + return plugin.BackendError(&k, zone, dns.RcodeSuccess, state, nil, opt) } m.Answer = append(m.Answer, records...) -- cgit v1.2.3