aboutsummaryrefslogtreecommitdiff
path: root/middleware/kubernetes/kubernetes.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/kubernetes/kubernetes.go')
-rw-r--r--middleware/kubernetes/kubernetes.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/middleware/kubernetes/kubernetes.go b/middleware/kubernetes/kubernetes.go
index 7ad2403c6..8c4e08e5d 100644
--- a/middleware/kubernetes/kubernetes.go
+++ b/middleware/kubernetes/kubernetes.go
@@ -5,6 +5,7 @@ import (
"errors"
"fmt"
"log"
+ "net"
"strings"
"time"
@@ -41,6 +42,7 @@ type Kubernetes struct {
LabelSelector *unversionedapi.LabelSelector
Selector *labels.Selector
PodMode string
+ ReverseCidrs []net.IPNet
}
const (
@@ -128,6 +130,16 @@ func (k *Kubernetes) Reverse(state request.Request, exact bool, opt middleware.O
return records, nil, nil
}
+func (k *Kubernetes) IsRequestInReverseRange(state request.Request) bool {
+ ip := dnsutil.ExtractAddressFromReverse(state.Name())
+ for _, c := range k.ReverseCidrs {
+ if c.Contains(net.ParseIP(ip)) {
+ return true
+ }
+ }
+ return false
+}
+
// Lookup implements the ServiceBackend interface.
func (k *Kubernetes) Lookup(state request.Request, name string, typ uint16) (*dns.Msg, error) {
return k.Proxy.Lookup(state, name, typ)