aboutsummaryrefslogtreecommitdiff
path: root/plugin/loadbalance/handler.go
diff options
context:
space:
mode:
authorGravatar Gabor Dozsa <gabor.dozsa@ibm.com> 2023-01-27 17:36:56 +0100
committerGravatar GitHub <noreply@github.com> 2023-01-27 11:36:56 -0500
commit7da2cedaf040237779e9977bd6199c6c45443e81 (patch)
tree17e466103a43afcdc3370db7e21e368716a09c0f /plugin/loadbalance/handler.go
parentbf7c2cf37bf35ba3a7596cb32c5a3607d896f95d (diff)
downloadcoredns-7da2cedaf040237779e9977bd6199c6c45443e81.tar.gz
coredns-7da2cedaf040237779e9977bd6199c6c45443e81.tar.zst
coredns-7da2cedaf040237779e9977bd6199c6c45443e81.zip
Add weighted-round-robin policy to loadbalance plugin (#5662)
* Add weighted-round-robin policy to loadbalance plugin Signed-off-by: Gabor Dozsa <gabor.dozsa@ibm.com>
Diffstat (limited to 'plugin/loadbalance/handler.go')
-rw-r--r--plugin/loadbalance/handler.go13
1 files changed, 7 insertions, 6 deletions
diff --git a/plugin/loadbalance/handler.go b/plugin/loadbalance/handler.go
index ac046c8d0..8b84e1c5c 100644
--- a/plugin/loadbalance/handler.go
+++ b/plugin/loadbalance/handler.go
@@ -10,15 +10,16 @@ import (
)
// RoundRobin is a plugin to rewrite responses for "load balancing".
-type RoundRobin struct {
- Next plugin.Handler
+type LoadBalance struct {
+ Next plugin.Handler
+ shuffle func(*dns.Msg) *dns.Msg
}
// ServeDNS implements the plugin.Handler interface.
-func (rr RoundRobin) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
- wrr := &RoundRobinResponseWriter{w}
- return plugin.NextOrFailure(rr.Name(), rr.Next, ctx, wrr, r)
+func (lb LoadBalance) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
+ rw := &LoadBalanceResponseWriter{ResponseWriter: w, shuffle: lb.shuffle}
+ return plugin.NextOrFailure(lb.Name(), lb.Next, ctx, rw, r)
}
// Name implements the Handler interface.
-func (rr RoundRobin) Name() string { return "loadbalance" }
+func (lb LoadBalance) Name() string { return "loadbalance" }