diff options
Diffstat (limited to 'plugin/forward')
-rw-r--r-- | plugin/forward/README.md | 2 | ||||
-rw-r--r-- | plugin/forward/forward.go | 1 | ||||
-rw-r--r-- | plugin/forward/policy.go | 10 | ||||
-rw-r--r-- | plugin/forward/setup.go | 2 | ||||
-rw-r--r-- | plugin/forward/setup_policy_test.go | 1 |
5 files changed, 15 insertions, 1 deletions
diff --git a/plugin/forward/README.md b/plugin/forward/README.md index 13f333197..b74154fb2 100644 --- a/plugin/forward/README.md +++ b/plugin/forward/README.md @@ -47,7 +47,7 @@ forward FROM TO... { max_fails INTEGER tls CERT KEY CA tls_servername NAME - policy random|round_robin + policy random|round_robin|sequential health_check DURATION } ~~~ diff --git a/plugin/forward/forward.go b/plugin/forward/forward.go index 8a65dad3e..6ad66d19b 100644 --- a/plugin/forward/forward.go +++ b/plugin/forward/forward.go @@ -193,6 +193,7 @@ type policy int const ( randomPolicy policy = iota roundRobinPolicy + sequentialPolicy ) const defaultTimeout = 5 * time.Second diff --git a/plugin/forward/policy.go b/plugin/forward/policy.go index f39a14105..1565fef31 100644 --- a/plugin/forward/policy.go +++ b/plugin/forward/policy.go @@ -53,3 +53,13 @@ func (r *roundRobin) List(p []*Proxy) []*Proxy { return robin } + +// sequential is a policy that selects hosts based on sequential ordering. +type sequential struct {} + +func (r *sequential) String() string { return "sequential" } + +func (r *sequential) List(p []*Proxy) []*Proxy { + return p +} + diff --git a/plugin/forward/setup.go b/plugin/forward/setup.go index 3582093ce..7afafc8a7 100644 --- a/plugin/forward/setup.go +++ b/plugin/forward/setup.go @@ -225,6 +225,8 @@ func parseBlock(c *caddy.Controller, f *Forward) error { f.p = &random{} case "round_robin": f.p = &roundRobin{} + case "sequential": + f.p = &sequential{} default: return c.Errf("unknown policy '%s'", x) } diff --git a/plugin/forward/setup_policy_test.go b/plugin/forward/setup_policy_test.go index 8c40b9fdd..986f3aa01 100644 --- a/plugin/forward/setup_policy_test.go +++ b/plugin/forward/setup_policy_test.go @@ -17,6 +17,7 @@ func TestSetupPolicy(t *testing.T) { // positive {"forward . 127.0.0.1 {\npolicy random\n}\n", false, "random", ""}, {"forward . 127.0.0.1 {\npolicy round_robin\n}\n", false, "round_robin", ""}, + {"forward . 127.0.0.1 {\npolicy sequential\n}\n", false, "sequential", ""}, // negative {"forward . 127.0.0.1 {\npolicy random2\n}\n", true, "random", "unknown policy"}, } |