aboutsummaryrefslogtreecommitdiff
path: root/plugin/rewrite/rewrite.go
diff options
context:
space:
mode:
authorGravatar Paul G <greenpau@users.noreply.github.com> 2018-08-29 10:41:03 -0400
committerGravatar GitHub <noreply@github.com> 2018-08-29 10:41:03 -0400
commit38051b90893b23cb90960b20095337dd4a4057aa (patch)
treedf5d4019527f7631c15db35abb10ac618ebd6581 /plugin/rewrite/rewrite.go
parent52147cd65702f45a5b973815536672eba04c6522 (diff)
downloadcoredns-38051b90893b23cb90960b20095337dd4a4057aa.tar.gz
coredns-38051b90893b23cb90960b20095337dd4a4057aa.tar.zst
coredns-38051b90893b23cb90960b20095337dd4a4057aa.zip
plugin/rewrite: add handling of TTL field rewrites (#2048)
Resolves: #1981 Signed-off-by: Paul Greenberg <greenpau@outlook.com>
Diffstat (limited to 'plugin/rewrite/rewrite.go')
-rw-r--r--plugin/rewrite/rewrite.go19
1 files changed, 10 insertions, 9 deletions
diff --git a/plugin/rewrite/rewrite.go b/plugin/rewrite/rewrite.go
index 643f2d7c9..64283df92 100644
--- a/plugin/rewrite/rewrite.go
+++ b/plugin/rewrite/rewrite.go
@@ -50,7 +50,6 @@ func (rw Rewrite) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg
state.Req.Question[0] = wr.originalQuestion
return dns.RcodeServerFailure, fmt.Errorf("invalid name after rewrite: %s", x)
}
-
respRule := rule.GetResponseRule()
if respRule.Active == true {
wr.ResponseRewrite = true
@@ -111,23 +110,25 @@ func newRule(args ...string) (Rule, error) {
startArg = 1
}
- if ruleType == "answer" {
- return nil, fmt.Errorf("response rewrites must begin with a name rule")
- }
-
- if ruleType != "edns0" && ruleType != "name" && expectNumArgs != 3 {
- return nil, fmt.Errorf("%s rules must have exactly two arguments", ruleType)
- }
-
switch ruleType {
+ case "answer":
+ return nil, fmt.Errorf("response rewrites must begin with a name rule")
case "name":
return newNameRule(mode, args[startArg:]...)
case "class":
+ if expectNumArgs != 3 {
+ return nil, fmt.Errorf("%s rules must have exactly two arguments", ruleType)
+ }
return newClassRule(mode, args[startArg:]...)
case "type":
+ if expectNumArgs != 3 {
+ return nil, fmt.Errorf("%s rules must have exactly two arguments", ruleType)
+ }
return newTypeRule(mode, args[startArg:]...)
case "edns0":
return newEdns0Rule(mode, args[startArg:]...)
+ case "ttl":
+ return newTtlRule(mode, args[startArg:]...)
default:
return nil, fmt.Errorf("invalid rule type %q", args[0])
}