aboutsummaryrefslogtreecommitdiff
path: root/plugin/plugin.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/plugin.go')
-rw-r--r--plugin/plugin.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/plugin/plugin.go b/plugin/plugin.go
index a50f10830..137bb48af 100644
--- a/plugin/plugin.go
+++ b/plugin/plugin.go
@@ -83,6 +83,21 @@ func NextOrFailure(name string, next Handler, ctx context.Context, w dns.Respons
return dns.RcodeServerFailure, Error(name, errors.New("no next plugin found"))
}
+// Fallthrough handles the fallthrough logic used in plugins that support it
+func Fallthrough(ftzones *[]string, qname string) bool {
+ if ftzones == nil {
+ return false
+ }
+ if len(*ftzones) == 0 {
+ return true
+ }
+ zone := Zones(*ftzones).Matches(qname)
+ if zone != "" {
+ return true
+ }
+ return false
+}
+
// ClientWrite returns true if the response has been written to the client.
// Each plugin to adhire to this protocol.
func ClientWrite(rcode int) bool {