aboutsummaryrefslogtreecommitdiff
path: root/plugin/rewrite/class.go
diff options
context:
space:
mode:
authorGravatar Uwe Krueger <uwe.krueger@sap.com> 2021-05-04 10:05:45 +0200
committerGravatar GitHub <noreply@github.com> 2021-05-04 10:05:45 +0200
commit40edf1e566a0b3709139420aeba542d9b788b1d0 (patch)
tree19b4e502cccd83b0ae5eb4b7b0107f845881877a /plugin/rewrite/class.go
parent696c8731d65b30e2562f89b16a4b12da79eb5ae9 (diff)
downloadcoredns-40edf1e566a0b3709139420aeba542d9b788b1d0.tar.gz
coredns-40edf1e566a0b3709139420aeba542d9b788b1d0.tar.zst
coredns-40edf1e566a0b3709139420aeba542d9b788b1d0.zip
plugin/rewrite: streamline the ResponseRule handling. (#4473)
* plugin/rewrite: streamline the ResponseRule handling. The functionality of a response rule is now completely encapsulated behind a `ResponseRule` interface. This significantly simplifies the complete processing flow, it enables more flexible response handling and it is possible to eliminate lots of state flags, ifs and switches. Based on the new flexibility the pull request also enables to support a response name rewrite for all name rewrite types. To be compatible, an explicit `answer auto` option is added to support a best effort response rewrite (name and value). Additionally now all name rewrite rules support additional name and value reponse rewrite options. Using this feature it is also possible now to rewrite a complete sub domain hierarchy to a single domain name combined with a correct rewrite (#2389). Signed-off-by: Uwe Krueger <uwe.krueger@sap.com> * revert policy Signed-off-by: Uwe Krueger <uwe.krueger@sap.com> Co-authored-by: Miek Gieben <miek@miek.nl>
Diffstat (limited to 'plugin/rewrite/class.go')
-rw-r--r--plugin/rewrite/class.go9
1 files changed, 3 insertions, 6 deletions
diff --git a/plugin/rewrite/class.go b/plugin/rewrite/class.go
index 178cf8181..243a86449 100644
--- a/plugin/rewrite/class.go
+++ b/plugin/rewrite/class.go
@@ -30,18 +30,15 @@ func newClassRule(nextAction string, args ...string) (Rule, error) {
}
// Rewrite rewrites the current request.
-func (rule *classRule) Rewrite(ctx context.Context, state request.Request) Result {
+func (rule *classRule) Rewrite(ctx context.Context, state request.Request) (ResponseRules, Result) {
if rule.fromClass > 0 && rule.toClass > 0 {
if state.Req.Question[0].Qclass == rule.fromClass {
state.Req.Question[0].Qclass = rule.toClass
- return RewriteDone
+ return nil, RewriteDone
}
}
- return RewriteIgnored
+ return nil, RewriteIgnored
}
// Mode returns the processing mode.
func (rule *classRule) Mode() string { return rule.NextAction }
-
-// GetResponseRules return rules to rewrite the response with. Currently not implemented.
-func (rule *classRule) GetResponseRules() []ResponseRule { return []ResponseRule{} }