diff options
Diffstat (limited to 'plugin/plugin.go')
-rw-r--r-- | plugin/plugin.go | 15 |
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 { |