diff options
Diffstat (limited to 'middleware/kubernetes/kubernetes.go')
-rw-r--r-- | middleware/kubernetes/kubernetes.go | 12 |
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) |