diff options
Diffstat (limited to 'plugin/proxy/exchanger.go')
-rw-r--r-- | plugin/proxy/exchanger.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/plugin/proxy/exchanger.go b/plugin/proxy/exchanger.go new file mode 100644 index 000000000..b98a687e7 --- /dev/null +++ b/plugin/proxy/exchanger.go @@ -0,0 +1,22 @@ +package proxy + +import ( + "context" + + "github.com/coredns/coredns/request" + "github.com/miekg/dns" +) + +// Exchanger is an interface that specifies a type implementing a DNS resolver that +// can use whatever transport it likes. +type Exchanger interface { + Exchange(ctx context.Context, addr string, state request.Request) (*dns.Msg, error) + Protocol() string + + // Transport returns the only transport protocol used by this Exchanger or "". + // If the return value is "", Exchange must use `state.Proto()`. + Transport() string + + OnStartup(*Proxy) error + OnShutdown(*Proxy) error +} |