diff options
author | 2023-01-27 17:36:56 +0100 | |
---|---|---|
committer | 2023-01-27 11:36:56 -0500 | |
commit | 7da2cedaf040237779e9977bd6199c6c45443e81 (patch) | |
tree | 17e466103a43afcdc3370db7e21e368716a09c0f /plugin/loadbalance/handler.go | |
parent | bf7c2cf37bf35ba3a7596cb32c5a3607d896f95d (diff) | |
download | coredns-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.go | 13 |
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" } |