aboutsummaryrefslogtreecommitdiff
path: root/plugin/proxy/exchanger.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/proxy/exchanger.go')
-rw-r--r--plugin/proxy/exchanger.go22
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
+}